import { FullChannelState, IVectorChainService, MinimalTransaction, ChainError, Result, IChainServiceStore, FullTransferState, ChainServiceEvent, ChainServiceEventMap, TransactionResponseWithResult } from "@connext/vector-types";
import { Signer } from "@ethersproject/abstract-signer";
import { BigNumber } from "@ethersproject/bignumber";
import { JsonRpcProvider, TransactionReceipt } from "@ethersproject/providers";
import { BaseLogger } from "pino";
import { EthereumChainReader } from "./ethReader";
export declare const EXTRA_GAS = 50000;
export declare const BIG_GAS_LIMIT: 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);
    speedUpTx(chainId: number, tx: MinimalTransaction & {
        transactionHash: string;
        nonce: number;
    }): Promise<Result<TransactionResponseWithResult, ChainError>>;
    sendDisputeChannelTx(channelState: FullChannelState): Promise<Result<TransactionResponseWithResult, ChainError>>;
    sendDefundChannelTx(channelState: FullChannelState, assetsToDefund?: string[], indices?: string[]): Promise<Result<TransactionResponseWithResult, ChainError>>;
    sendDisputeTransferTx(transferIdToDispute: string, activeTransfers: FullTransferState[]): Promise<Result<TransactionResponseWithResult, ChainError>>;
    sendDefundTransferTx(transferState: FullTransferState, responderSignature?: string): Promise<Result<TransactionResponseWithResult, ChainError>>;
    sendExitChannelTx(channelAddress: string, chainId: number, assetId: string, owner: string, recipient: string): Promise<Result<TransactionResponseWithResult, ChainError>>;
    sendDeployChannelTx(channelState: FullChannelState, deposit?: {
        amount: string;
        assetId: string;
    }): Promise<Result<TransactionResponseWithResult, ChainError>>;
    sendWithdrawTx(channelState: FullChannelState, minTx: MinimalTransaction): Promise<Result<TransactionResponseWithResult, ChainError>>;
    sendDepositTx(channelState: FullChannelState, sender: string, amount: string, assetId: string): Promise<Result<TransactionResponseWithResult, 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]>;
    private sendTxWithRetries;
    private sendTxAndParseResponse;
    private approveTokens;
    private sendDepositATx;
    private sendDepositBTx;
}
//# sourceMappingURL=ethService.d.ts.map