import { ApiRouterTransactionForCompleteTradeRouteBody, RouterCompleteTradeRoute, ApiRouterTradeEventsBody, RouterTradeEvent, Balance, ApiRouterPartialCompleteTradeRouteBody, ApiRouterAddTransactionForCompleteTradeRouteBody, ApiRouterAddTransactionForCompleteTradeRouteV0Body, Slippage, CallerConfig } from "../../types";
import { Caller } from "../../general/utils/caller";
import { Transaction } from "@mysten/sui/transactions";
import { TransactionBlock } from "@mysten/sui.js/transactions";
/**
 * @class Router Provider
 *
 * @example
 * ```
 * // Create provider
 * const router = (new Aftermath("MAINNET")).Router();
 * // Call sdk
 * const supportedCoins = await router.getSupportedCoins();
 * ```
 */
export declare class Router extends Caller {
    static readonly constants: {
        /**
         * Max fee percentage that third parties can charge on router trades
         */
        maxExternalFeePercentage: number;
    };
    /**
     * Creates `Router` provider to call api.
     *
     * @param network - The Sui network to interact with
     * @returns New `Router` instance
     */
    constructor(config?: CallerConfig);
    /**
     * Retrieves the total volume in the last 24 hours.
     * @returns A Promise that resolves to a number representing the total volume.
     */
    getVolume24hrs: () => Promise<number>;
    getSupportedCoins(): Promise<string[]>;
    searchSupportedCoins(inputs: {
        filter: string;
    }, abortSignal?: AbortSignal): Promise<string[]>;
    /**
     * Creates route across multiple pools and protocols for best trade execution price
     *
     * @param inputs - Details for router to construct trade route
     * @param abortSignal - Optional signal to abort passed to fetch call
     * @returns Routes, paths, and amounts of each smaller trade within complete trade
     */
    getCompleteTradeRouteGivenAmountIn(inputs: ApiRouterPartialCompleteTradeRouteBody & {
        /**
         * Amount of coin being given away
         */
        coinInAmount: Balance;
    }, abortSignal?: AbortSignal): Promise<RouterCompleteTradeRoute>;
    /**
     * Creates route across multiple pools and protocols for best trade execution price
     *
     * @param inputs - Details for router to construct trade route
     * @param abortSignal - Optional signal to abort passed to fetch call
     * @returns Routes, paths, and amounts of each smaller trade within complete trade
     */
    getCompleteTradeRouteGivenAmountOut(inputs: ApiRouterPartialCompleteTradeRouteBody & {
        /**
         * Amount of coin expected to receive
         */
        coinOutAmount: Balance;
        slippage: Slippage;
    }, abortSignal?: AbortSignal): Promise<RouterCompleteTradeRoute>;
    getTransactionForCompleteTradeRoute(inputs: ApiRouterTransactionForCompleteTradeRouteBody): Promise<Transaction>;
    getTransactionForCompleteTradeRouteV0(inputs: ApiRouterTransactionForCompleteTradeRouteBody): Promise<TransactionBlock>;
    addTransactionForCompleteTradeRoute(inputs: Omit<ApiRouterAddTransactionForCompleteTradeRouteBody, "serializedTx"> & {
        tx: Transaction;
    }): Promise<{
        tx: Transaction;
        coinOutId: import("@mysten/sui/transactions").TransactionObjectArgument | undefined;
    }>;
    addTransactionForCompleteTradeRouteV0(inputs: Omit<ApiRouterAddTransactionForCompleteTradeRouteV0Body, "serializedTx"> & {
        tx: TransactionBlock;
    }): Promise<{
        tx: TransactionBlock;
        coinOutId: any;
    }>;
    getInteractionEvents(inputs: ApiRouterTradeEventsBody): Promise<import("../../types").IndexerEventsWithCursor<RouterTradeEvent>>;
}
//# sourceMappingURL=router.d.ts.map