@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 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 = 944;
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 engineOff = V12_15_ENGINE_OFF;
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 accountSize = V12_15_ACCOUNT_SIZE;
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 = bitmapOff + bitmapBytes + postBitmap + nextFreeBytes;
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: bitmapOff,
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 = readU128LE(data, base + PARAMS_RISK_THRESHOLD_OFF);
2768
- result.maintenanceFeePerSlot = readU128LE(data, base + PARAMS_MAINTENANCE_FEE_OFF);
2769
- result.maxCrankStalenessSlots = readU64LE(data, base + PARAMS_MAX_CRANK_STALENESS_OFF);
2770
- result.liquidationFeeBps = readU64LE(data, base + PARAMS_LIQUIDATION_FEE_BPS_OFF);
2771
- result.liquidationFeeCap = readU128LE(data, base + PARAMS_LIQUIDATION_FEE_CAP_OFF);
2772
- result.liquidationBufferBps = readU64LE(data, base + PARAMS_LIQUIDATION_BUFFER_OFF);
2773
- result.minLiquidationAbs = readU128LE(data, base + PARAMS_MIN_LIQUIDATION_OFF);
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 = (layout.accountSize === V12_15_ACCOUNT_SIZE || layout.accountSize === V12_15_ACCOUNT_SIZE_SMALL) && layout.engineOff === V12_15_ENGINE_OFF;
2794
- const fundingRateBpsPerSlotLast = isV12_15 ? readI128LE(data, base + V12_15_ENGINE_FUNDING_RATE_E9_OFF) : readI64LE(data, base + layout.engineFundingRateBpsOff);
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 + V12_15_ENGINE_FUNDING_RATE_E9_OFF) : 0n,
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("deposit"), pool.toBytes(), user.toBytes()],
4167
+ [TEXT.encode("stake_deposit"), pool.toBytes(), user.toBytes()],
4164
4168
  programId ?? getStakeProgramId()
4165
4169
  );
4166
4170
  }