import { Types } from 'mongoose';
import { CreateTemplateDto, UpdateTemplateDto } from './dto/create-template.dto';
import { ModelService } from "../model/model.service";
import { TemplateCategory, TemplateStatus } from "../common/enums";
import { WhatsappTemplate } from '../model/schemas/whatsapp-template.schema';
import { ConfigService } from '@nestjs/config';
interface Placeholder {
    key: string;
    valueType: string;
}
interface ResolvedPlaceholder {
    key: string;
    real_value: string;
}
export declare class WhatsappTemplateService {
    private readonly modelService;
    private readonly configService;
    constructor(modelService: ModelService, configService: ConfigService);
    listTemplates(salonId: string): Promise<(import("mongoose").FlattenMaps<{
        salonId: Types.ObjectId;
        internalName: string;
        templateApiId?: string | undefined;
        wabaId: string;
        language: string;
        category: TemplateCategory;
        headerText: string;
        messageBody: string;
        footerText: string;
        status: TemplateStatus;
        buttons?: {
            type: "PHONE_NUMBER" | "URL" | "QUICK_REPLY";
            text: string;
            phone_number?: string | undefined;
            url?: string | undefined;
            payload?: string | undefined;
        }[] | undefined;
        fullTemplatePayload?: any;
        errorReason?: string | undefined;
        placeholders: {
            key: string;
            valueType: string;
            example: string;
        }[];
        isPrimary: boolean;
        token?: string | undefined;
        phone_number_id?: string | undefined;
    }> & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    })[]>;
    getTemplateById(salonId: string, templateId: string): Promise<{
        placeholders: {
            key: string;
            type: string;
            example: string;
        }[];
        salonId: Types.ObjectId;
        internalName: string;
        templateApiId?: string | undefined;
        wabaId: string;
        language: string;
        category: TemplateCategory;
        headerText: string;
        messageBody: string;
        footerText: string;
        status: TemplateStatus;
        buttons?: import("mongoose").FlattenMaps<{
            type: "PHONE_NUMBER" | "URL" | "QUICK_REPLY";
            text: string;
            phone_number?: string | undefined;
            url?: string | undefined;
            payload?: string | undefined;
        }>[] | undefined;
        fullTemplatePayload?: any;
        errorReason?: string | undefined;
        isPrimary: boolean;
        token?: string | undefined;
        phone_number_id?: string | undefined;
        _id: Types.ObjectId;
        __v: number;
    }>;
    saveTemplateDraft(salonId: string, dto: CreateTemplateDto): Promise<import("mongoose").Document<unknown, {}, WhatsappTemplate, {}, {}> & WhatsappTemplate & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    }>;
    updateDraft(templateId: string, dto: UpdateTemplateDto): Promise<(import("mongoose").Document<unknown, {}, WhatsappTemplate, {}, {}> & WhatsappTemplate & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    }) | null>;
    private validateAndSanitizeTemplate;
    submitTemplateToMeta(templateId: string): Promise<{
        success: boolean;
        message: string;
    }>;
    getPrimaryTemplatePlaceholders(salonId: string): Promise<import("mongoose").FlattenMaps<{
        salonId: Types.ObjectId;
        internalName: string;
        templateApiId?: string | undefined;
        wabaId: string;
        language: string;
        category: TemplateCategory;
        headerText: string;
        messageBody: string;
        footerText: string;
        status: TemplateStatus;
        buttons?: {
            type: "PHONE_NUMBER" | "URL" | "QUICK_REPLY";
            text: string;
            phone_number?: string | undefined;
            url?: string | undefined;
            payload?: string | undefined;
        }[] | undefined;
        fullTemplatePayload?: any;
        errorReason?: string | undefined;
        placeholders: {
            key: string;
            valueType: string;
            example: string;
        }[];
        isPrimary: boolean;
        token?: string | undefined;
        phone_number_id?: string | undefined;
    }> & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    }>;
    mapPlaceholdersToValues(placeholders: Placeholder[], bookingPlaceholderResolver: Record<string, any>): Promise<ResolvedPlaceholder[]>;
    mapPlaceholdersToList(placeholders: Placeholder[], bookingPlaceholderResolver: Record<string, any>): Promise<string[]>;
    mapPlaceholdersToTemplate(template: string, placeholders: ResolvedPlaceholder[]): Promise<string>;
    createMappedTemplate(salonId: string, bookingPlaceholderResolver: Record<string, any>): Promise<string>;
    sendTemplate(salonId: string, bookingPlaceholderResolver: Record<string, any>, phone: string): Promise<void>;
    sendWhatsAppTemplate(to: string, salon_id: string, placeholders: Record<string, any>): Promise<void>;
    getTemplateKeys(): Promise<string[]>;
}
export {};
