import { PriceToken, PriceTokenAmount } from "../../../../../../../common/tokens";
import { EvmBlockchainName } from "../../../../../../../core/blockchain/models/blockchain-name";
import { OnChainTradeError } from "../../../../models/on-chain-trade-error";
import { RequiredOnChainCalculationOptions } from '../../../common/models/on-chain-calculation-options';
import { AggregatorOnChainProvider } from '../../../common/on-chain-aggregator/aggregator-on-chain-provider-abstract';
import { NativeRouterTradeInstance } from './models/native-router-trade-struct';
import { NativeRouterAbstractTrade } from './native-router-abstract-trade';
export declare abstract class NativeRouterAbstractProvider<T extends NativeRouterAbstractTrade = NativeRouterAbstractTrade> extends AggregatorOnChainProvider {
    private readonly nativeTokenAddress;
    protected abstract createNativeRouterTradeInstance(tradeInstance: NativeRouterTradeInstance): T;
    calculate(from: PriceTokenAmount<EvmBlockchainName>, toToken: PriceToken<EvmBlockchainName>, options: RequiredOnChainCalculationOptions): Promise<T | OnChainTradeError>;
    getBlockchainById(blockchain: string): string;
}
