import { TryOnProvider, TryOnGenericFineTuningSettings, TryOnProduct, TryOnSeller, TryOnFineTuningSettings } from '../../models';
import { MazingPupillaryDistanceStateReceivedMessageType, MazingTryOnReceivedMessageType } from './tryOnProviders/tryOnMazing';
export declare enum TryOnMode {
    TryOn = 1,
    PDTool = 2
}
export interface TryOnData {
    product?: TryOnProduct;
    customer?: TryOnSeller;
    provider?: TryOnProvider;
    mode?: TryOnMode;
    obj?: Blob | null;
    settings?: TryOnGenericFineTuningSettings;
}
export interface TryOnProviderExchangeData {
    type: TryOnProvidersTypeUnion;
    value: any;
}
export type TryOnProvidersTypeUnion = MazingTryOnReceivedMessageType | MazingPupillaryDistanceStateReceivedMessageType;
export type ValueOf<T> = T[keyof T];
export declare const TryOnBaseProviderReceivedMessage: {
    readonly Start: "";
    readonly WaitingAuthentication: "WAITING_AUTH";
    readonly AuthSuccessful: "AUTH_SUCCESS";
    readonly AuthError: "AUTH_ERROR";
    readonly WebcamError: "WEBCAM_ERROR";
};
export declare const TryOnBaseProviderResponseMessage: {};
export declare const PupillaryDistanceBaseProviderReceivedMessage: {
    readonly Start: "";
    readonly WaitingAuthentication: "WAITING_AUTH";
    readonly AuthSuccessful: "AUTH_SUCCESS";
    readonly AuthError: "AUTH_ERROR";
};
export declare const PupillaryDistanceBaseProviderResponseMessage: {};
export interface ZakekeTryOnExposedMethods {
    closeFrame?: () => void;
    takeScreenshot?: () => void;
    startPupillaryDistance?: (time: number) => void;
    switchToPDTool?: () => void;
    switchToTryOn?: () => void;
    mode?: TryOnMode;
    changeMode?: (mode: TryOnMode) => void;
    visible?: boolean;
    setVisible?: (visible: boolean) => void;
}
export interface TryOnProviderProps {
    className?: string;
    obj: Blob;
    product: TryOnProduct;
    customer: TryOnSeller;
    fineTuningSettings?: TryOnFineTuningSettings;
    onReady?: () => void;
    onLoaded?: () => void;
    onClose?: () => void;
    onPDUpdated?: (pd: number) => void;
    onWebcamError: () => void;
}
export interface PupillaryDistanceProviderProps {
    className?: string;
    product: TryOnProduct;
    customer: TryOnSeller;
    onReady?: () => void;
    onLoaded?: () => void;
    onPDUpdated?: (pd: number) => void;
    onClose?: () => void;
    onWebcamError: () => void;
}
export declare function parseJSON(json: string): any;
