type ClientOptions$1 = {
    baseUrl: "https://api-bluvo.com" | "https://test.api-bluvo.com" | (string & {});
};
declare const SchemaEnum: {
    readonly COINBASE: "coinbase";
    readonly KRAKEN: "kraken";
    readonly BINANCE: "binance";
    readonly LOCAL_CEX: "local-cex";
    readonly BINANCE_WEB: "binance-web";
    readonly BYBIT_WEB: "bybit-web";
};
type SchemaEnum = (typeof SchemaEnum)[keyof typeof SchemaEnum];
declare const StatusEnum: {
    readonly LIVE: "live";
    readonly OFFLINE: "offline";
    readonly MAINTENANCE: "maintenance";
    readonly COMING_SOON: "coming_soon";
};
type StatusEnum = (typeof StatusEnum)[keyof typeof StatusEnum];
declare const ExchangeEnum: {
    readonly ACE: "ace";
    readonly ASCENDEX: "ascendex";
    readonly BEQUANT: "bequant";
    readonly BIGONE: "bigone";
    readonly BINANCE: "binance";
    readonly BINANCE_WEB: "binance-web";
    readonly COINBASE: "coinbase";
    readonly BINANCEUS: "binanceus";
    readonly BINGX: "bingx";
    readonly BIT2C: "bit2c";
    readonly BITBANK: "bitbank";
    readonly BITBNS: "bitbns";
    readonly BITCOINCOM: "bitcoincom";
    readonly BITFINEX: "bitfinex";
    readonly BITFLYER: "bitflyer";
    readonly BITGET: "bitget";
    readonly BITHUMB: "bithumb";
    readonly BITMART: "bitmart";
    readonly BITMEX: "bitmex";
    readonly BITOPRO: "bitopro";
    readonly BITPANDA: "bitpanda";
    readonly BITRUE: "bitrue";
    readonly BITSO: "bitso";
    readonly BITSTAMP: "bitstamp";
    readonly BITTEAM: "bitteam";
    readonly BITVAVO: "bitvavo";
    readonly BYBIT: "bybit";
    readonly BYBIT_WEB: "bybit-web";
    readonly BL3P: "bl3p";
    readonly BLOCKCHAINCOM: "blockchaincom";
    readonly BLOFIN: "blofin";
    readonly BTCALPHA: "btcalpha";
    readonly BTCBOX: "btcbox";
    readonly BTCMARKETS: "btcmarkets";
    readonly BTCTURK: "btcturk";
    readonly CEX: "cex";
    readonly COINCHECK: "coincheck";
    readonly COINEX: "coinex";
    readonly COINLIST: "coinlist";
    readonly COINMATE: "coinmate";
    readonly COINMETRO: "coinmetro";
    readonly COINONE: "coinone";
    readonly COINSPH: "coinsph";
    readonly COINSPOT: "coinspot";
    readonly CRYPTOCOM: "cryptocom";
    readonly DELTA: "delta";
    readonly DERIBIT: "deribit";
    readonly DIGIFINEX: "digifinex";
    readonly EXMO: "exmo";
    readonly FMFWIO: "fmfwio";
    readonly GATE: "gate";
    readonly GATEIO: "gateio";
    readonly GEMINI: "gemini";
    readonly HASHKEY: "hashkey";
    readonly HITBTC: "hitbtc";
    readonly HOLLAEX: "hollaex";
    readonly HTX: "htx";
    readonly HUOBI: "huobi";
    readonly HUOBIJP: "huobijp";
    readonly HYPERLIQUID: "hyperliquid";
    readonly INDEPENDENTRESERVE: "independentreserve";
    readonly INDODAX: "indodax";
    readonly KRAKEN: "kraken";
    readonly KRAKENFUTURES: "krakenfutures";
    readonly KUCOIN: "kucoin";
    readonly KUCOINFUTURES: "kucoinfutures";
    readonly LATOKEN: "latoken";
    readonly LBANK: "lbank";
    readonly LUNO: "luno";
    readonly MERCADO: "mercado";
    readonly MEXC: "mexc";
    readonly NDAX: "ndax";
    readonly NOVADAX: "novadax";
    readonly OCEANEX: "oceanex";
    readonly OKCOIN: "okcoin";
    readonly OKX: "okx";
    readonly ONETRADING: "onetrading";
    readonly OXFUN: "oxfun";
    readonly P2B: "p2b";
    readonly PARADEX: "paradex";
    readonly PAYMIUM: "paymium";
    readonly PHEMEX: "phemex";
    readonly POLONIEX: "poloniex";
    readonly POLONIEXFUTURES: "poloniexfutures";
    readonly PROBIT: "probit";
    readonly TIMEX: "timex";
    readonly TRADEOGRE: "tradeogre";
    readonly UPBIT: "upbit";
    readonly VERTEX: "vertex";
    readonly WAVESEXCHANGE: "wavesexchange";
    readonly WHITEBIT: "whitebit";
    readonly WOO: "woo";
    readonly WOOFIPRO: "woofipro";
    readonly XT: "xt";
    readonly YOBIT: "yobit";
    readonly ZAIF: "zaif";
    readonly ZONDA: "zonda";
    readonly LOCAL_CEX: "local-cex";
};
type ExchangeEnum = (typeof ExchangeEnum)[keyof typeof ExchangeEnum];
declare const StatusEnum2: {
    readonly SUCCESS: "SUCCESS";
    readonly INVALID_API_CREDENTIALS: "INVALID_API_CREDENTIALS";
};
type StatusEnum2 = (typeof StatusEnum2)[keyof typeof StatusEnum2];
declare const TypeEnum: {
    readonly WALLET_NOT_FOUND: "WALLET_NOT_FOUND";
    readonly WALLET_IDENTITY_NOT_FOUND: "WALLET_IDENTITY_NOT_FOUND";
};
type TypeEnum = (typeof TypeEnum)[keyof typeof TypeEnum];
declare const SchemaEnum2: {
    readonly ACE: "ace";
    readonly ASCENDEX: "ascendex";
    readonly BEQUANT: "bequant";
    readonly BIGONE: "bigone";
    readonly BINANCE: "binance";
    readonly BINANCE_WEB: "binance-web";
    readonly COINBASE: "coinbase";
    readonly BINANCEUS: "binanceus";
    readonly BINGX: "bingx";
    readonly BIT2C: "bit2c";
    readonly BITBANK: "bitbank";
    readonly BITBNS: "bitbns";
    readonly BITCOINCOM: "bitcoincom";
    readonly BITFINEX: "bitfinex";
    readonly BITFLYER: "bitflyer";
    readonly BITGET: "bitget";
    readonly BITHUMB: "bithumb";
    readonly BITMART: "bitmart";
    readonly BITMEX: "bitmex";
    readonly BITOPRO: "bitopro";
    readonly BITPANDA: "bitpanda";
    readonly BITRUE: "bitrue";
    readonly BITSO: "bitso";
    readonly BITSTAMP: "bitstamp";
    readonly BITTEAM: "bitteam";
    readonly BITVAVO: "bitvavo";
    readonly BYBIT: "bybit";
    readonly BYBIT_WEB: "bybit-web";
    readonly BL3P: "bl3p";
    readonly BLOCKCHAINCOM: "blockchaincom";
    readonly BLOFIN: "blofin";
    readonly BTCALPHA: "btcalpha";
    readonly BTCBOX: "btcbox";
    readonly BTCMARKETS: "btcmarkets";
    readonly BTCTURK: "btcturk";
    readonly CEX: "cex";
    readonly COINCHECK: "coincheck";
    readonly COINEX: "coinex";
    readonly COINLIST: "coinlist";
    readonly COINMATE: "coinmate";
    readonly COINMETRO: "coinmetro";
    readonly COINONE: "coinone";
    readonly COINSPH: "coinsph";
    readonly COINSPOT: "coinspot";
    readonly CRYPTOCOM: "cryptocom";
    readonly DELTA: "delta";
    readonly DERIBIT: "deribit";
    readonly DIGIFINEX: "digifinex";
    readonly EXMO: "exmo";
    readonly FMFWIO: "fmfwio";
    readonly GATE: "gate";
    readonly GATEIO: "gateio";
    readonly GEMINI: "gemini";
    readonly HASHKEY: "hashkey";
    readonly HITBTC: "hitbtc";
    readonly HOLLAEX: "hollaex";
    readonly HTX: "htx";
    readonly HUOBI: "huobi";
    readonly HUOBIJP: "huobijp";
    readonly HYPERLIQUID: "hyperliquid";
    readonly INDEPENDENTRESERVE: "independentreserve";
    readonly INDODAX: "indodax";
    readonly KRAKEN: "kraken";
    readonly KRAKENFUTURES: "krakenfutures";
    readonly KUCOIN: "kucoin";
    readonly KUCOINFUTURES: "kucoinfutures";
    readonly LATOKEN: "latoken";
    readonly LBANK: "lbank";
    readonly LUNO: "luno";
    readonly MERCADO: "mercado";
    readonly MEXC: "mexc";
    readonly NDAX: "ndax";
    readonly NOVADAX: "novadax";
    readonly OCEANEX: "oceanex";
    readonly OKCOIN: "okcoin";
    readonly OKX: "okx";
    readonly ONETRADING: "onetrading";
    readonly OXFUN: "oxfun";
    readonly P2B: "p2b";
    readonly PARADEX: "paradex";
    readonly PAYMIUM: "paymium";
    readonly PHEMEX: "phemex";
    readonly POLONIEX: "poloniex";
    readonly POLONIEXFUTURES: "poloniexfutures";
    readonly PROBIT: "probit";
    readonly TIMEX: "timex";
    readonly TRADEOGRE: "tradeogre";
    readonly UPBIT: "upbit";
    readonly VERTEX: "vertex";
    readonly WAVESEXCHANGE: "wavesexchange";
    readonly WHITEBIT: "whitebit";
    readonly WOO: "woo";
    readonly WOOFIPRO: "woofipro";
    readonly XT: "xt";
    readonly YOBIT: "yobit";
    readonly ZAIF: "zaif";
    readonly ZONDA: "zonda";
    readonly LOCAL_CEX: "local-cex";
    readonly NULL: null;
};
type SchemaEnum2 = (typeof SchemaEnum2)[keyof typeof SchemaEnum2];
declare const SchemaEnum3: {
    readonly TRUE: "true";
    readonly FALSE: "false";
    readonly NULL: null;
};
type SchemaEnum3 = (typeof SchemaEnum3)[keyof typeof SchemaEnum3];
declare const TypeEnum2: {
    readonly DEPOSIT: "deposit";
    readonly WITHDRAWAL: "withdrawal";
    readonly TRANSACTION: "transaction";
};
type TypeEnum2 = (typeof TypeEnum2)[keyof typeof TypeEnum2];
declare const DirectionEnum: {
    readonly IN: "in";
    readonly OUT: "out";
    readonly NULL: null;
};
type DirectionEnum = (typeof DirectionEnum)[keyof typeof DirectionEnum];
declare const FiatCurrencyEnum: {
    readonly USD: "USD";
    readonly EUR: "EUR";
    readonly NULL: null;
};
type FiatCurrencyEnum = (typeof FiatCurrencyEnum)[keyof typeof FiatCurrencyEnum];
declare const StatusEnum3: {
    readonly PENDING: "pending";
    readonly OK: "ok";
    readonly FAILED: "failed";
    readonly CANCELED: "canceled";
};
type StatusEnum3 = (typeof StatusEnum3)[keyof typeof StatusEnum3];
declare const CategoryEnum: {
    readonly EXCHANGE_WITHDRAWAL_FEE: "exchange_withdrawal_fee";
    readonly NETWORK_FEE: "network_fee";
    readonly PROVIDER_FEE: "provider_fee";
    readonly OTHER: "other";
};
type CategoryEnum = (typeof CategoryEnum)[keyof typeof CategoryEnum];
declare const TypeEnum3: {
    readonly GENERIC_NOT_FOUND: "GENERIC_NOT_FOUND";
    readonly GENERIC_UNAUTHORIZED: "GENERIC_UNAUTHORIZED";
    readonly GENERIC_INTERNAL_SERVER_ERROR: "GENERIC_INTERNAL_SERVER_ERROR";
    readonly GENERIC_VALIDATION_ERROR: "GENERIC_VALIDATION_ERROR";
    readonly GENERIC_INVALID_REQUEST: "GENERIC_INVALID_REQUEST";
    readonly GENERIC_RATE_LIMIT_EXCEEDED: "GENERIC_RATE_LIMIT_EXCEEDED";
    readonly APIKEY_INSUFFICIENT_PERMISSIONS: "APIKEY_INSUFFICIENT_PERMISSIONS";
    readonly WALLET_NOT_FOUND: "WALLET_NOT_FOUND";
    readonly WALLET_INVALID_CREDENTIALS: "WALLET_INVALID_CREDENTIALS";
    readonly WALLET_IDENTITY_NOT_FOUND: "WALLET_IDENTITY_NOT_FOUND";
    readonly QUOTE_NOT_FOUND: "QUOTE_NOT_FOUND";
    readonly QUOTE_EXPIRED: "QUOTE_EXPIRED";
    readonly WITHDRAWAL_INSUFFICIENT_BALANCE: "WITHDRAWAL_INSUFFICIENT_BALANCE";
    readonly WITHDRAWAL_INSUFFICIENT_BALANCE_FOR_FEE: "WITHDRAWAL_INSUFFICIENT_BALANCE_FOR_FEE";
    readonly WITHDRAWAL_INVALID_ADDRESS: "WITHDRAWAL_INVALID_ADDRESS";
    readonly WITHDRAWAL_NETWORK_NOT_SUPPORTED: "WITHDRAWAL_NETWORK_NOT_SUPPORTED";
    readonly WITHDRAWAL_TOO_MANY_ADDRESSES: "WITHDRAWAL_TOO_MANY_ADDRESSES";
    readonly WITHDRAWAL_AMOUNT_BELOW_MINIMUM: "WITHDRAWAL_AMOUNT_BELOW_MINIMUM";
    readonly WITHDRAWAL_AMOUNT_ABOVE_MAXIMUM: "WITHDRAWAL_AMOUNT_ABOVE_MAXIMUM";
    readonly WITHDRAWAL_ASSET_NOT_SUPPORTED: "WITHDRAWAL_ASSET_NOT_SUPPORTED";
    readonly WITHDRAWAL_PROVIDER_ERROR: "WITHDRAWAL_PROVIDER_ERROR";
    readonly WITHDRAWAL_2FA_REQUIRED_TOTP: "WITHDRAWAL_2FA_REQUIRED_TOTP";
    readonly WITHDRAWAL_2FA_REQUIRED_SMS: "WITHDRAWAL_2FA_REQUIRED_SMS";
    readonly WITHDRAWAL_2FA_REQUIRED_FACE_RECOGNITION: "WITHDRAWAL_2FA_REQUIRED_FACE_RECOGNITION";
    readonly WITHDRAWAL_2FA_REQUIRED_EMAIL: "WITHDRAWAL_2FA_REQUIRED_EMAIL";
    readonly WITHDRAWAL_2FA_REQUIRED_YUBIKEY: "WITHDRAWAL_2FA_REQUIRED_YUBIKEY";
    readonly WITHDRAWAL_2FA_REQUIRED_PASSPHRASE: "WITHDRAWAL_2FA_REQUIRED_PASSPHRASE";
    readonly WITHDRAWAL_2FA_REQUIRED_MULTI_STEPS: "WITHDRAWAL_2FA_REQUIRED_MULTI_STEPS";
    readonly WITHDRAWAL_2FA_INCOMPLETE: "WITHDRAWAL_2FA_INCOMPLETE";
    readonly WITHDRAWAL_2FA_INVALID: "WITHDRAWAL_2FA_INVALID";
    readonly WITHDRAWAL_2FA_METHOD_NOT_SUPPORTED: "WITHDRAWAL_2FA_METHOD_NOT_SUPPORTED";
    readonly WITHDRAWAL_KYC_REQUIRED: "WITHDRAWAL_KYC_REQUIRED";
    readonly WITHDRAWAL_EMAIL_UNVERIFIED: "WITHDRAWAL_EMAIL_UNVERIFIED";
    readonly WITHDRAWAL_RATE_LIMIT_EXCEEDED: "WITHDRAWAL_RATE_LIMIT_EXCEEDED";
    readonly OAUTH_AUTHORIZATION_FAILED: "OAUTH_AUTHORIZATION_FAILED";
    readonly OAUTH_TOKEN_EXCHANGE_FAILED: "OAUTH_TOKEN_EXCHANGE_FAILED";
    readonly OAUTH_INVALID_STATE: "OAUTH_INVALID_STATE";
    readonly OAUTH_INSUFFICIENT_SCOPE: "OAUTH_INSUFFICIENT_SCOPE";
    readonly OAUTH_QR_CODE_UNAVAILABLE: "OAUTH_QR_CODE_UNAVAILABLE";
    readonly OAUTH_COUNTRY_NOT_DETECTED: "OAUTH_COUNTRY_NOT_DETECTED";
    readonly OAUTH_COUNTRY_NOT_SUPPORTED: "OAUTH_COUNTRY_NOT_SUPPORTED";
    readonly OAUTH_COUNTRY_CODE_INVALID: "OAUTH_COUNTRY_CODE_INVALID";
    readonly WEBHOOK_SIGNATURE_INVALID: "WEBHOOK_SIGNATURE_INVALID";
    readonly WEBHOOK_MISSING_HEADERS: "WEBHOOK_MISSING_HEADERS";
    readonly WEBHOOK_INVALID_TIMESTAMP: "WEBHOOK_INVALID_TIMESTAMP";
    readonly CACHE_MISS: "CACHE_MISS";
    readonly CACHE_EXPIRED: "CACHE_EXPIRED";
    readonly CACHE_INVALID_PATH: "CACHE_INVALID_PATH";
    readonly WITHDRAWAL_DRY_RUN_COMPLETE: "WITHDRAWAL_DRY_RUN_COMPLETE";
    readonly ENRICHMENT_NETWORK_NOT_SUPPORTED: "ENRICHMENT_NETWORK_NOT_SUPPORTED";
    readonly ENRICHMENT_TIMEOUT: "ENRICHMENT_TIMEOUT";
    readonly ENRICHMENT_API_ERROR: "ENRICHMENT_API_ERROR";
};
type TypeEnum3 = (typeof TypeEnum3)[keyof typeof TypeEnum3];
declare const TypeEnum4: {
    readonly GOOGLE: "GOOGLE";
    readonly EMAIL: "EMAIL";
    readonly FACE: "FACE";
    readonly SMS: "SMS";
    readonly ROAMING_FIDO: "ROAMING_FIDO";
};
type TypeEnum4 = (typeof TypeEnum4)[keyof typeof TypeEnum4];
declare const StatusEnum4: {
    readonly PENDING: "pending";
    readonly SUCCESS: "success";
    readonly FAILED: "failed";
};
type StatusEnum4 = (typeof StatusEnum4)[keyof typeof StatusEnum4];
declare const RelationEnum: {
    readonly AND: "AND";
    readonly OR: "OR";
};
type RelationEnum = (typeof RelationEnum)[keyof typeof RelationEnum];
type Oauth2ExchangeurlgeturlData = {
    body?: never;
    path: {
        /**
         * Exchange identifier.
         */
        exchange: SchemaEnum;
    };
    query: {
        /**
         * Idempotency key.
         */
        idem: string;
        /**
         * Custom base domain for redirect URI i.e. 'example.com'.
         */
        customDomain?: string | null;
    };
    url: "/v0/oauth2/{exchange}/url";
};
type Oauth2ExchangeurlgeturlResponses = {
    /**
     * Successful response
     */
    200: {
        url: string;
        success: boolean;
        isQRCode?: boolean;
    };
};
type Oauth2ExchangeurlgeturlResponse = Oauth2ExchangeurlgeturlResponses[keyof Oauth2ExchangeurlgeturlResponses];
type Oauth2ExchangeslistexchangesData = {
    body?: never;
    path?: never;
    query?: never;
    url: "/v0/oauth2/exchanges";
};
type Oauth2ExchangeslistexchangesResponses = {
    /**
     * Successful response
     */
    200: {
        success: boolean;
        exchanges: Array<{
            id: string;
            name: string;
            logoUrl: string;
            status: StatusEnum;
        }>;
    };
};
type Oauth2ExchangeslistexchangesResponse = Oauth2ExchangeslistexchangesResponses[keyof Oauth2ExchangeslistexchangesResponses];
type WalletdeleteData = {
    body?: never;
    path?: never;
    query?: never;
    url: "/v0/wallet";
};
type WalletdeleteErrors = {
    /**
     * Forbidden - Insufficient API key permissions
     */
    403: {
        error: string;
        type: "APIKEY_INSUFFICIENT_PERMISSIONS";
        missing: Array<string>;
    };
    /**
     * Not Found
     */
    404: {
        error: string;
        type: "WALLET_NOT_FOUND";
        result?: unknown;
    };
};
type WalletdeleteError = WalletdeleteErrors[keyof WalletdeleteErrors];
type WalletdeleteResponses = {
    /**
     * Successful response
     */
    200: {
        success: boolean;
        message: string;
    };
};
type WalletdeleteResponse = WalletdeleteResponses[keyof WalletdeleteResponses];
type WalletgetData = {
    body?: never;
    path?: never;
    query?: never;
    url: "/v0/wallet";
};
type WalletgetErrors = {
    /**
     * Forbidden - Insufficient API key permissions
     */
    403: {
        error: string;
        type: "APIKEY_INSUFFICIENT_PERMISSIONS";
        missing: Array<string>;
    };
    /**
     * Not Found
     */
    404: {
        error: string;
        type: "WALLET_NOT_FOUND";
        result?: unknown;
    };
};
type WalletgetError = WalletgetErrors[keyof WalletgetErrors];
type WalletgetResponses = {
    /**
     * Successful response
     */
    200: {
        id: string;
        exchange: ExchangeEnum;
        balances: {
            [key: string]: {
                free?: number | null;
                used?: number | null;
                total?: number | null;
                assetId?: string | null;
                slug?: string | null;
            } | null;
        };
        ipPool?: Array<string> | null;
        invalidApi?: boolean | null;
        createdAt?: string | number | null;
        updatedAt?: string | number | null;
        lastSyncAt?: string | number | null;
        expiresAt?: string | number | null;
    };
};
type WalletgetResponse = WalletgetResponses[keyof WalletgetResponses];
type WalletpingpingData = {
    body?: never;
    path?: never;
    query?: never;
    url: "/v0/wallet/ping";
};
type WalletpingpingErrors = {
    /**
     * Forbidden - Insufficient API key permissions
     */
    403: {
        error: string;
        type: "APIKEY_INSUFFICIENT_PERMISSIONS";
        missing: Array<string>;
    };
    /**
     * Not Found
     */
    404: {
        error: string;
        type: "WALLET_NOT_FOUND";
        result?: unknown;
    };
};
type WalletpingpingError = WalletpingpingErrors[keyof WalletpingpingErrors];
type WalletpingpingResponses = {
    /**
     * Successful response
     */
    200: {
        id: string;
        exchange: ExchangeEnum;
        status: StatusEnum2;
        success: boolean;
    };
};
type WalletpingpingResponse = WalletpingpingResponses[keyof WalletpingpingResponses];
type WalletkycgetkycidentityData = {
    body?: never;
    path?: never;
    query?: never;
    url: "/v0/wallet/kyc";
};
type WalletkycgetkycidentityErrors = {
    /**
     * Forbidden - Insufficient API key permissions
     */
    403: {
        error: string;
        type: "APIKEY_INSUFFICIENT_PERMISSIONS";
        missing: Array<string>;
    };
    /**
     * Not Found
     */
    404: {
        error: string;
        type: TypeEnum;
    };
};
type WalletkycgetkycidentityError = WalletkycgetkycidentityErrors[keyof WalletkycgetkycidentityErrors];
type WalletkycgetkycidentityResponses = {
    /**
     * Successful response
     */
    200: {
        fullName: string | null;
        email: string | null;
        iban: string | null;
        country: string | null;
    };
};
type WalletkycgetkycidentityResponse = WalletkycgetkycidentityResponses[keyof WalletkycgetkycidentityResponses];
type WalletlistlistwalletsData = {
    body?: never;
    path?: never;
    query?: {
        /**
         * Page number (0-indexed).
         */
        page?: number | null;
        /**
         * Number of wallets per page (max 1000).
         */
        limit?: number | null;
        /**
         * Filter by exchange.
         */
        exchange?: SchemaEnum2;
        /**
         * Filter by creation date (from, ISO format).
         */
        createdSince?: string | null;
        /**
         * Filter by creation date (before, ISO format).
         */
        createdBefore?: string | null;
        /**
         * Filter by last sync date (from, ISO format).
         */
        lastSyncSince?: string | null;
        /**
         * Filter by last sync date (before, ISO format).
         */
        lastSyncBefore?: string | null;
        /**
         * Filter by API validity status.
         */
        invalidApi?: SchemaEnum3;
        /**
         * Comma-separated list of fields to include.
         */
        fields?: string | null;
    };
    url: "/v0/wallet/list";
};
type WalletlistlistwalletsErrors = {
    /**
     * Forbidden - Insufficient API key permissions
     */
    403: {
        error: string;
        type: "APIKEY_INSUFFICIENT_PERMISSIONS";
        missing: Array<string>;
    };
};
type WalletlistlistwalletsError = WalletlistlistwalletsErrors[keyof WalletlistlistwalletsErrors];
type WalletlistlistwalletsResponses = {
    /**
     * Successful response
     */
    200: {
        wallets: Array<{
            id: string;
            projectId?: string | null;
            createdAt?: string | number | null;
            updatedAt?: string | number | null;
            lastSyncAt?: string | number | null;
            expiresAt?: string | number | null;
            exchange: ExchangeEnum;
            balances: {
                [key: string]: {
                    free?: number | null;
                    used?: number | null;
                    total?: number | null;
                    assetId?: string | null;
                    slug?: string | null;
                } | null;
            };
            ipPool?: Array<string> | null;
            invalidApi?: boolean | number | null;
        }>;
        pagination: {
            totalCount: number;
            page: number;
            limit: number;
            pageCount: number;
        };
    };
};
type WalletlistlistwalletsResponse = WalletlistlistwalletsResponses[keyof WalletlistlistwalletsResponses];
type WallettransactionslisttransactionsData = {
    body?: never;
    path?: never;
    query?: {
        /**
         * Page number (0-indexed).
         */
        page?: number | null;
        /**
         * Number of transactions per page (max 1000).
         */
        limit?: number | null;
        /**
         * Filter transactions after this date (ISO format).
         */
        sinceDate?: string | null;
    };
    url: "/v0/wallet/transactions";
};
type WallettransactionslisttransactionsErrors = {
    /**
     * Forbidden - Insufficient API key permissions
     */
    403: {
        error: string;
        type: "APIKEY_INSUFFICIENT_PERMISSIONS";
        missing: Array<string>;
    };
};
type WallettransactionslisttransactionsError = WallettransactionslisttransactionsErrors[keyof WallettransactionslisttransactionsErrors];
type WallettransactionslisttransactionsResponses = {
    /**
     * Successful response
     */
    200: {
        transactions: Array<{
            id: string;
            walletId: string;
            createdAt?: string | number | null;
            updatedAt?: string | number | null;
            timestamp?: string | number | null;
            type: TypeEnum2;
            amount: number;
            currency: string;
            direction?: DirectionEnum;
            feeCost?: number | null;
            feeCurrency?: string | null;
            amountInFiat?: number | null;
            feeInFiat?: number | null;
            fiatCurrency?: FiatCurrencyEnum;
            status: StatusEnum3;
            addressTo?: string | null;
            network?: string | null;
            addressFrom?: string | null;
            hash?: string | null;
            contractAddress?: string | null;
            tag?: string | null;
            exchange?: string | null;
            rawResponse?: unknown;
        }>;
        pagination: {
            totalCount: number;
            page: number;
            limit: number;
            pageCount: number;
            offset: number;
        };
    };
};
type WallettransactionslisttransactionsResponse = WallettransactionslisttransactionsResponses[keyof WallettransactionslisttransactionsResponses];
type WallettransactiontransactionidgettransactionData = {
    body?: never;
    path: {
        /**
         * The transaction ID
         */
        transactionId: string;
    };
    query?: never;
    url: "/v0/wallet/transaction/{transactionId}";
};
type WallettransactiontransactionidgettransactionErrors = {
    /**
     * Forbidden - Insufficient API key permissions
     */
    403: {
        error: string;
        type: "APIKEY_INSUFFICIENT_PERMISSIONS";
        missing: Array<string>;
    };
    /**
     * Not Found
     */
    404: {
        error: string;
        type: "GENERIC_NOT_FOUND";
    };
};
type WallettransactiontransactionidgettransactionError = WallettransactiontransactionidgettransactionErrors[keyof WallettransactiontransactionidgettransactionErrors];
type WallettransactiontransactionidgettransactionResponses = {
    /**
     * Successful response
     */
    200: {
        id: string;
        walletId: string;
        createdAt?: string | number | null;
        updatedAt?: string | number | null;
        timestamp?: string | number | null;
        type: TypeEnum2;
        amount: number;
        currency: string;
        direction?: DirectionEnum;
        feeCost?: number | null;
        feeCurrency?: string | null;
        amountInFiat?: number | null;
        feeInFiat?: number | null;
        fiatCurrency?: FiatCurrencyEnum;
        status: StatusEnum3;
        addressTo?: string | null;
        address?: string | null;
        network?: string | null;
        addressFrom?: string | null;
        hash?: string | null;
        contractAddress?: string | null;
        tag?: string | null;
        exchange?: string | null;
        rawResponse?: unknown;
    };
};
type WallettransactiontransactionidgettransactionResponse = WallettransactiontransactionidgettransactionResponses[keyof WallettransactiontransactionidgettransactionResponses];
type WalletwithdrawbalancebalanceData = {
    body?: never;
    path?: never;
    query?: {
        /**
         * Override balance refresh threshold in minutes. Set to 0 to always refresh balances from the exchange. Defaults to 0.
         */
        refreshThresholdMinutes?: number;
        /**
         * Automatically delete the wallet if API credentials are found to be invalid during balance fetch. Defaults to true.
         */
        autoDeleteIfInvalid?: boolean;
    };
    url: "/v0/wallet/withdraw/balance";
};
type WalletwithdrawbalancebalanceErrors = {
    /**
     * Forbidden - Insufficient API key permissions
     */
    403: {
        error: string;
        type: "APIKEY_INSUFFICIENT_PERMISSIONS";
        missing: Array<string>;
    };
    /**
     * Not Found
     */
    404: {
        error: string;
        type: "WALLET_NOT_FOUND";
        result?: unknown;
    };
};
type WalletwithdrawbalancebalanceError = WalletwithdrawbalancebalanceErrors[keyof WalletwithdrawbalancebalanceErrors];
type WalletwithdrawbalancebalanceResponses = {
    /**
     * Successful response
     */
    200: {
        lastSyncAt: string;
        balances: Array<{
            asset: string;
            amount: number;
            amountInFiat?: number | null;
            networks: Array<{
                chainId?: 1 | 10 | 14 | 19 | 50 | 56 | 61 | 130 | 137 | 146 | 246 | 295 | 314 | 324 | 480 | 592 | 686 | 747 | 1100 | 1116 | 1284 | 1285 | 1329 | 1514 | 1776 | 2020 | 2088 | 2222 | 3338 | 5464 | 5888 | 7000 | 8453 | 9745 | 10001 | 16600 | 42161 | 42170 | 42220 | 42262 | 43114 | 57073 | 59144 | 80094 | 81457 | 100009 | null;
                tokenAddress?: string | null;
                contractAddress?: string | null;
                contractAddressVerified?: boolean | null;
                id: string;
                name: string;
                displayName: string;
                minWithdrawal: string;
                maxWithdrawal?: string;
                assetName: string;
                addressRegex?: string | null;
            }>;
            extra?: {
                slug?: string;
                assetId?: string;
            };
        }>;
    };
};
type WalletwithdrawbalancebalanceResponse = WalletwithdrawbalancebalanceResponses[keyof WalletwithdrawbalancebalanceResponses];
type WalletwithdrawquotequotationData = {
    body: {
        asset: string;
        amount: string;
        address: string;
        network?: string;
        tag?: string;
        includeFee: boolean;
    };
    path?: never;
    query?: never;
    url: "/v0/wallet/withdraw/quote";
};
type WalletwithdrawquotequotationErrors = {
    /**
     * Bad Request
     */
    400: {
        error: string;
        type: TypeEnum3;
        result?: unknown;
    };
    /**
     * Forbidden - Insufficient API key permissions
     */
    403: {
        error: string;
        type: "APIKEY_INSUFFICIENT_PERMISSIONS";
        missing: Array<string>;
    };
    /**
     * Not Found
     */
    404: {
        error: string;
        type: "WALLET_NOT_FOUND";
        result?: unknown;
    };
};
type WalletwithdrawquotequotationError = WalletwithdrawquotequotationErrors[keyof WalletwithdrawquotequotationErrors];
type WalletwithdrawquotequotationResponses = {
    /**
     * Successful response
     */
    200: {
        id: string;
        asset: string;
        amountWithFee?: number | null;
        amountNoFee?: number | null;
        estimatedFee?: number | null;
        amountWithFeeInFiat?: number | null;
        amountNoFeeInFiat?: number | null;
        estimatedFeeInFiat?: number | null;
        destinationAddress: string;
        network?: string | null;
        tag?: string | null;
        estimatedTotal?: number;
        feeDetails?: Array<{
            category: CategoryEnum;
            currency: string;
            amount: number;
            amountInFiat?: number | null;
            fiatCurrency: string;
        }>;
        expiresAt: string;
        additionalInfo: {
            minWithdrawal: string | null;
            maxWithdrawal?: string | null;
        };
    };
};
type WalletwithdrawquotequotationResponse = WalletwithdrawquotequotationResponses[keyof WalletwithdrawquotequotationResponses];
type WalletwithdrawquoteidexecutewithdrawData = {
    body: {
        twofa?: string | null;
        emailCode?: string | null;
        smsCode?: string | null;
        bizNo?: string | null;
        tag?: string | null;
        params?: {
            dryRun?: boolean;
            [key: string]: unknown | boolean | undefined;
        } | null;
    };
    path: {
        quoteId: string;
    };
    query?: {
        /**
         * Automatically delete the wallet if API credentials are found to be invalid during balance fetch. Defaults to true.
         */
        autoDeleteIfInvalid?: boolean;
    };
    url: "/v0/wallet/withdraw/{quoteId}/execute";
};
type WalletwithdrawquoteidexecutewithdrawErrors = {
    /**
     * Bad Request
     */
    400: {
        error: string;
        type: TypeEnum3;
        result?: {
            bizNo: string;
            steps: Array<{
                type: TypeEnum4;
                status: StatusEnum4;
                required: boolean;
                metadata?: {
                    email?: string;
                    emailSent?: boolean;
                    qrCodeUrl?: string;
                    qrCodeValidSeconds?: number;
                    roamingFlowId?: string;
                    [key: string]: unknown | string | boolean | number | undefined;
                };
                [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                    email?: string;
                    emailSent?: boolean;
                    qrCodeUrl?: string;
                    qrCodeValidSeconds?: number;
                    roamingFlowId?: string;
                    [key: string]: unknown | string | boolean | number | undefined;
                } | undefined;
            }>;
            relation: RelationEnum;
            mfa?: {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            };
            [key: string]: unknown | string | Array<{
                type: TypeEnum4;
                status: StatusEnum4;
                required: boolean;
                metadata?: {
                    email?: string;
                    emailSent?: boolean;
                    qrCodeUrl?: string;
                    qrCodeValidSeconds?: number;
                    roamingFlowId?: string;
                    [key: string]: unknown | string | boolean | number | undefined;
                };
                [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                    email?: string;
                    emailSent?: boolean;
                    qrCodeUrl?: string;
                    qrCodeValidSeconds?: number;
                    roamingFlowId?: string;
                    [key: string]: unknown | string | boolean | number | undefined;
                } | undefined;
            }> | RelationEnum | {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            } | undefined;
        } | {
            bizNo?: string;
            steps?: Array<{
                type: string;
                status: StatusEnum4;
                error?: string;
                [key: string]: unknown | string | StatusEnum4 | undefined;
            }>;
            mfa?: {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            };
            [key: string]: unknown | string | Array<{
                type: string;
                status: StatusEnum4;
                error?: string;
                [key: string]: unknown | string | StatusEnum4 | undefined;
            }> | {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            } | undefined;
        } | {
            valid2FAMethods: Array<string>;
            [key: string]: unknown | Array<string>;
        } | {
            bizNo?: string;
            steps?: Array<{
                type: string;
                status: "success";
            }>;
            accountId?: string;
            dryRun: true;
            readyToTransact: true;
            mfa?: {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            };
            [key: string]: unknown | string | Array<{
                type: string;
                status: "success";
            }> | true | {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            } | undefined;
        } | {
            [key: string]: unknown;
        };
    };
    /**
     * Forbidden - Insufficient API key permissions
     */
    403: {
        error: string;
        type: "APIKEY_INSUFFICIENT_PERMISSIONS";
        missing: Array<string>;
    };
    /**
     * Not Found
     */
    404: {
        error: string;
        type: TypeEnum3;
        result?: {
            bizNo: string;
            steps: Array<{
                type: TypeEnum4;
                status: StatusEnum4;
                required: boolean;
                metadata?: {
                    email?: string;
                    emailSent?: boolean;
                    qrCodeUrl?: string;
                    qrCodeValidSeconds?: number;
                    roamingFlowId?: string;
                    [key: string]: unknown | string | boolean | number | undefined;
                };
                [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                    email?: string;
                    emailSent?: boolean;
                    qrCodeUrl?: string;
                    qrCodeValidSeconds?: number;
                    roamingFlowId?: string;
                    [key: string]: unknown | string | boolean | number | undefined;
                } | undefined;
            }>;
            relation: RelationEnum;
            mfa?: {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            };
            [key: string]: unknown | string | Array<{
                type: TypeEnum4;
                status: StatusEnum4;
                required: boolean;
                metadata?: {
                    email?: string;
                    emailSent?: boolean;
                    qrCodeUrl?: string;
                    qrCodeValidSeconds?: number;
                    roamingFlowId?: string;
                    [key: string]: unknown | string | boolean | number | undefined;
                };
                [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                    email?: string;
                    emailSent?: boolean;
                    qrCodeUrl?: string;
                    qrCodeValidSeconds?: number;
                    roamingFlowId?: string;
                    [key: string]: unknown | string | boolean | number | undefined;
                } | undefined;
            }> | RelationEnum | {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            } | undefined;
        } | {
            bizNo?: string;
            steps?: Array<{
                type: string;
                status: StatusEnum4;
                error?: string;
                [key: string]: unknown | string | StatusEnum4 | undefined;
            }>;
            mfa?: {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            };
            [key: string]: unknown | string | Array<{
                type: string;
                status: StatusEnum4;
                error?: string;
                [key: string]: unknown | string | StatusEnum4 | undefined;
            }> | {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            } | undefined;
        } | {
            valid2FAMethods: Array<string>;
            [key: string]: unknown | Array<string>;
        } | {
            bizNo?: string;
            steps?: Array<{
                type: string;
                status: "success";
            }>;
            accountId?: string;
            dryRun: true;
            readyToTransact: true;
            mfa?: {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            };
            [key: string]: unknown | string | Array<{
                type: string;
                status: "success";
            }> | true | {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            } | undefined;
        } | {
            [key: string]: unknown;
        };
    };
};
type WalletwithdrawquoteidexecutewithdrawError = WalletwithdrawquoteidexecutewithdrawErrors[keyof WalletwithdrawquoteidexecutewithdrawErrors];
type WalletwithdrawquoteidexecutewithdrawResponses = {
    /**
     * Successful response
     */
    200: {
        success: boolean;
        error?: string;
        type?: TypeEnum3;
        result?: {
            transactionId: string;
            [key: string]: unknown | string;
        } | {
            bizNo: string;
            steps: Array<{
                type: TypeEnum4;
                status: StatusEnum4;
                required: boolean;
                metadata?: {
                    email?: string;
                    emailSent?: boolean;
                    qrCodeUrl?: string;
                    qrCodeValidSeconds?: number;
                    roamingFlowId?: string;
                    [key: string]: unknown | string | boolean | number | undefined;
                };
                [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                    email?: string;
                    emailSent?: boolean;
                    qrCodeUrl?: string;
                    qrCodeValidSeconds?: number;
                    roamingFlowId?: string;
                    [key: string]: unknown | string | boolean | number | undefined;
                } | undefined;
            }>;
            relation: RelationEnum;
            mfa?: {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            };
            [key: string]: unknown | string | Array<{
                type: TypeEnum4;
                status: StatusEnum4;
                required: boolean;
                metadata?: {
                    email?: string;
                    emailSent?: boolean;
                    qrCodeUrl?: string;
                    qrCodeValidSeconds?: number;
                    roamingFlowId?: string;
                    [key: string]: unknown | string | boolean | number | undefined;
                };
                [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                    email?: string;
                    emailSent?: boolean;
                    qrCodeUrl?: string;
                    qrCodeValidSeconds?: number;
                    roamingFlowId?: string;
                    [key: string]: unknown | string | boolean | number | undefined;
                } | undefined;
            }> | RelationEnum | {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            } | undefined;
        } | {
            bizNo?: string;
            steps?: Array<{
                type: string;
                status: StatusEnum4;
                error?: string;
                [key: string]: unknown | string | StatusEnum4 | undefined;
            }>;
            mfa?: {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            };
            [key: string]: unknown | string | Array<{
                type: string;
                status: StatusEnum4;
                error?: string;
                [key: string]: unknown | string | StatusEnum4 | undefined;
            }> | {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            } | undefined;
        } | {
            valid2FAMethods: Array<string>;
            [key: string]: unknown | Array<string>;
        } | {
            [key: string]: unknown;
        };
    };
};
type WalletwithdrawquoteidexecutewithdrawResponse = WalletwithdrawquoteidexecutewithdrawResponses[keyof WalletwithdrawquoteidexecutewithdrawResponses];
type OrganizationapikeyapikeyinfoData = {
    body?: never;
    path?: never;
    query?: never;
    url: "/v0/organization/api-key";
};
type OrganizationapikeyapikeyinfoErrors = {
    /**
     * Forbidden - Insufficient API key permissions
     */
    403: {
        error: string;
        type: "APIKEY_INSUFFICIENT_PERMISSIONS";
        missing: Array<string>;
    };
};
type OrganizationapikeyapikeyinfoError = OrganizationapikeyapikeyinfoErrors[keyof OrganizationapikeyapikeyinfoErrors];
type OrganizationapikeyapikeyinfoResponses = {
    /**
     * Successful response
     */
    200: {
        permissions?: {
            read?: boolean;
            quote?: boolean;
            withdrawal?: boolean;
            trade?: boolean;
            deposit?: boolean;
            listen?: boolean;
            delete?: boolean;
        } | null;
        rateLimit?: {
            rateLimitEnabled: boolean | null;
            rateLimitTimeWindow: number | null;
            rateLimitMax: number | null;
            requestCount: number | null;
            lastRequest: string | null;
        };
    };
};
type OrganizationapikeyapikeyinfoResponse = OrganizationapikeyapikeyinfoResponses[keyof OrganizationapikeyapikeyinfoResponses];

