@percolatorct/sdk 1.0.0-beta.16 → 1.0.0-beta.18
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 +34 -28
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1619,7 +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;
|
|
1624
|
+
var V12_15_ACCOUNT_SIZE_SMALL = 920;
|
|
1623
1625
|
var V12_15_ACCT_ACCOUNT_ID_OFF = 0;
|
|
1624
1626
|
var V12_15_ACCT_CAPITAL_OFF = 8;
|
|
1625
1627
|
var V12_15_ACCT_KIND_OFF = 24;
|
|
@@ -1726,6 +1728,7 @@ for (const n of TIERS) {
|
|
|
1726
1728
|
V12_15_SIZES.set(computeSlabSize(V12_15_ENGINE_OFF, V12_15_ENGINE_BITMAP_OFF, V12_15_ACCOUNT_SIZE, n, 18), n);
|
|
1727
1729
|
}
|
|
1728
1730
|
V12_15_SIZES.set(computeSlabSize(V12_15_ENGINE_OFF, V12_15_ENGINE_BITMAP_OFF, V12_15_ACCOUNT_SIZE, 2048, 18), 2048);
|
|
1731
|
+
V12_15_SIZES.set(237512, 256);
|
|
1729
1732
|
var V12_1_SBF_ACCOUNT_SIZE = 280;
|
|
1730
1733
|
var V12_1_SBF_ENGINE_OFF = 616;
|
|
1731
1734
|
var V12_1_SBF_BITMAP_OFF = 584;
|
|
@@ -2346,15 +2349,17 @@ function buildLayoutV12_1(maxAccounts, dataLen) {
|
|
|
2346
2349
|
engineInsuranceIsolationBpsOff: isSbf ? -1 : 64
|
|
2347
2350
|
};
|
|
2348
2351
|
}
|
|
2349
|
-
function buildLayoutV12_15(maxAccounts) {
|
|
2350
|
-
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;
|
|
2351
2356
|
const bitmapOff = V12_15_ENGINE_BITMAP_OFF;
|
|
2352
|
-
const
|
|
2357
|
+
const effectiveBitmapOff = isSbf ? 640 : bitmapOff;
|
|
2353
2358
|
const bitmapWords = Math.ceil(maxAccounts / 64);
|
|
2354
2359
|
const bitmapBytes = bitmapWords * 8;
|
|
2355
2360
|
const postBitmap = 18;
|
|
2356
2361
|
const nextFreeBytes = maxAccounts * 2;
|
|
2357
|
-
const preAccountsLen =
|
|
2362
|
+
const preAccountsLen = effectiveBitmapOff + bitmapBytes + postBitmap + nextFreeBytes;
|
|
2358
2363
|
const accountsOffRel = Math.ceil(preAccountsLen / 8) * 8;
|
|
2359
2364
|
return {
|
|
2360
2365
|
version: 2,
|
|
@@ -2374,18 +2379,18 @@ function buildLayoutV12_15(maxAccounts) {
|
|
|
2374
2379
|
engineInsuranceOff: 16,
|
|
2375
2380
|
engineParamsOff: V12_15_ENGINE_PARAMS_OFF,
|
|
2376
2381
|
// 32
|
|
2377
|
-
paramsSize: V12_15_PARAMS_SIZE,
|
|
2378
|
-
// 192
|
|
2379
|
-
engineCurrentSlotOff: V12_15_ENGINE_CURRENT_SLOT_OFF,
|
|
2380
|
-
// 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
|
|
2381
2386
|
engineFundingIndexOff: -1,
|
|
2382
2387
|
// not present in v12.15 engine struct
|
|
2383
2388
|
engineLastFundingSlotOff: -1,
|
|
2384
2389
|
// not present in v12.15 engine struct
|
|
2385
2390
|
// funding_rate_e9 is i128 — stored in engineFundingRateBpsOff for EngineState.fundingRateBpsPerSlotLast
|
|
2386
2391
|
// callers should treat this as the i128 funding rate in e9 units
|
|
2387
|
-
engineFundingRateBpsOff: V12_15_ENGINE_FUNDING_RATE_E9_OFF,
|
|
2388
|
-
// 240
|
|
2392
|
+
engineFundingRateBpsOff: isSbf ? 224 : V12_15_ENGINE_FUNDING_RATE_E9_OFF,
|
|
2393
|
+
// SBF=224, native=240
|
|
2389
2394
|
engineMarkPriceOff: -1,
|
|
2390
2395
|
// not present in v12.15 (removed with oracle refactor)
|
|
2391
2396
|
engineLastCrankSlotOff: -1,
|
|
@@ -2398,10 +2403,10 @@ function buildLayoutV12_15(maxAccounts) {
|
|
|
2398
2403
|
// not present in v12.15 engine
|
|
2399
2404
|
engineShortOiOff: -1,
|
|
2400
2405
|
// not present in v12.15 engine
|
|
2401
|
-
engineCTotOff: V12_15_ENGINE_C_TOT_OFF,
|
|
2402
|
-
// 344
|
|
2403
|
-
enginePnlPosTotOff: V12_15_ENGINE_PNL_POS_TOT_OFF,
|
|
2404
|
-
// 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
|
|
2405
2410
|
engineLiqCursorOff: -1,
|
|
2406
2411
|
// not yet mapped
|
|
2407
2412
|
engineGcCursorOff: -1,
|
|
@@ -2432,7 +2437,8 @@ function buildLayoutV12_15(maxAccounts) {
|
|
|
2432
2437
|
// not present in v12.15
|
|
2433
2438
|
engineLastBreakerSlotOff: -1,
|
|
2434
2439
|
// not present in v12.15
|
|
2435
|
-
engineBitmapOff:
|
|
2440
|
+
engineBitmapOff: effectiveBitmapOff,
|
|
2441
|
+
// SBF=640, native=862
|
|
2436
2442
|
postBitmap,
|
|
2437
2443
|
acctOwnerOff: V12_15_ACCT_OWNER_OFF,
|
|
2438
2444
|
// 192
|
|
@@ -2444,7 +2450,7 @@ function buildLayoutV12_15(maxAccounts) {
|
|
|
2444
2450
|
}
|
|
2445
2451
|
function detectSlabLayout(dataLen, data) {
|
|
2446
2452
|
const v1215n = V12_15_SIZES.get(dataLen);
|
|
2447
|
-
if (v1215n !== void 0) return buildLayoutV12_15(v1215n);
|
|
2453
|
+
if (v1215n !== void 0) return buildLayoutV12_15(v1215n, dataLen);
|
|
2448
2454
|
const v121n = V12_1_SIZES.get(dataLen);
|
|
2449
2455
|
if (v121n !== void 0) return buildLayoutV12_1(v121n, dataLen);
|
|
2450
2456
|
const vsdpn = V_SETDEXPOOL_SIZES.get(dataLen);
|
|
@@ -2740,7 +2746,7 @@ function parseParams(data, layoutHint) {
|
|
|
2740
2746
|
if (data.length < base + Math.min(paramsSize, 56)) {
|
|
2741
2747
|
throw new Error("Slab data too short for RiskParams");
|
|
2742
2748
|
}
|
|
2743
|
-
const isV12_15Params = paramsSize === V12_15_PARAMS_SIZE;
|
|
2749
|
+
const isV12_15Params = paramsSize === V12_15_PARAMS_SIZE || paramsSize === 184;
|
|
2744
2750
|
const result = {
|
|
2745
2751
|
warmupPeriodSlots: isV12_15Params ? readU64LE(data, base + V12_15_PARAMS_H_MIN_OFF) : readU64LE(data, base + PARAMS_WARMUP_PERIOD_OFF),
|
|
2746
2752
|
maintenanceMarginBps: readU64LE(data, base + PARAMS_MAINTENANCE_MARGIN_OFF),
|
|
@@ -2762,13 +2768,13 @@ function parseParams(data, layoutHint) {
|
|
|
2762
2768
|
if (isV12_15Params) {
|
|
2763
2769
|
result.hMin = readU64LE(data, base + V12_15_PARAMS_H_MIN_OFF);
|
|
2764
2770
|
result.hMax = readU64LE(data, base + V12_15_PARAMS_H_MAX_OFF);
|
|
2765
|
-
result.riskReductionThreshold =
|
|
2766
|
-
result.maintenanceFeePerSlot =
|
|
2767
|
-
result.maxCrankStalenessSlots = readU64LE(data, base +
|
|
2768
|
-
result.liquidationFeeBps = readU64LE(data, base +
|
|
2769
|
-
result.liquidationFeeCap = readU128LE(data, base +
|
|
2770
|
-
result.liquidationBufferBps =
|
|
2771
|
-
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);
|
|
2772
2778
|
} else if (paramsSize >= 144) {
|
|
2773
2779
|
result.riskReductionThreshold = readU128LE(data, base + PARAMS_RISK_THRESHOLD_OFF);
|
|
2774
2780
|
result.maintenanceFeePerSlot = readU128LE(data, base + PARAMS_MAINTENANCE_FEE_OFF);
|
|
@@ -2788,8 +2794,8 @@ function parseEngine(data) {
|
|
|
2788
2794
|
throw new Error(`Unrecognized slab data length: ${data.length}. Cannot determine layout version.`);
|
|
2789
2795
|
}
|
|
2790
2796
|
const base = layout.engineOff;
|
|
2791
|
-
const isV12_15 = layout.accountSize === V12_15_ACCOUNT_SIZE
|
|
2792
|
-
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);
|
|
2793
2799
|
return {
|
|
2794
2800
|
vault: readU128LE(data, base),
|
|
2795
2801
|
insuranceFund: {
|
|
@@ -2803,7 +2809,7 @@ function parseEngine(data) {
|
|
|
2803
2809
|
fundingIndexQpbE6: layout.engineFundingIndexOff >= 0 ? readI128LE(data, base + layout.engineFundingIndexOff) : 0n,
|
|
2804
2810
|
lastFundingSlot: layout.engineLastFundingSlotOff >= 0 ? readU64LE(data, base + layout.engineLastFundingSlotOff) : 0n,
|
|
2805
2811
|
fundingRateBpsPerSlotLast,
|
|
2806
|
-
fundingRateE9: isV12_15 ? readI128LE(data, base +
|
|
2812
|
+
fundingRateE9: isV12_15 ? readI128LE(data, base + layout.engineFundingRateBpsOff) : 0n,
|
|
2807
2813
|
marketMode: isV12_15 ? readU8(data, base + V12_15_ENGINE_MARKET_MODE_OFF) === 1 ? 1 : 0 : null,
|
|
2808
2814
|
lastCrankSlot: layout.engineLastCrankSlotOff >= 0 ? readU64LE(data, base + layout.engineLastCrankSlotOff) : 0n,
|
|
2809
2815
|
maxCrankStalenessSlots: layout.engineMaxCrankStalenessOff >= 0 ? readU64LE(data, base + layout.engineMaxCrankStalenessOff) : 0n,
|
|
@@ -2889,7 +2895,7 @@ function parseAccount(data, idx) {
|
|
|
2889
2895
|
if (data.length < base + layout.accountSize) {
|
|
2890
2896
|
throw new Error("Slab data too short for account");
|
|
2891
2897
|
}
|
|
2892
|
-
const isV12_15 = layout.accountSize === V12_15_ACCOUNT_SIZE;
|
|
2898
|
+
const isV12_15 = layout.accountSize === V12_15_ACCOUNT_SIZE || layout.accountSize === V12_15_ACCOUNT_SIZE_SMALL;
|
|
2893
2899
|
const isV12_1 = !isV12_15 && (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);
|
|
2894
2900
|
const isAdl = !isV12_15 && (layout.accountSize >= 312 || isV12_1);
|
|
2895
2901
|
if (isV12_15) {
|