import { Route as ClassicRouteSDK, Pair } from 'astra-classic-sdk';
import { Route as CLRouteSDK, Pool as CLPool } from 'astra-cl-sdk-dev';
import { Protocol } from './protocol';
import { Currency, Price, Token } from 'astra-sdk-core';
import { MixedRouteSDK } from './mixedRoute/route';
export interface IRoute<TInput extends Currency, TOutput extends Currency, TPool extends Pair | CLPool> {
    protocol: Protocol;
    pools: TPool[];
    path: Currency[];
    midPrice: Price<TInput, TOutput>;
    input: TInput;
    output: TOutput;
}
export declare class RouteClassic<TInput extends Currency, TOutput extends Currency> extends ClassicRouteSDK<TInput, TOutput> implements IRoute<TInput, TOutput, Pair> {
    readonly protocol: Protocol;
    readonly pools: Pair[];
    constructor(classicRoute: ClassicRouteSDK<TInput, TOutput>);
}
export declare class RouteCL<TInput extends Currency, TOutput extends Currency> extends CLRouteSDK<TInput, TOutput> implements IRoute<TInput, TOutput, CLPool> {
    readonly protocol: Protocol;
    readonly path: Token[];
    constructor(clRoute: CLRouteSDK<TInput, TOutput>);
}
export declare class MixedRoute<TInput extends Currency, TOutput extends Currency> extends MixedRouteSDK<TInput, TOutput> implements IRoute<TInput, TOutput, Pair | CLPool> {
    readonly protocol: Protocol;
    constructor(mixedRoute: MixedRouteSDK<TInput, TOutput>);
}