type AuthToken = string | undefined;
interface Auth {
    /**
     * Which part of the request do we use to send the auth?
     *
     * @default 'header'
     */
    in?: "header" | "query" | "cookie";
    /**
     * Header or query parameter name.
     *
     * @default 'Authorization'
     */
    name?: string;
    scheme?: "basic" | "bearer";
    type: "apiKey" | "http";
}

interface SerializerOptions<T> {
    /**
     * @default true
     */
    explode: boolean;
    style: T;
}
type ArrayStyle = "form" | "spaceDelimited" | "pipeDelimited";
type ObjectStyle = "form" | "deepObject";

type QuerySerializer = (query: Record<string, unknown>) => string;
type BodySerializer = (body: any) => any;
type QuerySerializerOptionsObject = {
    allowReserved?: boolean;
    array?: Partial<SerializerOptions<ArrayStyle>>;
    object?: Partial<SerializerOptions<ObjectStyle>>;
};
type QuerySerializerOptions = QuerySerializerOptionsObject & {
    /**
     * Per-parameter serialization overrides. When provided, these settings
     * override the global array/object settings for specific parameter names.
     */
    parameters?: Record<string, QuerySerializerOptionsObject>;
};

type HttpMethod = "connect" | "delete" | "get" | "head" | "options" | "patch" | "post" | "put" | "trace";
type Client$1<RequestFn = never, Config = unknown, MethodFn = never, BuildUrlFn = never, SseFn = never> = {
    /**
     * Returns the final request URL.
     */
    buildUrl: BuildUrlFn;
    getConfig: () => Config;
    request: RequestFn;
    setConfig: (config: Config) => Config;
} & {
    [K in HttpMethod]: MethodFn;
} & ([SseFn] extends [never] ? {
    sse?: never;
} : {
    sse: {
        [K in HttpMethod]: SseFn;
    };
});
interface Config$1 {
    /**
     * Auth token or a function returning auth token. The resolved value will be
     * added to the request payload as defined by its `security` array.
     */
    auth?: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken;
    /**
     * A function for serializing request body parameter. By default,
     * {@link JSON.stringify()} will be used.
     */
    bodySerializer?: BodySerializer | null;
    /**
     * An object containing any HTTP headers that you want to pre-populate your
     * `Headers` object with.
     *
     * {@link https://developer.mozilla.org/docs/Web/API/Headers/Headers#init See more}
     */
    headers?: RequestInit["headers"] | Record<string, string | number | boolean | (string | number | boolean)[] | null | undefined | unknown>;
    /**
     * The request method.
     *
     * {@link https://developer.mozilla.org/docs/Web/API/fetch#method See more}
     */
    method?: Uppercase<HttpMethod>;
    /**
     * A function for serializing request query parameters. By default, arrays
     * will be exploded in form style, objects will be exploded in deepObject
     * style, and reserved characters are percent-encoded.
     *
     * This method will have no effect if the native `paramsSerializer()` Axios
     * API function is used.
     *
     * {@link https://swagger.io/docs/specification/serialization/#query View examples}
     */
    querySerializer?: QuerySerializer | QuerySerializerOptions;
    /**
     * A function validating request data. This is useful if you want to ensure
     * the request conforms to the desired shape, so it can be safely sent to
     * the server.
     */
    requestValidator?: (data: unknown) => Promise<unknown>;
    /**
     * A function transforming response data before it's returned. This is useful
     * for post-processing data, e.g. converting ISO strings into Date objects.
     */
    responseTransformer?: (data: unknown) => Promise<unknown>;
    /**
     * A function validating response data. This is useful if you want to ensure
     * the response conforms to the desired shape, so it can be safely passed to
     * the transformers and returned to the user.
     */
    responseValidator?: (data: unknown) => Promise<unknown>;
}

