import { Contract } from "@ethersproject/contracts";
import { ethers } from "ethers";
import { config } from "./config";
export declare type Config = {
    hyphenBaseUrl: object;
    initiateExitPath: string;
    getSupportedTokensPath: string;
    checkRequestStatusPath: string;
    checkTransferStatusPath: string;
    getPoolInfoPath: string;
    liquidityPoolManagerABI: object[];
    erc20TokenABI: object[];
    defaultSupportedTokens: Map<number, SupportedToken[]>;
    supportedNetworkIds: number[];
    defaultExitCheckInterval: number;
    maxDepositCheckCallbackCount: number;
    erc20ABIByNetworkId: Map<number, object>;
};
export declare type CheckStatusRequest = {
    tokenAddress: string;
    amount: string;
    fromChainId: number;
    toChainId: number;
    userAddress: string;
};
export declare type CheckStatusResponse = {
    code: number;
    message: string;
};
export declare type SupportedToken = {
    tokenSymbol: string;
    decimal: number;
    address: string;
};
export declare type Options = {
    defaultAccount?: string;
    debug?: boolean;
    environment?: keyof typeof config.hyphenBaseUrl;
    signatureType?: string;
    infiniteApproval?: boolean;
    exitCheckInterval?: number;
    onFundsTransfered?: (data: ExitResponse) => void;
    biconomy?: BiconomyOption;
    walletProvider?: object;
};
export declare type InternalBiconomyOption = {
    apiKey: string;
    debug: boolean;
    walletProvider?: object;
};
export declare type BiconomyOption = {
    enable: boolean;
    apiKey: string;
    debug: boolean;
};
export declare type FetchOption = {
    body?: string;
    method: string;
    headers: any;
};
export declare type ExitRequest = {
    sender: string;
    receiver: string;
    tokenAddress: string;
    amount: string;
    fromChainId?: number;
    toChainId?: number;
};
export declare type CheckDepositStatusRequest = {
    depositHash: string;
    fromChainId: number;
};
export declare type ExitResponse = {
    code: number;
    message: string;
    statusCode: number;
    fromChainId: number;
    toChainId: number;
    amount: string;
    tokenAddress: string;
    depositHash: string;
    exitHash: string;
};
export declare type DepositRequest = {
    sender: string;
    receiver: string;
    tokenAddress: string;
    depositContractAddress: string;
    amount: string;
    fromChainId: number;
    toChainId: number;
    useBiconomy: boolean;
};
export declare type ERC20ApproveRequest = {
    contract: Contract;
    abi: ethers.ContractInterface;
    domainType: object;
    metaTransactionType: object;
    userAddress: string;
    spender: string;
    amount: string;
    name: string;
    version: string;
    address: string;
    salt: string;
};
export declare type ManualExitResponse = {
    code: number;
    message: string;
    exitHash: string;
};
export declare type TransactionResponse = {
    hash: string;
    wait: (confirmations?: number) => ethers.providers.TransactionReceipt;
};
export declare type Transaction = {
    from: string;
    data?: string;
    to: string;
    signatureType?: string;
    value: string;
};
export declare type PoolInformationResponse = {
    code: number;
    message: string;
    minDepositAmount: string;
    maxDepositAmount: string;
    availableLiquidity: string;
    fromLPManagerAddress: string;
    toLPManagerAddress: string;
};
