import { Order } from "@dradex/idl"; import { Mint } from "@solana/spl-token"; import { PublicKey } from "@solana/web3.js"; import JSBI from "jsbi"; import { MarketState } from "./core"; export declare enum SwapMode { ExactIn = "ExactIn", ExactOut = "ExactOut" } export declare type TokenMintAddress = string; export interface QuoteParams { sourceMint: PublicKey; destinationMint: PublicKey; amount: JSBI; swapMode: SwapMode; } export interface Quote { notEnoughLiquidity: boolean; minInAmount?: JSBI; minOutAmount?: JSBI; inAmount: JSBI; outAmount: JSBI; feeAmount: JSBI; feeMint: TokenMintAddress; feePct: number; priceImpactPct: number; } export interface OrderQuoteResult { lpPrice: number; unitPrice: number; filled: number; cost: number; lpFilled: number; lpCost: number; orderFilled: number; orderCost: number; lpUnitPrice: number; orderUnitPrice: number; quantity: number; remaining: number; remainingTotal: number; computeSteps: number; output: { grossAmount: number; feeAmount: number; feePct: number; }; } export declare class ParsedOrder { price: number; quantity: number; } export declare class QuoteCalculator { market: MarketState; orderBook: { bids: Order[]; asks: Order[]; }; tokens: Mint[]; private formatting; private pool; private orders; private feeRates; private basePrices; constructor(market: MarketState, orderBook: { bids: Order[]; asks: Order[]; }, tokens: Mint[]); private getMarketFormatting; private parseOrder; private toUiAmount; private toProgramAmount; private toUiPrice; private isBetterOffer; private getBetterOffer; evaluateOrder(side: number, amount?: number, limitPrice?: number, limitTotal?: number): OrderQuoteResult; private applyFees; checkMinimumAmounts(side: number, inAmount: JSBI, outAmount: JSBI): { outAmount: JSBI; minOutAmount: JSBI; minInAmount?: undefined; } | { outAmount: JSBI; minInAmount: JSBI; minOutAmount?: undefined; }; getQuote(params: QuoteParams): Quote; } //# sourceMappingURL=quote.d.ts.map