type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, "method"> & Pick<Config$1, "method" | "responseTransformer" | "responseValidator"> & {
    /**
     * Fetch API implementation. You can use this option to provide a custom
     * fetch instance.
     *
     * @default globalThis.fetch
     */
    fetch?: typeof fetch;
    /**
     * Implementing clients can call request interceptors inside this hook.
     */
    onRequest?: (url: string, init: RequestInit) => Promise<Request>;
    /**
     * Callback invoked when a network or parsing error occurs during streaming.
     *
     * This option applies only if the endpoint returns a stream of events.
     *
     * @param error The error that occurred.
     */
    onSseError?: (error: unknown) => void;
    /**
     * Callback invoked when an event is streamed from the server.
     *
     * This option applies only if the endpoint returns a stream of events.
     *
     * @param event Event streamed from the server.
     * @returns Nothing (void).
     */
    onSseEvent?: (event: StreamEvent<TData>) => void;
    serializedBody?: RequestInit["body"];
    /**
     * Default retry delay in milliseconds.
     *
     * This option applies only if the endpoint returns a stream of events.
     *
     * @default 3000
     */
    sseDefaultRetryDelay?: number;
    /**
     * Maximum number of retry attempts before giving up.
     */
    sseMaxRetryAttempts?: number;
    /**
     * Maximum retry delay in milliseconds.
     *
     * Applies only when exponential backoff is used.
     *
     * This option applies only if the endpoint returns a stream of events.
     *
     * @default 30000
     */
    sseMaxRetryDelay?: number;
    /**
     * Optional sleep function for retry backoff.
     *
     * Defaults to using `setTimeout`.
     */
    sseSleepFn?: (ms: number) => Promise<void>;
    url: string;
};
interface StreamEvent<TData = unknown> {
    data: TData;
    event?: string;
    id?: string;
    retry?: number;
}
type ServerSentEventsResult<TData = unknown, TReturn = void, TNext = unknown> = {
    stream: AsyncGenerator<TData extends Record<string, unknown> ? TData[keyof TData] : TData, TReturn, TNext>;
};

type ErrInterceptor<Err, Res, Req, Options> = (error: Err, response: Res, request: Req, options: Options) => Err | Promise<Err>;
type ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;
type ResInterceptor<Res, Req, Options> = (response: Res, request: Req, options: Options) => Res | Promise<Res>;
declare class Interceptors<Interceptor> {
    fns: Array<Interceptor | null>;
    clear(): void;
    eject(id: number | Interceptor): void;
    exists(id: number | Interceptor): boolean;
    getInterceptorIndex(id: number | Interceptor): number;
    update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false;
    use(fn: Interceptor): number;
}
interface Middleware<Req, Res, Err, Options> {
    error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;
    request: Interceptors<ReqInterceptor<Req, Options>>;
    response: Interceptors<ResInterceptor<Res, Req, Options>>;
}

type ResponseStyle = "data" | "fields";
interface Config<T extends ClientOptions = ClientOptions> extends Omit<RequestInit, "body" | "headers" | "method">, Config$1 {
    /**
     * Base URL for all requests made by this client.
     */
    baseUrl?: T["baseUrl"];
    /**
     * Fetch API implementation. You can use this option to provide a custom
     * fetch instance.
     *
     * @default globalThis.fetch
     */
    fetch?: typeof fetch;
    /**
     * Please don't use the Fetch client for Next.js applications. The `next`
     * options won't have any effect.
     *
     * Install {@link https://www.npmjs.com/package/@hey-api/client-next `@hey-api/client-next`} instead.
     */
    next?: never;
    /**
     * Return the response data parsed in a specified format. By default, `auto`
     * will infer the appropriate method from the `Content-Type` response header.
     * You can override this behavior with any of the {@link Body} methods.
     * Select `stream` if you don't want to parse response data at all.
     *
     * @default 'auto'
     */
    parseAs?: "arrayBuffer" | "auto" | "blob" | "formData" | "json" | "stream" | "text";
    /**
     * Should we return only data or multiple fields (data, error, response, etc.)?
     *
     * @default 'fields'
     */
    responseStyle?: ResponseStyle;
    /**
     * Throw an error instead of returning it in the response?
     *
     * @default false
     */
    throwOnError?: T["throwOnError"];
}
interface RequestOptions<TData = unknown, TResponseStyle extends ResponseStyle = "fields", ThrowOnError extends boolean = boolean, Url extends string = string> extends Config<{
    responseStyle: TResponseStyle;
    throwOnError: ThrowOnError;
}>, Pick<ServerSentEventsOptions<TData>, "onSseError" | "onSseEvent" | "sseDefaultRetryDelay" | "sseMaxRetryAttempts" | "sseMaxRetryDelay"> {
    /**
     * Any body that you want to add to your request.
     *
     * {@link https://developer.mozilla.org/docs/Web/API/fetch#body}
     */
    body?: unknown;
    path?: Record<string, unknown>;
    query?: Record<string, unknown>;
    /**
     * Security mechanism(s) to use for the request.
     */
    security?: ReadonlyArray<Auth>;
    url: Url;
}
interface ResolvedRequestOptions<TResponseStyle extends ResponseStyle = "fields", ThrowOnError extends boolean = boolean, Url extends string = string> extends RequestOptions<unknown, TResponseStyle, ThrowOnError, Url> {
    serializedBody?: string;
}
type RequestResult<TData = unknown, TError = unknown, ThrowOnError extends boolean = boolean, TResponseStyle extends ResponseStyle = "fields"> = ThrowOnError extends true ? Promise<TResponseStyle extends "data" ? TData extends Record<string, unknown> ? TData[keyof TData] : TData : {
    data: TData extends Record<string, unknown> ? TData[keyof TData] : TData;
    request: Request;
    response: Response;
}> : Promise<TResponseStyle extends "data" ? (TData extends Record<string, unknown> ? TData[keyof TData] : TData) | undefined : ({
    data: TData extends Record<string, unknown> ? TData[keyof TData] : TData;
    error: undefined;
} | {
    data: undefined;
    error: TError extends Record<string, unknown> ? TError[keyof TError] : TError;
}) & {
    request: Request;
    response: Response;
}>;
interface ClientOptions {
    baseUrl?: string;
    responseStyle?: ResponseStyle;
    throwOnError?: boolean;
}
type MethodFn = <TData = unknown, TError = unknown, ThrowOnError extends boolean = false, TResponseStyle extends ResponseStyle = "fields">(options: Omit<RequestOptions<TData, TResponseStyle, ThrowOnError>, "method">) => RequestResult<TData, TError, ThrowOnError, TResponseStyle>;
type SseFn = <TData = unknown, TError = unknown, ThrowOnError extends boolean = false, TResponseStyle extends ResponseStyle = "fields">(options: Omit<RequestOptions<TData, TResponseStyle, ThrowOnError>, "method">) => Promise<ServerSentEventsResult<TData, TError>>;
type RequestFn = <TData = unknown, TError = unknown, ThrowOnError extends boolean = false, TResponseStyle extends ResponseStyle = "fields">(options: Omit<RequestOptions<TData, TResponseStyle, ThrowOnError>, "method"> & Pick<Required<RequestOptions<TData, TResponseStyle, ThrowOnError>>, "method">) => RequestResult<TData, TError, ThrowOnError, TResponseStyle>;
type BuildUrlFn = <TData extends {
    body?: unknown;
    path?: Record<string, unknown>;
    query?: Record<string, unknown>;
    url: string;
}>(options: Pick<TData, "url"> & Options$1<TData>) => string;
type Client = Client$1<RequestFn, Config, MethodFn, BuildUrlFn, SseFn> & {
    interceptors: Middleware<Request, Response, unknown, ResolvedRequestOptions>;
};
interface TDataShape {
    body?: unknown;
    headers?: unknown;
    path?: unknown;
    query?: unknown;
    url: string;
}
type OmitKeys<T, K> = Pick<T, Exclude<keyof T, K>>;
type Options$1<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown, TResponseStyle extends ResponseStyle = "fields"> = OmitKeys<RequestOptions<TResponse, TResponseStyle, ThrowOnError>, "body" | "path" | "query" | "url"> & Omit<TData, "url">;

type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = Options$1<TData, ThrowOnError> & {
    /**
     * You can provide a client instance returned by `createClient()` instead of
     * individual options. This might be also useful if you want to implement a
     * custom client.
     */
    client?: Client;
    /**
     * You can pass arbitrary values through the `meta` object. This can be
     * used to access values that aren't defined as part of the SDK function.
     */
    meta?: Record<string, unknown>;
};
/**
 * Get URL
 *
 * Get OAuth2 authorization URL for exchange connection.
 */
declare const oauth2Exchangeurlgeturl: <ThrowOnError extends boolean = false>(options: Options<Oauth2ExchangeurlgeturlData, ThrowOnError>) => RequestResult<Oauth2ExchangeurlgeturlResponses, unknown, ThrowOnError, "fields">;
/**
 * List Exchanges
 *
 * List supported exchanges for OAuth2 connections.
 */
declare const oauth2Exchangeslistexchanges: <ThrowOnError extends boolean = false>(options?: Options<Oauth2ExchangeslistexchangesData, ThrowOnError>) => RequestResult<Oauth2ExchangeslistexchangesResponses, unknown, ThrowOnError, "fields">;
/**
 * Delete
 *
 * Delete a connected exchange wallet.
 *
 * **Required API Key Scopes:** `read`, `delete`
 */
declare const walletdelete: <ThrowOnError extends boolean = false>(options?: Options<WalletdeleteData, ThrowOnError>) => RequestResult<WalletdeleteResponses, WalletdeleteErrors, ThrowOnError, "fields">;
/**
 * Get
 *
 * Get wallet information and balances.
 *
 * **Required API Key Scopes:** `read`
 */
declare const walletget: <ThrowOnError extends boolean = false>(options?: Options<WalletgetData, ThrowOnError>) => RequestResult<WalletgetResponses, WalletgetErrors, ThrowOnError, "fields">;
/**
 * Ping
 *
 * Test wallet connectivity and validate exchange API credentials. This endpoint verifies that the stored credentials are valid by making a test API call to the exchange.
 *
 * **Required API Key Scopes:** `read`
 */
declare const walletpingping: <ThrowOnError extends boolean = false>(options?: Options<WalletpingpingData, ThrowOnError>) => RequestResult<WalletpingpingResponses, WalletpingpingErrors, ThrowOnError, "fields">;
/**
 * Get KYC Identity
 *
 * Retrieve KYC identity information associated with a wallet. Returns the user's full name, email, IBAN, and country as provided by the exchange during the OAuth flow. Returns 404 if the wallet has no linked identity.
 *
 * **Required API Key Scopes:** `read`, `kyc`
 */
declare const walletkycgetkycidentity: <ThrowOnError extends boolean = false>(options?: Options<WalletkycgetkycidentityData, ThrowOnError>) => RequestResult<WalletkycgetkycidentityResponses, WalletkycgetkycidentityErrors, ThrowOnError, "fields">;
/**
 * List Wallets
 *
 * List all connected exchange wallets.
 *
 * **Required API Key Scopes:** `read`
 */
declare const walletlistlistwallets: <ThrowOnError extends boolean = false>(options?: Options<WalletlistlistwalletsData, ThrowOnError>) => RequestResult<WalletlistlistwalletsResponses, WalletlistlistwalletsErrors, ThrowOnError, "fields">;
/**
 * List Transactions
 *
 * List transactions for a specific wallet or all wallets with filtering options.
 *
 * **Required API Key Scopes:** `read`
 */
declare const wallettransactionslisttransactions: <ThrowOnError extends boolean = false>(options?: Options<WallettransactionslisttransactionsData, ThrowOnError>) => RequestResult<WallettransactionslisttransactionsResponses, WallettransactionslisttransactionsErrors, ThrowOnError, "fields">;
/**
 * Get Transaction
 *
 * Get a single transaction by its ID.
 *
 * **Required API Key Scopes:** `read`
 */
declare const wallettransactiontransactionidgettransaction: <ThrowOnError extends boolean = false>(options: Options<WallettransactiontransactionidgettransactionData, ThrowOnError>) => RequestResult<WallettransactiontransactionidgettransactionResponses, WallettransactiontransactionidgettransactionErrors, ThrowOnError, "fields">;
/**
 * Balance
 *
 * Get withdrawable balances and supported networks.
 *
 * **Required API Key Scopes:** `read`
 */
declare const walletwithdrawbalancebalance: <ThrowOnError extends boolean = false>(options?: Options<WalletwithdrawbalancebalanceData, ThrowOnError>) => RequestResult<WalletwithdrawbalancebalanceResponses, WalletwithdrawbalancebalanceErrors, ThrowOnError, "fields">;
/**
 * Quotation
 *
 * Get withdrawal quote with fees and estimates.
 *
 * **Required API Key Scopes:** `read`, `quote`
 */
declare const walletwithdrawquotequotation: <ThrowOnError extends boolean = false>(options: Options<WalletwithdrawquotequotationData, ThrowOnError>) => RequestResult<WalletwithdrawquotequotationResponses, WalletwithdrawquotequotationErrors, ThrowOnError, "fields">;
/**
 * Withdraw
 *
 * Execute a withdrawal using a quote ID.
 *
 * **Required API Key Scopes:** `read`, `quote`, `withdrawal`
 */
declare const walletwithdrawquoteidexecutewithdraw: <ThrowOnError extends boolean = false>(options: Options<WalletwithdrawquoteidexecutewithdrawData, ThrowOnError>) => RequestResult<WalletwithdrawquoteidexecutewithdrawResponses, WalletwithdrawquoteidexecutewithdrawErrors, ThrowOnError, "fields">;
/**
 * API key info
 *
 * Get information about the current API key, including its permissions and rate limit configuration.
 *
 * **🔒 Authentication:** This endpoint requires a valid API key.
 */
declare const organizationapikeyapikeyinfo: <ThrowOnError extends boolean = false>(options?: Options<OrganizationapikeyapikeyinfoData, ThrowOnError>) => RequestResult<OrganizationapikeyapikeyinfoResponses, OrganizationapikeyapikeyinfoErrors, ThrowOnError, "fields">;

/**
 * The core client class for interacting with Bluvo's cryptocurrency exchange integration platform.
 *
 * BluvoClient provides a comprehensive, strongly-typed interface to Bluvo's API services,
 * enabling seamless integration with cryptocurrency exchanges, market data, and blockchain functionality.
 * It handles authentication, request formatting, and response parsing, allowing you to focus on
 * building your application logic rather than API integration details.
 *
 * This class is not typically instantiated directly; use the `createClient` function instead.
 */
