@percolatorct/sdk 1.0.0-beta.11 → 1.0.0-beta.13
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 +83 -51
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -1571,8 +1571,23 @@ var V12_1_ENGINE_OFF = 648;
|
|
|
1571
1571
|
var V12_1_ACCOUNT_SIZE = 320;
|
|
1572
1572
|
var V12_1_ACCOUNT_SIZE_SBF = 280;
|
|
1573
1573
|
var V12_1_ENGINE_BITMAP_OFF = 1016;
|
|
1574
|
-
var
|
|
1574
|
+
var V12_1_ENGINE_PARAMS_OFF_SBF = 32;
|
|
1575
|
+
var V12_1_ENGINE_PARAMS_OFF_HOST = 96;
|
|
1576
|
+
var V12_1_PARAMS_SIZE_SBF = 184;
|
|
1575
1577
|
var V12_1_PARAMS_SIZE = 352;
|
|
1578
|
+
var V12_1_SBF_OFF_CURRENT_SLOT = 216;
|
|
1579
|
+
var V12_1_SBF_OFF_FUNDING_RATE = 224;
|
|
1580
|
+
var V12_1_SBF_OFF_LAST_CRANK_SLOT = 232;
|
|
1581
|
+
var V12_1_SBF_OFF_MAX_CRANK_STALENESS = 240;
|
|
1582
|
+
var V12_1_SBF_OFF_C_TOT = 248;
|
|
1583
|
+
var V12_1_SBF_OFF_PNL_POS_TOT = 264;
|
|
1584
|
+
var V12_1_SBF_OFF_LIQ_CURSOR = 296;
|
|
1585
|
+
var V12_1_SBF_OFF_GC_CURSOR = 298;
|
|
1586
|
+
var V12_1_SBF_OFF_LAST_SWEEP_START = 304;
|
|
1587
|
+
var V12_1_SBF_OFF_LAST_SWEEP_COMPLETE = 312;
|
|
1588
|
+
var V12_1_SBF_OFF_CRANK_CURSOR = 320;
|
|
1589
|
+
var V12_1_SBF_OFF_SWEEP_START_IDX = 322;
|
|
1590
|
+
var V12_1_SBF_OFF_LIFETIME_LIQUIDATIONS = 328;
|
|
1576
1591
|
var V12_1_ENGINE_CURRENT_SLOT_OFF = 448;
|
|
1577
1592
|
var V12_1_ENGINE_FUNDING_RATE_BPS_OFF = 456;
|
|
1578
1593
|
var V12_1_ENGINE_LAST_CRANK_SLOT_OFF = 464;
|
|
@@ -1682,12 +1697,13 @@ for (const n of TIERS) {
|
|
|
1682
1697
|
V12_1_SIZES.set(computeSlabSize(V12_1_ENGINE_OFF, V12_1_ENGINE_BITMAP_OFF, V12_1_ACCOUNT_SIZE, n, 18), n);
|
|
1683
1698
|
}
|
|
1684
1699
|
var V12_1_SBF_ACCOUNT_SIZE = 280;
|
|
1685
|
-
var
|
|
1700
|
+
var V12_1_SBF_ENGINE_OFF = 616;
|
|
1701
|
+
var V12_1_SBF_BITMAP_OFF = 584;
|
|
1686
1702
|
for (const [, n] of [["Micro", 64], ["Small", 256], ["Medium", 1024], ["Large", 4096]]) {
|
|
1687
1703
|
const bitmapBytes = Math.ceil(n / 64) * 8;
|
|
1688
|
-
const preAccLen =
|
|
1704
|
+
const preAccLen = V12_1_SBF_BITMAP_OFF + bitmapBytes + 18 + n * 2;
|
|
1689
1705
|
const accountsOff = Math.ceil(preAccLen / 8) * 8;
|
|
1690
|
-
const total =
|
|
1706
|
+
const total = V12_1_SBF_ENGINE_OFF + accountsOff + n * V12_1_SBF_ACCOUNT_SIZE;
|
|
1691
1707
|
V12_1_SIZES.set(total, n);
|
|
1692
1708
|
}
|
|
1693
1709
|
var SLAB_TIERS_V2 = {
|
|
@@ -2217,8 +2233,8 @@ function buildLayoutVSetDexPool(maxAccounts) {
|
|
|
2217
2233
|
function buildLayoutV12_1(maxAccounts, dataLen) {
|
|
2218
2234
|
const hostSize = computeSlabSize(V12_1_ENGINE_OFF, V12_1_ENGINE_BITMAP_OFF, V12_1_ACCOUNT_SIZE, maxAccounts, 18);
|
|
2219
2235
|
const isSbf = dataLen !== void 0 && dataLen !== hostSize;
|
|
2220
|
-
const engineOff = isSbf ?
|
|
2221
|
-
const bitmapOff = isSbf ?
|
|
2236
|
+
const engineOff = isSbf ? V12_1_SBF_ENGINE_OFF : V12_1_ENGINE_OFF;
|
|
2237
|
+
const bitmapOff = isSbf ? V12_1_SBF_BITMAP_OFF : V12_1_ENGINE_BITMAP_OFF - V12_1_ENGINE_OFF;
|
|
2222
2238
|
const accountSize = isSbf ? V12_1_ACCOUNT_SIZE_SBF : V12_1_ACCOUNT_SIZE;
|
|
2223
2239
|
const bitmapWords = Math.ceil(maxAccounts / 64);
|
|
2224
2240
|
const bitmapBytes = bitmapWords * 8;
|
|
@@ -2228,14 +2244,11 @@ function buildLayoutV12_1(maxAccounts, dataLen) {
|
|
|
2228
2244
|
const accountsOffRel = Math.ceil(preAccountsLen / 8) * 8;
|
|
2229
2245
|
return {
|
|
2230
2246
|
version: 1,
|
|
2231
|
-
// V12_1 upstream rebase uses 72-byte header (SlabHeader only, no V1 extension).
|
|
2232
|
-
// Empirically verified: USDC mint found at offset 72 on mainnet slab BVjPc6rd.
|
|
2233
2247
|
headerLen: V0_HEADER_LEN,
|
|
2234
|
-
// 72
|
|
2248
|
+
// 72
|
|
2235
2249
|
configOffset: V0_HEADER_LEN,
|
|
2236
2250
|
// 72
|
|
2237
2251
|
configLen: isSbf ? 544 : 576,
|
|
2238
|
-
// SBF=544, host=576 (alignment diff)
|
|
2239
2252
|
reservedOff: V1_RESERVED_OFF,
|
|
2240
2253
|
engineOff,
|
|
2241
2254
|
accountSize,
|
|
@@ -2243,41 +2256,59 @@ function buildLayoutV12_1(maxAccounts, dataLen) {
|
|
|
2243
2256
|
bitmapWords,
|
|
2244
2257
|
accountsOff: engineOff + accountsOffRel,
|
|
2245
2258
|
engineInsuranceOff: 16,
|
|
2246
|
-
engineParamsOff:
|
|
2247
|
-
paramsSize: V12_1_PARAMS_SIZE,
|
|
2248
|
-
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2259
|
+
engineParamsOff: isSbf ? V12_1_ENGINE_PARAMS_OFF_SBF : V12_1_ENGINE_PARAMS_OFF_HOST,
|
|
2260
|
+
paramsSize: isSbf ? V12_1_PARAMS_SIZE_SBF : V12_1_PARAMS_SIZE,
|
|
2261
|
+
// SBF engine offsets — all verified by cargo build-sbf offset_of! assertions.
|
|
2262
|
+
// Fields that don't exist in the deployed program are set to -1 on SBF.
|
|
2263
|
+
engineCurrentSlotOff: isSbf ? V12_1_SBF_OFF_CURRENT_SLOT : V12_1_ENGINE_CURRENT_SLOT_OFF,
|
|
2264
|
+
engineFundingIndexOff: isSbf ? -1 : V12_1_ENGINE_FUNDING_INDEX_OFF,
|
|
2265
|
+
// not in deployed struct
|
|
2266
|
+
engineLastFundingSlotOff: isSbf ? -1 : V12_1_ENGINE_LAST_FUNDING_SLOT_OFF,
|
|
2267
|
+
// not in deployed struct
|
|
2268
|
+
engineFundingRateBpsOff: isSbf ? V12_1_SBF_OFF_FUNDING_RATE : V12_1_ENGINE_FUNDING_RATE_BPS_OFF,
|
|
2269
|
+
engineMarkPriceOff: isSbf ? -1 : V12_1_ENGINE_MARK_PRICE_OFF,
|
|
2270
|
+
// not in deployed struct
|
|
2271
|
+
engineLastCrankSlotOff: isSbf ? V12_1_SBF_OFF_LAST_CRANK_SLOT : V12_1_ENGINE_LAST_CRANK_SLOT_OFF,
|
|
2272
|
+
engineMaxCrankStalenessOff: isSbf ? V12_1_SBF_OFF_MAX_CRANK_STALENESS : V12_1_ENGINE_MAX_CRANK_STALENESS_OFF,
|
|
2273
|
+
engineTotalOiOff: isSbf ? -1 : V12_1_ENGINE_TOTAL_OI_OFF,
|
|
2274
|
+
// not in deployed struct
|
|
2275
|
+
engineLongOiOff: isSbf ? -1 : V12_1_ENGINE_LONG_OI_OFF,
|
|
2276
|
+
// not in deployed struct
|
|
2277
|
+
engineShortOiOff: isSbf ? -1 : V12_1_ENGINE_SHORT_OI_OFF,
|
|
2278
|
+
// not in deployed struct
|
|
2279
|
+
engineCTotOff: isSbf ? V12_1_SBF_OFF_C_TOT : V12_1_ENGINE_C_TOT_OFF,
|
|
2280
|
+
enginePnlPosTotOff: isSbf ? V12_1_SBF_OFF_PNL_POS_TOT : V12_1_ENGINE_PNL_POS_TOT_OFF,
|
|
2281
|
+
engineLiqCursorOff: isSbf ? V12_1_SBF_OFF_LIQ_CURSOR : V12_1_ENGINE_LIQ_CURSOR_OFF,
|
|
2282
|
+
engineGcCursorOff: isSbf ? V12_1_SBF_OFF_GC_CURSOR : V12_1_ENGINE_GC_CURSOR_OFF,
|
|
2283
|
+
engineLastSweepStartOff: isSbf ? V12_1_SBF_OFF_LAST_SWEEP_START : V12_1_ENGINE_LAST_SWEEP_START_OFF,
|
|
2284
|
+
engineLastSweepCompleteOff: isSbf ? V12_1_SBF_OFF_LAST_SWEEP_COMPLETE : V12_1_ENGINE_LAST_SWEEP_COMPLETE_OFF,
|
|
2285
|
+
engineCrankCursorOff: isSbf ? V12_1_SBF_OFF_CRANK_CURSOR : V12_1_ENGINE_CRANK_CURSOR_OFF,
|
|
2286
|
+
engineSweepStartIdxOff: isSbf ? V12_1_SBF_OFF_SWEEP_START_IDX : V12_1_ENGINE_SWEEP_START_IDX_OFF,
|
|
2287
|
+
engineLifetimeLiquidationsOff: isSbf ? V12_1_SBF_OFF_LIFETIME_LIQUIDATIONS : V12_1_ENGINE_LIFETIME_LIQUIDATIONS_OFF,
|
|
2288
|
+
engineLifetimeForceClosesOff: isSbf ? -1 : V12_1_ENGINE_LIFETIME_FORCE_CLOSES_OFF,
|
|
2289
|
+
// not in deployed struct
|
|
2290
|
+
engineNetLpPosOff: isSbf ? -1 : V12_1_ENGINE_NET_LP_POS_OFF,
|
|
2291
|
+
// not in deployed struct
|
|
2292
|
+
engineLpSumAbsOff: isSbf ? -1 : V12_1_ENGINE_LP_SUM_ABS_OFF,
|
|
2293
|
+
// not in deployed struct
|
|
2294
|
+
engineLpMaxAbsOff: isSbf ? -1 : V12_1_ENGINE_LP_MAX_ABS_OFF,
|
|
2295
|
+
// not in deployed struct
|
|
2296
|
+
engineLpMaxAbsSweepOff: isSbf ? -1 : V12_1_ENGINE_LP_MAX_ABS_SWEEP_OFF,
|
|
2297
|
+
// not in deployed struct
|
|
2298
|
+
engineEmergencyOiModeOff: isSbf ? -1 : V12_1_ENGINE_EMERGENCY_OI_MODE_OFF,
|
|
2299
|
+
// not in deployed struct
|
|
2300
|
+
engineEmergencyStartSlotOff: isSbf ? -1 : V12_1_ENGINE_EMERGENCY_START_SLOT_OFF,
|
|
2301
|
+
// not in deployed struct
|
|
2302
|
+
engineLastBreakerSlotOff: isSbf ? -1 : V12_1_ENGINE_LAST_BREAKER_SLOT_OFF,
|
|
2303
|
+
// not in deployed struct
|
|
2304
|
+
engineBitmapOff: bitmapOff,
|
|
2276
2305
|
postBitmap: 18,
|
|
2277
2306
|
acctOwnerOff: V12_1_ACCT_OWNER_OFF,
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2307
|
+
// InsuranceFund on deployed program is just {balance: U128} = 16 bytes.
|
|
2308
|
+
// No isolated_balance or insurance_isolation_bps fields.
|
|
2309
|
+
hasInsuranceIsolation: !isSbf,
|
|
2310
|
+
engineInsuranceIsolatedOff: isSbf ? -1 : 48,
|
|
2311
|
+
engineInsuranceIsolationBpsOff: isSbf ? -1 : 64
|
|
2281
2312
|
};
|
|
2282
2313
|
}
|
|
2283
2314
|
function detectSlabLayout(dataLen, data) {
|
|
@@ -2613,17 +2644,18 @@ function parseEngine(data) {
|
|
|
2613
2644
|
vault: readU128LE(data, base),
|
|
2614
2645
|
insuranceFund: {
|
|
2615
2646
|
balance: readU128LE(data, base + layout.engineInsuranceOff),
|
|
2616
|
-
feeRevenue:
|
|
2647
|
+
// feeRevenue: only exists in percolator-core (80-byte InsuranceFund), not deployed (16-byte)
|
|
2648
|
+
feeRevenue: layout.hasInsuranceIsolation ? readU128LE(data, base + layout.engineInsuranceOff + 16) : 0n,
|
|
2617
2649
|
isolatedBalance: layout.hasInsuranceIsolation ? readU128LE(data, base + layout.engineInsuranceIsolatedOff) : 0n,
|
|
2618
2650
|
isolationBps: layout.hasInsuranceIsolation ? readU16LE(data, base + layout.engineInsuranceIsolationBpsOff) : 0
|
|
2619
2651
|
},
|
|
2620
2652
|
currentSlot: readU64LE(data, base + layout.engineCurrentSlotOff),
|
|
2621
|
-
fundingIndexQpbE6: readI128LE(data, base + layout.engineFundingIndexOff),
|
|
2622
|
-
lastFundingSlot: readU64LE(data, base + layout.engineLastFundingSlotOff),
|
|
2653
|
+
fundingIndexQpbE6: layout.engineFundingIndexOff >= 0 ? readI128LE(data, base + layout.engineFundingIndexOff) : 0n,
|
|
2654
|
+
lastFundingSlot: layout.engineLastFundingSlotOff >= 0 ? readU64LE(data, base + layout.engineLastFundingSlotOff) : 0n,
|
|
2623
2655
|
fundingRateBpsPerSlotLast: readI64LE(data, base + layout.engineFundingRateBpsOff),
|
|
2624
2656
|
lastCrankSlot: readU64LE(data, base + layout.engineLastCrankSlotOff),
|
|
2625
2657
|
maxCrankStalenessSlots: readU64LE(data, base + layout.engineMaxCrankStalenessOff),
|
|
2626
|
-
totalOpenInterest: readU128LE(data, base + layout.engineTotalOiOff),
|
|
2658
|
+
totalOpenInterest: layout.engineTotalOiOff >= 0 ? readU128LE(data, base + layout.engineTotalOiOff) : 0n,
|
|
2627
2659
|
longOi: layout.engineLongOiOff >= 0 ? readU128LE(data, base + layout.engineLongOiOff) : 0n,
|
|
2628
2660
|
shortOi: layout.engineShortOiOff >= 0 ? readU128LE(data, base + layout.engineShortOiOff) : 0n,
|
|
2629
2661
|
cTot: readU128LE(data, base + layout.engineCTotOff),
|
|
@@ -2635,9 +2667,9 @@ function parseEngine(data) {
|
|
|
2635
2667
|
crankCursor: readU16LE(data, base + layout.engineCrankCursorOff),
|
|
2636
2668
|
sweepStartIdx: readU16LE(data, base + layout.engineSweepStartIdxOff),
|
|
2637
2669
|
lifetimeLiquidations: readU64LE(data, base + layout.engineLifetimeLiquidationsOff),
|
|
2638
|
-
lifetimeForceCloses: readU64LE(data, base + layout.engineLifetimeForceClosesOff),
|
|
2639
|
-
netLpPos: readI128LE(data, base + layout.engineNetLpPosOff),
|
|
2640
|
-
lpSumAbs: readU128LE(data, base + layout.engineLpSumAbsOff),
|
|
2670
|
+
lifetimeForceCloses: layout.engineLifetimeForceClosesOff >= 0 ? readU64LE(data, base + layout.engineLifetimeForceClosesOff) : 0n,
|
|
2671
|
+
netLpPos: layout.engineNetLpPosOff >= 0 ? readI128LE(data, base + layout.engineNetLpPosOff) : 0n,
|
|
2672
|
+
lpSumAbs: layout.engineLpSumAbsOff >= 0 ? readU128LE(data, base + layout.engineLpSumAbsOff) : 0n,
|
|
2641
2673
|
lpMaxAbs: layout.engineLpMaxAbsOff >= 0 ? readU128LE(data, base + layout.engineLpMaxAbsOff) : 0n,
|
|
2642
2674
|
lpMaxAbsSweep: layout.engineLpMaxAbsSweepOff >= 0 ? readU128LE(data, base + layout.engineLpMaxAbsSweepOff) : 0n,
|
|
2643
2675
|
emergencyOiMode: layout.engineEmergencyOiModeOff >= 0 ? data[base + layout.engineEmergencyOiModeOff] !== 0 : false,
|
|
@@ -2704,7 +2736,7 @@ function parseAccount(data, idx) {
|
|
|
2704
2736
|
if (data.length < base + layout.accountSize) {
|
|
2705
2737
|
throw new Error("Slab data too short for account");
|
|
2706
2738
|
}
|
|
2707
|
-
const isV12_1 = layout.engineOff === V12_1_ENGINE_OFF && (layout.accountSize === V12_1_ACCOUNT_SIZE || layout.accountSize === V12_1_ACCOUNT_SIZE_SBF);
|
|
2739
|
+
const isV12_1 = (layout.engineOff === V12_1_ENGINE_OFF || layout.engineOff === V12_1_SBF_ENGINE_OFF) && (layout.accountSize === V12_1_ACCOUNT_SIZE || layout.accountSize === V12_1_ACCOUNT_SIZE_SBF);
|
|
2708
2740
|
const isAdl = layout.accountSize >= 312 || isV12_1;
|
|
2709
2741
|
const warmupStartedOff = isAdl ? V_ADL_ACCT_WARMUP_STARTED_OFF : ACCT_WARMUP_STARTED_OFF;
|
|
2710
2742
|
const warmupSlopeOff = isAdl ? V_ADL_ACCT_WARMUP_SLOPE_OFF : ACCT_WARMUP_SLOPE_OFF;
|