import { BlockchainName, Token } from '../../../../../core';
import { CrossChainContractData } from './cross-chain-contract-data';
import { CrossChainContractTrade } from './cross-chain-contract-trade';
import BigNumber from 'bignumber.js';
import { CrossChainSupportedInstantTradeProvider } from './models/cross-chain-supported-instant-trade';
import { PriceTokenAmount } from '../../../../../core/blockchain/tokens/price-token-amount';
import { MinMaxAmountsErrors } from '../../../models/min-max-amounts-errors';
import { MinMaxAmounts } from '../../../models/min-max-amounts';
import { PriceToken } from '../../../../../core/blockchain/tokens/price-token';
import { ItCalculatedTrade } from './models/it-calculated-trade';
import { CrossChainTradeProvider } from '../cross-chain-trade-provider';
export declare abstract class CelerRubicCrossChainTradeProvider extends CrossChainTradeProvider {
    protected abstract contracts(blockchain: BlockchainName): CrossChainContractData;
    protected getItCalculatedTrade(contract: CrossChainContractData, providerIndex: number, from: PriceTokenAmount, toToken: PriceToken, slippageTolerance: number): Promise<ItCalculatedTrade>;
    protected getToTransitTokenAmount(toBlockchain: BlockchainName, transitToken: PriceTokenAmount, transitTokenMinAmount: BigNumber, contract: CrossChainContractData): Promise<{
        toTransitTokenAmount: BigNumber;
        transitFeeToken: PriceTokenAmount;
    }>;
    protected checkMinMaxAmountsErrors(fromTrade: CrossChainContractTrade): Promise<MinMaxAmountsErrors>;
    protected getMinMaxTransitTokenAmounts(fromBlockchain: BlockchainName, slippageTolerance?: number, fromToken?: PriceToken): Promise<MinMaxAmounts>;
    private getTokenAmountForExactTransitTokenAmount;
    protected getTokenAmountForExactTransitTokenAmountByProvider(fromToken: Token, transitToken: Token, transitTokenAmount: BigNumber, provider: CrossChainSupportedInstantTradeProvider): Promise<BigNumber>;
    protected abstract getBestItContractTrade(blockchain: BlockchainName, from: PriceTokenAmount, toToken: PriceToken, slippageTolerance: number): Promise<CrossChainContractTrade>;
    protected checkContractsState(fromTrade: CrossChainContractTrade, toTrade: CrossChainContractTrade): Promise<void>;
}
