import type { Request } from 'express';
type WhatsAppKind = 'VISITOR_INVITE' | 'CHECK_IN_CONFIRMATION' | 'VISITOR_REMINDER' | 'APPROVER_REQUEST';
export interface WaTemplateParam {
    label: string;
    key: string;
    type?: 'text' | 'date' | 'time';
}
export interface WaTemplateDef {
    label: string;
    /** Visitor statuses this template may be sent for. */
    allowedStatuses: string[];
    campaignEnv: string;
    templateNameEnv: string;
    templateNameDefault: string;
    languageEnv: string;
    languageDefault: string;
    /** When true, the QR PNG is sent as the template HEADER image. */
    hasQrHeader: boolean;
    /** Ordered BODY parameters — label for the UI, key into visitor vars. */
    params: WaTemplateParam[];
}
export declare const WA_TEMPLATES: Record<WhatsAppKind, WaTemplateDef>;
interface WAVisitor {
    id?: string;
    name: string;
    email: string | null;
    mobile: string | null;
    shortId: string;
    visitDate: Date | null;
    visitTime: string | null;
    notes: string | null;
    reasonForVisit: string | null;
    createdByAdminId?: string | null;
    assignedAdminId?: string | null;
    assignedApproverId?: string | null;
}
export declare function visitorVars(ownerId: string, visitor: WAVisitor, req?: Request): Promise<{
    visitor_name: string;
    visitor_email: string;
    visitor_mobile: string;
    visitor_id: string;
    visit_date: string;
    visit_time: string;
    visit_notes: string;
    reason_for_visit: string;
    host_name: string;
    host_email: string;
    organization: string;
    pass_url: string;
    qr_code: string;
    approve_url: string;
    reject_url: string;
}>;
export declare function extractQrAttachment(body: string, qrUrl: string): {
    body: string;
    mediaUrl?: string;
};
export declare function sendVisitorInviteWA(ownerId: string, visitor: WAVisitor, req?: Request): Promise<void>;
export declare function sendCheckInConfirmationWA(ownerId: string, visitor: WAVisitor, req?: Request): Promise<void>;
export declare function sendVisitReminderWA(ownerId: string, visitor: WAVisitor, req?: Request): Promise<void>;
export declare function sendApproverRequestWA(ownerId: string, visitor: WAVisitor, req?: Request): Promise<void>;
export type WhatsAppSendKind = WhatsAppKind;
export interface SendableTemplate {
    type: WhatsAppKind;
    label: string;
    /** Prefilled BODY parameters shown to the operator before sending. */
    params: {
        label: string;
        value: string;
    }[];
    /** Whether the QR image rides along as the template header. */
    qrIncluded: boolean;
    /** False when the campaign/template isn't configured yet (Send disabled). */
    sendable: boolean;
}
export declare function listSendableTemplatesForVisitor(ownerId: string, visitor: WAVisitor, status: string, req?: Request): Promise<SendableTemplate[]>;
export declare function sendTemplateForVisitor(ownerId: string, visitor: WAVisitor, kind: WhatsAppKind, status: string, req?: Request, toOverride?: string, paramsOverride?: string[]): Promise<{
    ok: boolean;
    error?: string;
}>;
export {};
//# sourceMappingURL=whatsappSend.d.ts.map