import { FlowStatesFlowErrorStatesEnum } from '../analytics/FlowStates';
import type { Configuration } from './Types';
export declare enum SdkErrorLevel {
    EXTERNAL = "external",
    INTERNAL = "internal"
}
export type SdkErrorTypes = 'invalid_token' | 'expired_token' | 'expired_trial' | 'geoblocked_request' | 'permissions_unavailable' | 'exception' | 'unsupported' | 'unsupported_feature' | 'invalid_sdk_parameter' | 'restart' | 'desktop' | 'unsupported_sdk_version' | 'no_camera' | 'user_consent_denied' | 'uncaught_fetch_error' | 'lazy_component_load_error' | 'api_error' | 'cross_device_verification_invalid' | 'cross_device_verification_abort' | 'workflow_abandoned' | 'workflow_error' | 'workflow_input_error' | 'cross_device_desktop_unavailable' | 'cross_device_connection_lost' | 'module_load_error' | 'cross_device_signature_invalid';
export declare const isSdkError: (error: unknown) => boolean;
export declare const isSdkErrorsType: (error: unknown) => boolean;
export type SdkErrors = {
    type: SdkErrorTypes;
    message: string;
    level: SdkErrorLevel;
    expound?: string;
    analyticsError?: FlowStatesFlowErrorStatesEnum;
};
export declare const CrossDeviceSignatureInvalid: SdkErrors;
export declare const CrossDeviceDesktopUnavailable: SdkErrors;
export declare const CrossDeviceConnectionLost: SdkErrors;
export declare const CrossDeviceRestartError: SdkErrors;
export declare const CrossDeviceDesktopError: SdkErrors;
export declare const CrossDeviceVerificationInvalidError: SdkErrors;
export declare const CrossDeviceVerificationAbortError: SdkErrors;
export declare const InvalidTokenError: SdkErrors;
export declare const WorkflowAbondonedError: SdkErrors;
export declare const WorkflowError: SdkErrors;
export declare const WorkflowInputError: SdkErrors;
export declare const ExpiredTokenError: SdkErrors;
export declare const ExpiredTrialError: SdkErrors;
export declare const GeoblockedRequestError: SdkErrors;
export declare const PermissionsUnavailableError: SdkErrors;
export declare const ExceptionError: SdkErrors;
export declare const UnsupportedError: SdkErrors;
export declare const UnsupportedFeatureError: SdkErrors;
export declare const InvalidSdkParameter: SdkErrors;
export declare const UnsupportedSdkVersionError: SdkErrors;
export declare const NoCameraError: SdkErrors;
export declare const UserConsentDeniedError: SdkErrors;
export declare const ApiError: SdkErrors;
export declare const UncaughtFetchError: SdkErrors;
export declare const LazyComponentLoadError: SdkErrors;
export declare const ModuleLoadError: SdkErrors;
export type ErrorModuleConfiguration = Configuration & {
    type: SdkErrorTypes;
};
export declare const SdkWarningType = "SdkWarning";
export declare class SdkError extends Error {
    readonly name = "SdkError";
    type: SdkErrorTypes;
    exception?: Error | unknown;
    level: SdkErrorLevel;
    analyticsError?: FlowStatesFlowErrorStatesEnum;
    body?: unknown;
    httpCode?: number;
    stack?: string;
    constructor({ type, message, level, exception, stack, body, httpCode, analyticsError, }: {
        type: SdkErrorTypes;
        message: string;
        level: SdkErrorLevel;
        exception?: Error | unknown;
        stack?: string;
        body?: unknown;
        httpCode?: number;
        analyticsError?: FlowStatesFlowErrorStatesEnum;
    });
    encode(): {
        name: string;
        type: SdkErrorTypes;
        message: string;
        level: SdkErrorLevel;
        stack: string | undefined;
        exception: unknown;
        body: unknown;
        httpCode: number | undefined;
        analyticsError: FlowStatesFlowErrorStatesEnum | undefined;
    };
    static decode(error: SdkError): SdkError;
}
export type ErrorCallback = (error: {
    type: SdkErrorTypes;
    message: string;
    exception?: Error | unknown;
}) => void;
export declare const formatError: (error: SdkError | Error | unknown) => unknown;
export declare const formatErrorMessage: (errorCategory: string, SdkError: SdkErrors) => SdkErrors;