declare class BluvoClient {
    private readonly orgId;
    private readonly projectId;
    private readonly apiKey;
    readonly sandbox: boolean;
    readonly dev: boolean;
    readonly customDomain?: string | "api-bluvo.com" | {
        api: string;
        ws: string;
    } | undefined;
    private readonly wsBase;
    private readonly apiBase?;
    private readonly client;
    /**
     * Creates a new BluvoClient instance with the specified credentials.
     *
     * @param orgId Your Bluvo organization identifier.
     * @param projectId Your Bluvo project identifier.
     * @param apiKey Your Bluvo API access key.
     * @param sandbox
     * @param dev
     * @param customDomain Custom domain configuration to override default api-bluvo.com
     * @private Use the static `createClient` method or the global `createClient` function instead.
     */
    private constructor();
    /**
     * Creates and initializes a new BluvoClient instance with the provided credentials.
     *
     * This factory method is the recommended way to create BluvoClient instances when not using
     * the global `createClient` function. It ensures proper initialization and configuration
     * of the client with your Bluvo API credentials.
     *
     * @param credentials An object containing your Bluvo API credentials:
     *   @param orgId Your unique organization identifier.
     *   @param projectId Your specific project identifier.
     *   @param apiKey Your secret API key for authentication.
     *   @param sandbox Optional flag to use sandbox environment.
     *   @param dev Optional flag to use local development environment.
     *   @param customDomain Optional custom domain configuration.
     *
     * @returns A fully configured BluvoClient instance ready for use.
     */
    static createClient({ orgId, projectId, apiKey, sandbox, dev, customDomain, }: {
        orgId: string;
        projectId: string;
        apiKey: string;
        sandbox?: boolean;
        dev?: boolean;
        customDomain?: string | "api-bluvo.com" | {
            api: string;
            ws: string;
        };
    }): BluvoClient;
    wallet: {
        /**
         * Retrieve comprehensive details about a connected exchange wallet, including balances, permissions, and connection status.
         *
         * This method provides a complete snapshot of your connected exchange wallet, giving you real-time visibility into
         * available funds, account permissions, and the health of the API connection. The data returned is fetched directly
         * from the exchange API at the time of the request, ensuring you always have the most up-to-date information.
         *
         * Use this method to verify connections, check available balances across different assets, or determine
         * the permission scope of your connected API keys before executing transactions.
         *
         * @param walletId The unique identifier of the connected wallet to query. This ID was specified during the initial
         *                 wallet connection and uniquely identifies this particular exchange integration within your project.
         *
         * @returns A promise resolving to a detailed wallet information object containing:
         *          - Connection status and health
         *          - Exchange identifier and account details
         *          - Available balances for all assets
         *          - API key permissions and restrictions
         *          - Last synchronization timestamp
         *
         * @example
         * // Get details about a connected Binance wallet
         * const walletDetails = await client.wallet.get('primary-trading-account');
         * console.log(`Connection status: ${walletDetails.status}`);
         * console.log(`BTC Balance: ${walletDetails.balances.BTC?.available || 0}`);
         */
        get: (walletId: string) => Promise<{
            data: {
                id: string;
                exchange: ExchangeEnum;
                balances: {
                    [key: string]: {
                        free?: number | null;
                        used?: number | null;
                        total?: number | null;
                        assetId?: string | null;
                        slug?: string | null;
                    } | null;
                };
                ipPool?: Array<string> | null;
                invalidApi?: boolean | null;
                createdAt?: string | number | null;
                updatedAt?: string | number | null;
                lastSyncAt?: string | number | null;
                expiresAt?: string | number | null;
            } | undefined;
            error: {
                error: string;
                type: "APIKEY_INSUFFICIENT_PERMISSIONS";
                missing: Array<string>;
            } | {
                error: string;
                type: "WALLET_NOT_FOUND";
                result?: unknown;
            } | undefined;
            success: boolean;
        }>;
        /**
         * Ping
         */
        ping: (walletId: string) => Promise<{
            data: {
                id: string;
                exchange: ExchangeEnum;
                status: StatusEnum2;
                success: boolean;
            } | undefined;
            error: {
                error: string;
                type: "APIKEY_INSUFFICIENT_PERMISSIONS";
                missing: Array<string>;
            } | {
                error: string;
                type: "WALLET_NOT_FOUND";
                result?: unknown;
            } | undefined;
            success: boolean;
        }>;
        /**
         * Securely disconnect and remove a previously connected exchange wallet from your Bluvo project.
         *
         * This method completely removes the stored API credentials and terminates the connection between your Bluvo
         * project and the exchange account. This is useful when you need to rotate API keys, remove unused connections,
         * or comply with user requests to delete their account information.
         *
         * The deletion is immediate and permanent. After deletion, any operations that were using this wallet connection
         * will fail until a new connection is established with the `connect` method.
         *
         * @param walletId The unique identifier of the connected wallet to permanently delete from your project.
         *                 This is the same ID that was used when initially connecting the wallet.
         *
         * @returns A promise resolving to a confirmation object indicating successful deletion with a timestamp.
         *          All API keys and secrets associated with this connection are immediately and permanently deleted
         *          from Bluvo's secure storage.
         *
         * @example
         * // Remove a wallet connection that's no longer needed
         * await client.wallet.delete('old-trading-account');
         *
         * // You can also handle the confirmation response if needed
         * const result = await client.wallet.delete('temporary-connection');
         * console.log(`Wallet deleted at: ${new Date(result.timestamp).toLocaleString()}`);
         */
        delete: (walletId: string) => Promise<{
            data: {
                success: boolean;
                message: string;
            } | undefined;
            error: {
                error: string;
                type: "APIKEY_INSUFFICIENT_PERMISSIONS";
                missing: Array<string>;
            } | {
                error: string;
                type: "WALLET_NOT_FOUND";
                result?: unknown;
            } | undefined;
            success: boolean;
        }>;
        /**
         * Retrieve a comprehensive, paginated list of all exchange wallets connected to your Bluvo project with powerful filtering options.
         *
         * This method provides a complete overview of all your integrated exchange accounts, making it easy to manage multiple
         * connections across different exchanges or for different purposes. Results are paginated to handle large numbers of
         * connections efficiently, with flexible page size configuration.
         *
         * Each wallet entry includes essential information like connection status, exchange type, and last activity timestamp,
         * giving you a quick overview without needing to query each wallet individually. For detailed information about a specific
         * wallet, use the `get` method with the wallet's ID.
         *
         * @param page Optional pagination control parameter (0-indexed). Defaults to 0 (first page).
         *             Use this parameter in combination with the `limit` parameter to navigate through large result sets.
         *             For example, page=1 with limit=50 will return wallets 51-100.
         *
         * @param limit Optional maximum number of wallet records to return per page. Defaults to 10.
         *              Can be increased up to 1000 for retrieving larger batches in a single request.
         *              Larger values reduce the number of API calls needed but increase response size.
         *
         * @param exchange Optional filter to retrieve wallets from a specific exchange only.
         *                 Supports major exchanges including 'binance', 'coinbase', 'kraken', 'kucoin', and 'okx'.
         *                 When omitted, wallets from all exchanges are returned.
         *
         * @returns A promise resolving to a paginated list response containing:
         *          - Array of wallet objects with their connection details
         *          - Pagination metadata (total count, current page, total pages)
         *          - Navigation links for next/previous pages when applicable
         *
         * @example
         * // List all connected wallets with default pagination (10 per page)
         * const allWallets = await client.wallet.list();
         *
         * // Get the second page of results with 20 wallets per page
         * const page2 = await client.wallet.list(1, 20);
         *
         * // Get only Binance wallets
         * const binanceWallets = await client.wallet.list(0, 50, 'binance');
         * console.log(`Found ${binanceWallets.pagination.total} Binance connections`);
         */
        list: (page?: Required<WalletlistlistwalletsData>["query"]["page"], limit?: Required<WalletlistlistwalletsData>["query"]["limit"], exchange?: Required<WalletlistlistwalletsData>["query"]["exchange"]) => Promise<{
            data: {
                wallets: Array<{
                    id: string;
                    projectId?: string | null;
                    createdAt?: string | number | null;
                    updatedAt?: string | number | null;
                    lastSyncAt?: string | number | null;
                    expiresAt?: string | number | null;
                    exchange: ExchangeEnum;
                    balances: {
                        [key: string]: {
                            free?: number | null;
                            used?: number | null;
                            total?: number | null;
                            assetId?: string | null;
                            slug?: string | null;
                        } | null;
                    };
                    ipPool?: Array<string> | null;
                    invalidApi?: boolean | number | null;
                }>;
                pagination: {
                    totalCount: number;
                    page: number;
                    limit: number;
                    pageCount: number;
                };
            } | undefined;
            error: {
                error: string;
                type: "APIKEY_INSUFFICIENT_PERMISSIONS";
                missing: Array<string>;
            } | undefined;
            success: boolean;
        }>;
        transaction: {
            /**
             * Retrieve a comprehensive, paginated list of all transactions for a specific wallet with powerful filtering capabilities.
             *
             * This method provides detailed visibility into the complete transaction history of a connected exchange wallet,
             * including deposits, withdrawals, trades, and internal transfers. The flexible filtering system allows you to precisely
             * target specific transaction types, assets, date ranges, or statuses to streamline your analysis and reporting.
             *
             * Transaction data is normalized across different exchanges into a consistent format, making it easy to work with
             * multiple exchange integrations using the same code. Each transaction includes timestamps, amounts, fees, status
             * information, and exchange-specific details when available.
             *
             * @param walletId The unique identifier of the connected wallet whose transactions you want to retrieve.
             *                 This must be a valid wallet ID that was previously connected via the `connect` method.
             *
             * @param page Optional pagination control parameter (0-indexed). Defaults to 0 (first page).
             *             Use this parameter with the `limit` parameter to navigate through large transaction histories.
             *
             * @param limit Optional maximum number of transaction records to return per page. Defaults to a platform-specific value.
             *              Increasing this value reduces the number of API calls needed for large datasets but increases response size.
             *
             * @param asset Optional filter to retrieve transactions for a specific cryptocurrency only (e.g., 'BTC', 'ETH').
             *              When omitted, transactions for all assets are returned.
             *
             * @param type Optional filter for transaction type. Common values include:
             *            - 'deposit': Funds received into the exchange account
             *            - 'withdrawal': Funds sent out from the exchange account
             *            - 'trade': Exchange between different cryptocurrencies
             *            - 'transfer': Internal movement between sub-accounts or wallets
             *            - 'fee': Exchange fees charged
             *            - 'rebate': Fee rebates or rewards received
             *
             * @param since Optional filter for transactions after a specific timestamp (ISO 8601 format or UNIX timestamp).
             *              Use this to set the starting point of your transaction history query.
             *
             * @param before Optional filter for transactions before a specific timestamp (ISO 8601 format or UNIX timestamp).
             *               Use this to set the ending point of your transaction history query.
             *
             * @param status Optional filter for transaction status. Common values include:
             *               - 'completed': Fully processed and confirmed transactions
             *               - 'pending': Transactions that are still being processed
             *               - 'failed': Transactions that encountered errors
             *               - 'cancelled': Transactions that were cancelled
             *
             * @param fields Optional comma-separated list of specific fields to include in the response.
             *               This can optimize response size when you only need specific transaction attributes.
             *
             * @returns A promise resolving to a paginated transaction list containing:
             *          - Array of normalized transaction objects with detailed information
             *          - Pagination metadata (total count, current page, total pages)
             *          - Navigation links for next/previous pages when applicable
             *
             * @example
             * // Get all BTC transactions for a wallet
             * const btcTx = await client.wallet.transaction.list('my-exchange-wallet', 0, 100, 'BTC');
             *
             * // Get only completed withdrawals in a date range
             * const withdrawals = await client.wallet.transaction.list(
             *   'my-exchange-wallet',
             *   0,
             *   50,
             *   undefined,
             *   'withdrawal',
             *   '2023-01-01T00:00:00Z',
             *   '2023-12-31T23:59:59Z',
             *   'completed'
             * );
             */
            list: (walletId?: string, page?: Required<WallettransactionslisttransactionsData>["query"]["page"], limit?: Required<WallettransactionslisttransactionsData>["query"]["limit"], sinceDate?: Required<WallettransactionslisttransactionsData>["query"]["sinceDate"]) => Promise<{
                data: {
                    transactions: Array<{
                        id: string;
                        walletId: string;
                        createdAt?: string | number | null;
                        updatedAt?: string | number | null;
                        timestamp?: string | number | null;
                        type: TypeEnum2;
                        amount: number;
                        currency: string;
                        direction?: DirectionEnum;
                        feeCost?: number | null;
                        feeCurrency?: string | null;
                        amountInFiat?: number | null;
                        feeInFiat?: number | null;
                        fiatCurrency?: FiatCurrencyEnum;
                        status: StatusEnum3;
                        addressTo?: string | null;
                        network?: string | null;
                        addressFrom?: string | null;
                        hash?: string | null;
                        contractAddress?: string | null;
                        tag?: string | null;
                        exchange?: string | null;
                        rawResponse?: unknown;
                    }>;
                    pagination: {
                        totalCount: number;
                        page: number;
                        limit: number;
                        pageCount: number;
                        offset: number;
                    };
                } | undefined;
                error: {
                    error: string;
                    type: "APIKEY_INSUFFICIENT_PERMISSIONS";
                    missing: Array<string>;
                } | undefined;
                success: boolean;
            }>;
        };
        withdrawals: {
            getWithdrawableBalance: (walletId: string, query?: WalletwithdrawbalancebalanceData["query"]) => Promise<{
                data: {
                    lastSyncAt: string;
                    balances: Array<{
                        asset: string;
                        amount: number;
                        amountInFiat?: number | null;
                        networks: Array<{
                            chainId?: 1 | 10 | 14 | 19 | 50 | 56 | 61 | 130 | 137 | 146 | 246 | 295 | 314 | 324 | 480 | 592 | 686 | 747 | 1100 | 1116 | 1284 | 1285 | 1329 | 1514 | 1776 | 2020 | 2088 | 2222 | 3338 | 5464 | 5888 | 7000 | 8453 | 9745 | 10001 | 16600 | 42161 | 42170 | 42220 | 42262 | 43114 | 57073 | 59144 | 80094 | 81457 | 100009 | null;
                            tokenAddress?: string | null;
                            contractAddress?: string | null;
                            contractAddressVerified?: boolean | null;
                            id: string;
                            name: string;
                            displayName: string;
                            minWithdrawal: string;
                            maxWithdrawal?: string;
                            assetName: string;
                            addressRegex?: string | null;
                        }>;
                        extra?: {
                            slug?: string;
                            assetId?: string;
                        };
                    }>;
                } | undefined;
                error: {
                    error: string;
                    type: "APIKEY_INSUFFICIENT_PERMISSIONS";
                    missing: Array<string>;
                } | {
                    error: string;
                    type: "WALLET_NOT_FOUND";
                    result?: unknown;
                } | undefined;
                success: boolean;
            }>;
            requestQuotation: (walletId: string, body: WalletwithdrawquotequotationData["body"]) => Promise<{
                data: {
                    id: string;
                    asset: string;
                    amountWithFee?: number | null;
                    amountNoFee?: number | null;
                    estimatedFee?: number | null;
                    amountWithFeeInFiat?: number | null;
                    amountNoFeeInFiat?: number | null;
                    estimatedFeeInFiat?: number | null;
                    destinationAddress: string;
                    network?: string | null;
                    tag?: string | null;
                    estimatedTotal?: number;
                    feeDetails?: Array<{
                        category: CategoryEnum;
                        currency: string;
                        amount: number;
                        amountInFiat?: number | null;
                        fiatCurrency: string;
                    }>;
                    expiresAt: string;
                    additionalInfo: {
                        minWithdrawal: string | null;
                        maxWithdrawal?: string | null;
                    };
                } | undefined;
                error: {
                    error: string;
                    type: TypeEnum3;
                    result?: unknown;
                } | {
                    error: string;
                    type: "APIKEY_INSUFFICIENT_PERMISSIONS";
                    missing: Array<string>;
                } | {
                    error: string;
                    type: "WALLET_NOT_FOUND";
                    result?: unknown;
                } | undefined;
                success: boolean;
            }>;
            executeWithdrawal: (walletId: string, idem: string, quotationId: string, args: WalletwithdrawquoteidexecutewithdrawData["body"]) => Promise<{
                data: {
                    success: boolean;
                    error?: string;
                    type?: TypeEnum3;
                    result?: {
                        transactionId: string;
                        [key: string]: unknown | string;
                    } | {
                        bizNo: string;
                        steps: Array<{
                            type: TypeEnum4;
                            status: StatusEnum4;
                            required: boolean;
                            metadata?: {
                                email?: string;
                                emailSent?: boolean;
                                qrCodeUrl?: string;
                                qrCodeValidSeconds?: number;
                                roamingFlowId?: string;
                                [key: string]: unknown | string | boolean | number | undefined;
                            };
                            [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                                email?: string;
                                emailSent?: boolean;
                                qrCodeUrl?: string;
                                qrCodeValidSeconds?: number;
                                roamingFlowId?: string;
                                [key: string]: unknown | string | boolean | number | undefined;
                            } | undefined;
                        }>;
                        relation: RelationEnum;
                        mfa?: {
                            bizNo?: string;
                            verified: {
                                EMAIL?: boolean;
                                SMS?: boolean;
                                GOOGLE?: boolean;
                                FACE?: boolean;
                                ROAMING_FIDO?: boolean;
                            };
                            attempts?: Array<{
                                method: TypeEnum4;
                                status: StatusEnum4;
                                createdAt: number;
                                validatedAt?: number;
                                expiresAt?: number;
                                success: boolean;
                            }>;
                            methods?: Array<{
                                method: "EMAIL";
                                email: string;
                            } | {
                                method: "SMS";
                                phoneNumber: string;
                            } | {
                                method: "GOOGLE";
                            } | {
                                method: "FACE";
                                viaMobile: boolean;
                            } | {
                                method: "ROAMING_FIDO";
                            }>;
                        };
                        [key: string]: unknown | string | Array<{
                            type: TypeEnum4;
                            status: StatusEnum4;
                            required: boolean;
                            metadata?: {
                                email?: string;
                                emailSent?: boolean;
                                qrCodeUrl?: string;
                                qrCodeValidSeconds?: number;
                                roamingFlowId?: string;
                                [key: string]: unknown | string | boolean | number | undefined;
                            };
                            [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                                email?: string;
                                emailSent?: boolean;
                                qrCodeUrl?: string;
                                qrCodeValidSeconds?: number;
                                roamingFlowId?: string;
                                [key: string]: unknown | string | boolean | number | undefined;
                            } | undefined;
                        }> | RelationEnum | {
                            bizNo?: string;
                            verified: {
                                EMAIL?: boolean;
                                SMS?: boolean;
                                GOOGLE?: boolean;
                                FACE?: boolean;
                                ROAMING_FIDO?: boolean;
                            };
                            attempts?: Array<{
                                method: TypeEnum4;
                                status: StatusEnum4;
                                createdAt: number;
                                validatedAt?: number;
                                expiresAt?: number;
                                success: boolean;
                            }>;
                            methods?: Array<{
                                method: "EMAIL";
                                email: string;
                            } | {
                                method: "SMS";
                                phoneNumber: string;
                            } | {
                                method: "GOOGLE";
                            } | {
                                method: "FACE";
                                viaMobile: boolean;
                            } | {
                                method: "ROAMING_FIDO";
                            }>;
                        } | undefined;
                    } | {
                        bizNo?: string;
                        steps?: Array<{
                            type: string;
                            status: StatusEnum4;
                            error?: string;
                            [key: string]: unknown | string | StatusEnum4 | undefined;
                        }>;
                        mfa?: {
                            bizNo?: string;
                            verified: {
                                EMAIL?: boolean;
                                SMS?: boolean;
                                GOOGLE?: boolean;
                                FACE?: boolean;
                                ROAMING_FIDO?: boolean;
                            };
                            attempts?: Array<{
                                method: TypeEnum4;
                                status: StatusEnum4;
                                createdAt: number;
                                validatedAt?: number;
                                expiresAt?: number;
                                success: boolean;
                            }>;
                            methods?: Array<{
                                method: "EMAIL";
                                email: string;
                            } | {
                                method: "SMS";
                                phoneNumber: string;
                            } | {
                                method: "GOOGLE";
                            } | {
                                method: "FACE";
                                viaMobile: boolean;
                            } | {
                                method: "ROAMING_FIDO";
                            }>;
                        };
                        [key: string]: unknown | string | Array<{
                            type: string;
                            status: StatusEnum4;
                            error?: string;
                            [key: string]: unknown | string | StatusEnum4 | undefined;
                        }> | {
                            bizNo?: string;
                            verified: {
                                EMAIL?: boolean;
                                SMS?: boolean;
                                GOOGLE?: boolean;
                                FACE?: boolean;
                                ROAMING_FIDO?: boolean;
                            };
                            attempts?: Array<{
                                method: TypeEnum4;
                                status: StatusEnum4;
                                createdAt: number;
                                validatedAt?: number;
                                expiresAt?: number;
                                success: boolean;
                            }>;
                            methods?: Array<{
                                method: "EMAIL";
                                email: string;
                            } | {
                                method: "SMS";
                                phoneNumber: string;
                            } | {
                                method: "GOOGLE";
                            } | {
                                method: "FACE";
                                viaMobile: boolean;
                            } | {
                                method: "ROAMING_FIDO";
                            }>;
                        } | undefined;
                    } | {
                        valid2FAMethods: Array<string>;
                        [key: string]: unknown | Array<string>;
                    } | {
                        [key: string]: unknown;
                    };
                } | undefined;
                error: {
                    error: string;
                    type: TypeEnum3;
                    result?: {
                        bizNo: string;
                        steps: Array<{
                            type: TypeEnum4;
                            status: StatusEnum4;
                            required: boolean;
                            metadata?: {
                                email?: string;
                                emailSent?: boolean;
                                qrCodeUrl?: string;
                                qrCodeValidSeconds?: number;
                                roamingFlowId?: string;
                                [key: string]: unknown | string | boolean | number | undefined;
                            };
                            [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                                email?: string;
                                emailSent?: boolean;
                                qrCodeUrl?: string;
                                qrCodeValidSeconds?: number;
                                roamingFlowId?: string;
                                [key: string]: unknown | string | boolean | number | undefined;
                            } | undefined;
                        }>;
                        relation: RelationEnum;
                        mfa?: {
                            bizNo?: string;
                            verified: {
                                EMAIL?: boolean;
                                SMS?: boolean;
                                GOOGLE?: boolean;
                                FACE?: boolean;
                                ROAMING_FIDO?: boolean;
                            };
                            attempts?: Array<{
                                method: TypeEnum4;
                                status: StatusEnum4;
                                createdAt: number;
                                validatedAt?: number;
                                expiresAt?: number;
                                success: boolean;
                            }>;
                            methods?: Array<{
                                method: "EMAIL";
                                email: string;
                            } | {
                                method: "SMS";
                                phoneNumber: string;
                            } | {
                                method: "GOOGLE";
                            } | {
                                method: "FACE";
                                viaMobile: boolean;
                            } | {
                                method: "ROAMING_FIDO";
                            }>;
                        };
                        [key: string]: unknown | string | Array<{
                            type: TypeEnum4;
                            status: StatusEnum4;
                            required: boolean;
                            metadata?: {
                                email?: string;
                                emailSent?: boolean;
                                qrCodeUrl?: string;
                                qrCodeValidSeconds?: number;
                                roamingFlowId?: string;
                                [key: string]: unknown | string | boolean | number | undefined;
                            };
                            [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                                email?: string;
                                emailSent?: boolean;
                                qrCodeUrl?: string;
                                qrCodeValidSeconds?: number;
                                roamingFlowId?: string;
                                [key: string]: unknown | string | boolean | number | undefined;
                            } | undefined;
                        }> | RelationEnum | {
                            bizNo?: string;
                            verified: {
                                EMAIL?: boolean;
                                SMS?: boolean;
                                GOOGLE?: boolean;
                                FACE?: boolean;
                                ROAMING_FIDO?: boolean;
                            };
                            attempts?: Array<{
                                method: TypeEnum4;
                                status: StatusEnum4;
                                createdAt: number;
                                validatedAt?: number;
                                expiresAt?: number;
                                success: boolean;
                            }>;
                            methods?: Array<{
                                method: "EMAIL";
                                email: string;
                            } | {
                                method: "SMS";
                                phoneNumber: string;
                            } | {
                                method: "GOOGLE";
                            } | {
                                method: "FACE";
                                viaMobile: boolean;
                            } | {
                                method: "ROAMING_FIDO";
                            }>;
                        } | undefined;
                    } | {
                        bizNo?: string;
                        steps?: Array<{
                            type: string;
                            status: StatusEnum4;
                            error?: string;
                            [key: string]: unknown | string | StatusEnum4 | undefined;
                        }>;
                        mfa?: {
                            bizNo?: string;
                            verified: {
                                EMAIL?: boolean;
                                SMS?: boolean;
                                GOOGLE?: boolean;
                                FACE?: boolean;
                                ROAMING_FIDO?: boolean;
                            };
                            attempts?: Array<{
                                method: TypeEnum4;
                                status: StatusEnum4;
                                createdAt: number;
                                validatedAt?: number;
                                expiresAt?: number;
                                success: boolean;
                            }>;
                            methods?: Array<{
                                method: "EMAIL";
                                email: string;
                            } | {
                                method: "SMS";
                                phoneNumber: string;
                            } | {
                                method: "GOOGLE";
                            } | {
                                method: "FACE";
                                viaMobile: boolean;
                            } | {
                                method: "ROAMING_FIDO";
                            }>;
                        };
                        [key: string]: unknown | string | Array<{
                            type: string;
                            status: StatusEnum4;
                            error?: string;
                            [key: string]: unknown | string | StatusEnum4 | undefined;
                        }> | {
                            bizNo?: string;
                            verified: {
                                EMAIL?: boolean;
                                SMS?: boolean;
                                GOOGLE?: boolean;
                                FACE?: boolean;
                                ROAMING_FIDO?: boolean;
                            };
                            attempts?: Array<{
                                method: TypeEnum4;
                                status: StatusEnum4;
                                createdAt: number;
                                validatedAt?: number;
                                expiresAt?: number;
                                success: boolean;
                            }>;
                            methods?: Array<{
                                method: "EMAIL";
                                email: string;
                            } | {
                                method: "SMS";
                                phoneNumber: string;
                            } | {
                                method: "GOOGLE";
                            } | {
                                method: "FACE";
                                viaMobile: boolean;
                            } | {
                                method: "ROAMING_FIDO";
                            }>;
                        } | undefined;
                    } | {
                        valid2FAMethods: Array<string>;
                        [key: string]: unknown | Array<string>;
                    } | {
                        bizNo?: string;
                        steps?: Array<{
                            type: string;
                            status: "success";
                        }>;
                        accountId?: string;
                        dryRun: true;
                        readyToTransact: true;
                        mfa?: {
                            bizNo?: string;
                            verified: {
                                EMAIL?: boolean;
                                SMS?: boolean;
                                GOOGLE?: boolean;
                                FACE?: boolean;
                                ROAMING_FIDO?: boolean;
                            };
                            attempts?: Array<{
                                method: TypeEnum4;
                                status: StatusEnum4;
                                createdAt: number;
                                validatedAt?: number;
                                expiresAt?: number;
                                success: boolean;
                            }>;
                            methods?: Array<{
                                method: "EMAIL";
                                email: string;
                            } | {
                                method: "SMS";
                                phoneNumber: string;
                            } | {
                                method: "GOOGLE";
                            } | {
                                method: "FACE";
                                viaMobile: boolean;
                            } | {
                                method: "ROAMING_FIDO";
                            }>;
                        };
                        [key: string]: unknown | string | Array<{
                            type: string;
                            status: "success";
                        }> | true | {
                            bizNo?: string;
                            verified: {
                                EMAIL?: boolean;
                                SMS?: boolean;
                                GOOGLE?: boolean;
                                FACE?: boolean;
                                ROAMING_FIDO?: boolean;
                            };
                            attempts?: Array<{
                                method: TypeEnum4;
                                status: StatusEnum4;
                                createdAt: number;
                                validatedAt?: number;
                                expiresAt?: number;
                                success: boolean;
                            }>;
                            methods?: Array<{
                                method: "EMAIL";
                                email: string;
                            } | {
                                method: "SMS";
                                phoneNumber: string;
                            } | {
                                method: "GOOGLE";
                            } | {
                                method: "FACE";
                                viaMobile: boolean;
                            } | {
                                method: "ROAMING_FIDO";
                            }>;
                        } | undefined;
                    } | {
                        [key: string]: unknown;
                    };
                } | {
                    error: string;
                    type: "APIKEY_INSUFFICIENT_PERMISSIONS";
                    missing: Array<string>;
                } | {
                    error: string;
                    type: TypeEnum3;
                    result?: {
                        bizNo: string;
                        steps: Array<{
                            type: TypeEnum4;
                            status: StatusEnum4;
                            required: boolean;
                            metadata?: {
                                email?: string;
                                emailSent?: boolean;
                                qrCodeUrl?: string;
                                qrCodeValidSeconds?: number;
                                roamingFlowId?: string;
                                [key: string]: unknown | string | boolean | number | undefined;
                            };
                            [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                                email?: string;
                                emailSent?: boolean;
                                qrCodeUrl?: string;
                                qrCodeValidSeconds?: number;
                                roamingFlowId?: string;
                                [key: string]: unknown | string | boolean | number | undefined;
                            } | undefined;
                        }>;
                        relation: RelationEnum;
                        mfa?: {
                            bizNo?: string;
                            verified: {
                                EMAIL?: boolean;
                                SMS?: boolean;
                                GOOGLE?: boolean;
                                FACE?: boolean;
                                ROAMING_FIDO?: boolean;
                            };
                            attempts?: Array<{
                                method: TypeEnum4;
                                status: StatusEnum4;
                                createdAt: number;
                                validatedAt?: number;
                                expiresAt?: number;
                                success: boolean;
                            }>;
                            methods?: Array<{
                                method: "EMAIL";
                                email: string;
                            } | {
                                method: "SMS";
                                phoneNumber: string;
                            } | {
                                method: "GOOGLE";
                            } | {
                                method: "FACE";
                                viaMobile: boolean;
                            } | {
                                method: "ROAMING_FIDO";
                            }>;
                        };
                        [key: string]: unknown | string | Array<{
                            type: TypeEnum4;
                            status: StatusEnum4;
                            required: boolean;
                            metadata?: {
                                email?: string;
                                emailSent?: boolean;
                                qrCodeUrl?: string;
                                qrCodeValidSeconds?: number;
                                roamingFlowId?: string;
                                [key: string]: unknown | string | boolean | number | undefined;
                            };
                            [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                                email?: string;
                                emailSent?: boolean;
                                qrCodeUrl?: string;
                                qrCodeValidSeconds?: number;
                                roamingFlowId?: string;
                                [key: string]: unknown | string | boolean | number | undefined;
                            } | undefined;
                        }> | RelationEnum | {
                            bizNo?: string;
                            verified: {
                                EMAIL?: boolean;
                                SMS?: boolean;
                                GOOGLE?: boolean;
                                FACE?: boolean;
                                ROAMING_FIDO?: boolean;
                            };
                            attempts?: Array<{
                                method: TypeEnum4;
                                status: StatusEnum4;
                                createdAt: number;
                                validatedAt?: number;
                                expiresAt?: number;
                                success: boolean;
                            }>;
                            methods?: Array<{
                                method: "EMAIL";
                                email: string;
                            } | {
                                method: "SMS";
                                phoneNumber: string;
                            } | {
                                method: "GOOGLE";
                            } | {
                                method: "FACE";
                                viaMobile: boolean;
                            } | {
                                method: "ROAMING_FIDO";
                            }>;
                        } | undefined;
                    } | {
                        bizNo?: string;
                        steps?: Array<{
                            type: string;
                            status: StatusEnum4;
                            error?: string;
                            [key: string]: unknown | string | StatusEnum4 | undefined;
                        }>;
                        mfa?: {
                            bizNo?: string;
                            verified: {
                                EMAIL?: boolean;
                                SMS?: boolean;
                                GOOGLE?: boolean;
                                FACE?: boolean;
                                ROAMING_FIDO?: boolean;
                            };
                            attempts?: Array<{
                                method: TypeEnum4;
                                status: StatusEnum4;
                                createdAt: number;
                                validatedAt?: number;
                                expiresAt?: number;
                                success: boolean;
                            }>;
                            methods?: Array<{
                                method: "EMAIL";
                                email: string;
                            } | {
                                method: "SMS";
                                phoneNumber: string;
                            } | {
                                method: "GOOGLE";
                            } | {
                                method: "FACE";
                                viaMobile: boolean;
                            } | {
                                method: "ROAMING_FIDO";
                            }>;
                        };
                        [key: string]: unknown | string | Array<{
                            type: string;
                            status: StatusEnum4;
                            error?: string;
                            [key: string]: unknown | string | StatusEnum4 | undefined;
                        }> | {
                            bizNo?: string;
                            verified: {
                                EMAIL?: boolean;
                                SMS?: boolean;
                                GOOGLE?: boolean;
                                FACE?: boolean;
                                ROAMING_FIDO?: boolean;
                            };
                            attempts?: Array<{
                                method: TypeEnum4;
                                status: StatusEnum4;
                                createdAt: number;
                                validatedAt?: number;
                                expiresAt?: number;
                                success: boolean;
                            }>;
                            methods?: Array<{
                                method: "EMAIL";
                                email: string;
                            } | {
                                method: "SMS";
                                phoneNumber: string;
                            } | {
                                method: "GOOGLE";
                            } | {
                                method: "FACE";
                                viaMobile: boolean;
                            } | {
                                method: "ROAMING_FIDO";
                            }>;
                        } | undefined;
                    } | {
                        valid2FAMethods: Array<string>;
                        [key: string]: unknown | Array<string>;
                    } | {
                        bizNo?: string;
                        steps?: Array<{
                            type: string;
                            status: "success";
                        }>;
                        accountId?: string;
                        dryRun: true;
                        readyToTransact: true;
                        mfa?: {
                            bizNo?: string;
                            verified: {
                                EMAIL?: boolean;
                                SMS?: boolean;
                                GOOGLE?: boolean;
                                FACE?: boolean;
                                ROAMING_FIDO?: boolean;
                            };
                            attempts?: Array<{
                                method: TypeEnum4;
                                status: StatusEnum4;
                                createdAt: number;
                                validatedAt?: number;
                                expiresAt?: number;
                                success: boolean;
                            }>;
                            methods?: Array<{
                                method: "EMAIL";
                                email: string;
                            } | {
                                method: "SMS";
                                phoneNumber: string;
                            } | {
                                method: "GOOGLE";
                            } | {
                                method: "FACE";
                                viaMobile: boolean;
                            } | {
                                method: "ROAMING_FIDO";
                            }>;
                        };
                        [key: string]: unknown | string | Array<{
                            type: string;
                            status: "success";
                        }> | true | {
                            bizNo?: string;
                            verified: {
                                EMAIL?: boolean;
                                SMS?: boolean;
                                GOOGLE?: boolean;
                                FACE?: boolean;
                                ROAMING_FIDO?: boolean;
                            };
                            attempts?: Array<{
                                method: TypeEnum4;
                                status: StatusEnum4;
                                createdAt: number;
                                validatedAt?: number;
                                expiresAt?: number;
                                success: boolean;
                            }>;
                            methods?: Array<{
                                method: "EMAIL";
                                email: string;
                            } | {
                                method: "SMS";
                                phoneNumber: string;
                            } | {
                                method: "GOOGLE";
                            } | {
                                method: "FACE";
                                viaMobile: boolean;
                            } | {
                                method: "ROAMING_FIDO";
                            }>;
                        } | undefined;
                    } | {
                        [key: string]: unknown;
                    };
                } | undefined;
                success: boolean;
            } | {
                data: null;
                error: {
                    error: string | {
                        error: string;
                        type: TypeEnum3;
                        result?: {
                            bizNo: string;
                            steps: Array<{
                                type: TypeEnum4;
                                status: StatusEnum4;
                                required: boolean;
                                metadata?: {
                                    email?: string;
                                    emailSent?: boolean;
                                    qrCodeUrl?: string;
                                    qrCodeValidSeconds?: number;
                                    roamingFlowId?: string;
                                    [key: string]: unknown | string | boolean | number | undefined;
                                };
                                [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                                    email?: string;
                                    emailSent?: boolean;
                                    qrCodeUrl?: string;
                                    qrCodeValidSeconds?: number;
                                    roamingFlowId?: string;
                                    [key: string]: unknown | string | boolean | number | undefined;
                                } | undefined;
                            }>;
                            relation: RelationEnum;
                            mfa?: {
                                bizNo?: string;
                                verified: {
                                    EMAIL?: boolean;
                                    SMS?: boolean;
                                    GOOGLE?: boolean;
                                    FACE?: boolean;
                                    ROAMING_FIDO?: boolean;
                                };
                                attempts?: Array<{
                                    method: TypeEnum4;
                                    status: StatusEnum4;
                                    createdAt: number;
                                    validatedAt?: number;
                                    expiresAt?: number;
                                    success: boolean;
                                }>;
                                methods?: Array<{
                                    method: "EMAIL";
                                    email: string;
                                } | {
                                    method: "SMS";
                                    phoneNumber: string;
                                } | {
                                    method: "GOOGLE";
                                } | {
                                    method: "FACE";
                                    viaMobile: boolean;
                                } | {
                                    method: "ROAMING_FIDO";
                                }>;
                            };
                            [key: string]: unknown | string | Array<{
                                type: TypeEnum4;
                                status: StatusEnum4;
                                required: boolean;
                                metadata?: {
                                    email?: string;
                                    emailSent?: boolean;
                                    qrCodeUrl?: string;
                                    qrCodeValidSeconds?: number;
                                    roamingFlowId?: string;
                                    [key: string]: unknown | string | boolean | number | undefined;
                                };
                                [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                                    email?: string;
                                    emailSent?: boolean;
                                    qrCodeUrl?: string;
                                    qrCodeValidSeconds?: number;
                                    roamingFlowId?: string;
                                    [key: string]: unknown | string | boolean | number | undefined;
                                } | undefined;
                            }> | RelationEnum | {
                                bizNo?: string;
                                verified: {
                                    EMAIL?: boolean;
                                    SMS?: boolean;
                                    GOOGLE?: boolean;
                                    FACE?: boolean;
                                    ROAMING_FIDO?: boolean;
                                };
                                attempts?: Array<{
                                    method: TypeEnum4;
                                    status: StatusEnum4;
                                    createdAt: number;
                                    validatedAt?: number;
                                    expiresAt?: number;
                                    success: boolean;
                                }>;
                                methods?: Array<{
                                    method: "EMAIL";
                                    email: string;
                                } | {
                                    method: "SMS";
                                    phoneNumber: string;
                                } | {
                                    method: "GOOGLE";
                                } | {
                                    method: "FACE";
                                    viaMobile: boolean;
                                } | {
                                    method: "ROAMING_FIDO";
                                }>;
                            } | undefined;
                        } | {
                            bizNo?: string;
                            steps?: Array<{
                                type: string;
                                status: StatusEnum4;
                                error?: string;
                                [key: string]: unknown | string | StatusEnum4 | undefined;
                            }>;
                            mfa?: {
                                bizNo?: string;
                                verified: {
                                    EMAIL?: boolean;
                                    SMS?: boolean;
                                    GOOGLE?: boolean;
                                    FACE?: boolean;
                                    ROAMING_FIDO?: boolean;
                                };
                                attempts?: Array<{
                                    method: TypeEnum4;
                                    status: StatusEnum4;
                                    createdAt: number;
                                    validatedAt?: number;
                                    expiresAt?: number;
                                    success: boolean;
                                }>;
                                methods?: Array<{
                                    method: "EMAIL";
                                    email: string;
                                } | {
                                    method: "SMS";
                                    phoneNumber: string;
                                } | {
                                    method: "GOOGLE";
                                } | {
                                    method: "FACE";
                                    viaMobile: boolean;
                                } | {
                                    method: "ROAMING_FIDO";
                                }>;
                            };
                            [key: string]: unknown | string | Array<{
                                type: string;
                                status: StatusEnum4;
                                error?: string;
                                [key: string]: unknown | string | StatusEnum4 | undefined;
                            }> | {
                                bizNo?: string;
                                verified: {
                                    EMAIL?: boolean;
                                    SMS?: boolean;
                                    GOOGLE?: boolean;
                                    FACE?: boolean;
                                    ROAMING_FIDO?: boolean;
                                };
                                attempts?: Array<{
                                    method: TypeEnum4;
                                    status: StatusEnum4;
                                    createdAt: number;
                                    validatedAt?: number;
                                    expiresAt?: number;
                                    success: boolean;
                                }>;
                                methods?: Array<{
                                    method: "EMAIL";
                                    email: string;
                                } | {
                                    method: "SMS";
                                    phoneNumber: string;
                                } | {
                                    method: "GOOGLE";
                                } | {
                                    method: "FACE";
                                    viaMobile: boolean;
                                } | {
                                    method: "ROAMING_FIDO";
                                }>;
                            } | undefined;
                        } | {
                            valid2FAMethods: Array<string>;
                            [key: string]: unknown | Array<string>;
                        } | {
                            bizNo?: string;
                            steps?: Array<{
                                type: string;
                                status: "success";
                            }>;
                            accountId?: string;
                            dryRun: true;
                            readyToTransact: true;
                            mfa?: {
                                bizNo?: string;
                                verified: {
                                    EMAIL?: boolean;
                                    SMS?: boolean;
                                    GOOGLE?: boolean;
                                    FACE?: boolean;
                                    ROAMING_FIDO?: boolean;
                                };
                                attempts?: Array<{
                                    method: TypeEnum4;
                                    status: StatusEnum4;
                                    createdAt: number;
                                    validatedAt?: number;
                                    expiresAt?: number;
                                    success: boolean;
                                }>;
                                methods?: Array<{
                                    method: "EMAIL";
                                    email: string;
                                } | {
                                    method: "SMS";
                                    phoneNumber: string;
                                } | {
                                    method: "GOOGLE";
                                } | {
                                    method: "FACE";
                                    viaMobile: boolean;
                                } | {
                                    method: "ROAMING_FIDO";
                                }>;
                            };
                            [key: string]: unknown | string | Array<{
                                type: string;
                                status: "success";
                            }> | true | {
                                bizNo?: string;
                                verified: {
                                    EMAIL?: boolean;
                                    SMS?: boolean;
                                    GOOGLE?: boolean;
                                    FACE?: boolean;
                                    ROAMING_FIDO?: boolean;
                                };
                                attempts?: Array<{
                                    method: TypeEnum4;
                                    status: StatusEnum4;
                                    createdAt: number;
                                    validatedAt?: number;
                                    expiresAt?: number;
                                    success: boolean;
                                }>;
                                methods?: Array<{
                                    method: "EMAIL";
                                    email: string;
                                } | {
                                    method: "SMS";
                                    phoneNumber: string;
                                } | {
                                    method: "GOOGLE";
                                } | {
                                    method: "FACE";
                                    viaMobile: boolean;
                                } | {
                                    method: "ROAMING_FIDO";
                                }>;
                            } | undefined;
                        } | {
                            [key: string]: unknown;
                        };
                    } | {
                        error: string;
                        type: "APIKEY_INSUFFICIENT_PERMISSIONS";
                        missing: Array<string>;
                    };
                    type: TypeEnum3;
                    errorCode: TypeEnum3;
                    result: {
                        [key: string]: unknown;
                        transactionId: string;
                    } | {
                        [key: string]: unknown;
                        bizNo: string;
                        steps: Array<{
                            type: TypeEnum4;
                            status: StatusEnum4;
                            required: boolean;
                            metadata?: {
                                email?: string;
                                emailSent?: boolean;
                                qrCodeUrl?: string;
                                qrCodeValidSeconds?: number;
                                roamingFlowId?: string;
                                [key: string]: unknown | string | boolean | number | undefined;
                            };
                            [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                                email?: string;
                                emailSent?: boolean;
                                qrCodeUrl?: string;
                                qrCodeValidSeconds?: number;
                                roamingFlowId?: string;
                                [key: string]: unknown | string | boolean | number | undefined;
                            } | undefined;
                        }>;
                        relation: RelationEnum;
                        mfa?: {
                            bizNo?: string;
                            verified: {
                                EMAIL?: boolean;
                                SMS?: boolean;
                                GOOGLE?: boolean;
                                FACE?: boolean;
                                ROAMING_FIDO?: boolean;
                            };
                            attempts?: Array<{
                                method: TypeEnum4;
                                status: StatusEnum4;
                                createdAt: number;
                                validatedAt?: number;
                                expiresAt?: number;
                                success: boolean;
                            }>;
                            methods?: Array<{
                                method: "EMAIL";
                                email: string;
                            } | {
                                method: "SMS";
                                phoneNumber: string;
                            } | {
                                method: "GOOGLE";
                            } | {
                                method: "FACE";
                                viaMobile: boolean;
                            } | {
                                method: "ROAMING_FIDO";
                            }>;
                        };
                    } | {
                        [key: string]: unknown;
                        bizNo?: string;
                        steps?: Array<{
                            type: string;
                            status: StatusEnum4;
                            error?: string;
                            [key: string]: unknown | string | StatusEnum4 | undefined;
                        }>;
                        mfa?: {
                            bizNo?: string;
                            verified: {
                                EMAIL?: boolean;
                                SMS?: boolean;
                                GOOGLE?: boolean;
                                FACE?: boolean;
                                ROAMING_FIDO?: boolean;
                            };
                            attempts?: Array<{
                                method: TypeEnum4;
                                status: StatusEnum4;
                                createdAt: number;
                                validatedAt?: number;
                                expiresAt?: number;
                                success: boolean;
                            }>;
                            methods?: Array<{
                                method: "EMAIL";
                                email: string;
                            } | {
                                method: "SMS";
                                phoneNumber: string;
                            } | {
                                method: "GOOGLE";
                            } | {
                                method: "FACE";
                                viaMobile: boolean;
                            } | {
                                method: "ROAMING_FIDO";
                            }>;
                        };
                    } | {
                        [key: string]: unknown;
                        valid2FAMethods: Array<string>;
                    } | {
                        [key: string]: unknown;
                    } | undefined;
                };
                success: boolean;
            }>;
        };
    };
    oauth2: {
        getLink: (exchange: Oauth2ExchangeurlgeturlData["path"]["exchange"], walletId: string, idem: string) => Promise<{
            data: {
                url: string;
                success: boolean;
                isQRCode?: boolean;
            } | undefined;
            error: unknown;
            success: boolean;
        }>;
        listExchanges: (status?: Oauth2ExchangeslistexchangesResponses["200"]["exchanges"][number]["status"]) => Promise<{
            id: string;
            name: string;
            logoUrl: string;
            status: StatusEnum;
        }[]>;
    };
}

