import { UUID } from 'crypto';
import { AKEventUserInfered, AKEventUserServiceClassInfered } from './types.js';
export declare const AKEventType: {
    test: string;
    authSignup: string;
    authForgotPassword: string;
};
export type DictionaryValues<T extends Record<PropertyKey, string>> = T[keyof T];
export declare abstract class AKEvent<EventData> {
    readonly type: DictionaryValues<typeof AKEventType>;
    recipient: AKEventUserInfered;
    relatedId: UUID | undefined;
    jobDebounceMilliseconds: number | undefined;
    jobSingletonKey: string | undefined;
    shouldSendViaChannels(): string[];
    static fromEventData(_data: any, _userService: InstanceType<AKEventUserServiceClassInfered>): Promise<AKEvent<any>>;
    toEventData(): EventData;
    static get jobQueueName(): string;
    static preview(): AKEvent<any>;
    emailPayload(): Promise<{
        subject: string;
        data: any;
        template?: string;
    }>;
    pushNotificationPayload(): Promise<{
        title: string;
        body: string;
        data: any;
    }>;
}
export type AKEventDefaultEmailTemplateData = {
    title?: string;
    message: string;
    cta?: string;
    url: URL;
    messageFooter?: string;
    components?: {
        message?: {
            pictureUrl?: URL;
            fullname: string;
            message?: string | string[];
        };
        missionSmall?: {
            name: string;
            price: number;
            city: string;
            date: Date;
            juridiction: string;
            morning: boolean;
        };
        mission?: {
            name: string;
            price: number;
            city: string;
            date: Date;
            juridiction: string;
            morning: boolean;
        };
        commitments?: boolean;
        assistant?: {
            url: URL;
        };
    };
};
