import { CommunicationTemplatesMaster } from 'src/common/entities/communication-templates-master.entity';
import { CommunicationTemplates } from 'src/common/entities/communication-templates.entity';
import { CommunicationTypeEnum } from 'src/common/enum/communication-type.enum';
import { TemplateUsageTypeEnum } from 'src/common/enum/template-usage-type.enum';
import { CommunicationTemplatesMasterRepository } from '../repositories/communication-templates-master.repository';
import { CommunicationTemplatesRepository } from '../repositories/communication-templates.repository';
import { MergeInfoAnswerLocationMapRepository } from '../repositories/merge-info-answer-location-map.repository';
import { CommunicationStepSelection } from '../interfaces/communication-config.interface';
export declare class CommunicationTemplatesMasterService {
    private readonly masterRepo;
    private readonly templatesRepo;
    private readonly mergeInfoRepo;
    private readonly logger;
    constructor(masterRepo: CommunicationTemplatesMasterRepository, templatesRepo: CommunicationTemplatesRepository, mergeInfoRepo: MergeInfoAnswerLocationMapRepository);
    getAllMasterTemplates(limit?: number, offset?: number): Promise<any>;
    getMasterTemplateByKey(templateKey: string): Promise<CommunicationTemplatesMaster>;
    cloneMasterTemplateToProgram(templateKey: string, programId: number, templateUsageType?: TemplateUsageTypeEnum, category?: string, createdBy?: number): Promise<CommunicationTemplates>;
    cloneMultipleMasterTemplatesToProgramByProgramType(programTypeId: number, programId: number, templateUsageType?: TemplateUsageTypeEnum, createdBy?: number, stepSelections?: CommunicationStepSelection[]): Promise<CommunicationTemplates[]>;
    validateMasterTemplateIdsForProgramType(programTypeId: number, masterTemplateIds: number[]): Promise<void>;
    validatePerStepSelectionForProgramType(programTypeId: number, steps: CommunicationStepSelection[]): Promise<void>;
    applyPerStepSelectionForProgram(programId: number, perStep: CommunicationStepSelection[], updatedBy?: number): Promise<void>;
    getProgramTemplate(programId: number, templateKey: string, templateType?: CommunicationTypeEnum): Promise<CommunicationTemplates>;
    getTemplateWithMergeInfo(programId: number, templateKey: string): Promise<any>;
}
