@percolatorct/sdk 1.0.0-beta.17 → 1.0.0-beta.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +33 -29
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1619,8 +1619,9 @@ var V12_1_ACCT_POSITION_SIZE_OFF = 88;
|
|
|
1619
1619
|
var V12_1_ACCT_ENTRY_PRICE_OFF = -1;
|
|
1620
1620
|
var V12_1_ACCT_FUNDING_INDEX_OFF = 288;
|
|
1621
1621
|
var V12_15_ENGINE_OFF = 624;
|
|
1622
|
+
var V12_15_ENGINE_OFF_SBF = 616;
|
|
1622
1623
|
var V12_15_ACCOUNT_SIZE = 4400;
|
|
1623
|
-
var V12_15_ACCOUNT_SIZE_SMALL =
|
|
1624
|
+
var V12_15_ACCOUNT_SIZE_SMALL = 920;
|
|
1624
1625
|
var V12_15_ACCT_ACCOUNT_ID_OFF = 0;
|
|
1625
1626
|
var V12_15_ACCT_CAPITAL_OFF = 8;
|
|
1626
1627
|
var V12_15_ACCT_KIND_OFF = 24;
|
|
@@ -2348,15 +2349,17 @@ function buildLayoutV12_1(maxAccounts, dataLen) {
|
|
|
2348
2349
|
engineInsuranceIsolationBpsOff: isSbf ? -1 : 64
|
|
2349
2350
|
};
|
|
2350
2351
|
}
|
|
2351
|
-
function buildLayoutV12_15(maxAccounts) {
|
|
2352
|
-
const
|
|
2352
|
+
function buildLayoutV12_15(maxAccounts, dataLen) {
|
|
2353
|
+
const isSbf = dataLen === 237512;
|
|
2354
|
+
const accountSize = isSbf ? V12_15_ACCOUNT_SIZE_SMALL : V12_15_ACCOUNT_SIZE;
|
|
2355
|
+
const engineOff = isSbf ? V12_15_ENGINE_OFF_SBF : V12_15_ENGINE_OFF;
|
|
2353
2356
|
const bitmapOff = V12_15_ENGINE_BITMAP_OFF;
|
|
2354
|
-
const
|
|
2357
|
+
const effectiveBitmapOff = isSbf ? 640 : bitmapOff;
|
|
2355
2358
|
const bitmapWords = Math.ceil(maxAccounts / 64);
|
|
2356
2359
|
const bitmapBytes = bitmapWords * 8;
|
|
2357
2360
|
const postBitmap = 18;
|
|
2358
2361
|
const nextFreeBytes = maxAccounts * 2;
|
|
2359
|
-
const preAccountsLen =
|
|
2362
|
+
const preAccountsLen = effectiveBitmapOff + bitmapBytes + postBitmap + nextFreeBytes;
|
|
2360
2363
|
const accountsOffRel = Math.ceil(preAccountsLen / 8) * 8;
|
|
2361
2364
|
return {
|
|
2362
2365
|
version: 2,
|
|
@@ -2376,18 +2379,18 @@ function buildLayoutV12_15(maxAccounts) {
|
|
|
2376
2379
|
engineInsuranceOff: 16,
|
|
2377
2380
|
engineParamsOff: V12_15_ENGINE_PARAMS_OFF,
|
|
2378
2381
|
// 32
|
|
2379
|
-
paramsSize: V12_15_PARAMS_SIZE,
|
|
2380
|
-
// 192
|
|
2381
|
-
engineCurrentSlotOff: V12_15_ENGINE_CURRENT_SLOT_OFF,
|
|
2382
|
-
// 224
|
|
2382
|
+
paramsSize: isSbf ? 184 : V12_15_PARAMS_SIZE,
|
|
2383
|
+
// SBF=184 (no trailing pad), native=192
|
|
2384
|
+
engineCurrentSlotOff: isSbf ? 216 : V12_15_ENGINE_CURRENT_SLOT_OFF,
|
|
2385
|
+
// SBF=216, native=224
|
|
2383
2386
|
engineFundingIndexOff: -1,
|
|
2384
2387
|
// not present in v12.15 engine struct
|
|
2385
2388
|
engineLastFundingSlotOff: -1,
|
|
2386
2389
|
// not present in v12.15 engine struct
|
|
2387
2390
|
// funding_rate_e9 is i128 — stored in engineFundingRateBpsOff for EngineState.fundingRateBpsPerSlotLast
|
|
2388
2391
|
// callers should treat this as the i128 funding rate in e9 units
|
|
2389
|
-
engineFundingRateBpsOff: V12_15_ENGINE_FUNDING_RATE_E9_OFF,
|
|
2390
|
-
// 240
|
|
2392
|
+
engineFundingRateBpsOff: isSbf ? 224 : V12_15_ENGINE_FUNDING_RATE_E9_OFF,
|
|
2393
|
+
// SBF=224, native=240
|
|
2391
2394
|
engineMarkPriceOff: -1,
|
|
2392
2395
|
// not present in v12.15 (removed with oracle refactor)
|
|
2393
2396
|
engineLastCrankSlotOff: -1,
|
|
@@ -2400,10 +2403,10 @@ function buildLayoutV12_15(maxAccounts) {
|
|
|
2400
2403
|
// not present in v12.15 engine
|
|
2401
2404
|
engineShortOiOff: -1,
|
|
2402
2405
|
// not present in v12.15 engine
|
|
2403
|
-
engineCTotOff: V12_15_ENGINE_C_TOT_OFF,
|
|
2404
|
-
// 344
|
|
2405
|
-
enginePnlPosTotOff: V12_15_ENGINE_PNL_POS_TOT_OFF,
|
|
2406
|
-
// 368
|
|
2406
|
+
engineCTotOff: isSbf ? 320 : V12_15_ENGINE_C_TOT_OFF,
|
|
2407
|
+
// SBF=320 (verified on-chain), native=344
|
|
2408
|
+
enginePnlPosTotOff: isSbf ? 336 : V12_15_ENGINE_PNL_POS_TOT_OFF,
|
|
2409
|
+
// SBF=336 (verified), native=368
|
|
2407
2410
|
engineLiqCursorOff: -1,
|
|
2408
2411
|
// not yet mapped
|
|
2409
2412
|
engineGcCursorOff: -1,
|
|
@@ -2434,7 +2437,8 @@ function buildLayoutV12_15(maxAccounts) {
|
|
|
2434
2437
|
// not present in v12.15
|
|
2435
2438
|
engineLastBreakerSlotOff: -1,
|
|
2436
2439
|
// not present in v12.15
|
|
2437
|
-
engineBitmapOff:
|
|
2440
|
+
engineBitmapOff: effectiveBitmapOff,
|
|
2441
|
+
// SBF=640, native=862
|
|
2438
2442
|
postBitmap,
|
|
2439
2443
|
acctOwnerOff: V12_15_ACCT_OWNER_OFF,
|
|
2440
2444
|
// 192
|
|
@@ -2446,7 +2450,7 @@ function buildLayoutV12_15(maxAccounts) {
|
|
|
2446
2450
|
}
|
|
2447
2451
|
function detectSlabLayout(dataLen, data) {
|
|
2448
2452
|
const v1215n = V12_15_SIZES.get(dataLen);
|
|
2449
|
-
if (v1215n !== void 0) return buildLayoutV12_15(v1215n);
|
|
2453
|
+
if (v1215n !== void 0) return buildLayoutV12_15(v1215n, dataLen);
|
|
2450
2454
|
const v121n = V12_1_SIZES.get(dataLen);
|
|
2451
2455
|
if (v121n !== void 0) return buildLayoutV12_1(v121n, dataLen);
|
|
2452
2456
|
const vsdpn = V_SETDEXPOOL_SIZES.get(dataLen);
|
|
@@ -2742,7 +2746,7 @@ function parseParams(data, layoutHint) {
|
|
|
2742
2746
|
if (data.length < base + Math.min(paramsSize, 56)) {
|
|
2743
2747
|
throw new Error("Slab data too short for RiskParams");
|
|
2744
2748
|
}
|
|
2745
|
-
const isV12_15Params = paramsSize === V12_15_PARAMS_SIZE;
|
|
2749
|
+
const isV12_15Params = paramsSize === V12_15_PARAMS_SIZE || paramsSize === 184;
|
|
2746
2750
|
const result = {
|
|
2747
2751
|
warmupPeriodSlots: isV12_15Params ? readU64LE(data, base + V12_15_PARAMS_H_MIN_OFF) : readU64LE(data, base + PARAMS_WARMUP_PERIOD_OFF),
|
|
2748
2752
|
maintenanceMarginBps: readU64LE(data, base + PARAMS_MAINTENANCE_MARGIN_OFF),
|
|
@@ -2764,13 +2768,13 @@ function parseParams(data, layoutHint) {
|
|
|
2764
2768
|
if (isV12_15Params) {
|
|
2765
2769
|
result.hMin = readU64LE(data, base + V12_15_PARAMS_H_MIN_OFF);
|
|
2766
2770
|
result.hMax = readU64LE(data, base + V12_15_PARAMS_H_MAX_OFF);
|
|
2767
|
-
result.riskReductionThreshold =
|
|
2768
|
-
result.maintenanceFeePerSlot =
|
|
2769
|
-
result.maxCrankStalenessSlots = readU64LE(data, base +
|
|
2770
|
-
result.liquidationFeeBps = readU64LE(data, base +
|
|
2771
|
-
result.liquidationFeeCap = readU128LE(data, base +
|
|
2772
|
-
result.liquidationBufferBps =
|
|
2773
|
-
result.minLiquidationAbs = readU128LE(data, base +
|
|
2771
|
+
result.riskReductionThreshold = 0n;
|
|
2772
|
+
result.maintenanceFeePerSlot = 0n;
|
|
2773
|
+
result.maxCrankStalenessSlots = readU64LE(data, base + 48);
|
|
2774
|
+
result.liquidationFeeBps = readU64LE(data, base + 56);
|
|
2775
|
+
result.liquidationFeeCap = readU128LE(data, base + 64);
|
|
2776
|
+
result.liquidationBufferBps = 0n;
|
|
2777
|
+
result.minLiquidationAbs = readU128LE(data, base + 80);
|
|
2774
2778
|
} else if (paramsSize >= 144) {
|
|
2775
2779
|
result.riskReductionThreshold = readU128LE(data, base + PARAMS_RISK_THRESHOLD_OFF);
|
|
2776
2780
|
result.maintenanceFeePerSlot = readU128LE(data, base + PARAMS_MAINTENANCE_FEE_OFF);
|
|
@@ -2790,8 +2794,8 @@ function parseEngine(data) {
|
|
|
2790
2794
|
throw new Error(`Unrecognized slab data length: ${data.length}. Cannot determine layout version.`);
|
|
2791
2795
|
}
|
|
2792
2796
|
const base = layout.engineOff;
|
|
2793
|
-
const isV12_15 =
|
|
2794
|
-
const fundingRateBpsPerSlotLast = isV12_15 ? readI128LE(data, base +
|
|
2797
|
+
const isV12_15 = layout.accountSize === V12_15_ACCOUNT_SIZE || layout.accountSize === V12_15_ACCOUNT_SIZE_SMALL;
|
|
2798
|
+
const fundingRateBpsPerSlotLast = isV12_15 ? readI128LE(data, base + layout.engineFundingRateBpsOff) : readI64LE(data, base + layout.engineFundingRateBpsOff);
|
|
2795
2799
|
return {
|
|
2796
2800
|
vault: readU128LE(data, base),
|
|
2797
2801
|
insuranceFund: {
|
|
@@ -2805,7 +2809,7 @@ function parseEngine(data) {
|
|
|
2805
2809
|
fundingIndexQpbE6: layout.engineFundingIndexOff >= 0 ? readI128LE(data, base + layout.engineFundingIndexOff) : 0n,
|
|
2806
2810
|
lastFundingSlot: layout.engineLastFundingSlotOff >= 0 ? readU64LE(data, base + layout.engineLastFundingSlotOff) : 0n,
|
|
2807
2811
|
fundingRateBpsPerSlotLast,
|
|
2808
|
-
fundingRateE9: isV12_15 ? readI128LE(data, base +
|
|
2812
|
+
fundingRateE9: isV12_15 ? readI128LE(data, base + layout.engineFundingRateBpsOff) : 0n,
|
|
2809
2813
|
marketMode: isV12_15 ? readU8(data, base + V12_15_ENGINE_MARKET_MODE_OFF) === 1 ? 1 : 0 : null,
|
|
2810
2814
|
lastCrankSlot: layout.engineLastCrankSlotOff >= 0 ? readU64LE(data, base + layout.engineLastCrankSlotOff) : 0n,
|
|
2811
2815
|
maxCrankStalenessSlots: layout.engineMaxCrankStalenessOff >= 0 ? readU64LE(data, base + layout.engineMaxCrankStalenessOff) : 0n,
|
|
@@ -4160,7 +4164,7 @@ function deriveStakeVaultAuth(pool, programId) {
|
|
|
4160
4164
|
}
|
|
4161
4165
|
function deriveDepositPda(pool, user, programId) {
|
|
4162
4166
|
return PublicKey10.findProgramAddressSync(
|
|
4163
|
-
[TEXT.encode("
|
|
4167
|
+
[TEXT.encode("stake_deposit"), pool.toBytes(), user.toBytes()],
|
|
4164
4168
|
programId ?? getStakeProgramId()
|
|
4165
4169
|
);
|
|
4166
4170
|
}
|