import { FunctionComponent } from "react";
import { TryOnFineTuningMazingSettings, TryOnGenericFineTuningSettings, TryOnProduct, TryOnProvider, TryOnSeller, TryOnType } from "../models";
export declare function parseJSON(json: string): any;
export declare enum TryOnMode {
    Undefined = 0,
    TryOn = 1,
    PDTool = 2
}
export interface TryOnViewerProps {
    mode: TryOnMode;
    onTimeout?: (value: boolean) => void;
    onPDUpdated?: (pd: number) => void;
    onClose?: () => void;
}
export interface VTryOnViewerProps {
    className?: string;
    provider: TryOnProvider;
    type: TryOnType;
    obj: Blob;
    settings?: TryOnGenericFineTuningSettings;
    product: TryOnProduct;
    customer: TryOnSeller;
    onReady?: () => void;
    onClose?: () => void;
}
export interface TryOnPDToolProps {
    className?: string;
    provider: TryOnProvider;
    product: TryOnProduct;
    customer: TryOnSeller;
    onReady?: () => void;
    onPDUpdated?: (pd: number) => void;
    onClose?: () => void;
}
export declare const TryOnViewerComponent: FunctionComponent<TryOnViewerProps>;
export declare const VTryOnViewerComponent: FunctionComponent<VTryOnViewerProps>;
export declare const TryOnPDToolComponent: FunctionComponent<TryOnPDToolProps>;
export declare enum MazingTryOnState {
    Start = "",
    WaitingAuthentication = "WAITING_AUTH",
    AuthSuccessful = "AUTH_SUCCESS",
    TryOnLoaded = "MODEL_LOADED",
    AuthError = "AUTH_ERROR",
    WebcamError = "WEBCAM_ERROR",
    ScreenShotTaken = "SCREENSHOT_TAKEN",
    WebcamStopped = "WEBCAM_STOPPED"
}
export declare enum MazingTryOnOutMessage {
    StartAuthenticationTryOn = "AUTH_TRY_ON",
    LoadTryOn = "LOAD_MODEL",
    TakeScreenshot = "TAKE_SCREENSHOT",
    StopWebcam = "STOP_WEBCAM"
}
export declare enum MazingPDState {
    Start = "",
    WaitingAuthentication = "WAITING_AUTH",
    AuthSuccessful = "AUTH_SUCCESS",
    PDLoaded = "PD_LOADED",
    PDUpdated = "NEW_PD",
    AuthError = "AUTH_ERROR",
    PDDataNotFoundError = "PD_ERROR",
    WebcamError = "WEBCAM_ERROR",
    PDCountdown = "PD_COUNTDOWN",
    PDCountdownEnd = "PD_COUNTDOWN_END",
    WebcamStopped = "WEBCAM_STOPPED"
}
export declare enum MazingPDOutMessage {
    StartAuthenticationPD = "AUTH_TRY_ON",
    LoadPD = "LOAD_PD",
    StartPD = "START_PD",
    StopWebcam = "STOP_WEBCAM"
}
export interface MazingTryOnInMessage {
    type: MazingFrameState;
    value: any;
}
export interface MazingFrameProps {
    className?: string;
    outMessageHandler: (e: MessageEvent<any>) => void;
    onReady?: (w: Window) => void;
}
export interface MazingTryOnProps {
    className?: string;
    obj: Blob;
    product: TryOnProduct;
    customer: TryOnSeller;
    fineTuningSettings?: TryOnFineTuningMazingSettings;
    initialState?: MazingTryOnInMessage;
    closeFlag: boolean;
    onReady?: () => void;
    onReadyToShow?: () => void;
    onClosed?: () => void;
}
export interface MazingPDProps {
    className?: string;
    product: TryOnProduct;
    customer: TryOnSeller;
    initialState?: MazingTryOnInMessage;
    closeFlag: boolean;
    onReady?: () => void;
    onReadyToShow?: () => void;
    onPDUpdated?: (pd: number) => void;
    onClosed?: () => void;
    onClose?: () => void;
}
export type MazingFrameState = MazingTryOnState | MazingPDState;
export declare const MazingFrameComponent: (props: MazingFrameProps) => JSX.Element;
export declare const MazingTryOnComponent: FunctionComponent<MazingTryOnProps>;
export declare const MazingPDToolComponent: FunctionComponent<MazingPDProps>;
