import { IBaseBridgeConfigOptions, IBaseBridgeConfig } from '../../core/types';
import { IDeBridgeCreateQuoteResponse, IDeBridgeEstimatedFeesInput, IDeBridgeTokenValidateParams, ISendDebridgeTokenInput } from './types';
import { Hash } from 'viem';

export interface IDeBridgeConfigOptions extends IBaseBridgeConfigOptions {
    statsEndpoint: string;
}
export interface IDeBridgeConfig extends IBaseBridgeConfig {
    statsEndpoint: string;
}
export declare function deBridgeConfig(options: IDeBridgeConfigOptions): IDeBridgeConfig;
export declare class DeBridge {
    private client?;
    private statsClient?;
    constructor(config: IDeBridgeConfigOptions);
    createTxQuote(urlParams: any): Promise<IDeBridgeCreateQuoteResponse>;
    /**
     * Get estimated fees from transaction quote API
     * @param {number} fromChainId - Chain ID of the source chain
     * @param {Address} fromTokenAddress - Address of ERC20 token on the source chain
     * @param {BigInt} amount - Send amount
     * @param {number} toChainId - Chain ID of the destination chain
     * @param {Address} toTokenAddress - Address of ERC20 token on the destination chain
     * @param {Address} userAddress - user/account address
     */
    getEstimatedFees({ fromChainId, fromTokenAddress, amount, toChainId, toTokenAddress, userAddress, toUserAddress, affiliateFeePercent, accesstoken, referralCode, prependOperatingExpenses, }: IDeBridgeEstimatedFeesInput): Promise<IDeBridgeCreateQuoteResponse>;
    getOrder({ id }: {
        id: string;
    }): Promise<any>;
    /**
     * Get list of orders by filters
     * @param address Account address
     * @param pageId Page number
     * @param pageSize Records per page
     * @param fromChainIds Source chain IDs
     * @param toChainIds Destination chain IDs
     */
    getStatsHistory({ address, pageId, pageSize, fromChainIds, toChainIds, }: {
        address: string;
        pageId: number;
        pageSize: number;
        fromChainIds: number[];
        toChainIds: number[];
    }): Promise<any>;
    /**
     * Send token via DeBridge
     * @param {WalletClient} walletClient Wallet client
     * @param {Address} bridgeAddress Bridge address
     * @param {String} data Transaction data
     * @param {BigInt} amount Send amount
     * @param {Address} address wallet/account address
     * @returns {Hash} transaction hash
     */
    sendToken({ walletClient, bridgeAddress, data, amount, address, }: ISendDebridgeTokenInput): Promise<Hash>;
    validateDeBridgeToken: ({ fromChainId, fromChainType, toChainId, toChainType, fromTokenAddress, fromTokenSymbol, fromTokenDecimals, fromBridgeAddress, toTokenAddress, toTokenSymbol, toTokenDecimals, amount, deBridgeEndpoint, }: IDeBridgeTokenValidateParams) => Promise<boolean>;
}
