import { FullChannelState, IVectorChainService, MinimalTransaction, ChainError, Result, IChainServiceStore, TransactionReason, FullTransferState, ChainServiceEvent, ChainServiceEventMap } from "@connext/vector-types";
import { Signer } from "@ethersproject/abstract-signer";
import { BigNumber } from "@ethersproject/bignumber";
import { JsonRpcProvider, TransactionReceipt, TransactionResponse } from "@ethersproject/providers";
import { BaseLogger } from "pino";
import { EthereumChainReader } from "./ethReader";
export declare const CONFIRMATION_TIMEOUT = 45000;
export declare const GAS_BUMP_PERCENT = 20;
export declare const BIG_GAS_LIMIT: BigNumber;
export declare const BIG_GAS_PRICE: BigNumber;
export declare const waitForTransaction: (provider: JsonRpcProvider, transactionHash: string, confirmations?: number | undefined, timeout?: number | undefined) => Promise<Result<TransactionReceipt, ChainError>>;
export declare class EthereumChainService extends EthereumChainReader implements IVectorChainService {
    private readonly store;
    private readonly defaultRetries;
    private signers;
    private queue;
    private evts;
    constructor(store: IChainServiceStore, chainProviders: {
        [chainId: string]: JsonRpcProvider;
    }, signer: string | Signer, log: BaseLogger, defaultRetries?: number);
    private getSigner;
    private handleTxSubmit;
    private handleTxMined;
    private handleTxFail;
    private sendTx;
    revitalizeTxs(): Promise<void>;
    getTxResponseFromHash(chainId: number, txHash: string): Promise<Result<{
        response?: TransactionResponse;
        receipt?: TransactionReceipt;
    }, ChainError>>;
    sendTxWithRetries(channelAddress: string, chainId: number, reason: TransactionReason, txFn: (gasPrice: BigNumber, nonce: number) => Promise<undefined | TransactionResponse>): Promise<Result<TransactionReceipt | undefined, ChainError>>;
    sendAndConfirmTx(channelAddress: string, chainId: number, reason: TransactionReason, txFn: (gasPrice: BigNumber, nonce: number) => Promise<TransactionResponse | undefined>, presetGasPrice?: BigNumber): Promise<Result<TransactionReceipt | undefined, ChainError>>;
    waitForConfirmation(chainId: number, responses: TransactionResponse[]): Promise<TransactionReceipt>;
    sendDeployChannelTx(channelState: FullChannelState, deposit?: {
        amount: string;
        assetId: string;
    }): Promise<Result<TransactionReceipt, ChainError>>;
    sendWithdrawTx(channelState: FullChannelState, minTx: MinimalTransaction): Promise<Result<TransactionReceipt, ChainError>>;
    sendDepositTx(channelState: FullChannelState, sender: string, amount: string, assetId: string): Promise<Result<TransactionReceipt, ChainError>>;
    on<T extends ChainServiceEvent>(event: T, callback: (payload: ChainServiceEventMap[T]) => void | Promise<void>, filter?: (payload: ChainServiceEventMap[T]) => boolean): void;
    once<T extends ChainServiceEvent>(event: T, callback: (payload: ChainServiceEventMap[T]) => void | Promise<void>, filter?: (payload: ChainServiceEventMap[T]) => boolean): void;
    off<T extends ChainServiceEvent>(event?: T): void;
    waitFor<T extends ChainServiceEvent>(event: T, timeout: number, filter?: (payload: ChainServiceEventMap[T]) => boolean): Promise<ChainServiceEventMap[T]>;
    approveTokens(channelAddress: string, spender: string, owner: string, depositAmount: string, assetId: string, chainId: number, approvalAmount?: string): Promise<Result<TransactionReceipt | undefined, ChainError>>;
    sendDepositATx(channelState: FullChannelState, amount: string, assetId: string): Promise<Result<TransactionReceipt, ChainError>>;
    sendDepositBTx(channelState: FullChannelState, amount: string, assetId: string): Promise<Result<TransactionReceipt, ChainError>>;
    sendDisputeChannelTx(channelState: FullChannelState): Promise<Result<TransactionReceipt, ChainError>>;
    sendDefundChannelTx(channelState: FullChannelState, assetsToDefund?: string[], indices?: string[]): Promise<Result<TransactionReceipt, ChainError>>;
    sendDisputeTransferTx(transferIdToDispute: string, activeTransfers: FullTransferState[]): Promise<Result<TransactionReceipt, ChainError>>;
    sendDefundTransferTx(transferState: FullTransferState, responderSignature?: string): Promise<Result<TransactionReceipt, ChainError>>;
    sendExitChannelTx(channelAddress: string, chainId: number, assetId: string, owner: string, recipient: string): Promise<Result<TransactionReceipt, ChainError>>;
}
//# sourceMappingURL=ethService.d.ts.map