import type Web3 from 'web3';
import type { ContractTransaction as EthersV5ContractTransaction } from '@ethersproject/contracts';
import { SwapSide } from '../constants';
import { SwapSDKMethods } from '../methods/swap';
import { Web3UnpromiEvent, EthersProviderDeps } from '../helpers';
import { type RateOptions } from '../methods/swap/rates';
import { type BuildOptions, type TransactionParams } from '../methods/swap/transaction';
import type { AddressOrSymbol, Token, FetcherFunction, ParaSwapVersionUnion, Address, PriceString, OptimalRate, TxSendOverrides } from '../types';
import { type Allowance } from '../methods/swap/balance';
import type { AxiosRequirement } from '../helpers/fetchers/axios';
import { ContractTransactionResponse as EthersV6ContractTransactionResponse } from 'ethers';
export type APIError = {
    message: string;
    status?: number;
    data?: any;
};
type Fetch = typeof fetch;
type TxResponse = Web3UnpromiEvent | EthersV5ContractTransaction | EthersV6ContractTransactionResponse;
type LegacyOptions = {
    chainId?: number;
    apiURL?: string;
    version?: ParaSwapVersionUnion;
    apiKey?: string;
    web3Provider?: Web3;
    ethersDeps?: EthersProviderDeps;
    account?: Address;
    axios?: AxiosRequirement;
    fetch?: Fetch;
};
/** @deprecated */
export declare class ParaSwap {
    sdk: Partial<SwapSDKMethods<TxResponse>>;
    fetcher: FetcherFunction;
    chainId: number;
    apiURL: string;
    version: ParaSwapVersionUnion;
    web3Provider?: Web3;
    ethersDeps?: EthersProviderDeps;
    account?: Address;
    constructor({ chainId, apiURL, version, apiKey, web3Provider, ethersDeps, account, axios, fetch, }: LegacyOptions);
    private static handleAPIError;
    private static extractHashFromTxResponse;
    setWeb3Provider(web3Provider: Web3, account?: string): this;
    setEthersProvider(ethersDeps: EthersProviderDeps, account?: string): this;
    getTokens(): Promise<Token[] | APIError>;
    getAdapters(): Promise<APIError | string[]>;
    getRateByRoute(route: AddressOrSymbol[], amount: PriceString, userAddress?: Address, side?: SwapSide, options?: RateOptions, srcDecimals?: number, destDecimals?: number): Promise<OptimalRate | APIError>;
    getRate(srcToken: AddressOrSymbol, destToken: AddressOrSymbol, amount: PriceString, userAddress?: Address, side?: SwapSide, options?: RateOptions, srcDecimals?: number, destDecimals?: number): Promise<OptimalRate | APIError>;
    buildTx(srcToken: Address, destToken: Address, srcAmount: PriceString, destAmount: PriceString, priceRoute: OptimalRate, userAddress: Address, partner?: string, partnerAddress?: string, partnerFeeBps?: number, receiver?: Address, options?: BuildOptions, srcDecimals?: number, destDecimals?: number, permit?: string, deadline?: string): Promise<TransactionParams | APIError>;
    getTokenTransferProxy(_provider?: any): Promise<Address | APIError>;
    getAllowances(userAddress: Address, tokenAddresses: Address[]): Promise<Allowance[] | APIError>;
    getAllowance(userAddress: Address, tokenAddress: Address): Promise<Allowance | APIError>;
    approveTokenBulk(amount: PriceString, userAddress: Address, tokenAddresses: Address[], 
    /** @deprecated */
    _provider?: any): Promise<string[] | APIError>;
    approveToken(amount: PriceString, userAddress: Address, tokenAddress: Address, 
    /** @deprecated */
    _provider?: any, // not used, can't detect if Ethers or Web3 provider without importing them
    sendOptions?: Omit<TxSendOverrides, 'from'>): Promise<string | APIError>;
    getMarketNames(): Promise<string[] | APIError>;
    getBalance(userAddress: Address, token: AddressOrSymbol): Promise<Token | APIError>;
    getBalances(userAddress: Address): Promise<Token[] | APIError>;
}
export {};
//# sourceMappingURL=index.d.ts.map