import { BigNumber, ContractReceipt, ethers } from "ethers";
import { EVMChainId } from "@certusone/wormhole-sdk";
import { IZebecEthBridgeClient } from "./definitions";
/**
 * A client implementation for zebec evm bridge contract
 */
export declare class ZebecEthBridgeClient implements IZebecEthBridgeClient {
    readonly ArbitaryFee: BigNumber;
    /**
     * Chain id of zebec eth bridge client
     */
    private _chainId;
    /**
     * Contract  of zebec eth bridge client
     */
    private _contract;
    /**
     * Constructs an client instance to interact with evm bridge contract
     * @param contractAddress address of the bridge contract address
     * @param signer evm signer
     * @param sourceChain wormhole chain id of deployed evm contract
     */
    constructor(contractAddress: string, signer: ethers.Signer, sourceChain: EVMChainId);
    registerUser(address: string, overrides?: ethers.Overrides): Promise<ContractReceipt>;
    createTokenAccount(owner: string, tokenMint: string, overrides?: ethers.Overrides): Promise<ContractReceipt>;
    initStream(startTime: string, endTime: string, amount: string, receiver: string, sender: string, canCancel: boolean, canUpdate: boolean, tokenMint: string, overrides?: ethers.Overrides): Promise<ContractReceipt>;
    deposit(amount: string, depositor: string, tokenMint: string, overrides?: ethers.Overrides): Promise<ethers.ContractReceipt>;
    withdraw(amount: string, sender: string, tokenMint: string, overrides?: ethers.Overrides): Promise<ContractReceipt>;
    updateStream(startTime: string, endTime: string, amount: string, receiver: string, sender: string, tokenMint: string, streamDataAccount: string, overrides?: ethers.Overrides): Promise<ethers.ContractReceipt>;
    withdrawStreamed(sender: string, withdrawer: string, tokenMint: string, streamDataAccount: string, overrides?: ethers.Overrides): Promise<ContractReceipt>;
    cancelStream(sender: string, receiver: string, tokenMint: string, streamDataAccount: string, overrides?: ethers.Overrides): Promise<ContractReceipt>;
    pauseResumeStream(sender: string, receiver: string, tokenMint: string, streamDataAccount: string, overrides?: ethers.Overrides): Promise<ContractReceipt>;
    instantTransfer(amount: string, sender: string, withdrawer: string, tokenMint: string, overrides?: ethers.Overrides): Promise<ContractReceipt>;
    directTransfer(amount: string, sender: string, tokenMint: string, receiver: string, overrides?: ethers.Overrides): Promise<ContractReceipt>;
    /**
     * Checks if given amount is valid
     * @param amount
     * @returns
     */
    private checkAmount;
    /**
     * Checks if given address is valid evm address
     * @param address
     * @param chainId
     * @returns
     */
    private checkEthAddress;
    /**
     * Checks if given address is valid solana address
     * @param address
     * @returns
     */
    private checkSolanaAddress;
    /**
     * Checks if given start time and end time are valid
     * @param startTime
     * @param endTime
     * @returns
     */
    private checkStartTimeAndEndTime;
}
