import { CommunicationTypeEnum } from 'src/common/enum/communication-type.enum';
import { CommunicationTemplateAccessKeyEnum } from 'src/common/enum/communication-template-access-key.enum';
import { SessionCommunicationPurposeEnum } from 'src/common/enum/session-communication-purpose.enum';
export declare enum SessionOccurrence {
    REGULAR = "REGULAR",
    PRE_FINAL = "PRE_FINAL",
    FINAL = "FINAL"
}
export interface ChannelConfig {
    channel: CommunicationTypeEnum;
    accessKey: CommunicationTemplateAccessKeyEnum;
}
export interface TemplateDescriptor {
    purpose: SessionCommunicationPurposeEnum;
    occurrence: SessionOccurrence | null;
    channel: CommunicationTypeEnum;
    accessKey: CommunicationTemplateAccessKeyEnum;
}
export declare const SESSION_COMMUNICATION_TEMPLATES: TemplateDescriptor[];
export declare const GENERAL_LINK_TO_SEEKER_PURPOSE: Partial<Record<SessionCommunicationPurposeEnum, SessionCommunicationPurposeEnum>>;
export declare const GENERAL_LINK_PURPOSES: SessionCommunicationPurposeEnum[];
export declare const GENERAL_LINK_PROGRAM_LEVEL_PURPOSES: SessionCommunicationPurposeEnum[];
export declare function isGeneralLinkProgramLevelPurpose(purpose: SessionCommunicationPurposeEnum): boolean;
export declare function generalLinkPurposeNeedsOccurrence(purpose: SessionCommunicationPurposeEnum): boolean;
export declare function resolveGeneralLinkChannels(purpose: SessionCommunicationPurposeEnum, occurrence?: SessionOccurrence | null): ChannelConfig[];
export declare const COMMON_INVITE_PER_SESSION_TEMPLATES: TemplateDescriptor[];
export declare const SYSTEM_LINKS_PER_SESSION_TEMPLATES: TemplateDescriptor[];
export declare const PROGRAM_LEVEL_PURPOSES: SessionCommunicationPurposeEnum[];
export declare function isProgramLevelPurpose(purpose: SessionCommunicationPurposeEnum): boolean;
export declare function purposeNeedsOccurrence(purpose: SessionCommunicationPurposeEnum): boolean;
export declare function purposeSupportsOccurrence(purpose: SessionCommunicationPurposeEnum, occurrence: SessionOccurrence): boolean;
export declare function resolveChannels(purpose: SessionCommunicationPurposeEnum, occurrence: SessionOccurrence | null): ChannelConfig[];
export declare function resolveCommonInviteChannels(perSession: boolean): ChannelConfig[];
export declare function resolveSystemLinksChannels(perSession: boolean): ChannelConfig[];
export declare const ACCESS_KEY_TO_DESCRIPTOR: Partial<Record<CommunicationTemplateAccessKeyEnum, {
    purpose: SessionCommunicationPurposeEnum;
    occurrence: SessionOccurrence | null;
}>>;
export declare const SESSION_COMMUNICATION_ACCESS_KEYS: CommunicationTemplateAccessKeyEnum[];
