@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
224 lines (220 loc) • 10.1 kB
TypeScript
import { Connection, PublicKey, EpochInfo } from '@solana/web3.js';
import BN__default from 'bn.js';
import { PoolInfoLayout, DynamicFeeInfoLayout, RewardInfoLayout, TickArrayBitmapExtensionLayout, TickArrayLayout } from '../layout.js';
import { q as ApiV3PoolInfoConcentratedItem, j as ApiV3Token } from '../../../api-23ae421b.js';
import { ClmmPoolRewardInfo, ComputeClmmPoolInfo, ReturnTypeFetchExBitmaps, ReturnTypeFetchMultiplePoolTickArrays, ReturnTypeComputeAmountOut, ReturnTypeComputeAmountOutFormat, ReturnTypeComputeAmountOutBaseOut, ReturnTypeGetLiquidityAmountOut } from '../type.js';
import Decimal from 'decimal.js';
import '../../../marshmallow/index.js';
import '../../../marshmallow/buffer-layout.js';
import 'axios';
import '../../../solana/type.js';
import '@solana/spl-token';
import '../../../api/url.js';
import '../../../common/owner.js';
import '../../../common/txTool/lookupTable.js';
import '../../../common/txTool/txType.js';
import '../../../module/token.js';
import '../../../common/pubKey.js';
import '../../../common/logger.js';
import '../../../module/currency.js';
import './constants.js';
declare class PoolFee {
static tickSpacingIndexFromTick(tickIndex: number, tickSpacing: number): number;
}
declare class DynamicFeeInfo {
static getDynamicFeeInfo({ poolInfo }: {
poolInfo: ReturnType<typeof PoolInfoLayout.decode>;
}): {
filterPeriod: number;
decayPeriod: number;
reductionFactor: number;
dynamicFeeControl: number;
maxVolatilityAccumulator: number;
tickSpacingIndexReference: number;
volatilityReference: number;
volatilityAccumulator: number;
lastUpdateTimestamp: BN__default;
} | undefined;
static updateReference({ dynamicFeeInfo, tickSpacingIndex, currentTimestamp, }: {
dynamicFeeInfo: ReturnType<typeof DynamicFeeInfoLayout.decode>;
tickSpacingIndex: number;
currentTimestamp: number;
}): void;
static updateVolatilityAccumulator({ state, tickSpacingIndex, }: {
state: ReturnType<typeof DynamicFeeInfoLayout.decode>;
tickSpacingIndex: number;
}): void;
}
declare class PoolUtil {
static isFeeOnInput(feeOn: number, zeroForOne: boolean): boolean;
static isFeeOnTokenA(poolInfo: ReturnType<typeof PoolInfoLayout.decode>, zeroForOne: boolean): boolean;
static isOverflowDefaultTickarrayBitmap({ tickSpacing, tickIndexs }: {
tickSpacing: number;
tickIndexs: number[];
}): boolean;
static tickArrayStartIndexRange({ tickSpacing }: {
tickSpacing: number;
}): {
maxTickBoundary: number;
minTickBoundary: number;
};
static updatePoolRewardInfos({ connection, apiPoolInfo, chainTime, poolLiquidity, rewardInfos, }: {
connection: Connection;
apiPoolInfo: ApiV3PoolInfoConcentratedItem;
chainTime: number;
poolLiquidity: BN__default;
rewardInfos: ReturnType<typeof RewardInfoLayout.decode>[];
}): Promise<ClmmPoolRewardInfo[]>;
}
declare class PoolUtils {
static getOutputAmountAndRemainAccounts(poolInfo: ComputeClmmPoolInfo, tickarrayBitmapExtension: ReturnType<typeof TickArrayBitmapExtensionLayout.decode>, tickArrayCache: {
[key: string]: ReturnType<typeof TickArrayLayout.decode> & {
address: PublicKey;
};
}, inputTokenMint: PublicKey, inputAmount: BN__default, blockTimestamp: number, sqrtPriceLimitX64?: BN__default): {
allTrade: boolean;
expectedAmountOut: BN__default;
remainingAccounts: PublicKey[];
executionPrice: BN__default;
feeAmount: BN__default;
};
static getInputAmountAndRemainAccounts(poolInfo: ComputeClmmPoolInfo, tickarrayBitmapExtension: ReturnType<typeof TickArrayBitmapExtensionLayout.decode>, tickArrayCache: {
[key: string]: ReturnType<typeof TickArrayLayout.decode>;
}, outputTokenMint: PublicKey, outputAmount: BN__default, blockTimestamp: number, sqrtPriceLimitX64?: BN__default): {
allTrade: boolean;
expectedAmountIn: BN__default;
remainingAccounts: PublicKey[];
executionPrice: BN__default;
feeAmount: BN__default;
};
static fetchExBitmaps({ connection, exBitmapAddress, batchRequest, }: {
connection: Connection;
exBitmapAddress: PublicKey[];
batchRequest: boolean;
}): Promise<ReturnTypeFetchExBitmaps>;
static fetchMultiplePoolTickArrays({ connection, poolKeys, batchRequest, }: {
connection: Connection;
poolKeys: Omit<ComputeClmmPoolInfo, "ammConfig">[];
batchRequest?: boolean;
}): Promise<ReturnTypeFetchMultiplePoolTickArrays>;
static computeAmountOut({ poolInfo, tickarrayBitmapExtension, tickArrayCache, baseMint, epochInfo, amountIn, slippage, blockTimestamp, priceLimit, }: {
poolInfo: ComputeClmmPoolInfo;
tickarrayBitmapExtension: ReturnType<typeof TickArrayBitmapExtensionLayout.decode>;
tickArrayCache: {
[key: string]: ReturnType<typeof TickArrayLayout.decode> & {
address: PublicKey;
};
};
baseMint: PublicKey;
epochInfo: EpochInfo;
amountIn: BN__default;
slippage: number;
priceLimit?: Decimal;
catchLiquidityInsufficient: boolean;
blockTimestamp: number;
}): ReturnTypeComputeAmountOut;
static computeAmountOutFormat({ poolInfo, tickarrayBitmapExtension, tickArrayCache, amountIn, tokenOut: _tokenOut, slippage, epochInfo, blockTimestamp, catchLiquidityInsufficient, }: {
poolInfo: ComputeClmmPoolInfo;
tickarrayBitmapExtension: ReturnType<typeof TickArrayBitmapExtensionLayout.decode>;
tickArrayCache: {
[key: string]: ReturnType<typeof TickArrayLayout.decode> & {
address: PublicKey;
};
};
amountIn: BN__default;
tokenOut: ApiV3Token;
slippage: number;
epochInfo: EpochInfo;
blockTimestamp: number;
catchLiquidityInsufficient?: boolean;
}): ReturnTypeComputeAmountOutFormat;
static computeAmountIn({ poolInfo, tickarrayBitmapExtension, tickArrayCache, baseMint, epochInfo, amountOut, slippage, priceLimit, blockTimestamp, }: {
poolInfo: ComputeClmmPoolInfo;
tickarrayBitmapExtension: ReturnType<typeof TickArrayBitmapExtensionLayout.decode>;
tickArrayCache: {
[key: string]: ReturnType<typeof TickArrayLayout.decode>;
};
baseMint: PublicKey;
epochInfo: EpochInfo;
amountOut: BN__default;
slippage: number;
priceLimit?: Decimal;
blockTimestamp: number;
}): ReturnTypeComputeAmountOutBaseOut;
static estimateAprsForPriceRangeMultiplier({ poolInfo, aprType, positionTickLowerIndex, positionTickUpperIndex, }: {
poolInfo: ApiV3PoolInfoConcentratedItem;
aprType: "day" | "week" | "month";
positionTickLowerIndex: number;
positionTickUpperIndex: number;
}): {
feeApr: number;
rewardsApr: number[];
apr: number;
};
static estimateAprsForPriceRangeDelta({ poolInfo, poolLiquidity, aprType, mintPrice, liquidity, positionTickLowerIndex, positionTickUpperIndex, chainTime, }: {
poolInfo: ApiV3PoolInfoConcentratedItem;
poolLiquidity: BN__default;
aprType: "day" | "week" | "month";
mintPrice: {
[mint: string]: {
value: number;
};
};
liquidity: BN__default;
positionTickLowerIndex: number;
positionTickUpperIndex: number;
chainTime: number;
}): {
feeApr: number;
rewardsApr: number[];
apr: number;
};
static getLiquidityAmountOutFromAmountIn({ poolInfo, inputA, tickLower, tickUpper, amount, slippage, add, epochInfo, amountHasFee, }: {
poolInfo: ApiV3PoolInfoConcentratedItem;
inputA: boolean;
tickLower: number;
tickUpper: number;
amount: BN__default;
slippage: number;
add: boolean;
epochInfo: EpochInfo;
amountHasFee: boolean;
}): Promise<ReturnTypeGetLiquidityAmountOut>;
static getAmountsFromLiquidity({ epochInfo, poolInfo, tickLower, tickUpper, liquidity, slippage, add, }: {
epochInfo: EpochInfo;
poolInfo: ApiV3PoolInfoConcentratedItem;
tickLower: number;
tickUpper: number;
liquidity: BN__default;
slippage: number;
add: boolean;
}): Promise<ReturnTypeGetLiquidityAmountOut>;
static fetchComputeMultipleClmmInfo({ connection, poolList, rpcDataMap, }: {
rpcDataMap?: Record<string, ReturnType<typeof PoolInfoLayout.decode>>;
connection: Connection;
poolList: Pick<ApiV3PoolInfoConcentratedItem, "id" | "programId" | "mintA" | "mintB" | "config" | "price">[];
}): Promise<Record<string, ComputeClmmPoolInfo>>;
static fetchComputeClmmInfo({ connection, poolInfo, rpcData, }: {
connection: Connection;
poolInfo: Pick<ApiV3PoolInfoConcentratedItem, "id" | "programId" | "mintA" | "mintB" | "config" | "price">;
rpcData?: ReturnType<typeof PoolInfoLayout.decode>;
}): Promise<ComputeClmmPoolInfo>;
static fetchTickArrayInfo({ connection, programId, poolId, tick, tickSpacing, }: {
connection: Connection;
programId: PublicKey;
poolId: PublicKey;
tick: number;
tickSpacing: number;
}): Promise<ReturnType<typeof TickArrayLayout.decode>>;
static fetchMultipleTickArrayInfo({ connection, tickInfoList, }: {
connection: Connection;
tickInfoList: {
programId: PublicKey;
poolId: PublicKey;
tick: number;
tickSpacing: number;
}[];
}): Promise<(ReturnType<typeof TickArrayLayout.decode> | null)[]>;
}
declare function clmmComputeInfoToApiInfo(pool: ComputeClmmPoolInfo): ApiV3PoolInfoConcentratedItem;
export { DynamicFeeInfo, PoolFee, PoolUtil, PoolUtils, clmmComputeInfoToApiInfo };