import { IEventFilter, IEventInfo, INodeInfo, IToken, IWalletProvider, WalletConsumer } from "@cryptovarna/tron-web-api";
import { IBridge } from "../bridge/Bridge";
import { ITokenBridgeTask, TokensBridged } from "../tasks/Task";
export interface ITokenBridgeConfiguration {
    token: IToken;
    bridge: string;
    currentNetwork: INodeInfo;
    networks: string[];
    correspondents: string[];
}
export declare abstract class TokenBridge extends WalletConsumer {
    protected _configuration: ITokenBridgeConfiguration;
    protected _dayLimit: {
        dailySwapped: number;
        dayLimit: number;
    };
    protected _contract: string;
    constructor(provider: IWalletProvider, contract: string);
    abstract getConfiguration(): Promise<ITokenBridgeConfiguration>;
    abstract getDailyLimit(): Promise<{
        dailySwapped: number;
        dayLimit: number;
    }>;
    getToken(): Promise<IToken>;
    getContractAddress(): string;
    abstract createMoveInTask(targetNetwork: string, recipient: string, amount: number | string): Promise<ITokenBridgeTask>;
    getBridge(): Promise<IBridge>;
    protected _createTokenBridgeTask(provider: IWalletProvider, taskId: string, destinationNode: INodeInfo): Promise<ITokenBridgeTask>;
    protected _checkExecutedTasks(tasks: IEventInfo<TokensBridged>[], providers: IWalletProvider[]): Promise<string[]>;
    private _executedTasksTron;
    private _executedTasksEvmLegacy;
    private _executedTasksEvmApi;
    abstract listAllPendingTasks(providers: IWalletProvider[], filter?: IEventFilter<TokensBridged>): Promise<{
        tasks: ITokenBridgeTask[];
        timestamp: number;
        oldestTimestamp: number;
    }>;
    abstract getTax(): Promise<number>;
}
