/// import type { TokenInfo } from "@saberhq/token-utils"; import { Token, TokenAmount } from "@saberhq/token-utils"; import type { Connection, PublicKey } from "@solana/web3.js"; import { StableSwap } from "../stable-swap.js"; import type { Fees } from "../state/fees.js"; import type { StableSwapState } from "../state/index.js"; /** * Reserve information. */ export interface IReserve { /** * Swap account holding the reserve tokens */ reserveAccount: PublicKey; /** * Destination account of admin fees of this reserve token */ adminFeeAccount: PublicKey; /** * Amount of tokens in the reserve */ amount: TokenAmount; } /** * Static definition of an exchange. */ export interface IExchange { programID: PublicKey; swapAccount: PublicKey; lpToken: Token; tokens: readonly [Token, Token]; } /** * Info loaded from the exchange. This is used by the calculator. */ export interface IExchangeInfo { ampFactor: bigint; fees: Fees; lpTotalSupply: TokenAmount; reserves: readonly [IReserve, IReserve]; } /** * Calculates the amp factor of a swap. * @param state * @param now * @returns */ export declare const calculateAmpFactor: (state: Pick, now?: number) => bigint; /** * Creates an IExchangeInfo from parameters. * @returns */ export declare const makeExchangeInfo: ({ exchange, swap, accounts, }: { exchange: IExchange; swap: StableSwap; accounts: { reserveA: Buffer; reserveB: Buffer; poolMint?: Buffer; }; }) => IExchangeInfo; /** * Loads exchange info. * @param exchange * @param swap * @returns */ export declare const loadExchangeInfo: (connection: Connection, exchange: IExchange, swap: StableSwap) => Promise; /** * Simplified representation of an IExchange. Useful for configuration. */ export interface ExchangeBasic { /** * Swap account. */ swapAccount: PublicKey; /** * Mint of the LP token. */ lpToken: PublicKey; /** * Info of token A. */ tokenA: TokenInfo; /** * Info of token B. */ tokenB: TokenInfo; } /** * Creates an IExchange from an ExchangeBasic. * @param tokenMap * @param param1 * @returns */ export declare const makeExchange: ({ swapAccount, lpToken, tokenA, tokenB, }: ExchangeBasic) => IExchange | null; /** * Get exchange info from just the swap account. * @param connection * @param swapAccount * @param tokenA * @param tokenB * @returns */ export declare const loadExchangeInfoFromSwapAccount: (connection: Connection, swapAccount: PublicKey, tokenA?: Token | undefined, tokenB?: Token | undefined) => Promise; //# sourceMappingURL=exchange.d.ts.map