import { Route } from '@lifi/sdk';
import { AccountBalances } from './classes/account-balances.js';
import { BridgingProvider } from './constants.js';
import { Transaction } from './classes/transaction.js';
import { ObjectSubject } from '../common/rxjs/object.subject.js';
import { BigNumber } from '../common/types/bignumber.js';
import { NftList } from './classes/nft-list.js';
import { ExchangeOffer } from './classes/exchange-offer.js';
import { AdvanceRoutesLiFi } from './classes/advance-routes-lifi.js';
import { StepTransactions } from './classes/step-transactions-lifi.js';
import { RateData } from './classes/rate-data.js';
import { TokenListToken } from './classes/token-list-token.js';
import { TokenList } from './classes/token-list.js';
import { PaginatedTokens } from './classes/paginated-tokens.js';
import { Transactions } from './classes/transactions.js';
import { Token } from './classes/token.js';
import { QuoteTransactionsResponse } from './classes/quote.js';
import { TransactionStatus } from './classes/transaction-status.js';
import './classes/account-balance.js';
import 'ethers';
import './classes/transaction-asset.js';
import './classes/transaction-batch.js';
import './classes/transaction-log.js';
import './classes/transaction-log-decoded.js';
import './classes/decoded-log-param.js';
import './classes/internal-transaction.js';
import 'rxjs';
import '../common/classes/pagination-result.js';
import './classes/nft-collection.js';
import '../common/classes/base-class.js';
import './classes/nft.js';
import './classes/transaction-data.js';
import './classes/rate-info.js';

declare class DataModule {
    readonly apiKey$: ObjectSubject<string, number | typeof Symbol.iterator | "length" | "toString" | "charAt" | "charCodeAt" | "concat" | "indexOf" | "lastIndexOf" | "localeCompare" | "match" | "replace" | "search" | "slice" | "split" | "substring" | "toLowerCase" | "toLocaleLowerCase" | "toUpperCase" | "toLocaleUpperCase" | "trim" | "substr" | "valueOf" | "codePointAt" | "includes" | "endsWith" | "normalize" | "repeat" | "startsWith" | "anchor" | "big" | "blink" | "bold" | "fixed" | "fontcolor" | "fontsize" | "italics" | "link" | "small" | "strike" | "sub" | "sup" | "padStart" | "padEnd" | "trimEnd" | "trimStart" | "trimLeft" | "trimRight" | "matchAll" | "at">;
    private apiService;
    constructor(apiKey?: string);
    get currentApi(): string;
    switchCurrentApi(currentApi: string): string;
    getAccountBalances(account: string, chainId: number, tokens?: string[], provider?: string): Promise<AccountBalances>;
    getTransaction(hash: string, chainId: number): Promise<Transaction>;
    getTransactions(account: string, chainId: number, page?: number, limit?: number): Promise<Transactions>;
    getNftList(account: string, chainId: number): Promise<NftList>;
    getAdvanceRoutesLiFi(fromTokenAddress: string, toTokenAddress: string, fromChainId: number, toChainId: number, fromAmount: BigNumber, toAddress?: string, allowSwitchChain?: boolean, fromAddress?: string, showZeroUsd?: boolean): Promise<AdvanceRoutesLiFi>;
    getStepTransaction(selectedRoute: Route, account: string): Promise<StepTransactions>;
    getExchangeSupportedAssets(page: number, limit: number, chainId: number, account: string): Promise<PaginatedTokens>;
    getExchangeOffers(fromTokenAddress: string, toTokenAddress: string, fromAmount: BigNumber, fromChainId: number, fromAddress: string, toAddress?: string, showZeroUsd?: boolean): Promise<ExchangeOffer[]>;
    getTokenLists(chainId: number): Promise<TokenList[]>;
    getTokenListTokens(chainId: number, name?: string): Promise<TokenListToken[]>;
    fetchExchangeRates(tokens: string[], chainId: number): Promise<RateData>;
    getSupportedAssets(chainId?: number, provider?: BridgingProvider): Promise<Token[]>;
    getQuotes(fromAddress: string, toAddress: string, fromChainId: number, toChainId: number, fromToken: string, fromAmount: BigNumber, slippage: number, provider?: BridgingProvider): Promise<QuoteTransactionsResponse>;
    getTransactionStatus(fromChainId: number, toChainId: number, transactionHash: string, provider?: BridgingProvider): Promise<TransactionStatus>;
}

export { DataModule };
