@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
148 lines (145 loc) • 5.9 kB
TypeScript
import { PublicKey, Connection } from '@solana/web3.js';
import BN__default from 'bn.js';
import Decimal from 'decimal.js';
import { PoolInfoLayout, TickArrayBitmapExtensionLayout, TickArrayLayout, TickLayout } from '../layout.js';
import '../../../marshmallow/index.js';
import '../../../marshmallow/buffer-layout.js';
interface LimitOrderMatchResult {
amountIn: BN__default;
amountOut: BN__default;
ammFeeAmount: BN__default;
}
declare class TickArrayBitmapUtil {
private static scanLinearBitmap;
private static findPoolBitmap;
private static findPositiveTickArrayBitmap;
private static findNegativeTickArrayBitmap;
static findTickArrayStartIndex({ tickSpacing, poolBitmap, tickArrayBitmap, findInfo, }: {
tickSpacing: number;
poolBitmap: ReturnType<typeof PoolInfoLayout.decode>["tickArrayBitmap"];
tickArrayBitmap: ReturnType<typeof TickArrayBitmapExtensionLayout.decode>;
findInfo: {
type: "zeroForOne" | "oneForZero";
count?: number;
tickArrayCurrent: number;
} | {
type: "all";
};
}): number[];
private static collectUntil;
static findTickArrayAddress(params: {
programId: PublicKey;
poolId: PublicKey;
tickSpacing: number;
poolBitmap: ReturnType<typeof PoolInfoLayout.decode>["tickArrayBitmap"];
tickArrayBitmap: ReturnType<typeof TickArrayBitmapExtensionLayout.decode>;
findInfo: {
type: "zeroForOne" | "oneForZero";
count?: number;
tickArrayCurrent: number;
} | {
type: "all";
};
}): PublicKey[];
static maxTickInTickarrayBitmap(tickSpacing: number): number;
}
declare class TickArrayUtil {
static firstinitializedTick({ data, zeroForOne, }: {
data: ReturnType<typeof TickArrayLayout.decode>;
zeroForOne: boolean;
}): {
tick: number;
liquidityNet: BN__default;
liquidityGross: BN__default;
feeGrowthOutsideX64A: BN__default;
feeGrowthOutsideX64B: BN__default;
rewardGrowthsOutsideX64: BN__default[];
orderPhase: BN__default;
ordersAmount: BN__default;
partFilledOrdersRemaining: BN__default;
unfilledRatioX64: BN__default;
} | undefined;
static nextInitalizedTick({ data, currentTickIndex, tickSpacing, zeroForOne, }: {
data: ReturnType<typeof TickArrayLayout.decode>;
currentTickIndex: number;
tickSpacing: number;
zeroForOne: boolean;
}): {
tick: number;
liquidityNet: BN__default;
liquidityGross: BN__default;
feeGrowthOutsideX64A: BN__default;
feeGrowthOutsideX64B: BN__default;
rewardGrowthsOutsideX64: BN__default[];
orderPhase: BN__default;
ordersAmount: BN__default;
partFilledOrdersRemaining: BN__default;
unfilledRatioX64: BN__default;
} | undefined;
static getTickArrayStartIndex(tickIndex: number, tickSpacing: number): number;
static getTickOffsetInArray(tick: number, tickSpacing: number): number;
static tickCount(tickSpacing: number): number;
static getMinTick(tickSpacing: number): number;
static getMaxTick(tickSpacing: number): number;
}
declare class TickUtil {
static isInitialized({ data }: {
data: ReturnType<typeof TickLayout.decode>;
}): boolean;
static hasLimitOrders({ data }: {
data: ReturnType<typeof TickLayout.decode>;
}): boolean;
static hasLiquidity({ data }: {
data: ReturnType<typeof TickLayout.decode>;
}): boolean;
static isValidTick(tick: number): boolean;
static checkTick(tick: number): void;
static getSqrtPriceAtTick(tick: number): BN__default;
static getLimitOrderOutput({ amountIn, tick, zeroForOne }: {
amountIn: BN__default;
tick: number;
zeroForOne: boolean;
}): BN__default;
static getLimitOrderInput({ amountOut, tick, zeroForOne }: {
amountOut: BN__default;
tick: number;
zeroForOne: boolean;
}): BN__default;
static limitOrderUnfilledAmount({ tick }: {
tick: ReturnType<typeof TickLayout.decode>;
}): BN__default;
static matchLimitOrder({ tick, swapAmount, swapDirectionZeroForOne, isBaseInput, feeRate, isFeeOnInput, }: {
tick: ReturnType<typeof TickLayout.decode>;
swapAmount: BN__default;
swapDirectionZeroForOne: boolean;
isBaseInput: boolean;
feeRate: number;
isFeeOnInput: boolean;
}): LimitOrderMatchResult;
private static getPriceAtTick;
static getTickAtSqrtPrice(sqrtPriceX64: BN__default): number;
private static signedShrn64;
static sqrtPriceX64ToPrice(sqrtPriceX64: BN__default, decimalsA: number, decimalsB: number): Decimal;
static tickToPrice(tick: number, decimalsA: number, decimalsB: number): Decimal;
static priceToTick(price: Decimal, decimalsA: number, decimalsB: number): number;
static priceToSqrtPriceX64(price: Decimal, decimalsA: number, decimalsB: number): BN__default;
static toTickIndex(tick: number, tickSpacing: number): number;
static getPriceAndTick({ price, mintADecimals, mintBDecimals, zeroForOne, tickSpacing, }: {
price: Decimal;
mintADecimals: number;
mintBDecimals: number;
zeroForOne: boolean;
tickSpacing: number;
}): {
tick: number;
price: Decimal;
};
}
/**
* Fetch tick arrays for swap simulation
*/
declare function fetchTickArrays(programId: PublicKey, connection: Connection, poolId: PublicKey, currentTick: number, tickSpacing: number, tickArrayBitmap: Buffer, zeroForOne?: boolean): Promise<{
address: PublicKey;
value: ReturnType<typeof TickArrayLayout.decode>;
}[]>;
export { LimitOrderMatchResult, TickArrayBitmapUtil, TickArrayUtil, TickUtil, fetchTickArrays };