import { FeeLevel } from "fireblocks-sdk";
export declare enum ChainId {
    MAINNET = 1,
    ROPSTEN = 3,
    KOVAN = 42,
    GOERLI = 5,
    RINKEBY = 4,
    SEPOLIA = 11155111,
    HOLESKY = 17000,
    HOODI = 560048,
    BSC = 56,
    BSC_TEST = 97,
    POLYGON = 137,
    POLYGON_TEST = 80001,
    POLYGON_AMOY = 80002,
    AVALANCHE = 43114,
    AVALANCHE_TEST = 43113,
    MOONRIVER = 1285,
    MOONBEAM = 1284,
    SONGBIRD = 19,
    ARBITRUM = 42161,
    ARBITRUM_SEPOLIA = 421614,
    ARBITRUM_RIN = 421611,
    FANTOM = 250,
    RSK = 30,
    RSK_TEST = 31,
    CELO = 42220,
    CELO_BAK = 62320,
    CELO_ALF = 44787,
    OPTIMISM = 10,
    OPTIMISM_SEPOLIA = 11155420,
    OPTIMISM_KOVAN = 69,
    RONIN = 2020,
    CANTO = 7700,
    CANTO_TEST = 7701,
    POLYGON_ZKEVM_TEST = 1442,
    POLYGON_ZKEVM = 1101,
    KAVA = 2222,
    SMARTBCH = 10000,
    SMARTBCH_TEST = 10001,
    HECO = 128,
    AURORA = 1313161554,
    RISEOFTHEWARBOTSTESTNET = 7777,
    EVMOS = 9001,
    ASTAR = 592,
    VELAS = 106,
    ARB_GOERLI = 421613,
    XDC = 50,
    BASE = 8453,
    BASE_SEPOLIA = 84532,
    IVAR = 88888,
    JOC = 81,
    OASYS = 248,
    SHIMMEREVM = 148,
    LINEA = 59144,
    LINEA_TEST = 59140,
    LINEA_SEPOLIA_TEST = 59141,
    FLARE = 14,
    MANTLE = 5000,
    MANTLE_TEST = 5001,
    BLAST = 81457,
    SONEIUM = 1868,
    SONEIUM_MINATO = 1946,
    LACHAIN = 274,
    HYPER_EVM = 999,
    HYPER_EVM_TEST = 998,
    ABSTRACT = 2741,
    UNICHAIN = 130,
    BERACHAIN = 80094,
    SONIC = 146,
    GNOSIS = 100,
    WORLDCHAIN = 480,
    BOB = 60808,
    BOB_SEPOLIA = 808813,
    PLUME = 98866,
    SOPHON = 50104,
    ARC_TEST = 5042002
}
export declare enum ApiBaseUrl {
    Production = "https://api.fireblocks.io",
    Sandbox = "https://sandbox-api.fireblocks.io",
    EU = "https://eu-api.fireblocks.io/v1",
    EU2 = "https://eu2-api.fireblocks.io/v1"
}
export declare type Asset = {
    assetId: string;
    rpcUrl: string;
};
export declare enum RawMessageType {
    EIP712 = "EIP712",
    ETH_MESSAGE = "ETH_MESSAGE"
}
export declare type FireblocksProviderConfig = {
    /**
     * Learn more about creating API users here:
     * https://developers.fireblocks.com/docs/quickstart#api-user-creation
     */
    /**
     * Fireblocks API key
     */
    apiKey: string;
    /**
     * Fireblocks API private key for signing requests
     */
    privateKey: string;
    /**
     * If not provided, it is inferred from the rpcUrl
     */
    chainId?: ChainId;
    /**
     * If not provided, it is inferred from the chainId
     */
    rpcUrl?: string;
    /**
     * By default, the first 20 vault accounts are dynamically loaded from the Fireblocks API
     * It is recommended to provide the vault account ids explicitly because it helps avoid unnecessary API calls
     */
    vaultAccountIds?: number | number[] | string | string[];
    /**
     * By default, it uses the Fireblocks API production endpoint
     * When using a sandbox workspace, you should provide the ApiBaseUrl.Sandbox value
     */
    apiBaseUrl?: ApiBaseUrl | string;
    /**
     * By default, the fallback fee level is set to FeeLevel.MEDIUM
     */
    fallbackFeeLevel?: FeeLevel;
    /**
     * By default, the note is set to "Created by Fireblocks Web3 Provider"
     */
    note?: string;
    /**
     * By default, the polling interval is set to 1000ms (1 second)
     * It is the interval in which the Fireblocks API is queried to check the status of transactions
     */
    pollingInterval?: number;
    /**
     * By default, it is assumed that one time addresses are enabled in your workspace
     * If they're not, set this to false
     */
    oneTimeAddressesEnabled?: boolean;
    /**
     * By default, no externalTxId is associated with transactions
     * If you want to set one, you can either provide a function that returns a string, or provide a string directly
     */
    externalTxId?: (() => string) | string;
    /**
     * If you want to prepend an additional product string to the User-Agent header, you can provide it here
     */
    userAgent?: string;
    /**
     * If you are using a private/custom EVM chain, you can provide its Fireblocks assetId here
     */
    assetId?: string;
    /**
     * Default: false
     * By setting to true, every transaction status change will be logged to the console
     * Same as setting env var `DEBUG=fireblocks-web3-provider:status`
     */
    logTransactionStatusChanges?: boolean;
    /**
     * Default: false
     * By setting to true, every request and response processed by the provider will be logged to the console
     * Same as setting env var `DEBUG=fireblocks-web3-provider:req_res`
     */
    logRequestsAndResponses?: boolean;
    /**
     * Default: true
     * By setting to true, every failed transaction will print additional information
     * helpful for debugging, such as a link to simulate the transaction on Tenderly
     * Same as setting env var `DEBUG=fireblocks-web3-provider:error`
     */
    enhancedErrorHandling?: boolean;
    /**
     * Warning: This is an undocumented experimental flag that is subject to breaking changes
     * Warning: Use at your own risk
     * By default, no contracts are interacted with gaslessly
     * By setting a gaslessGasTankVaultId, all transactions will be sent gaslessly,
     * relayed via the provided vault account
     */
    gaslessGasTankVaultId?: number;
    /**
     * Proxy path in the format of `http(s)://user:pass@server`.
     * Note that all connections performed via the proxy will be done using CONNECT HTTP method.
     */
    proxyPath?: string;
};
export interface RequestArguments<T = any> {
    method: string;
    params?: T;
}
export interface ProviderRpcError extends Error {
    code: number;
    data?: unknown;
    payload: RequestArguments;
}
export interface FormatterMetadata {
    assetId?: string;
}
export interface AddressFormatter {
    predicate: (address: string, metadata: FormatterMetadata) => boolean;
    format: (address: string) => string;
}
//# sourceMappingURL=types.d.ts.map