@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
177 lines (149 loc) • 4.18 kB
text/typescript
import { blob, bool, i128, i64, publicKey, s32, seq, struct, u128, u16, u32, u64, u8 } from "../../marshmallow";
import { TICK_ARRAY_SIZE } from "./utils/tick";
import { EXTENSION_TICKARRAY_BITMAP_SIZE } from "./utils/tickarrayBitmap";
export const ClmmConfigLayout = struct([
blob(8),
u8("bump"),
u16("index"),
publicKey(""),
u32("protocolFeeRate"),
u32("tradeFeeRate"),
u16("tickSpacing"),
seq(u64(), 8, ""),
]);
export const ObservationLayout = struct([u32("blockTimestamp"), i64("tickCumulative"), seq(u64(), 4)]);
export const ObservationInfoLayout = struct([
blob(8),
bool("initialized"),
u64("recentEpoch"),
u16("observationIndex"),
publicKey("poolId"),
seq(ObservationLayout, 100, "observations"),
seq(u64(), 4),
]);
export const RewardInfo = struct([
u8("rewardState"),
u64("openTime"),
u64("endTime"),
u64("lastUpdateTime"),
u128("emissionsPerSecondX64"),
u64("rewardTotalEmissioned"),
u64("rewardClaimed"),
publicKey("tokenMint"),
publicKey("tokenVault"),
publicKey("creator"),
u128("rewardGrowthGlobalX64"),
]);
export const PoolInfoLayout = struct([
blob(8),
u8("bump"),
publicKey("ammConfig"),
publicKey("creator"),
publicKey("mintA"),
publicKey("mintB"),
publicKey("vaultA"),
publicKey("vaultB"),
publicKey("observationId"),
u8("mintDecimalsA"),
u8("mintDecimalsB"),
u16("tickSpacing"),
u128("liquidity"),
u128("sqrtPriceX64"),
s32("tickCurrent"),
u32(),
u128("feeGrowthGlobalX64A"),
u128("feeGrowthGlobalX64B"),
u64("protocolFeesTokenA"),
u64("protocolFeesTokenB"),
u128("swapInAmountTokenA"),
u128("swapOutAmountTokenB"),
u128("swapInAmountTokenB"),
u128("swapOutAmountTokenA"),
u8("status"),
seq(u8(), 7, ""),
seq(RewardInfo, 3, "rewardInfos"),
seq(u64(), 16, "tickArrayBitmap"),
u64("totalFeesTokenA"),
u64("totalFeesClaimedTokenA"),
u64("totalFeesTokenB"),
u64("totalFeesClaimedTokenB"),
u64("fundFeesTokenA"),
u64("fundFeesTokenB"),
u64("startTime"),
seq(u64(), 15 * 4 - 3, "padding"),
]);
export const PositionRewardInfoLayout = struct([u128("growthInsideLastX64"), u64("rewardAmountOwed")]);
export const PositionInfoLayout = struct([
blob(8),
u8("bump"),
publicKey("nftMint"),
publicKey("poolId"),
s32("tickLower"),
s32("tickUpper"),
u128("liquidity"),
u128("feeGrowthInsideLastX64A"),
u128("feeGrowthInsideLastX64B"),
u64("tokenFeesOwedA"),
u64("tokenFeesOwedB"),
seq(PositionRewardInfoLayout, 3, "rewardInfos"),
seq(u64(), 8, ""),
]);
export type ClmmPositionLayout = ReturnType<typeof PositionInfoLayout.decode>;
export const ProtocolPositionLayout = struct([
blob(8),
u8("bump"),
publicKey("poolId"),
s32("tickLowerIndex"),
s32("tickUpperIndex"),
u128("liquidity"),
u128("feeGrowthInsideLastX64A"),
u128("feeGrowthInsideLastX64B"),
u64("tokenFeesOwedA"),
u64("tokenFeesOwedB"),
seq(u128(), 3, "rewardGrowthInside"),
seq(u64(), 8, ""),
]);
export const TickLayout = struct([
s32("tick"),
i128("liquidityNet"),
u128("liquidityGross"),
u128("feeGrowthOutsideX64A"),
u128("feeGrowthOutsideX64B"),
seq(u128(), 3, "rewardGrowthsOutsideX64"),
seq(u32(), 13, ""),
]);
export const TickArrayLayout = struct([
blob(8),
publicKey("poolId"),
s32("startTickIndex"),
seq(TickLayout, TICK_ARRAY_SIZE, "ticks"),
u8("initializedTickCount"),
seq(u8(), 115, ""),
]);
export const OperationLayout = struct([blob(329), seq(publicKey(), 100, "whitelistMints")]);
export const TickArrayBitmapExtensionLayout = struct([
blob(8),
publicKey("poolId"),
seq(seq(u64(), 8), EXTENSION_TICKARRAY_BITMAP_SIZE, "positiveTickArrayBitmap"),
seq(seq(u64(), 8), EXTENSION_TICKARRAY_BITMAP_SIZE, "negativeTickArrayBitmap"),
]);
export const LockPositionLayout = struct([
u64(),
u8("bump"),
publicKey("owner"),
publicKey("poolId"),
publicKey("positionId"),
publicKey("nftAccount"),
seq(u64(), 8),
]);
export const LockClPositionLayoutV2 = struct([
blob(8),
u8("bump"),
publicKey("lockOwner"),
publicKey("poolId"),
publicKey("positionId"),
publicKey("nftAccount"),
publicKey("lockNftMint"),
u64("recentEpoch"),
seq(u64(), 8),
]);