declare interface Branding {
    logo?: string;
    color?: string;
    name?: string;
    logoAlt?: string;
    hideLogoOnMobile?: boolean;
    showPoweredBy?: boolean;
    poweredByText?: string;
    poweredByLogo?: string;
}

declare interface LivenessData {
    faceImage: string;
    passed: boolean;
    metadata?: Metadata;
    error?: {
        key: string;
        message: string;
        statusCode?: number;
        name?: string;
        success?: boolean;
        data?: Record<string, any>;
    };
}

declare interface LivenessWebSdkProps {
    publicKey?: string;
    entityId?: string;
    isEmbedded?: boolean;
    presentation?: Presentation;
    tasks?: Array<Task>;
    user?: User;
    branding?: Branding;
    isMobileAppWebView?: boolean;
    allowAudio?: boolean;
    onClose?: () => void;
    onSuccess?: (data: LivenessData) => void;
    onFailure?: (data: LivenessData) => void;
    metadata?: Metadata;
    sandboxEnvironment?: boolean;
    sessionId: string;
    sessionToken: string;
    forceDevUrl?: boolean;
    mediaDeviceValidation?: MediaDeviceValidationOptions;
}

declare interface MediaDeviceValidationOptions {
    enabled?: boolean;
    blockedPatterns?: string[];
}

declare type Metadata = Record<string, any>;

declare interface PassiveTask extends TaskBase<"passive"> {
    id: "passive";
}

declare type Presentation = "modal" | "page";

declare type Task = PassiveTask;

declare interface TaskBase<T extends TaskId> {
    id: T;
    difficulty?: TaskDifficulty;
    timeout?: number;
}

declare type TaskDifficulty = "easy" | "medium" | "hard";

declare type TaskId = "passive";

declare interface User {
    firstName: string;
    lastName?: string;
    email?: string;
}

declare class WebSDK {
    private tasks;
    private container;
    private namespace;
    private props;
    private presentation;
    private loadedScripts;
    constructor(props: LivenessWebSdkProps);
    private validateOptions;
    start(tasks?: Array<Task>): Promise<void>;
    private unmount;
    close(): void;
}
export default WebSDK;

export { }
