import { QuoteRequestInterface, QuoteResponseInterface } from '@cryptorubic/core';
import BigNumber from 'bignumber.js';
import { PriceTokenAmount } from '../../../../../../common/tokens';
import { SolanaBlockchainName } 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 { SolanaWeb3Private } from '../../../../../../core/blockchain/web3-private-service/web3-private/solana-web3-private/solana-web3-private';
import { SolanaWeb3Public } from '../../../../../../core/blockchain/web3-public-service/web3-public/solana-web3-public/solana-web3-public';
import { EvmEncodeConfig } from '../../../../../../core/blockchain/web3-pure/typed-web3-pure/evm-web3-pure/models/evm-encode-config';
import { EncodeTransactionOptions } from '../../../../../common/models/encode-transaction-options';
import { SwapTransactionOptions } from '../../../../../common/models/swap-transaction-options';
import { CrossChainTrade } from '../cross-chain-trade';
import { TransactionConfig } from 'web3-core';
import { TransactionReceipt } from 'web3-eth';
import { RubicStep } from '../models/rubicStep';
export declare abstract class SolanaCrossChainTrade extends CrossChainTrade<{
    data: string;
}> {
    abstract readonly from: PriceTokenAmount<SolanaBlockchainName>;
    protected get fromWeb3Public(): SolanaWeb3Public;
    protected get web3Private(): SolanaWeb3Private;
    /**
     * Gets gas fee in source blockchain.
     */
    get estimatedGas(): BigNumber | null;
    private readonly shouldCalculateConsumedParams;
    constructor(providerAddress: string, routePath: RubicStep[], apiQuote: QuoteRequestInterface, apiResponse: QuoteResponseInterface, shouldCalculateConsumedParams: boolean);
    approve(_options: EvmBasicTransactionOptions, _checkNeedApprove?: boolean, _amount?: BigNumber | 'infinity'): Promise<TransactionReceipt>;
    protected checkAllowanceAndApprove(options?: Omit<SwapTransactionOptions, 'onConfirm' | 'gasLimit'>): Promise<void>;
    /**
     *
     * @returns txHash(srcTxHash) | never
     */
    swap(options?: SwapTransactionOptions): Promise<string | never>;
    encode(options: EncodeTransactionOptions): Promise<TransactionConfig>;
    getUsdPrice(providerFeeToken?: BigNumber): BigNumber;
    protected getTransactionConfigAndAmount(testMode?: boolean, receiverAddress?: string): Promise<{
        config: EvmEncodeConfig;
        amount: string;
    }>;
    authWallet(): Promise<string>;
}
