import { ethers } from "ethers";
import { config, RESPONSE_CODES, EXIT_STATUS, SIGNATURE_TYPES } from "./config";
import { CheckDepositStatusRequest, CheckStatusRequest, CheckStatusResponse, DepositRequest, ManualExitResponse, Options, PoolInformationResponse, SupportedToken, Transaction, TransactionResponse } from "./types";
declare class Hyphen {
    provider: ethers.providers.Provider;
    walletProvider: any;
    biconomyProvider: any;
    biconomy: any;
    options: Options;
    supportedTokens: Map<number, void | SupportedToken[]>;
    depositTransactionListenerMap: Map<string, any>;
    constructor(provider: any, options: Options);
    init: () => Promise<void>;
    _init: () => Promise<void>;
    _validate: (options: Options) => void;
    _getProvider: (useBiconomy: boolean) => any;
    _getProviderWithAccounts: (useBiconomy: boolean) => any;
    getERC20TokenDecimals: (address: string) => any;
    getFetchOptions: (method: string) => {
        method: string;
        headers: {
            "Content-Type": string;
        };
    };
    getSupportedTokens: (networkId: number) => SupportedToken[] | void;
    preDepositStatus: (checkStatusRequest: CheckStatusRequest) => Promise<CheckStatusResponse>;
    _getSupportedTokensFromServer: (networkId: number) => Promise<SupportedToken[] | void>;
    getERC20Allowance: (tokenAddress: string, userAddress: string, spender: string) => Promise<unknown>;
    deposit: (request: DepositRequest) => Promise<TransactionResponse | undefined>;
    listenForExitTransaction: (transaction: TransactionResponse, fromChainId: number) => Promise<void>;
    checkDepositStatus: (depositRequest: CheckDepositStatusRequest) => Promise<{
        code: number;
        message: string;
        statusCode: number;
        fromChainId: number;
        toChainId: number;
        amount: string;
        tokenAddress: string;
        depositHash: string;
        exitHash: string;
    }>;
    getPoolInformation(tokenAddress: string, fromChainId: number, toChainId: number): Promise<PoolInformationResponse>;
    approveERC20: (tokenAddress: string, spender: string, amount: string, userAddress: string, infiniteApproval: boolean, useBiconomy: boolean) => Promise<TransactionResponse | undefined>;
    triggerManualTransfer: (depositHash: string, chainId: string) => Promise<ManualExitResponse | undefined>;
    _getERC20ABI: (networkId: number, tokenAddress: string) => ethers.ContractInterface | undefined;
    _depositTokensToLiquidityPoolManager: (request: DepositRequest) => Promise<TransactionResponse | undefined>;
    _sendTransaction: (_provider: any, rawTransaction: Transaction) => Promise<TransactionResponse>;
    _getHyphenBaseURL: () => string;
    formatMessage: (code: number, message: string) => {
        code: number;
        message: string;
    };
    _logMessage: (message: object | string) => void;
}
export { Hyphen, config, RESPONSE_CODES, EXIT_STATUS, SIGNATURE_TYPES };