interface SubscriptionOptions {
    onMessage: (data: any) => void;
    onError?: (error: Error) => void;
    onFatal?: (error: Error) => void;
}
interface TopicInfo {
    success: boolean;
    name: string;
    token: string;
    expiresAt?: number;
}
interface Subscription {
    topicName: string;
    unsubscribe: () => void;
}
/**
 * WebSocketClient handles WebSocket subscriptions
 */
declare class WebSocketClient {
    private activeSubscriptions;
    /**
     * Subscribe to a WebSocket connection
     * @param topicName The identifier for this subscription (typically idem or quoteId)
     * @param orgId The organization ID
     * @param wsBase The WebSocket base URL
     * @param options Subscription options including callbacks
     * @returns A subscription object that can be used to unsubscribe, or null if subscription fails
     */
    subscribe(topicName: string, orgId: string, wsBase: string, options: SubscriptionOptions): Promise<Subscription | null>;
    /**
     * Unsubscribe from a topic
     * @param topicName The name of the topic to unsubscribe from
     */
    unsubscribe(topicName: string): Promise<void>;
    /**
     * Unsubscribe from all active topics
     */
    unsubscribeAll(): Promise<void>;
    /**
     * Check if subscribed to a topic
     * @param topicName The topic name to check
     * @returns True if subscribed, false otherwise
     */
    isSubscribed(topicName: string): boolean;
    /**
     * Get the number of active subscriptions
     * @returns Number of active subscriptions
     */
    getActiveSubscriptionCount(): number;
}

type QRCodeStatus = 'available' | 'acquired' | 'scanned' | 'confirmed' | 'used' | 'expired';
declare enum WorkflowTypes {
    WithdrawFunds = "withdraw",
    OAuth2Flow = "oauth2",
    ConnectExchange = "connect",
    QRCodeAuth = "qr_code_auth"
}
interface BaseWorkflowMessageBody {
    type: WorkflowTypes;
    success: boolean | undefined;
    error?: any;
}
interface WithdrawFundsWorkflowMessageBody {
    type: WorkflowTypes.WithdrawFunds;
    walletId: string;
    transactionId?: string;
    quoteId?: string;
    step: string;
    stepIndex: number;
    totalSteps: number;
}
interface OAuth2WorkflowMessageBody {
    type: WorkflowTypes.OAuth2Flow;
    walletId: string;
    exchange: string;
}
interface ConnectExchangeWorkflowMessageBody {
    type: WorkflowTypes.ConnectExchange;
    walletId: string;
    step: string;
    stepIndex: number;
    totalSteps: number;
}
interface QRCodeAuthWorkflowMessageBody {
    type: WorkflowTypes.QRCodeAuth;
    walletId: string;
    exchange: string;
    qrCodeUrl?: string;
    expiresAt?: number;
    qrCodeStatus?: QRCodeStatus;
    qrCodeExpiresAt?: number;
}
type WorkflowMessageBody = BaseWorkflowMessageBody & (WithdrawFundsWorkflowMessageBody | OAuth2WorkflowMessageBody | ConnectExchangeWorkflowMessageBody | QRCodeAuthWorkflowMessageBody);

