import { APIRequest } from '../api/request';
import { CaptchaType } from './constants';
export interface ICallbackServiceCaptchaPayload {
    type: CaptchaType;
    sid: string | number;
    src: string;
    request?: APIRequest;
}
export interface ICallbackServiceTwoFactorPayload {
    phoneMask?: string;
    type?: 'app' | 'sms';
}
export type CallbackServiceRetry = (code: Error | string) => Promise<void>;
export type CaptchaHandler = (payload: ICallbackServiceCaptchaPayload, retry: CallbackServiceRetry) => Promise<void> | void;
export type TwoFactorHandler = (payload: ICallbackServiceTwoFactorPayload, retry: CallbackServiceRetry) => Promise<void> | void;
export interface ICallbackServiceValidate {
    resolve: () => void;
    reject: (error: Error) => void;
}
export declare class CallbackService {
    private captchaHandler?;
    private twoFactorHandler?;
    /**
     * Checks if there is a captcha handler
     */
    get hasCaptchaHandler(): boolean;
    /**
     * Checks if there is a two-factor handler
     */
    get hasTwoFactorHandler(): boolean;
    /**
     * Sets a handler for captcha processing
     */
    onCaptcha(handler: CaptchaHandler): this;
    /**
     * Sets a handler for two factor processing
     */
    onTwoFactor(handler: TwoFactorHandler): this;
    /**
     * Processing captcha
     */
    processingCaptcha(payload: ICallbackServiceCaptchaPayload): Promise<{
        key: string;
        validate: ICallbackServiceValidate;
    }>;
    /**
     * Processing two-factor
     */
    processingTwoFactor(payload: ICallbackServiceTwoFactorPayload): Promise<{
        code: string;
        validate: ICallbackServiceValidate;
    }>;
}
