import { Repository, DataSource } from 'typeorm';
import { MergeInfoAnswerLocationMap, CommunicationTemplates } from 'src/common/entities';
import { CommunicationTemplatesRepository } from '../repositories/communication-templates.repository';
import { CommunicationTemplateAccessKeyEnum } from 'src/common/enum/communication-template-access-key.enum';
import { CommunicationTypeEnum } from 'src/common/enum/communication-type.enum';
import type { SessionGuidelinesPdfContract } from './session-guidelines-pdf.types';
export interface SendMergeCache {
    template?: CommunicationTemplates | null;
    mergeFields?: MergeInfoAnswerLocationMap[];
    commonValues: Map<string, any>;
}
export declare function createSendMergeCache(): SendMergeCache;
export declare class CommunicationMergeDataService {
    private readonly communicationTemplatesRepository;
    private readonly mergeInfoRepository;
    private readonly dataSource;
    private readonly sessionGuidelinesPdfService;
    private readonly logger;
    private computedFunctionRegistry;
    manager: any;
    constructor(communicationTemplatesRepository: CommunicationTemplatesRepository, mergeInfoRepository: Repository<MergeInfoAnswerLocationMap>, dataSource: DataSource, sessionGuidelinesPdfService: SessionGuidelinesPdfContract);
    private cashDetailsField;
    private getProgramField;
    private getAllocatedProgramField;
    private resolveSessionIds;
    private getProgramSessionField;
    private resolveTargetSessionId;
    private fetchTargetSession;
    private fetchOrderedSessionStartDates;
    private formatSessionDayDate;
    private formatSessionDateLong;
    private getTargetSessionFieldValue;
    private getTargetSessionTimeField;
    private resolveTargetLoginLeadMinutes;
    private getTargetSessionLoginTimeField;
    private getTargetSessionLoginLeadMinutesField;
    private getTargetSessionDateField;
    private getTargetSessionDayDateField;
    private getTargetRemainingProgramDatesField;
    private getProgramFinalSessionDateField;
    private getProgramFinalButOneSessionDateField;
    private getProgramSessionCountField;
    private resolveAbsentSessions;
    private formatAbsentSessionDate;
    private escapeHtml;
    private getAbsentSessionsTableField;
    private getAbsentSessionsListField;
    private getPortalSessionJoinLinkField;
    private getWatiPortalSessionJoinLinkField;
    private getWatiSessionJoinUrlField;
    private stripUrlOrigin;
    private getSessionGuidelinesPdfUrl;
    private getWelcomeGuidelinesPdfUrl;
    private getMergeContextValueField;
    private resolveRegistrationProgramId;
    private getTargetOnlineSessionFieldValue;
    private getRegistrationJoinUrl;
    private getSessionDaysField;
    private formatSessionDateRangeField;
    private formatSessionDateAndDaysRangeField;
    private formatGroupedSessionDates;
    private getSessionTimeField;
    private resolveSessionClockTime;
    private getSessionDaysAndTimeField;
    private joinWithAnd;
    private firstParaField;
    private getAllocatedProgramStartsMinus10DaysField;
    private getCheckInOutField;
    getTemplateWithMergeInfo(programId: number, templateAccessKey: CommunicationTemplateAccessKeyEnum, communicationType: CommunicationTypeEnum, registrationId?: number, manager?: any, extraMergeContext?: Record<string, any>, options?: {
        resolveAllFieldsAsCommon?: boolean;
        cache?: SendMergeCache;
    }): Promise<{
        templateKey: string;
        mergeInfo: Record<string, any>;
    } | null>;
    private processCommonMergeFields;
    private processPerRecordMergeFields;
    private executeComputedFunction;
    private resolvePerRecipientField;
    private navigateContextPath;
    private fetchMergeFieldValueFromDB;
    private generatePaymentLinkField;
    private generateRegistrationEditLinkField;
    private registrationEditLink;
    private formatProgramDateRangeField;
    private calculateTotalPaymentAmountField;
    private getAllocatedProgramNameField;
    private formatPreferenceForMessageField;
    private generateOTPField;
    private getCurrentDateField;
    private getRmContactUserNameField;
    private getSeekerUserColumn;
    private getUserFirstNameField;
    private getUserLastNameField;
    private getUserGenderField;
    private getUserDOBField;
    private getRmContactEmailField;
    private getRmContactMobileField;
    private getProgramColumn;
    private getOrgNameField;
    private getOrgHelplineNumberField;
    private getOrgSupportEmailField;
    private generateApproveLinkField;
    private generateRejectLinkField;
    private generateViewRegistrationLinkField;
    private buildAdminActionLink;
    private getUserFormattedPhoneField;
    private formatAllocatedProgramDateRangeField;
    private getCoordinatorNameField;
    private countPendingPaymentsField;
    private generateTravelPlanLinkField;
}