type BaseOptions = {
    onStep?: (message: WorkflowMessageBody) => void;
    onError?: (error: Error) => void;
    onFatal?: (error: Error) => void;
};
type OAuth2Options = BaseOptions & {
    onOAuth2Complete: (message: OAuth2WorkflowMessageBody) => any;
    onWithdrawComplete?: never;
};
type WithdrawOptions = BaseOptions & {
    onWithdrawComplete: (message: WithdrawFundsWorkflowMessageBody) => any;
    onOAuth2Complete?: never;
};
type QRCodeOptions = {
    onQRCodeReceived: (message: QRCodeAuthWorkflowMessageBody) => any;
    onQRCodeComplete: (message: QRCodeAuthWorkflowMessageBody) => any;
    onQRCodeError?: (error: Error) => void;
};
/**
 * A web-specific client for Bluvo SDK that provides browser-oriented functionality
 * for cryptocurrency exchange integrations and OAuth2 authentication flows.
 *
 * This client is designed for use in browser environments where direct API key usage
 * is not secure. It provides methods for OAuth2 authentication flows and other
 * browser-specific features that require user interaction.
 *
 * Unlike the main BluvoClient which requires API keys, BluvoWebClient uses only
 * organization and project identifiers, making it safe for client-side applications.
 */
declare class BluvoWebClient {
    private readonly orgId;
    private readonly projectId;
    private readonly sandbox;
    private readonly dev;
    private readonly customDomain?;
    private wsClient;
    private readonly wsBase;
    private readonly apiBase?;
    private readonly client;
    /**
     * Creates a new BluvoWebClient instance for browser environments.
     *
     * @param orgId Your Bluvo organization identifier.
     * @param projectId Your Bluvo project identifier.
     * @param sandbox Whether to use the sandbox environment.
     * @param dev Whether to use the local development environment (localhost:8787).
     * @param customDomain Custom domain configuration to override default api-bluvo.com
     */
    constructor(orgId: string, projectId: string, sandbox?: boolean, dev?: boolean, customDomain?: string | "api-bluvo.com" | {
        api: string;
        ws: string;
    } | undefined);
    static createClient({ orgId, projectId, sandbox, dev, customDomain, }: {
        orgId: string;
        projectId: string;
        sandbox?: boolean;
        dev?: boolean;
        customDomain?: string | "api-bluvo.com" | {
            api: string;
            ws: string;
        };
    }): BluvoWebClient;
    oauth2: {
        /**
         * Opens an OAuth2 authentication flow for connecting to a cryptocurrency exchange.
         *
         * This method initiates the OAuth2 authorization process by opening a new window
         * or redirecting the user to the exchange's authorization page. After the user
         * grants permission, they will be redirected back to your application with the
         * necessary credentials to complete the wallet connection.
         *
         * @param exchange The exchange to authenticate with (currently supports 'coinbase').
         * @param options OAuth2 flow configuration options:
         * @param hooks Optional callback hooks:
         * @param popupOptions Optional window customization:
         * @param windowRef Optional window reference (defaults to global window)
         *
         * @example
         * const webClient = new BluvoWebClient('org-123', 'project-456');
         * await webClient.oauth2.openWindow('coinbase', {
         *   walletId: 'user-coinbase-wallet',
         *   idem: 'oauth-flow-123'
         * }, {
         *   onWindowClose: () => console.log('Window closed')
         * }, {
         *   title: 'Connect to Coinbase',
         *   width: 600,
         *   height: 700
         * });
         */
        openWindow(exchange: "coinbase", options: {
            walletId: string;
            idem: string;
        }, hooks?: {
            onWindowClose?: () => void;
        }, popupOptions?: {
            title?: string;
            width?: number;
            height?: number;
            left?: number;
            top?: number;
        }, windowRef?: Window | undefined): Promise<() => void>;
        /**
         * Generates a URL for the OAuth2 authentication flow.
         *
         * This method constructs a URL that can be used to redirect the user to the
         * exchange's authorization page. The user will authenticate and authorize
         * your application to access their account.
         *
         * @param exchange The exchange to authenticate with (currently supports 'coinbase').
         * @param walletId A unique identifier for this wallet connection.
         * @param idem A unique identifier for this specific OAuth2 flow instance.
         *
         * @returns A URL string that can be used to initiate the OAuth2 flow.
         */
        getURL: (exchange: "coinbase" | "kraken", { walletId, idem, }: {
            walletId: string;
            idem: string;
        }) => Promise<{
            url: string | undefined;
            data: {
                url: string;
                success: boolean;
                isQRCode?: boolean;
            } | undefined;
            error: unknown;
            success: boolean;
        }>;
    };
    /**
     * Listen to a Momento topic for messages (generic version).
     *
     * This method provides a general-purpose subscription to Momento topics,
     * useful for any real-time messaging needs beyond OAuth2 flows.
     *
     * @param topicName The name of the topic to subscribe to
     * @param topicToken
     * @param options Subscription options including callbacks
     * @returns A subscription object that can be used to unsubscribe, or null if subscription fails
     *
     * @example
     * // Listen to a custom topic
     * const subscription = await webClient.listen(
     *   'my-topic-123',
     *   topicInfo,
     *   {
     *     onMessage: (data) => {
     *       console.log('Received message:', data);
     *     },
     *     onError: (error) => {
     *       console.error('Subscription error:', error);
     *     }
     *   }
     * );
     *
     * // Later: unsubscribe
     * await webClient.unsubscribe('my-topic-123');
     */
    listen(topicName: string, options: (OAuth2Options | WithdrawOptions) & Partial<QRCodeOptions>): Promise<Subscription | null>;
    /**
     * Unsubscribe from a topic.
     *
     * @param topicName The name of the topic to unsubscribe from
     */
    unsubscribe(topicName: string): Promise<void>;
    /**
     * Unsubscribe from all active topics.
     */
    unsubscribeAll(): Promise<void>;
    /**
     * Check if currently subscribed to a topic.
     *
     * @param topicName The topic name to check
     * @returns True if subscribed, false otherwise
     */
    isSubscribed(topicName: string): boolean;
    /**
     * Get the number of active subscriptions.
     *
     * @returns Number of active subscriptions
     */
    getActiveSubscriptionCount(): number;
}

type Listener<TState> = (state: TState) => void;
type Unsubscribe = () => void;
interface Machine<TState, TAction> {
    getState(): TState;
    send(action: TAction): void;
    subscribe(listener: Listener<TState>): Unsubscribe;
    dispose(): void;
}
interface StateValue<TStateType extends string = string> {
    type: TStateType;
    context: Record<string, any>;
    error?: Error | null;
}
type StateTransition<TState, TAction> = (state: TState, action: TAction) => TState;

declare function createMachine<TState, TAction>(initialState: TState, transition: StateTransition<TState, TAction>): Machine<TState, TAction>;

type Network = WalletwithdrawbalancebalanceResponse["balances"][number]["networks"][number];
type ChainId = Network["chainId"];
type TokenAddress = Network["tokenAddress"];
type FlowStateType = "idle" | "exchanges:loading" | "exchanges:ready" | "exchanges:error" | "oauth:waiting" | "oauth:processing" | "oauth:completed" | "oauth:error" | "oauth:fatal" | "oauth:window_closed_by_user" | "qrcode:waiting" | "qrcode:displaying" | "qrcode:scanning" | "qrcode:error" | "qrcode:timeout" | "qrcode:fatal" | "wallet:loading" | "wallet:ready" | "wallet:error" | "quote:requesting" | "quote:ready" | "quote:expired" | "quote:error" | "withdraw:idle" | "withdraw:processing" | "withdraw:error2FA" | "withdraw:error2FAMultiStep" | "withdraw:errorSMS" | "withdraw:errorKYC" | "withdraw:errorBalance" | "withdraw:retrying" | "withdraw:readyToConfirm" | "withdraw:completed" | "withdraw:blocked" | "withdraw:fatal" | "flow:cancelled";
interface FlowContext {
    orgId: string;
    projectId: string;
    autoRefreshQuotation?: boolean;
    lastQuoteRequest?: {
        asset: string;
        amount: string;
        destinationAddress: string;
        network?: string;
        tag?: string;
        includeFee?: boolean;
    };
    exchanges?: Array<{
        id: string;
        name: string;
        logoUrl: string;
        status: string;
    }>;
    exchange?: string;
    walletId?: string;
    walletBalances?: Array<{
        asset: string;
        balance: string;
        balanceInFiat?: string;
        networks?: Array<{
            id: string;
            name: string;
            displayName: string;
            minWithdrawal: string;
            maxWithdrawal?: string;
            assetName: string;
            addressRegex?: string | null;
        }>;
        extra?: {
            slug?: string;
            assetId?: string;
        };
    }>;
    quote?: {
        id: string;
        asset: string;
        amount: string;
        estimatedFee: string;
        estimatedTotal: string;
        amountWithFeeInFiat: string;
        amountNoFeeInFiat: string;
        estimatedFeeInFiat: string;
        additionalInfo: {
            minWithdrawal: string | null;
            maxWithdrawal?: string | null;
        };
        expiresAt: number;
    };
    withdrawal?: {
        id: string;
        status: string;
        transactionId?: string;
    };
    retryAttempts: number;
    maxRetryAttempts: number;
    idempotencyKey?: string;
    topicName?: string;
    invalid2FAAttempts?: number;
    oauthErrorType?: 'recoverable' | 'fatal';
    errorDetails?: {
        valid2FAMethods?: string[];
    };
    qrCodeUrl?: string;
    qrCodeExpiresAt?: number;
    qrCodeStatus?: QRCodeStatus;
    isQRCodeFlow?: boolean;
    multiStep2FA?: {
        bizNo: string;
        steps: Array<{
            type: 'GOOGLE' | 'EMAIL' | 'FACE' | 'SMS' | 'ROAMING_FIDO';
            status: 'pending' | 'success' | 'failed';
            required: boolean;
            metadata?: {
                email?: string;
                emailSent?: boolean;
                qrCodeUrl?: string;
                qrCodeValidSeconds?: number;
                roamingFlowId?: string;
            };
        }>;
        relation: 'AND' | 'OR';
        collectedCodes?: {
            twofa?: string;
            emailCode?: string;
            smsCode?: string;
        };
        faceQrCodeUrl?: string;
        faceQrCodeExpiresAt?: number;
        mfa?: {
            verified: {
                GOOGLE?: boolean;
                EMAIL?: boolean;
                FACE?: boolean;
                SMS?: boolean;
                ROAMING_FIDO?: boolean;
            };
        };
    };
}
type FlowState = StateValue<FlowStateType> & {
    context: FlowContext;
};
type FlowActionType = {
    type: "LOAD_EXCHANGES";
} | {
    type: "EXCHANGES_LOADED";
    exchanges: Array<{
        id: string;
        name: string;
        logoUrl: string;
        status: string;
    }>;
} | {
    type: "EXCHANGES_FAILED";
    error: Error;
} | {
    type: "START_OAUTH";
    exchange: string;
    walletId: string;
    idem: string;
} | {
    type: "OAUTH_WINDOW_OPENED";
} | {
    type: "OAUTH_COMPLETED";
    walletId: string;
    exchange: string;
} | {
    type: "OAUTH_FAILED";
    error: Error;
} | {
    type: "OAUTH_FATAL";
    error: Error;
} | {
    type: "OAUTH_WINDOW_CLOSED_BY_USER";
    error: Error;
} | {
    type: "LOAD_WALLET";
} | {
    type: "WALLET_LOADED";
    balances: Array<{
        asset: string;
        balance: string;
        balanceInFiat?: string;
        networks?: Array<{
            id: string;
            name: string;
            displayName: string;
            minWithdrawal: string;
            maxWithdrawal?: string | undefined;
            assetName: string;
            addressRegex?: string;
            chainId?: ChainId;
            tokenAddress?: TokenAddress;
            contractAddress?: string | null;
            contractAddressVerified?: boolean | null;
        }>;
        extra?: {
            slug?: string;
            assetId?: string;
        };
    }>;
} | {
    type: "WALLET_FAILED";
    error: Error;
} | {
    type: "REQUEST_QUOTE";
    asset: string;
    amount: string;
    destinationAddress: string;
    network?: string;
} | {
    type: "QUOTE_RECEIVED";
    quote: FlowContext["quote"];
} | {
    type: "QUOTE_EXPIRED";
} | {
    type: "QUOTE_FAILED";
    error: Error;
} | {
    type: "START_WITHDRAWAL";
    quoteId: string;
} | {
    type: "WITHDRAWAL_PROGRESS";
    message: string;
} | {
    type: "WITHDRAWAL_REQUIRES_2FA";
} | {
    type: "WITHDRAWAL_REQUIRES_SMS";
} | {
    type: "WITHDRAWAL_REQUIRES_KYC";
} | {
    type: "WITHDRAWAL_2FA_INVALID";
} | {
    type: "WITHDRAWAL_INSUFFICIENT_BALANCE";
} | {
    type: "WITHDRAWAL_2FA_METHOD_NOT_SUPPORTED";
    result?: {
        valid2FAMethods?: string[];
    };
} | {
    type: "SUBMIT_2FA";
    code: string;
} | {
    type: "SUBMIT_SMS";
    code: string;
} | {
    type: "RETRY_WITHDRAWAL";
} | {
    type: "WITHDRAWAL_SUCCESS";
    transactionId?: string;
} | {
    type: "WITHDRAWAL_COMPLETED";
    transactionId: string;
} | {
    type: "WITHDRAWAL_BLOCKED";
    reason: string;
} | {
    type: "WITHDRAWAL_FATAL";
    error: Error;
} | {
    type: "CANCEL_FLOW";
} | {
    type: "START_QRCODE";
    exchange: string;
    walletId: string;
    idem: string;
} | {
    type: "QRCODE_URL_RECEIVED";
    qrCodeUrl: string;
    expiresAt?: number;
} | {
    type: "QRCODE_STATUS_UPDATED";
    qrCodeStatus: QRCodeStatus;
    qrCodeExpiresAt?: number;
} | {
    type: "QRCODE_SCANNED";
} | {
    type: "QRCODE_COMPLETED";
    walletId: string;
    exchange: string;
} | {
    type: "QRCODE_FAILED";
    error: Error;
} | {
    type: "QRCODE_TIMEOUT";
} | {
    type: "QRCODE_FATAL";
    error: Error;
} | {
    type: "REFRESH_QRCODE";
} | {
    type: "WITHDRAWAL_REQUIRES_2FA_MULTI_STEPS";
    result: {
        bizNo: string;
        steps: Array<{
            type: 'GOOGLE' | 'EMAIL' | 'FACE' | 'SMS' | 'ROAMING_FIDO';
            status: 'pending' | 'success' | 'failed';
            required: boolean;
            metadata?: {
                email?: string;
                emailSent?: boolean;
                qrCodeUrl?: string;
                qrCodeValidSeconds?: number;
                roamingFlowId?: string;
            };
        }>;
        relation: 'AND' | 'OR';
        mfa?: {
            verified: {
                GOOGLE?: boolean;
                EMAIL?: boolean;
                FACE?: boolean;
                SMS?: boolean;
                ROAMING_FIDO?: boolean;
            };
        };
    };
} | {
    type: "WITHDRAWAL_DRY_RUN_COMPLETE";
    result: {
        bizNo?: string;
        steps?: Array<{
            type: 'GOOGLE' | 'EMAIL' | 'FACE' | 'SMS' | 'ROAMING_FIDO';
            status: 'pending' | 'success' | 'failed';
            required: boolean;
            metadata?: {
                email?: string;
                emailSent?: boolean;
                qrCodeUrl?: string;
                qrCodeValidSeconds?: number;
                roamingFlowId?: string;
            };
        }>;
        relation?: 'AND' | 'OR';
        mfa?: {
            verified: {
                GOOGLE?: boolean;
                EMAIL?: boolean;
                FACE?: boolean;
                SMS?: boolean;
                ROAMING_FIDO?: boolean;
            };
        };
    };
} | {
    type: "CONFIRM_WITHDRAWAL";
} | {
    type: "SUBMIT_2FA_MULTI_STEP";
    stepType: 'GOOGLE' | 'EMAIL' | 'SMS';
    code: string;
} | {
    type: "POLL_FACE_VERIFICATION";
} | {
    type: "POLL_ROAMING_FIDO_VERIFICATION";
} | {
    type: "WITHDRAWAL_2FA_INCOMPLETE";
    result: {
        bizNo: string;
        steps: Array<{
            type: 'GOOGLE' | 'EMAIL' | 'FACE' | 'SMS' | 'ROAMING_FIDO';
            status: 'pending' | 'success' | 'failed';
            required: boolean;
            metadata?: {
                email?: string;
                emailSent?: boolean;
                qrCodeUrl?: string;
                qrCodeValidSeconds?: number;
                roamingFlowId?: string;
            };
        }>;
        relation: 'AND' | 'OR';
        mfa?: {
            verified: {
                GOOGLE?: boolean;
                EMAIL?: boolean;
                FACE?: boolean;
                SMS?: boolean;
                ROAMING_FIDO?: boolean;
            };
        };
    };
};

type WithdrawalStateType = 'idle' | 'processing' | 'waitingFor2FA' | 'waitingForSMS' | 'waitingForKYC' | 'retrying' | 'completed' | 'blocked' | 'failed';
interface WithdrawalContext {
    quoteId: string;
    walletId: string;
    idempotencyKey: string;
    retryCount: number;
    maxRetries: number;
    lastError?: Error;
    transactionId?: string;
    requiredActions?: Array<'2fa' | 'sms' | 'kyc'>;
    twoFactorCode?: string;
    smsCode?: string;
}
type WithdrawalState = StateValue<WithdrawalStateType> & {
    context: WithdrawalContext;
};
type WithdrawalActionType = {
    type: 'EXECUTE';
    quoteId: string;
    walletId: string;
} | {
    type: 'REQUIRES_2FA';
} | {
    type: 'REQUIRES_SMS';
} | {
    type: 'REQUIRES_KYC';
} | {
    type: 'SUBMIT_2FA';
    code: string;
} | {
    type: 'SUBMIT_SMS';
    code: string;
} | {
    type: 'RETRY';
} | {
    type: 'SUCCESS';
    transactionId?: string;
} | {
    type: 'BLOCKED';
    reason: string;
} | {
    type: 'FAIL';
    error: Error;
};

/**
 * Options for creating a flow machine
 */
interface FlowMachineOptions {
    orgId: string;
    projectId: string;
    maxRetryAttempts?: number;
    autoRefreshQuotation?: boolean;
}

declare function createFlowMachine(options: FlowMachineOptions): Machine<FlowState, FlowActionType>;

declare function createWithdrawalMachine(initialContext?: Partial<WithdrawalContext>): Machine<WithdrawalState, WithdrawalActionType>;

/**
 * Async cache adapter interface.
 * By default, Bluvo uses localStorage. Users can provide their own
 * async get/set implementation (e.g., IndexedDB, sessionStorage, etc.).
 */
interface BluvoCacheAdapter {
    get: (key: string) => Promise<string | null> | string | null;
    set: (key: string, value: string) => Promise<void> | void;
    remove: (key: string) => Promise<void> | void;
}
interface BluvoCacheOptions {
    /**
     * Custom cache adapter. Defaults to localStorage.
     */
    adapter?: BluvoCacheAdapter;
    /**
     * Prefix for all cache keys. Defaults to "bluvo:".
     */
    prefix?: string;
    /**
     * Minimum remaining lifetime (in seconds) for a cached QR code to be considered valid.
     * If the QR code expires within this threshold, the cache is ignored.
     * Defaults to 15 seconds.
     */
    minRemainingLifetimeSec?: number;
    /**
     * Disable caching entirely. Defaults to false.
     */
    disabled?: boolean;
}
declare class BluvoCache {
    private adapter;
    private prefix;
    private minRemainingLifetimeSec;
    private disabled;
    constructor(options?: BluvoCacheOptions);
    private buildKey;
    /**
     * Retrieve a cached QR code for the given exchange, if still valid.
     * Returns null if cache is empty, expired, or within the safety threshold.
     */
    getCachedQRCode(exchange: string): Promise<QRCodeAuthWorkflowMessageBody | null>;
    /**
     * Cache a QR code message for the given exchange.
     * Only caches if the message has both a URL and expiration time.
     */
    cacheQRCode(exchange: string, message: QRCodeAuthWorkflowMessageBody): Promise<void>;
    /**
     * Remove cached QR code for the given exchange.
     */
    removeCachedQRCode(exchange: string): Promise<void>;
}

interface BluvoFlowClientOptions {
    orgId: string;
    projectId: string;
    listExchangesFn: BluvoClient["oauth2"]["listExchanges"];
    fetchWithdrawableBalanceFn: BluvoClient["wallet"]["withdrawals"]["getWithdrawableBalance"];
    requestQuotationFn: BluvoClient["wallet"]["withdrawals"]["requestQuotation"];
    executeWithdrawalFn: BluvoClient["wallet"]["withdrawals"]["executeWithdrawal"];
    getWalletByIdFn: BluvoClient["wallet"]["get"];
    pingWalletByIdFn: BluvoClient["wallet"]["ping"];
    mkUUIDFn?: () => string;
    onWalletConnectedFn?: (walletId: string, exchange: string) => any;
    options?: {
        sandbox?: boolean;
        dev?: boolean;
        maxRetryAttempts?: number;
        autoRefreshQuotation?: boolean;
        customDomain?: string | "api-bluvo.com" | {
            api: string;
            ws: string;
        };
    };
    /**
     * Cache configuration for persisting QR codes across page reloads.
     * By default uses localStorage with prefix "bluvo:" and 15-second safety threshold.
     * Pass `{ disabled: true }` to disable caching entirely, or provide a custom adapter.
     */
    cache?: BluvoCacheOptions;
}
interface WithdrawalFlowOptions {
    exchange: string;
    walletId: string;
    popupOptions?: {
        title?: string;
        width?: number;
        height?: number;
        left?: number;
        top?: number;
    };
}
interface ResumeWithdrawalFlowOptions {
    exchange: string;
    walletId: string;
}
/**
 * Options for silently resuming a withdrawal flow with preloaded balance data
 *
 * This interface allows you to resume a withdrawal flow for a wallet that
 * has already been previewed, jumping directly to the wallet:ready state
 * without requiring OAuth or re-fetching balance data.
 */
