import BigNumber from 'bignumber.js';
import { PriceTokenAmount } from "../../../../../common/tokens";
import { EvmBlockchainName } from "../../../../../core/blockchain/models/blockchain-name";
import { EvmBasicTransactionOptions } from "../../../../../core/blockchain/web3-private-service/web3-private/evm-web3-private/models/evm-basic-transaction-options";
import { ContractParams } from "../../../../common/models/contract-params";
import { SwapTransactionOptions } from "../../../../common/models/swap-transaction-options";
import { CelerContractTrade } from "./celer-contract-trade/celer-contract-trade";
import { EvmCrossChainTrade } from "../common/emv-cross-chain-trade/evm-cross-chain-trade";
import { GasData } from "../common/emv-cross-chain-trade/models/gas-data";
import { FeeInfo } from "../common/models/fee-info";
import { GetContractParamsOptions } from "../common/models/get-contract-params-options";
import { OnChainSubtype } from "../common/models/on-chain-subtype";
import { TradeInfo } from "../common/models/trade-info";
import { TransactionReceipt } from 'web3-eth';
/**
 * Calculated Celer cross-chain trade.
 */
export declare class CelerCrossChainTrade extends EvmCrossChainTrade {
    private readonly maxSlippage;
    /** @internal */
    static getGasData(fromTrade: CelerContractTrade, toTrade: CelerContractTrade, cryptoFeeToken: PriceTokenAmount, maxSlippage: number): Promise<GasData | null>;
    readonly type: "cbridge";
    readonly isAggregator = false;
    readonly onChainSubtype: OnChainSubtype;
    readonly bridgeType: "cbridge";
    readonly feeInPercents: number;
    readonly feeInfo: FeeInfo;
    readonly transitFeeToken: PriceTokenAmount;
    readonly from: PriceTokenAmount<EvmBlockchainName>;
    readonly to: PriceTokenAmount;
    readonly toTokenAmountMin: BigNumber;
    readonly fromTrade: CelerContractTrade;
    readonly toTrade: CelerContractTrade;
    readonly gasData: GasData | null;
    readonly cryptoFeeToken: PriceTokenAmount;
    private readonly deflationTokenManager;
    isDeflationTokenInTargetNetwork: boolean;
    private readonly slippage;
    /**
     * Gets price impact in source and target blockchains, based on tokens usd prices.
     */
    get priceImpactData(): {
        priceImpactFrom: number | null;
        priceImpactTo: number | null;
    };
    protected get fromContractAddress(): string;
    constructor(crossChainTrade: {
        fromTrade: CelerContractTrade;
        toTrade: CelerContractTrade;
        cryptoFeeToken: PriceTokenAmount;
        transitFeeToken: PriceTokenAmount;
        gasData: GasData | null;
        feeInPercents: number;
        feeInfo: FeeInfo;
        slippage: number;
    }, providerAddress: string, maxSlippage: number);
    swap(options?: SwapTransactionOptions): Promise<string | never>;
    protected checkTradeErrors(): Promise<void | never>;
    private checkContractsState;
    private parseSwapErrors;
    getContractParams(options: GetContractParamsOptions): Promise<ContractParams>;
    private calculateSwapValue;
    getTradeAmountRatio(fromUsd: BigNumber): BigNumber;
    approve(options: EvmBasicTransactionOptions, checkNeedApprove?: boolean): Promise<TransactionReceipt>;
    getUsdPrice(): BigNumber;
    getTradeInfo(): TradeInfo;
}
