import { type Address } from 'everscale-inpage-provider';
import type Web3 from 'web3';
import { type MatchPrimitiveType } from 'web3-types';
export interface EvmMultiVaultDepositAbiParams {
    amount: string;
    expectedEvers: string;
    payload: Uint8Array | string;
    recipient: {
        addr: string;
        wid: string;
    };
    token: string;
}
export interface EvmMultiVaultTokenMeta {
    activation: string;
    blacklisted: boolean;
    custom: string;
    depositFee: string;
    isNative: boolean;
    withdrawFee: string;
}
export interface EvmMultiVaultFees {
    depositFee: string;
    withdrawFee: string;
}
export interface EvmMultiVaultWithdrawalLimits {
    daily: string;
    enabled: boolean;
    undeclared: string;
}
export declare abstract class EvmMultiVaultUtils {
    static deposit(connection: Web3, vaultAddress: string, params: EvmMultiVaultDepositAbiParams): Promise<any>;
    static forceWithdraw(connection: Web3, vaultAddress: string, pendingWithdrawalIds: {
        id: MatchPrimitiveType<'uint256', unknown>;
        recipient: string;
    }[]): Promise<any>;
    static bridge(connection: Web3, vaultAddress: string): Promise<string>;
    /**
     * Get EVM token meta in MultiVault by the given vault and EVM-like token addresses
     * @param {Web3} connection
     * @param {string} vaultAddress - vault address (eg. 0x00...0000)
     * @param {string} tokenAddress - token address (eg. 0x00...0000)
     */
    static tokens(connection: Web3, vaultAddress: string, tokenAddress: string): Promise<EvmMultiVaultTokenMeta>;
    /**
     * Get EVM native token address in MultiVault by the given vault address and TVM-like token addresses
     * @param {Web3} connection
     * @param {string} vaultAddress - vault address (eg. 0x00...0000)
     * @param {Address | string} tokenAddress - token address (eg. 0:00...0000)
     */
    static getNativeToken(connection: Web3, vaultAddress: string, tokenAddress: Address | string): Promise<string>;
    /**
     * Get TVM native token address in MultiVault by the given vault address and EVM-like token address
     * @param {Web3} connection
     * @param {string} vaultAddress - vault address (eg. 0x00...0000)
     * @param {string} tokenAddress - token address (eg. 0x00...0000)
     */
    static natives(connection: Web3, vaultAddress: string, tokenAddress: string): Promise<string | undefined>;
    static getAlienFees(connection: Web3, vaultAddress: string): Promise<EvmMultiVaultFees>;
    static getNativeFees(connection: Web3, vaultAddress: string): Promise<EvmMultiVaultFees>;
    static withdrawalLimits(connection: Web3, vaultAddress: string, tokenAddress: string): Promise<EvmMultiVaultWithdrawalLimits>;
    static withdrawalIds(connection: Web3, vaultAddress: string, withdrawalId: string): Promise<boolean>;
    static pendingWithdrawals(connection: Web3, vaultAddress: string, recipient: string, id: string): Promise<any>;
    static pendingWithdrawalsPerUser(connection: Web3, vaultAddress: string, recipient: string): Promise<number>;
}