interface SilentResumeWithdrawalFlowOptions {
    /** Wallet ID to resume */
    walletId: string;
    /** Exchange this wallet is connected to */
    exchange: string;
    /** Pre-loaded balance data (if available from preview) */
    preloadedBalances?: Array<{
        asset: string;
        balance: string;
        balanceInFiat?: string;
        networks?: Array<{
            id: string;
            name: string;
            displayName: string;
            minWithdrawal: string;
            maxWithdrawal?: string;
            assetName: string;
            addressRegex?: string;
        }>;
        extra?: {
            slug?: string;
            assetId?: string;
        };
    }>;
    /** Called when wallet is not found */
    onWalletNotFound?: (walletId: string) => void;
    /** Called when wallet has invalid API credentials */
    onWalletInvalidApiCredentials?: (walletId: string) => void;
    /** Called when wallet balance is loaded */
    onWalletBalance?: (walletId: string, balances: any[]) => void;
}
interface QuoteRequestOptions {
    asset: string;
    amount: string;
    destinationAddress: string;
    network?: string;
    tag?: string;
    includeFee?: boolean;
}
declare class BluvoFlowClient {
    private options;
    private webClient;
    private flowMachine?;
    private subscription?;
    private generateId;
    private quoteRefreshTimer?;
    private qrCodeTimeoutTimer?;
    private cache;
    constructor(options: BluvoFlowClientOptions);
    loadExchanges(status?: Oauth2ExchangeslistexchangesResponses["200"]["exchanges"][number]["status"]): Promise<{
        success: boolean;
        error: string;
        type: TypeEnum2;
        exchanges?: undefined;
        result?: undefined;
    } | {
        success: boolean;
        error: string;
        type?: undefined;
        exchanges?: undefined;
        result?: undefined;
    } | {
        exchanges: any[];
        success: boolean;
        result: any[];
        error?: undefined;
        type?: undefined;
    }>;
    startWithdrawalFlow(flowOptions: WithdrawalFlowOptions): Promise<{
        machine: Machine<FlowState, FlowActionType>;
        closeOAuthWindow: null;
    } | {
        machine: Machine<FlowState, FlowActionType>;
        closeOAuthWindow: () => void;
    }>;
    /**
     * Handle a QR code message (from WebSocket or cache replay).
     * Extracted to share logic between startQRCodeFlow, refreshQRCode, and cache replay.
     */
    private handleQRCodeReceived;
    /**
     * Handle QR code completion. Clears cache and proceeds to wallet loading.
     */
    private handleQRCodeComplete;
    /**
     * Handle QR code error. Clears timeout and sends failure action.
     */
    private handleQRCodeError;
    /**
     * Handle generic error during QR code flow.
     */
    private handleQRCodeFlowError;
    /**
     * Start a QR code authentication flow for exchanges that don't support OAuth popup
     * (e.g., Binance). The flow renders a QR code for mobile app scanning.
     *
     * If a valid cached QR code exists (from a previous page load), it will be replayed
     * immediately to avoid unnecessary API calls and rate-limiting.
     */
    private startQRCodeFlow;
    /**
     * Refresh the QR code after it has expired or encountered an error.
     * This can be called when the user is in qrcode:timeout or qrcode:error state.
     */
    refreshQRCode(): Promise<{
        success: boolean;
        error: any;
    } | {
        success: boolean;
        error?: undefined;
    }>;
    resumeWithdrawalFlow(flowOptions: ResumeWithdrawalFlowOptions): Promise<{
        machine: Machine<FlowState, FlowActionType>;
        closeOAuthWindow: null;
    }>;
    /**
     * Silently resume a withdrawal flow with optional preloaded balance data
     *
     * This method allows you to resume a withdrawal flow for a wallet that has already
     * been previewed, jumping directly to the wallet:ready state. If balance data is
     * preloaded (from a preview), it will be used directly. Otherwise, the method will
     * ping the wallet and fetch the balance data.
     *
     * This is useful for scenarios where users select a wallet from a preview list and
     * want to continue directly to the withdrawal interface without re-authenticating.
     *
     * @param options Configuration for silent resume
     * @returns Object containing the flow machine instance
     */
    silentResumeWithdrawalFlow(options: SilentResumeWithdrawalFlowOptions): Promise<{
        machine: Machine<FlowState, FlowActionType>;
    } | undefined>;
    private loadWallet;
    requestQuote(options: QuoteRequestOptions): Promise<{
        success: boolean;
        error: string;
        type?: undefined;
        rawQuote?: undefined;
        quoteData?: undefined;
        result?: undefined;
    } | {
        success: boolean;
        error: string;
        type: TypeEnum2;
        rawQuote?: undefined;
        quoteData?: undefined;
        result?: undefined;
    } | {
        rawQuote: {
            id: string;
            asset: string;
            amountWithFee?: number | null;
            amountNoFee?: number | null;
            estimatedFee?: number | null;
            amountWithFeeInFiat?: number | null;
            amountNoFeeInFiat?: number | null;
            estimatedFeeInFiat?: number | null;
            destinationAddress: string;
            network?: string | null;
            tag?: string | null;
            estimatedTotal?: number;
            feeDetails?: Array<{
                category: CategoryEnum;
                currency: string;
                amount: number;
                amountInFiat?: number | null;
                fiatCurrency: string;
            }>;
            expiresAt: string;
            additionalInfo: {
                minWithdrawal: string | null;
                maxWithdrawal?: string | null;
            };
        };
        quoteData: {
            id: string;
            asset: string;
            amount: string;
            estimatedFee: string;
            estimatedTotal: string;
            amountWithFeeInFiat: string;
            amountNoFeeInFiat: string;
            estimatedFeeInFiat: string;
            additionalInfo: {
                minWithdrawal: string | null;
                maxWithdrawal?: string | null;
            };
            expiresAt: number;
        };
        success: boolean;
        result: {
            rawQuote: {
                id: string;
                asset: string;
                amountWithFee?: number | null;
                amountNoFee?: number | null;
                estimatedFee?: number | null;
                amountWithFeeInFiat?: number | null;
                amountNoFeeInFiat?: number | null;
                estimatedFeeInFiat?: number | null;
                destinationAddress: string;
                network?: string | null;
                tag?: string | null;
                estimatedTotal?: number;
                feeDetails?: Array<{
                    category: CategoryEnum;
                    currency: string;
                    amount: number;
                    amountInFiat?: number | null;
                    fiatCurrency: string;
                }>;
                expiresAt: string;
                additionalInfo: {
                    minWithdrawal: string | null;
                    maxWithdrawal?: string | null;
                };
            };
            quoteData: {
                id: string;
                asset: string;
                amount: string;
                estimatedFee: string;
                estimatedTotal: string;
                amountWithFeeInFiat: string;
                amountNoFeeInFiat: string;
                estimatedFeeInFiat: string;
                additionalInfo: {
                    minWithdrawal: string | null;
                    maxWithdrawal?: string | null;
                };
                expiresAt: number;
            };
        };
        error?: undefined;
        type?: undefined;
    }>;
    executeWithdrawal(quoteId: string): Promise<{
        success: boolean;
        error: string;
        type?: undefined;
    } | {
        success: boolean;
        error: any;
        type: TypeEnum2;
    } | {
        success: boolean;
        result: {
            success: boolean;
            error?: string;
            type?: TypeEnum3;
            result?: {
                transactionId: string;
                [key: string]: unknown | string;
            } | {
                bizNo: string;
                steps: Array<{
                    type: TypeEnum4;
                    status: StatusEnum4;
                    required: boolean;
                    metadata?: {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    };
                    [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    } | undefined;
                }>;
                relation: RelationEnum;
                mfa?: {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                };
                [key: string]: unknown | string | Array<{
                    type: TypeEnum4;
                    status: StatusEnum4;
                    required: boolean;
                    metadata?: {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    };
                    [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    } | undefined;
                }> | RelationEnum | {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                } | undefined;
            } | {
                bizNo?: string;
                steps?: Array<{
                    type: string;
                    status: StatusEnum4;
                    error?: string;
                    [key: string]: unknown | string | StatusEnum4 | undefined;
                }>;
                mfa?: {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                };
                [key: string]: unknown | string | Array<{
                    type: string;
                    status: StatusEnum4;
                    error?: string;
                    [key: string]: unknown | string | StatusEnum4 | undefined;
                }> | {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                } | undefined;
            } | {
                valid2FAMethods: Array<string>;
                [key: string]: unknown | Array<string>;
            } | {
                [key: string]: unknown;
            };
        } | null | undefined;
        error?: string;
        type?: TypeEnum3;
    }>;
    submit2FA(code: string): Promise<{
        success: boolean;
        error: string;
        type?: undefined;
    } | {
        success: boolean;
        error: any;
        type: TypeEnum2;
    } | {
        success: boolean;
        result: {
            success: boolean;
            error?: string;
            type?: TypeEnum3;
            result?: {
                transactionId: string;
                [key: string]: unknown | string;
            } | {
                bizNo: string;
                steps: Array<{
                    type: TypeEnum4;
                    status: StatusEnum4;
                    required: boolean;
                    metadata?: {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    };
                    [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    } | undefined;
                }>;
                relation: RelationEnum;
                mfa?: {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                };
                [key: string]: unknown | string | Array<{
                    type: TypeEnum4;
                    status: StatusEnum4;
                    required: boolean;
                    metadata?: {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    };
                    [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    } | undefined;
                }> | RelationEnum | {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                } | undefined;
            } | {
                bizNo?: string;
                steps?: Array<{
                    type: string;
                    status: StatusEnum4;
                    error?: string;
                    [key: string]: unknown | string | StatusEnum4 | undefined;
                }>;
                mfa?: {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                };
                [key: string]: unknown | string | Array<{
                    type: string;
                    status: StatusEnum4;
                    error?: string;
                    [key: string]: unknown | string | StatusEnum4 | undefined;
                }> | {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                } | undefined;
            } | {
                valid2FAMethods: Array<string>;
                [key: string]: unknown | Array<string>;
            } | {
                [key: string]: unknown;
            };
        } | null | undefined;
        error?: string;
        type?: TypeEnum3;
    }>;
    submitSMS(code: string): Promise<{
        success: boolean;
        error?: string;
        type?: TypeEnum3;
        result?: {
            transactionId: string;
            [key: string]: unknown | string;
        } | {
            bizNo: string;
            steps: Array<{
                type: TypeEnum4;
                status: StatusEnum4;
                required: boolean;
                metadata?: {
                    email?: string;
                    emailSent?: boolean;
                    qrCodeUrl?: string;
                    qrCodeValidSeconds?: number;
                    roamingFlowId?: string;
                    [key: string]: unknown | string | boolean | number | undefined;
                };
                [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                    email?: string;
                    emailSent?: boolean;
                    qrCodeUrl?: string;
                    qrCodeValidSeconds?: number;
                    roamingFlowId?: string;
                    [key: string]: unknown | string | boolean | number | undefined;
                } | undefined;
            }>;
            relation: RelationEnum;
            mfa?: {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            };
            [key: string]: unknown | string | Array<{
                type: TypeEnum4;
                status: StatusEnum4;
                required: boolean;
                metadata?: {
                    email?: string;
                    emailSent?: boolean;
                    qrCodeUrl?: string;
                    qrCodeValidSeconds?: number;
                    roamingFlowId?: string;
                    [key: string]: unknown | string | boolean | number | undefined;
                };
                [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                    email?: string;
                    emailSent?: boolean;
                    qrCodeUrl?: string;
                    qrCodeValidSeconds?: number;
                    roamingFlowId?: string;
                    [key: string]: unknown | string | boolean | number | undefined;
                } | undefined;
            }> | RelationEnum | {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            } | undefined;
        } | {
            bizNo?: string;
            steps?: Array<{
                type: string;
                status: StatusEnum4;
                error?: string;
                [key: string]: unknown | string | StatusEnum4 | undefined;
            }>;
            mfa?: {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            };
            [key: string]: unknown | string | Array<{
                type: string;
                status: StatusEnum4;
                error?: string;
                [key: string]: unknown | string | StatusEnum4 | undefined;
            }> | {
                bizNo?: string;
                verified: {
                    EMAIL?: boolean;
                    SMS?: boolean;
                    GOOGLE?: boolean;
                    FACE?: boolean;
                    ROAMING_FIDO?: boolean;
                };
                attempts?: Array<{
                    method: TypeEnum4;
                    status: StatusEnum4;
                    createdAt: number;
                    validatedAt?: number;
                    expiresAt?: number;
                    success: boolean;
                }>;
                methods?: Array<{
                    method: "EMAIL";
                    email: string;
                } | {
                    method: "SMS";
                    phoneNumber: string;
                } | {
                    method: "GOOGLE";
                } | {
                    method: "FACE";
                    viaMobile: boolean;
                } | {
                    method: "ROAMING_FIDO";
                }>;
            } | undefined;
        } | {
            valid2FAMethods: Array<string>;
            [key: string]: unknown | Array<string>;
        } | {
            [key: string]: unknown;
        };
    } | null | undefined>;
    retryWithdrawal(): Promise<{
        success: boolean;
        error: string;
        type?: undefined;
    } | {
        success: boolean;
        error: any;
        type: TypeEnum2;
    } | {
        success: boolean;
        result: {
            success: boolean;
            error?: string;
            type?: TypeEnum3;
            result?: {
                transactionId: string;
                [key: string]: unknown | string;
            } | {
                bizNo: string;
                steps: Array<{
                    type: TypeEnum4;
                    status: StatusEnum4;
                    required: boolean;
                    metadata?: {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    };
                    [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    } | undefined;
                }>;
                relation: RelationEnum;
                mfa?: {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                };
                [key: string]: unknown | string | Array<{
                    type: TypeEnum4;
                    status: StatusEnum4;
                    required: boolean;
                    metadata?: {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    };
                    [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    } | undefined;
                }> | RelationEnum | {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                } | undefined;
            } | {
                bizNo?: string;
                steps?: Array<{
                    type: string;
                    status: StatusEnum4;
                    error?: string;
                    [key: string]: unknown | string | StatusEnum4 | undefined;
                }>;
                mfa?: {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                };
                [key: string]: unknown | string | Array<{
                    type: string;
                    status: StatusEnum4;
                    error?: string;
                    [key: string]: unknown | string | StatusEnum4 | undefined;
                }> | {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                } | undefined;
            } | {
                valid2FAMethods: Array<string>;
                [key: string]: unknown | Array<string>;
            } | {
                [key: string]: unknown;
            };
        } | null | undefined;
        error?: string;
        type?: TypeEnum3;
    } | undefined>;
    /**
     * Submit a verification code for a specific step in multi-step 2FA flow.
     * This stores the code and re-invokes the withdrawal with all collected codes.
     *
     * @param stepType The type of step to submit code for (GOOGLE, EMAIL, or SMS)
     * @param code The verification code
     */
    submit2FAMultiStep(stepType: 'GOOGLE' | 'EMAIL' | 'SMS', code: string): Promise<{
        success: boolean;
        error: string;
        type?: undefined;
        result?: undefined;
    } | {
        success: boolean;
        error: any;
        type: TypeEnum2;
        result?: undefined;
    } | {
        success: boolean;
        result: {
            success: boolean;
            error?: string;
            type?: TypeEnum3;
            result?: {
                transactionId: string;
                [key: string]: unknown | string;
            } | {
                bizNo: string;
                steps: Array<{
                    type: TypeEnum4;
                    status: StatusEnum4;
                    required: boolean;
                    metadata?: {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    };
                    [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    } | undefined;
                }>;
                relation: RelationEnum;
                mfa?: {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                };
                [key: string]: unknown | string | Array<{
                    type: TypeEnum4;
                    status: StatusEnum4;
                    required: boolean;
                    metadata?: {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    };
                    [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    } | undefined;
                }> | RelationEnum | {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                } | undefined;
            } | {
                bizNo?: string;
                steps?: Array<{
                    type: string;
                    status: StatusEnum4;
                    error?: string;
                    [key: string]: unknown | string | StatusEnum4 | undefined;
                }>;
                mfa?: {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                };
                [key: string]: unknown | string | Array<{
                    type: string;
                    status: StatusEnum4;
                    error?: string;
                    [key: string]: unknown | string | StatusEnum4 | undefined;
                }> | {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                } | undefined;
            } | {
                valid2FAMethods: Array<string>;
                [key: string]: unknown | Array<string>;
            } | {
                [key: string]: unknown;
            };
        } | null | undefined;
        error?: undefined;
        type?: undefined;
    }>;
    /**
     * Confirm the withdrawal after all multi-step 2FA steps are verified.
     * This executes the withdrawal without dryRun flag.
     */
    confirmWithdrawal(): Promise<{
        success: boolean;
        error: string;
        type?: undefined;
        result?: undefined;
    } | {
        success: boolean;
        error: any;
        type: TypeEnum2;
        result?: undefined;
    } | {
        success: boolean;
        result: {
            success: boolean;
            error?: string;
            type?: TypeEnum3;
            result?: {
                transactionId: string;
                [key: string]: unknown | string;
            } | {
                bizNo: string;
                steps: Array<{
                    type: TypeEnum4;
                    status: StatusEnum4;
                    required: boolean;
                    metadata?: {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    };
                    [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    } | undefined;
                }>;
                relation: RelationEnum;
                mfa?: {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                };
                [key: string]: unknown | string | Array<{
                    type: TypeEnum4;
                    status: StatusEnum4;
                    required: boolean;
                    metadata?: {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    };
                    [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    } | undefined;
                }> | RelationEnum | {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                } | undefined;
            } | {
                bizNo?: string;
                steps?: Array<{
                    type: string;
                    status: StatusEnum4;
                    error?: string;
                    [key: string]: unknown | string | StatusEnum4 | undefined;
                }>;
                mfa?: {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                };
                [key: string]: unknown | string | Array<{
                    type: string;
                    status: StatusEnum4;
                    error?: string;
                    [key: string]: unknown | string | StatusEnum4 | undefined;
                }> | {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                } | undefined;
            } | {
                valid2FAMethods: Array<string>;
                [key: string]: unknown | Array<string>;
            } | {
                [key: string]: unknown;
            };
        } | null | undefined;
        error?: undefined;
        type?: undefined;
    }>;
    /**
     * Poll for FACE verification completion in multi-step 2FA flow.
     * This re-invokes the withdrawal with just the bizNo to check if FACE has been verified.
     * NOTE: Does NOT transition state to processing — keeps the MFA UI visible during polling.
     */
    pollFaceVerification(): Promise<{
        success: boolean;
        error: string;
        type?: undefined;
        result?: undefined;
    } | {
        success: boolean;
        error: any;
        type: TypeEnum2;
        result?: undefined;
    } | {
        success: boolean;
        result: {
            success: boolean;
            error?: string;
            type?: TypeEnum3;
            result?: {
                transactionId: string;
                [key: string]: unknown | string;
            } | {
                bizNo: string;
                steps: Array<{
                    type: TypeEnum4;
                    status: StatusEnum4;
                    required: boolean;
                    metadata?: {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    };
                    [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    } | undefined;
                }>;
                relation: RelationEnum;
                mfa?: {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                };
                [key: string]: unknown | string | Array<{
                    type: TypeEnum4;
                    status: StatusEnum4;
                    required: boolean;
                    metadata?: {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    };
                    [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    } | undefined;
                }> | RelationEnum | {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                } | undefined;
            } | {
                bizNo?: string;
                steps?: Array<{
                    type: string;
                    status: StatusEnum4;
                    error?: string;
                    [key: string]: unknown | string | StatusEnum4 | undefined;
                }>;
                mfa?: {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                };
                [key: string]: unknown | string | Array<{
                    type: string;
                    status: StatusEnum4;
                    error?: string;
                    [key: string]: unknown | string | StatusEnum4 | undefined;
                }> | {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                } | undefined;
            } | {
                valid2FAMethods: Array<string>;
                [key: string]: unknown | Array<string>;
            } | {
                [key: string]: unknown;
            };
        } | null | undefined;
        error?: undefined;
        type?: undefined;
    }>;
    /**
     * Poll for ROAMING_FIDO verification completion in multi-step 2FA flow.
     * This re-invokes the withdrawal with just the bizNo to check if ROAMING_FIDO has been verified.
     * NOTE: Does NOT transition state to processing — keeps the MFA UI visible during polling.
     */
    pollRoamingFidoVerification(): Promise<{
        success: boolean;
        error: string;
        type?: undefined;
        result?: undefined;
    } | {
        success: boolean;
        error: any;
        type: TypeEnum2;
        result?: undefined;
    } | {
        success: boolean;
        result: {
            success: boolean;
            error?: string;
            type?: TypeEnum3;
            result?: {
                transactionId: string;
                [key: string]: unknown | string;
            } | {
                bizNo: string;
                steps: Array<{
                    type: TypeEnum4;
                    status: StatusEnum4;
                    required: boolean;
                    metadata?: {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    };
                    [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    } | undefined;
                }>;
                relation: RelationEnum;
                mfa?: {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                };
                [key: string]: unknown | string | Array<{
                    type: TypeEnum4;
                    status: StatusEnum4;
                    required: boolean;
                    metadata?: {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    };
                    [key: string]: unknown | TypeEnum4 | StatusEnum4 | boolean | {
                        email?: string;
                        emailSent?: boolean;
                        qrCodeUrl?: string;
                        qrCodeValidSeconds?: number;
                        roamingFlowId?: string;
                        [key: string]: unknown | string | boolean | number | undefined;
                    } | undefined;
                }> | RelationEnum | {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                } | undefined;
            } | {
                bizNo?: string;
                steps?: Array<{
                    type: string;
                    status: StatusEnum4;
                    error?: string;
                    [key: string]: unknown | string | StatusEnum4 | undefined;
                }>;
                mfa?: {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                };
                [key: string]: unknown | string | Array<{
                    type: string;
                    status: StatusEnum4;
                    error?: string;
                    [key: string]: unknown | string | StatusEnum4 | undefined;
                }> | {
                    bizNo?: string;
                    verified: {
                        EMAIL?: boolean;
                        SMS?: boolean;
                        GOOGLE?: boolean;
                        FACE?: boolean;
                        ROAMING_FIDO?: boolean;
                    };
                    attempts?: Array<{
                        method: TypeEnum4;
                        status: StatusEnum4;
                        createdAt: number;
                        validatedAt?: number;
                        expiresAt?: number;
                        success: boolean;
                    }>;
                    methods?: Array<{
                        method: "EMAIL";
                        email: string;
                    } | {
                        method: "SMS";
                        phoneNumber: string;
                    } | {
                        method: "GOOGLE";
                    } | {
                        method: "FACE";
                        viaMobile: boolean;
                    } | {
                        method: "ROAMING_FIDO";
                    }>;
                } | undefined;
            } | {
                valid2FAMethods: Array<string>;
                [key: string]: unknown | Array<string>;
            } | {
                [key: string]: unknown;
            };
        } | null | undefined;
        error?: undefined;
        type?: undefined;
    }>;
    private handleWithdrawalError;
    getState(): FlowState | undefined;
    subscribe(listener: (state: FlowState) => void): Unsubscribe;
    cancel(): void;
    dispose(): void;
    testWithdrawalComplete(transactionId?: string): void;
}

