type BigintIsh = bigint | number | string; declare enum TradeType { EXACT_INPUT = 0, EXACT_OUTPUT = 1 } declare enum Rounding { ROUND_DOWN = 0, ROUND_HALF_UP = 1, ROUND_UP = 2 } declare const MINIMUM_LIQUIDITY = 1000n; declare const ZERO = 0n; declare const ONE = 1n; declare const TWO = 2n; declare const THREE = 3n; declare const FIVE = 5n; declare const TEN = 10n; declare const _100 = 100n; declare const _9975 = 9975n; declare const _10000 = 10000n; declare const MaxUint256: bigint; declare enum VMType { uint8 = "uint8", uint256 = "uint256" } declare const VM_TYPE_MAXIMA: { uint8: bigint; uint256: bigint; }; declare const ZERO_ADDRESS: "0x0000000000000000000000000000000000000000"; /** * A currency is any fungible financial instrument, including Ether, all ERC20 tokens, and other chain-native currencies */ declare abstract class BaseCurrency = BaseCurrency> { /** * Returns whether the currency is native to the chain and must be wrapped (e.g. Ether) */ abstract readonly isNative: boolean; /** * Returns whether the currency is a token that is usable in PancakeSwap without wrapping */ abstract readonly isToken: boolean; /** * The chain ID on which this currency resides */ readonly chainId: number; /** * The decimals used in representing currency amounts */ readonly decimals: number; /** * The symbol of the currency, i.e. a short textual non-unique identifier */ readonly symbol: string; /** * The name of the currency, i.e. a descriptive textual non-unique identifier */ readonly name?: string; /** * Constructs an instance of the base class `BaseCurrency`. * @param chainId the chain ID on which this currency resides * @param decimals decimals of the currency * @param symbol symbol of the currency * @param name of the currency */ protected constructor(chainId: number, decimals: number, symbol: string, name?: string); /** * Returns whether this currency is functionally equivalent to the other currency * @param other the other currency */ abstract equals(other: BaseCurrency): boolean; /** * Return the wrapped version of this currency that can be used with the PancakeSwap contracts. Currencies must * implement this to be used in PancakeSwap */ abstract get wrapped(): T; get asToken(): T; } interface SerializedToken { chainId: number; address: `0x${string}`; decimals: number; symbol: string; name?: string; projectLink?: string; } /** * Represents an ERC20 token with a unique address and some metadata. */ declare class Token extends BaseCurrency { readonly isNative: false; readonly isToken: true; /** * The contract address on the chain on which this token lives */ readonly address: `0x${string}`; readonly projectLink?: string; constructor(chainId: number, address: `0x${string}`, decimals: number, symbol: string, name?: string, projectLink?: string); /** * Returns true if the two tokens are equivalent, i.e. have the same chainId and address. * @param other other token to compare */ equals(other: BaseCurrency): boolean; /** * Returns true if the address of this token sorts before the address of the other token * @param other other token to compare * @throws if the tokens have the same address * @throws if the tokens are on different chains */ sortsBefore(other: Token): boolean; /** * Return this token, which does not need to be wrapped */ get wrapped(): Token; get serialize(): SerializedToken; } /** * Represents the native currency of the chain on which it resides, e.g. */ declare abstract class NativeCurrency extends BaseCurrency { readonly isNative: true; readonly isToken: false; get asToken(): Token; } interface SerializedSPLToken { chainId: number; address: string; programId: string; decimals: number; symbol: string; name?: string; projectLink?: string; } /** * Represents an SPL token on Solana or other non-EVM chains. */ declare class SPLToken extends BaseCurrency { readonly isNative: false; readonly isToken: true; readonly address: string; readonly programId: string; readonly logoURI: string; readonly projectLink?: string; static isSPLToken(token?: UnifiedCurrency): boolean; constructor({ chainId, programId, address, decimals, symbol, logoURI, name, projectLink, }: { chainId: number; programId: string; address: string; decimals: number; symbol: string; logoURI: string; name?: string; projectLink?: string; isNative?: boolean; }); /** * Returns true if the two tokens are equivalent, i.e. have the same chainId and programId. * @param other other token to compare */ equals(other: BaseCurrency): boolean; sortsBefore(other: SPLToken): boolean; get wrapped(): SPLToken; get serialize(): SerializedSPLToken; } /** * Represents the native currency of the chain on which it resides, e.g. */ declare abstract class SPLNativeCurrency extends BaseCurrency { readonly isNative: true; readonly isToken: false; readonly address: string; } type Currency = NativeCurrency | Token; type UnifiedNativeCurrency = NativeCurrency | SPLNativeCurrency; type UnifiedCurrency = SPLToken | SPLNativeCurrency | Currency; type UnifiedToken = SPLToken | Token; declare class Fraction { readonly numerator: bigint; readonly denominator: bigint; constructor(numerator: BigintIsh, denominator?: BigintIsh); private static tryParseFraction; get quotient(): bigint; get remainder(): Fraction; invert(): Fraction; add(other: Fraction | BigintIsh): Fraction; subtract(other: Fraction | BigintIsh): Fraction; lessThan(other: Fraction | BigintIsh): boolean; equalTo(other: Fraction | BigintIsh): boolean; greaterThan(other: Fraction | BigintIsh): boolean; multiply(other: Fraction | BigintIsh): Fraction; divide(other: Fraction | BigintIsh): Fraction; toSignificant(significantDigits: number, format?: object, rounding?: Rounding): string; toFixed(decimalPlaces: number, format?: object, rounding?: Rounding): string; /** * Helper method for converting any super class back to a fraction */ get asFraction(): Fraction; } /** * Converts a fraction to a percent * @param fraction the fraction to convert */ declare function toPercent(fraction: Fraction): Percent; declare class Percent extends Fraction { /** * This boolean prevents a fraction from being interpreted as a Percent */ readonly isPercent: true; static toPercent: typeof toPercent; add(other: Fraction | BigintIsh): Percent; subtract(other: Fraction | BigintIsh): Percent; multiply(other: Fraction | BigintIsh): Percent; divide(other: Fraction | BigintIsh): Percent; toSignificant(significantDigits?: number, format?: object, rounding?: Rounding): string; toFixed(decimalPlaces?: number, format?: object, rounding?: Rounding): string; } declare class CurrencyAmount extends Fraction { readonly currency: T; readonly decimalScale: bigint; /** * Returns a new currency amount instance from the unitless amount of token, i.e. the raw amount * @param currency the currency in the amount * @param rawAmount the raw token or ether amount */ static fromRawAmount(currency: T, rawAmount: BigintIsh): CurrencyAmount; /** * Construct a currency amount with a denominator that is not equal to 1 * @param currency the currency * @param numerator the numerator of the fractional token amount * @param denominator the denominator of the fractional token amount */ static fromFractionalAmount(currency: T, numerator: BigintIsh, denominator: BigintIsh): CurrencyAmount; protected constructor(currency: T, numerator: BigintIsh, denominator?: BigintIsh); add(other: CurrencyAmount): CurrencyAmount; subtract(value: bigint): CurrencyAmount; subtract(other: CurrencyAmount): CurrencyAmount; multiply(other: Fraction | BigintIsh): CurrencyAmount; divide(other: Fraction | BigintIsh): CurrencyAmount; toSignificant(significantDigits?: number, format?: object, rounding?: Rounding): string; toFixed(decimalPlaces?: number, format?: object, rounding?: Rounding): string; toExact(format?: object): string; get wrapped(): CurrencyAmount; info(): string; } declare class UnifiedCurrencyAmount extends Fraction { readonly currency: T; readonly decimalScale: bigint; /** * Returns a new currency amount instance from the unitless amount of token, i.e. the raw amount * @param currency the currency in the amount * @param rawAmount the raw token or ether amount */ static fromRawAmount(currency: T, rawAmount: BigintIsh): UnifiedCurrencyAmount; /** * Construct a currency amount with a denominator that is not equal to 1 * @param currency the currency * @param numerator the numerator of the fractional token amount * @param denominator the denominator of the fractional token amount */ static fromFractionalAmount(currency: T, numerator: BigintIsh, denominator: BigintIsh): UnifiedCurrencyAmount; protected constructor(currency: T, numerator: BigintIsh, denominator?: BigintIsh); add(other: UnifiedCurrencyAmount): UnifiedCurrencyAmount; subtract(value: bigint): UnifiedCurrencyAmount; subtract(other: UnifiedCurrencyAmount): UnifiedCurrencyAmount; multiply(other: Fraction | BigintIsh): UnifiedCurrencyAmount; divide(other: Fraction | BigintIsh): UnifiedCurrencyAmount; toSignificant(significantDigits?: number, format?: object, rounding?: Rounding): string; toFixed(decimalPlaces?: number, format?: object, rounding?: Rounding): string; toExact(format?: object): string; get wrapped(): UnifiedCurrencyAmount; info(): string; } declare class Price extends Fraction { readonly baseCurrency: TBase; readonly quoteCurrency: TQuote; readonly scalar: Fraction; /** * Construct a price, either with the base and quote currency amount, or the * @param args */ constructor(...args: [TBase, TQuote, BigintIsh, BigintIsh] | [{ baseAmount: UnifiedCurrencyAmount; quoteAmount: UnifiedCurrencyAmount; }]); /** * Flip the price, switching the base and quote currency */ invert(): Price; /** * Multiply the price by another price, returning a new price. The other price must have the same base currency as this price's quote currency * @param other the other price */ multiply(other: Price): Price; /** * Return the amount of quote currency corresponding to a given amount of the base currency * @param currencyAmount the amount of base currency to quote against the price */ quote(currencyAmount: UnifiedCurrencyAmount): UnifiedCurrencyAmount; /** * Get the value scaled by decimals for formatting * @private */ private get adjustedForDecimals(); toSignificant(significantDigits?: number, format?: object, rounding?: Rounding): string; toFixed(decimalPlaces?: number, format?: object, rounding?: Rounding): string; get wrapped(): Price; /** * Create a price from base and quote currency and a decimal string * @param base * @param quote * @param value * @returns Price | undefined */ static fromDecimal(base: TBase, quote: TQuote, value: string): Price | undefined; } /** * Indicates that the pair has insufficient reserves for a desired output amount. I.e. the amount of output cannot be * obtained by sending any amount of input. */ declare class InsufficientReservesError extends Error { readonly isInsufficientReservesError: true; constructor(); } /** * Indicates that the input amount is too small to produce any amount of output. I.e. the amount of input sent is less * than the price of a single unit of output after fees. */ declare class InsufficientInputAmountError extends Error { readonly isInsufficientInputAmountError: true; constructor(); } declare function validateVMTypeInstance(value: bigint, vmType: VMType): void; declare function sqrt(y: bigint): bigint; declare function sortedInsert(items: T[], add: T, maxSize: number, comparator: (a: T, b: T) => number): T | null; /** * Returns the percent difference between the mid price and the execution price, i.e. price impact. * @param midPrice mid price before the trade * @param inputAmount the input amount of the trade * @param outputAmount the output amount of the trade */ declare function computePriceImpact(midPrice: Price, inputAmount: CurrencyAmount, outputAmount: CurrencyAmount): Percent; declare function getTokenComparator(balances: { [tokenAddress: string]: CurrencyAmount | undefined; }): (tokenA: Token, tokenB: Token) => number; declare function sortCurrencies(currencies: T[]): T[]; declare function sortUnifiedCurrencies(currencies: T[]): T[]; declare const isCurrencySorted: (currencyA: Currency, currencyB: Currency) => boolean; declare const isUnifiedCurrencySorted: (currencyA: UnifiedCurrency, currencyB: UnifiedCurrency) => boolean; declare function getCurrencyAddress(currency: Currency): `0x${string}`; declare function getUnifiedCurrencyAddress(currency: UnifiedCurrency): string; declare function getMatchedCurrency(currency: Currency, list: Currency[], matchWrappedCurrency?: boolean): Currency | undefined; export { BaseCurrency, BigintIsh, Currency, CurrencyAmount, FIVE, Fraction, InsufficientInputAmountError, InsufficientReservesError, MINIMUM_LIQUIDITY, MaxUint256, NativeCurrency, ONE, Percent, Price, Rounding, SPLNativeCurrency, SPLToken, SerializedSPLToken, SerializedToken, TEN, THREE, TWO, Token, TradeType, UnifiedCurrency, UnifiedCurrencyAmount, UnifiedNativeCurrency, UnifiedToken, VMType, VM_TYPE_MAXIMA, ZERO, ZERO_ADDRESS, _100, _10000, _9975, computePriceImpact, getCurrencyAddress, getMatchedCurrency, getTokenComparator, getUnifiedCurrencyAddress, isCurrencySorted, isUnifiedCurrencySorted, sortCurrencies, sortUnifiedCurrencies, sortedInsert, sqrt, validateVMTypeInstance };