import { VideomailClientOptions } from "../types/options";
import { Videomail } from "../types/Videomail";
import Despot from "../util/Despot";
import Container from "./container";
export type FormInputs = Record<string, string>;
export declare const FormMethod: {
    readonly POST: "post";
    readonly PUT: "put";
    readonly GET: "get";
};
export type FormMethodType = (typeof FormMethod)[keyof typeof FormMethod];
declare class Form extends Despot {
    private readonly container;
    private readonly formElement;
    private keyInput?;
    private readonly FORM_FIELDS;
    constructor(container: Container, formElement: HTMLFormElement, options: VideomailClientOptions);
    private getData;
    transformFormData(formInputs: FormInputs): {
        subject?: string;
        body?: string;
        from?: import("..").EmailAddress;
        fromNickName?: string | null;
        to?: import("..").EmailAddresses | undefined;
        bcc?: import("..").EmailAddresses | undefined;
        cc?: import("..").EmailAddresses | undefined;
        alias?: string;
        connection?: {
            [x: string]: string | number | undefined;
        };
        dateCreated?: number;
        dateCreatedServerPretty?: string;
        dateUpdated?: number;
        dateUpdatedServerPretty?: string;
        expiresAfter?: number;
        expiresAfterIso?: string;
        expiresAfterServerPretty?: string;
        format?: {
            [x: string]: string | number | {
                [x: string]: string | undefined;
            } | undefined;
        };
        height?: number | undefined | undefined;
        key?: string;
        mp4?: string;
        vtt?: string;
        captions?: string | undefined | undefined;
        poster?: string;
        browserStats?: {
            ua?: string;
            browser?: {
                name?: string;
                version?: string;
                major?: string;
                type?: typeof import("ua-parser-js/enums").BrowserType[keyof typeof import("ua-parser-js/enums").BrowserType];
                is?: (val: string) => boolean;
                toString?: () => string;
                withClientHints?: () => import("ua-parser-js").IBrowser | PromiseLike<import("ua-parser-js").IBrowser>;
                withFeatureCheck?: () => import("ua-parser-js").IBrowser | PromiseLike<import("ua-parser-js").IBrowser>;
            };
            cpu?: {
                architecture?: typeof import("ua-parser-js/enums").CPUArch[keyof typeof import("ua-parser-js/enums").CPUArch];
                is?: (val: string) => boolean;
                toString?: () => string;
                withClientHints?: () => import("ua-parser-js").ICPU | PromiseLike<import("ua-parser-js").ICPU>;
                withFeatureCheck?: () => import("ua-parser-js").ICPU | PromiseLike<import("ua-parser-js").ICPU>;
            };
            device?: {
                type?: typeof import("ua-parser-js/enums").DeviceType[keyof typeof import("ua-parser-js/enums").DeviceType];
                vendor?: string;
                model?: string;
                is?: (val: string) => boolean;
                toString?: () => string;
                withClientHints?: () => import("ua-parser-js").IDevice | PromiseLike<import("ua-parser-js").IDevice>;
                withFeatureCheck?: () => import("ua-parser-js").IDevice | PromiseLike<import("ua-parser-js").IDevice>;
            };
            engine?: {
                name?: typeof import("ua-parser-js/enums").EngineName[keyof typeof import("ua-parser-js/enums").EngineName];
                version?: string;
                is?: (val: string) => boolean;
                toString?: () => string;
                withClientHints?: () => import("ua-parser-js").IEngine | PromiseLike<import("ua-parser-js").IEngine>;
                withFeatureCheck?: () => import("ua-parser-js").IEngine | PromiseLike<import("ua-parser-js").IEngine>;
            };
            os?: {
                name?: string;
                version?: string;
                is?: (val: string) => boolean;
                toString?: () => string;
                withClientHints?: () => import("ua-parser-js").IOS | PromiseLike<import("ua-parser-js").IOS>;
                withFeatureCheck?: () => import("ua-parser-js").IOS | PromiseLike<import("ua-parser-js").IOS>;
            };
        } | undefined;
        recordingStats?: {
            avgFps?: number | undefined | undefined;
            avgInterval?: number | undefined | undefined;
            framesCount?: number;
            intervalSum?: number | undefined | undefined;
            sampleRate?: number;
            samplesCount?: number;
            videoType?: string;
            waitingTime?: number | undefined | undefined;
            wantedFps?: number;
            wantedInterval?: number;
        } | undefined;
        recordLocation?: string | undefined | undefined;
        parentKey?: string | undefined | undefined;
        parentSnapshots?: Videomail[] | undefined | undefined;
        reactions?: {
            love?: readonly string[];
            applause?: readonly string[];
            foldedHands?: readonly string[];
            grinningSweat?: readonly string[];
            anger?: readonly string[];
        } | undefined;
        reactionsPretty?: {
            love?: {
                [x: string]: {
                    nickName?: string;
                    maskedEmailAddress?: string;
                } | undefined;
            };
            applause?: {
                [x: string]: {
                    nickName?: string;
                    maskedEmailAddress?: string;
                } | undefined;
            };
            foldedHands?: {
                [x: string]: {
                    nickName?: string;
                    maskedEmailAddress?: string;
                } | undefined;
            };
            grinningSweat?: {
                [x: string]: {
                    nickName?: string;
                    maskedEmailAddress?: string;
                } | undefined;
            };
            anger?: {
                [x: string]: {
                    nickName?: string;
                    maskedEmailAddress?: string;
                } | undefined;
            };
        } | undefined;
        replyAllUrl?: string;
        replyUrl?: string;
        shareUrl?: string;
        sending?: boolean;
        sent?: boolean;
        sentDate?: number;
        sentDateIso?: string;
        sentDateServerPretty?: string;
        serverTimePretty?: string;
        whitelistKey?: string;
        siteName?: string | undefined | undefined;
        url?: string;
        userKey?: string | undefined;
        versions?: {
            videomailNinjaFormPlugin?: string;
            videomailClient?: string;
        };
        webm?: string;
        width?: number | undefined | undefined;
        sentTo?: {
            [x: string]: {
                userKey?: string | false;
            } | undefined;
        };
        sentCc?: {
            [x: string]: {
                userKey?: string | false;
            } | undefined;
        };
        sentBcc?: {
            [x: string]: {
                userKey?: string | false;
            } | undefined;
        };
        rejectedTo?: {
            [x: string]: {
                userKey?: string | false;
            } | undefined;
        };
        rejectedCc?: {
            [x: string]: {
                userKey?: string | false;
            } | undefined;
        };
        rejectedBcc?: {
            [x: string]: {
                userKey?: string | false;
            } | undefined;
        };
        public?: boolean;
        editUrl?: string;
        repeatUrl?: string;
    };
    getRecipients(): {
        subject?: string;
        body?: string;
        from?: import("..").EmailAddress;
        fromNickName?: string | null;
        to?: import("..").EmailAddresses | undefined;
        bcc?: import("..").EmailAddresses | undefined;
        cc?: import("..").EmailAddresses | undefined;
        alias?: string;
        connection?: {
            [x: string]: string | number | undefined;
        };
        dateCreated?: number;
        dateCreatedServerPretty?: string;
        dateUpdated?: number;
        dateUpdatedServerPretty?: string;
        expiresAfter?: number;
        expiresAfterIso?: string;
        expiresAfterServerPretty?: string;
        format?: {
            [x: string]: string | number | {
                [x: string]: string | undefined;
            } | undefined;
        };
        height?: number | undefined | undefined;
        key?: string;
        mp4?: string;
        vtt?: string;
        captions?: string | undefined | undefined;
        poster?: string;
        browserStats?: {
            ua?: string;
            browser?: {
                name?: string;
                version?: string;
                major?: string;
                type?: typeof import("ua-parser-js/enums").BrowserType[keyof typeof import("ua-parser-js/enums").BrowserType];
                is?: (val: string) => boolean;
                toString?: () => string;
                withClientHints?: () => import("ua-parser-js").IBrowser | PromiseLike<import("ua-parser-js").IBrowser>;
                withFeatureCheck?: () => import("ua-parser-js").IBrowser | PromiseLike<import("ua-parser-js").IBrowser>;
            };
            cpu?: {
                architecture?: typeof import("ua-parser-js/enums").CPUArch[keyof typeof import("ua-parser-js/enums").CPUArch];
                is?: (val: string) => boolean;
                toString?: () => string;
                withClientHints?: () => import("ua-parser-js").ICPU | PromiseLike<import("ua-parser-js").ICPU>;
                withFeatureCheck?: () => import("ua-parser-js").ICPU | PromiseLike<import("ua-parser-js").ICPU>;
            };
            device?: {
                type?: typeof import("ua-parser-js/enums").DeviceType[keyof typeof import("ua-parser-js/enums").DeviceType];
                vendor?: string;
                model?: string;
                is?: (val: string) => boolean;
                toString?: () => string;
                withClientHints?: () => import("ua-parser-js").IDevice | PromiseLike<import("ua-parser-js").IDevice>;
                withFeatureCheck?: () => import("ua-parser-js").IDevice | PromiseLike<import("ua-parser-js").IDevice>;
            };
            engine?: {
                name?: typeof import("ua-parser-js/enums").EngineName[keyof typeof import("ua-parser-js/enums").EngineName];
                version?: string;
                is?: (val: string) => boolean;
                toString?: () => string;
                withClientHints?: () => import("ua-parser-js").IEngine | PromiseLike<import("ua-parser-js").IEngine>;
                withFeatureCheck?: () => import("ua-parser-js").IEngine | PromiseLike<import("ua-parser-js").IEngine>;
            };
            os?: {
                name?: string;
                version?: string;
                is?: (val: string) => boolean;
                toString?: () => string;
                withClientHints?: () => import("ua-parser-js").IOS | PromiseLike<import("ua-parser-js").IOS>;
                withFeatureCheck?: () => import("ua-parser-js").IOS | PromiseLike<import("ua-parser-js").IOS>;
            };
        } | undefined;
        recordingStats?: {
            avgFps?: number | undefined | undefined;
            avgInterval?: number | undefined | undefined;
            framesCount?: number;
            intervalSum?: number | undefined | undefined;
            sampleRate?: number;
            samplesCount?: number;
            videoType?: string;
            waitingTime?: number | undefined | undefined;
            wantedFps?: number;
            wantedInterval?: number;
        } | undefined;
        recordLocation?: string | undefined | undefined;
        parentKey?: string | undefined | undefined;
        parentSnapshots?: Videomail[] | undefined | undefined;
        reactions?: {
            love?: readonly string[];
            applause?: readonly string[];
            foldedHands?: readonly string[];
            grinningSweat?: readonly string[];
            anger?: readonly string[];
        } | undefined;
        reactionsPretty?: {
            love?: {
                [x: string]: {
                    nickName?: string;
                    maskedEmailAddress?: string;
                } | undefined;
            };
            applause?: {
                [x: string]: {
                    nickName?: string;
                    maskedEmailAddress?: string;
                } | undefined;
            };
            foldedHands?: {
                [x: string]: {
                    nickName?: string;
                    maskedEmailAddress?: string;
                } | undefined;
            };
            grinningSweat?: {
                [x: string]: {
                    nickName?: string;
                    maskedEmailAddress?: string;
                } | undefined;
            };
            anger?: {
                [x: string]: {
                    nickName?: string;
                    maskedEmailAddress?: string;
                } | undefined;
            };
        } | undefined;
        replyAllUrl?: string;
        replyUrl?: string;
        shareUrl?: string;
        sending?: boolean;
        sent?: boolean;
        sentDate?: number;
        sentDateIso?: string;
        sentDateServerPretty?: string;
        serverTimePretty?: string;
        whitelistKey?: string;
        siteName?: string | undefined | undefined;
        url?: string;
        userKey?: string | undefined;
        versions?: {
            videomailNinjaFormPlugin?: string;
            videomailClient?: string;
        };
        webm?: string;
        width?: number | undefined | undefined;
        sentTo?: {
            [x: string]: {
                userKey?: string | false;
            } | undefined;
        };
        sentCc?: {
            [x: string]: {
                userKey?: string | false;
            } | undefined;
        };
        sentBcc?: {
            [x: string]: {
                userKey?: string | false;
            } | undefined;
        };
        rejectedTo?: {
            [x: string]: {
                userKey?: string | false;
            } | undefined;
        };
        rejectedCc?: {
            [x: string]: {
                userKey?: string | false;
            } | undefined;
        };
        rejectedBcc?: {
            [x: string]: {
                userKey?: string | false;
            } | undefined;
        };
        public?: boolean;
        editUrl?: string;
        repeatUrl?: string;
    };
    loadVideomail(videomail: Videomail): void;
    private setDisabled;
    private hideAll;
    private isRegisteredFormField;
    private getRegisteredFormElements;
    disable(buttonsToo: boolean): void;
    enable(buttonsToo: boolean): void;
    build(): void;
    private removeAllInputListeners;
    private hideSubmitButton;
    unload(): void;
    private resetForm;
    private startListeningToSubmitEvents;
    private stopListeningToSubmitEvents;
    doTheSubmit(e?: any): Promise<boolean>;
    getInvalidElement(): Element | null;
    findSubmitButton(): HTMLButtonElement | null;
    hide(): void;
    show(): void;
}
export default Form;