/**
 * Preview functionality types for wallet balance display
 *
 * This module provides types for displaying preview information about multiple wallets
 * without requiring full OAuth flows. This enables showing users their connected wallets
 * with balance information before they interact with the withdrawal flow.
 */
/**
 * Status of a wallet preview
 */
type PreviewStatus = 'idle' | 'loading' | 'ready' | 'error_not_found' | 'error_invalid_credentials' | 'error_unknown';
/**
 * Balance information for a single asset in preview mode
 */
interface PreviewWalletBalance {
    asset: string;
    balance: string;
    balanceInFiat?: string;
    extra?: {
        slug?: string;
        assetId?: string;
    };
}
/**
 * Complete state of a wallet preview
 */
interface WalletPreviewState {
    /** Unique identifier for this wallet */
    walletId: string;
    /** Exchange this wallet is connected to */
    exchange: string;
    /** Current status of the preview */
    status: PreviewStatus;
    /** Available balances (populated when status is 'ready') */
    balances?: Array<PreviewWalletBalance>;
    /** Error details (populated when status starts with 'error_') */
    error?: Error;
    /** Timestamp of last update (milliseconds since epoch) */
    lastUpdated?: number;
}
/**
 * Input for loading a wallet preview
 */
interface PreviewWalletInput {
    /** Wallet ID to preview */
    id: string;
    /** Exchange the wallet is connected to */
    exchange: string;
}
/**
 * Callbacks for wallet preview events
 */
interface PreviewCallbacks {
    /** Called when wallet balance is successfully loaded */
    onWalletBalance?: (walletId: string, balances: Array<PreviewWalletBalance>) => void;
    /** Called when wallet is not found (404) */
    onWalletNotFound?: (walletId: string) => void;
    /** Called when wallet has invalid API credentials */
    onWalletInvalidApiCredentials?: (walletId: string) => void;
}

/**
 * Options for creating a BluvoPreviewManager
 */
type BluvoPreviewManagerOptions = Pick<BluvoFlowClientOptions, "fetchWithdrawableBalanceFn" | "pingWalletByIdFn">;
/**
 * Manager for wallet preview states
 *
 * This class manages the preview states of multiple wallets independently,
 * allowing you to display balance information for multiple wallets without
 * requiring full OAuth flows for each one.
 *
 * @example
 * ```typescript
 * const previewManager = new BluvoPreviewManager({
 *   pingWalletByIdFn: pingWallet,
 *   fetchWithdrawableBalanceFn: getBalances
 * });
 *
 * // Load previews for multiple wallets
 * await previewManager.loadPreviewWallets([
 *   { id: 'wallet-1', exchange: 'coinbase' },
 *   { id: 'wallet-2', exchange: 'kraken' }
 * ]);
 *
 * // Subscribe to state changes
 * const unsubscribe = previewManager.subscribe((states) => {
 *   console.log('Preview states updated:', states);
 * });
 * ```
 */
declare class BluvoPreviewManager {
    private options;
    private states;
    private listeners;
    constructor(options: BluvoPreviewManagerOptions);
    /**
     * Load preview data for multiple wallets
     */
    loadPreviewWallets(wallets: Array<PreviewWalletInput>, callbacks?: PreviewCallbacks): Promise<void>;
    /**
     * Load preview data for a single wallet
     *
     * This method:
     * 1. Calls pingWalletByIdFn to validate wallet exists and has valid credentials
     * 2. If valid, fetches withdrawable balance
     * 3. Updates state and notifies listeners
     */
    loadPreviewWallet(walletId: string, exchange: string, callbacks?: PreviewCallbacks): Promise<void>;
    /**
     * Get preview state for a specific wallet
     */
    getPreviewState(walletId: string): WalletPreviewState | undefined;
    /**
     * Get all preview states
     */
    getAllPreviewStates(): Record<string, WalletPreviewState>;
    /**
     * Subscribe to preview state changes
     *
     * @param listener Function called when any preview state changes
     * @returns Unsubscribe function
     */
    subscribe(listener: (states: Record<string, WalletPreviewState>) => void): () => void;
    /**
     * Clear preview for a specific wallet
     */
    clearPreview(walletId: string): void;
    /**
     * Clear all previews
     */
    clearAllPreviews(): void;
    /**
     * Cleanup resources
     */
    dispose(): void;
    /**
     * Update state for a specific wallet and notify listeners
     */
    private updateState;
    /**
     * Notify all listeners of state changes
     */
    private notifyListeners;
}

/**
 * Centralized error codes for the entire system
 * This file contains all error codes used in both sync (API) and async (workflow) contexts
 * Copy this file to the SDK to maintain consistency
 */
/**
 * Error codes for all system errors
 * Format: CATEGORY_SPECIFIC_ERROR
 */
declare const ERROR_CODES: {
    readonly GENERIC_NOT_FOUND: "GENERIC_NOT_FOUND";
    readonly GENERIC_UNAUTHORIZED: "GENERIC_UNAUTHORIZED";
    readonly GENERIC_INTERNAL_SERVER_ERROR: "GENERIC_INTERNAL_SERVER_ERROR";
    readonly GENERIC_VALIDATION_ERROR: "GENERIC_VALIDATION_ERROR";
    readonly GENERIC_INVALID_REQUEST: "GENERIC_INVALID_REQUEST";
    readonly APIKEY_INSUFFICIENT_PERMISSIONS: "APIKEY_INSUFFICIENT_PERMISSIONS";
    readonly WALLET_NOT_FOUND: "WALLET_NOT_FOUND";
    readonly WALLET_INVALID_CREDENTIALS: "WALLET_INVALID_CREDENTIALS";
    readonly QUOTE_NOT_FOUND: "QUOTE_NOT_FOUND";
    readonly QUOTE_EXPIRED: "QUOTE_EXPIRED";
    readonly WITHDRAWAL_INSUFFICIENT_BALANCE: "WITHDRAWAL_INSUFFICIENT_BALANCE";
    readonly WITHDRAWAL_INSUFFICIENT_BALANCE_FOR_FEE: "WITHDRAWAL_INSUFFICIENT_BALANCE_FOR_FEE";
    readonly WITHDRAWAL_INVALID_ADDRESS: "WITHDRAWAL_INVALID_ADDRESS";
    readonly WITHDRAWAL_NETWORK_NOT_SUPPORTED: "WITHDRAWAL_NETWORK_NOT_SUPPORTED";
    readonly WITHDRAWAL_TOO_MANY_ADDRESSES: "WITHDRAWAL_TOO_MANY_ADDRESSES";
    readonly WITHDRAWAL_AMOUNT_BELOW_MINIMUM: "WITHDRAWAL_AMOUNT_BELOW_MINIMUM";
    readonly WITHDRAWAL_AMOUNT_ABOVE_MAXIMUM: "WITHDRAWAL_AMOUNT_ABOVE_MAXIMUM";
    readonly WITHDRAWAL_ASSET_NOT_SUPPORTED: "WITHDRAWAL_ASSET_NOT_SUPPORTED";
    readonly WITHDRAWAL_PROVIDER_ERROR: "WITHDRAWAL_PROVIDER_ERROR";
    readonly WITHDRAWAL_2FA_REQUIRED_TOTP: "WITHDRAWAL_2FA_REQUIRED_TOTP";
    readonly WITHDRAWAL_2FA_REQUIRED_SMS: "WITHDRAWAL_2FA_REQUIRED_SMS";
    readonly WITHDRAWAL_2FA_REQUIRED_FACE_RECOGNITION: "WITHDRAWAL_2FA_REQUIRED_FACE_RECOGNITION";
    readonly WITHDRAWAL_2FA_REQUIRED_EMAIL: "WITHDRAWAL_2FA_REQUIRED_EMAIL";
    readonly WITHDRAWAL_2FA_REQUIRED_YUBIKEY: "WITHDRAWAL_2FA_REQUIRED_YUBIKEY";
    readonly WITHDRAWAL_2FA_REQUIRED_PASSPHRASE: "WITHDRAWAL_2FA_REQUIRED_PASSPHRASE";
    readonly WITHDRAWAL_2FA_REQUIRED_MULTI_STEPS: "WITHDRAWAL_2FA_REQUIRED_MULTI_STEPS";
    readonly WITHDRAWAL_2FA_INCOMPLETE: "WITHDRAWAL_2FA_INCOMPLETE";
    readonly WITHDRAWAL_2FA_INVALID: "WITHDRAWAL_2FA_INVALID";
    readonly WITHDRAWAL_2FA_METHOD_NOT_SUPPORTED: "WITHDRAWAL_2FA_METHOD_NOT_SUPPORTED";
    readonly WITHDRAWAL_KYC_REQUIRED: "WITHDRAWAL_KYC_REQUIRED";
    readonly WITHDRAWAL_EMAIL_UNVERIFIED: "WITHDRAWAL_EMAIL_UNVERIFIED";
    readonly WITHDRAWAL_RATE_LIMIT_EXCEEDED: "WITHDRAWAL_RATE_LIMIT_EXCEEDED";
    readonly OAUTH_AUTHORIZATION_FAILED: "OAUTH_AUTHORIZATION_FAILED";
    readonly OAUTH_TOKEN_EXCHANGE_FAILED: "OAUTH_TOKEN_EXCHANGE_FAILED";
    readonly OAUTH_INVALID_STATE: "OAUTH_INVALID_STATE";
    readonly OAUTH_INSUFFICIENT_SCOPE: "OAUTH_INSUFFICIENT_SCOPE";
    readonly WEBHOOK_SIGNATURE_INVALID: "WEBHOOK_SIGNATURE_INVALID";
    readonly WEBHOOK_MISSING_HEADERS: "WEBHOOK_MISSING_HEADERS";
    readonly WEBHOOK_INVALID_TIMESTAMP: "WEBHOOK_INVALID_TIMESTAMP";
    readonly CACHE_MISS: "CACHE_MISS";
    readonly CACHE_EXPIRED: "CACHE_EXPIRED";
    readonly CACHE_INVALID_PATH: "CACHE_INVALID_PATH";
    readonly WITHDRAWAL_DRY_RUN_COMPLETE: "WITHDRAWAL_DRY_RUN_COMPLETE";
};
type ErrorCode = typeof ERROR_CODES[keyof typeof ERROR_CODES];
/**
 * Serializable error format that can be passed through workflows
 * This preserves all error information without losing type safety
 */
interface SerializedError {
    code: ErrorCode;
    message: string;
    timestamp: string;
    originalError?: unknown;
}
/**
 * API error response format
 */
interface ApiErrorResponse {
    error?: string | {
        error?: string;
        type?: ErrorCode;
        errorCode?: ErrorCode;
    };
    type?: ErrorCode;
    errorCode?: ErrorCode;
    code?: ErrorCode;
    result?: unknown;
    message?: string;
}
/**
 * Legacy Axios error format
 */
interface LegacyAxiosError {
    response?: {
        data?: {
            type?: ErrorCode;
            result?: unknown;
        };
    };
}
/**
 * Union type representing all possible error formats
 */
type BluvoError = SerializedError | ApiErrorResponse | LegacyAxiosError | Error | unknown;
/**
 * Extract error code from various error formats
 */
declare function extractErrorCode(error: BluvoError): ErrorCode | null;
/**
 * Comprehensive error type information
 * Includes both validated error codes and raw type strings
 */
interface ErrorTypeInfo {
    /** Known error code from ERROR_CODES, null if not recognized */
    knownCode: ErrorCode | null;
    /** Raw type string from error object (even if unknown), null if not found */
    rawType: string | null;
}
/**
 * Extract comprehensive error type information from an error object
 *
 * This function provides maximum flexibility by returning both:
 * - `knownCode`: Only set if the error code is in ERROR_CODES (validated)
 * - `rawType`: Any type/errorCode/code string found, even if unknown
 *
 * This allows callers to handle known errors specifically while still
 * preserving unknown error codes for logging/debugging.
 *
 * @param error The error object to extract type information from
 * @returns Object with knownCode and rawType properties
 *
 * @example
 * const info = extractErrorTypeInfo(error);
 * if (info.knownCode === ERROR_CODES.WITHDRAWAL_INSUFFICIENT_BALANCE) {
 *   // Handle known error
 * } else if (info.rawType) {
 *   // Log unknown error code
 *   console.log('Unknown error:', info.rawType);
 * }
 */
declare function extractErrorTypeInfo(error: BluvoError): ErrorTypeInfo;
/**
 * Extract error result from various error formats
 */
declare function extractErrorResult(error: BluvoError): unknown;

/**
 * Create a fully configured Bluvo SDK client instance with a single function call.
 *
 * This is the recommended entry point for integrating the Bluvo SDK into your application.
 * It creates and initializes a client with your organization credentials, handling all the
 * necessary setup and authentication configuration automatically.
 *
 * The client provides access to all Bluvo API functionality through an intuitive, hierarchical
 * interface organized by domain (prices, wallets, transactions, etc.), making it easy to discover
 * and use the capabilities you need.
 *
 * @param credentials An object containing your Bluvo API credentials:
 *   @param orgId Your unique organization identifier provided during Bluvo onboarding.
 *                This identifies your organization across all projects and API calls.
 *   @param projectId The specific project identifier within your organization.
 *                    Different projects can be used for different applications or environments.
 *   @param apiKey Your secret API key that authorizes requests to the Bluvo API.
 *                 Handle this credential securely and never expose it in client-side code.
 *   @param customDomain Optional custom domain configuration to override default api-bluvo.com.
 *
 * @returns A fully initialized BluvoClient instance ready to make API calls.
 *
 * @example
 * // Create a new client instance
 * const bluvo = createClient({
 *   orgId: 'your-org-id',
 *   projectId: 'your-project-id',
 *   apiKey: 'your-api-key'
 * });
 *
 * // The client is ready to use
 * const btcPrice = await bluvo.prices.candlesticks('BTC', 'USDT');
 */
declare function createClient({ orgId, projectId, apiKey, customDomain, }: {
    orgId: string;
    projectId: string;
    apiKey: string;
    customDomain?: string | "api-bluvo.com" | {
        api: string;
        ws: string;
    };
}): BluvoClient;
declare function createSandboxClient({ orgId, projectId, apiKey, customDomain, }: {
    orgId: string;
    projectId: string;
    apiKey: string;
    customDomain?: string | "api-bluvo.com" | {
        api: string;
        ws: string;
    };
}): BluvoClient;
declare function createDevClient({ orgId, projectId, apiKey, customDomain, }: {
    orgId: string;
    projectId: string;
    apiKey: string;
    customDomain?: string | "api-bluvo.com" | {
        api: string;
        ws: string;
    };
}): BluvoClient;
/**
 * Create a BluvoWebClient instance for browser-based applications.
 *
 * This client is designed for use in web environments where you want to interact with
 * the Bluvo API without exposing sensitive API keys directly in client-side code.
 * It provides methods for OAuth2 authentication flows and other browser-specific features.
 *
 * @param orgId Your Bluvo organization identifier.
 * @param projectId Your Bluvo project identifier.
 * @param customDomain Optional custom domain configuration to override default api-bluvo.com.
 *
 * @returns A new BluvoWebClient instance configured for your organization and project.
 */
declare function createWebClient({ orgId, projectId, customDomain, }: {
    orgId: string;
    projectId: string;
    customDomain?: string | "api-bluvo.com" | {
        api: string;
        ws: string;
    };
}): BluvoWebClient;
/**
 * Create a BluvoWebClient instance for the sandbox environment.
 *
 * This client is configured to use the Bluvo sandbox/test environment,
 * which is useful for development and testing without affecting production data.
 *
 * @param orgId Your Bluvo organization identifier.
 * @param projectId Your Bluvo project identifier.
 * @param customDomain Optional custom domain configuration to override default api-bluvo.com.
 *
 * @returns A new BluvoWebClient instance configured for the sandbox environment.
 */
declare function createSandboxWebClient({ orgId, projectId, customDomain, }: {
    orgId: string;
    projectId: string;
    customDomain?: string | "api-bluvo.com" | {
        api: string;
        ws: string;
    };
}): BluvoWebClient;
/**
 * Create a BluvoWebClient instance for local development.
 *
 * This client is configured to use localhost:8787 as the API endpoint,
 * which is useful for local development and testing with a local Bluvo backend.
 *
 * @param orgId Your Bluvo organization identifier.
 * @param projectId Your Bluvo project identifier.
 * @param customDomain Optional custom domain configuration to override default api-bluvo.com.
 *
 * @returns A new BluvoWebClient instance configured for local development.
 */
declare function createDevWebClient({ orgId, projectId, customDomain, }: {
    orgId: string;
    projectId: string;
    customDomain?: string | "api-bluvo.com" | {
        api: string;
        ws: string;
    };
}): BluvoWebClient;

export { BluvoCache, type BluvoCacheAdapter, type BluvoCacheOptions, BluvoClient, type BluvoError, BluvoFlowClient, type BluvoFlowClientOptions, BluvoPreviewManager, type BluvoPreviewManagerOptions, BluvoWebClient, CategoryEnum, type ClientOptions$1 as ClientOptions, DirectionEnum, ERROR_CODES, type ErrorCode, type ErrorTypeInfo, ExchangeEnum, FiatCurrencyEnum, type FlowActionType, type FlowContext, type FlowState, type FlowStateType, type Listener, type Machine, type Oauth2ExchangeslistexchangesData, type Oauth2ExchangeslistexchangesResponse, type Oauth2ExchangeslistexchangesResponses, type Oauth2ExchangeurlgeturlData, type Oauth2ExchangeurlgeturlResponse, type Oauth2ExchangeurlgeturlResponses, type Options, type OrganizationapikeyapikeyinfoData, type OrganizationapikeyapikeyinfoError, type OrganizationapikeyapikeyinfoErrors, type OrganizationapikeyapikeyinfoResponse, type OrganizationapikeyapikeyinfoResponses, type PreviewCallbacks, type PreviewStatus, type PreviewWalletBalance, type PreviewWalletInput, type QRCodeAuthWorkflowMessageBody, type QRCodeOptions, type QRCodeStatus, type QuoteRequestOptions, RelationEnum, type ResumeWithdrawalFlowOptions, SchemaEnum, SchemaEnum2, SchemaEnum3, type SilentResumeWithdrawalFlowOptions, type StateTransition, type StateValue, StatusEnum, StatusEnum2, StatusEnum3, StatusEnum4, type Subscription, type TopicInfo, TypeEnum, TypeEnum2, TypeEnum3, TypeEnum4, type Unsubscribe, type WalletPreviewState, type WalletdeleteData, type WalletdeleteError, type WalletdeleteErrors, type WalletdeleteResponse, type WalletdeleteResponses, type WalletgetData, type WalletgetError, type WalletgetErrors, type WalletgetResponse, type WalletgetResponses, type WalletkycgetkycidentityData, type WalletkycgetkycidentityError, type WalletkycgetkycidentityErrors, type WalletkycgetkycidentityResponse, type WalletkycgetkycidentityResponses, type WalletlistlistwalletsData, type WalletlistlistwalletsError, type WalletlistlistwalletsErrors, type WalletlistlistwalletsResponse, type WalletlistlistwalletsResponses, type WalletpingpingData, type WalletpingpingError, type WalletpingpingErrors, type WalletpingpingResponse, type WalletpingpingResponses, type WallettransactionslisttransactionsData, type WallettransactionslisttransactionsError, type WallettransactionslisttransactionsErrors, type WallettransactionslisttransactionsResponse, type WallettransactionslisttransactionsResponses, type WallettransactiontransactionidgettransactionData, type WallettransactiontransactionidgettransactionError, type WallettransactiontransactionidgettransactionErrors, type WallettransactiontransactionidgettransactionResponse, type WallettransactiontransactionidgettransactionResponses, type WalletwithdrawbalancebalanceData, type WalletwithdrawbalancebalanceError, type WalletwithdrawbalancebalanceErrors, type WalletwithdrawbalancebalanceResponse, type WalletwithdrawbalancebalanceResponses, type WalletwithdrawquoteidexecutewithdrawData, type WalletwithdrawquoteidexecutewithdrawError, type WalletwithdrawquoteidexecutewithdrawErrors, type WalletwithdrawquoteidexecutewithdrawResponse, type WalletwithdrawquoteidexecutewithdrawResponses, type WalletwithdrawquotequotationData, type WalletwithdrawquotequotationError, type WalletwithdrawquotequotationErrors, type WalletwithdrawquotequotationResponse, type WalletwithdrawquotequotationResponses, WebSocketClient, type WithdrawalActionType, type WithdrawalContext, type WithdrawalFlowOptions, type WithdrawalState, type WithdrawalStateType, type WorkflowMessageBody, WorkflowTypes, createClient, createDevClient, createDevWebClient, createFlowMachine, createMachine, createSandboxClient, createSandboxWebClient, createWebClient, createWithdrawalMachine, extractErrorCode, extractErrorResult, extractErrorTypeInfo, oauth2Exchangeslistexchanges, oauth2Exchangeurlgeturl, organizationapikeyapikeyinfo, walletdelete, walletget, walletkycgetkycidentity, walletlistlistwallets, walletpingping, wallettransactionslisttransactions, wallettransactiontransactionidgettransaction, walletwithdrawbalancebalance, walletwithdrawquoteidexecutewithdraw, walletwithdrawquotequotation };
