import type { ethers, Contract, ContractTransaction, PopulatedTransaction, Signer } from 'ethers';
import { type EtherlinkBridgeBlockchainService, type WithdrawNativeTokenParams, type WithdrawNativeTokenResult, type WithdrawNonNativeTokenParams, type WithdrawNonNativeTokenResult, type CreateWithdrawNativeTokenOperationParams, type CreateWithdrawNonNativeTokenOperationParams } from '../etherlinkBridgeBlockchainService';
export interface EthersV5EtherlinkBridgeBlockchainServiceOptions {
    ethers: typeof ethers;
    signer: Signer;
    kernelAddress?: string;
    nativeTokenBridgePrecompileAddress?: string;
    nonNativeTokenBridgePrecompileAddress?: string;
}
export declare class EthersV5EtherlinkBridgeBlockchainService implements EtherlinkBridgeBlockchainService<{
    tx: ContractTransaction;
}, {
    tx: ContractTransaction;
}, PopulatedTransaction, PopulatedTransaction> {
    readonly ethers: typeof ethers;
    protected readonly nativeTokenBridgePrecompiledAddress: string;
    protected readonly nonNativeTokenBridgePrecompiledAddress: string;
    protected readonly nativeTokenBridgePrecompile: Contract;
    protected readonly nonNativeTokenBridgePrecompile: Contract;
    private _signer;
    constructor(options: EthersV5EtherlinkBridgeBlockchainServiceOptions);
    get signer(): ethers.Signer;
    getSignerAddress(): Promise<string | undefined>;
    withdrawNativeToken(params: WithdrawNativeTokenParams): Promise<WithdrawNativeTokenResult & {
        tx: ContractTransaction;
    }>;
    withdrawNonNativeToken(params: WithdrawNonNativeTokenParams): Promise<WithdrawNonNativeTokenResult & {
        tx: ContractTransaction;
    }>;
    createWithdrawNativeTokenOperation(params: CreateWithdrawNativeTokenOperationParams): Promise<ethers.PopulatedTransaction>;
    createWithdrawNonNativeTokenOperation(params: CreateWithdrawNonNativeTokenOperationParams): Promise<ethers.PopulatedTransaction>;
    setSigner(signer: Signer): void;
    protected getCurrentTransactionTimestamp(): string;
    private withdrawToken;
}
