@percolatorct/sdk 1.0.0-beta.21 → 1.0.0-beta.23

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
@@ -1685,7 +1685,6 @@ var V12_15_PARAMS_H_MAX_OFF = 168;
1685
1685
  var V12_15_ENGINE_PARAMS_OFF = 32;
1686
1686
  var V12_15_ENGINE_CURRENT_SLOT_OFF = 224;
1687
1687
  var V12_15_ENGINE_FUNDING_RATE_E9_OFF = 240;
1688
- var V12_15_ENGINE_MARKET_MODE_OFF = 256;
1689
1688
  var V12_15_ENGINE_C_TOT_OFF = 344;
1690
1689
  var V12_15_ENGINE_PNL_POS_TOT_OFF = 368;
1691
1690
  var V12_15_ENGINE_PNL_MATURED_POS_TOT_OFF = 384;
@@ -2930,8 +2929,8 @@ function parseEngine(data) {
2930
2929
  throw new Error(`Unrecognized slab data length: ${data.length}. Cannot determine layout version.`);
2931
2930
  }
2932
2931
  const base = layout.engineOff;
2933
- const isV12_15 = (layout.accountSize === V12_15_ACCOUNT_SIZE || layout.accountSize === V12_15_ACCOUNT_SIZE_SMALL) && layout.engineOff === V12_15_ENGINE_OFF;
2934
- const fundingRateBpsPerSlotLast = isV12_15 ? readI128LE(data, base + V12_15_ENGINE_FUNDING_RATE_E9_OFF) : readI64LE(data, base + layout.engineFundingRateBpsOff);
2932
+ const isV12_15 = (layout.accountSize === V12_15_ACCOUNT_SIZE || layout.accountSize === V12_15_ACCOUNT_SIZE_SMALL) && (layout.engineOff === V12_15_ENGINE_OFF || layout.engineOff === V12_15_ENGINE_OFF_SBF);
2933
+ const fundingRateBpsPerSlotLast = isV12_15 ? readI128LE(data, base + layout.engineFundingRateBpsOff) : readI64LE(data, base + layout.engineFundingRateBpsOff);
2935
2934
  return {
2936
2935
  vault: readU128LE(data, base),
2937
2936
  insuranceFund: {
@@ -2945,8 +2944,8 @@ function parseEngine(data) {
2945
2944
  fundingIndexQpbE6: layout.engineFundingIndexOff >= 0 ? readI128LE(data, base + layout.engineFundingIndexOff) : 0n,
2946
2945
  lastFundingSlot: layout.engineLastFundingSlotOff >= 0 ? readU64LE(data, base + layout.engineLastFundingSlotOff) : 0n,
2947
2946
  fundingRateBpsPerSlotLast,
2948
- fundingRateE9: isV12_15 ? readI128LE(data, base + V12_15_ENGINE_FUNDING_RATE_E9_OFF) : 0n,
2949
- marketMode: isV12_15 ? readU8(data, base + V12_15_ENGINE_MARKET_MODE_OFF) === 1 ? 1 : 0 : null,
2947
+ fundingRateE9: isV12_15 ? readI128LE(data, base + layout.engineFundingRateBpsOff) : 0n,
2948
+ marketMode: isV12_15 ? readU8(data, base + layout.engineFundingRateBpsOff + 16) === 1 ? 1 : 0 : null,
2950
2949
  lastCrankSlot: readU64LE(data, base + layout.engineLastCrankSlotOff),
2951
2950
  maxCrankStalenessSlots: readU64LE(data, base + layout.engineMaxCrankStalenessOff),
2952
2951
  totalOpenInterest: layout.engineTotalOiOff >= 0 ? readU128LE(data, base + layout.engineTotalOiOff) : 0n,
@@ -2971,6 +2970,9 @@ function parseEngine(data) {
2971
2970
  emergencyStartSlot: layout.engineEmergencyStartSlotOff >= 0 ? readU64LE(data, base + layout.engineEmergencyStartSlotOff) : 0n,
2972
2971
  lastBreakerSlot: layout.engineLastBreakerSlotOff >= 0 ? readU64LE(data, base + layout.engineLastBreakerSlotOff) : 0n,
2973
2972
  markPriceE6: layout.engineMarkPriceOff >= 0 ? readU64LE(data, base + layout.engineMarkPriceOff) : 0n,
2973
+ // V12_15: last_oracle_price at engine+608 (SBF) / engine+... (native).
2974
+ // Located at bitmapOff - 40 on SBF (648-40=608, verified on-chain).
2975
+ oraclePriceE6: isV12_15 ? readU64LE(data, base + layout.engineBitmapOff - 40) : 0n,
2974
2976
  numUsedAccounts: (() => {
2975
2977
  if (layout.postBitmap < 18) return 0;
2976
2978
  const bw = layout.bitmapWords;
@@ -3422,6 +3424,7 @@ function parseEngineLight(data, layout, maxAccounts = 4096) {
3422
3424
  lastBreakerSlot: 0n,
3423
3425
  markPriceE6: 0n,
3424
3426
  // V0 engine has no mark_price field
3427
+ oraclePriceE6: 0n,
3425
3428
  numUsedAccounts: canReadNumUsed ? readU16LE2(data, base + numUsedOff) : 0,
3426
3429
  nextAccountId: canReadNextId ? readU64LE2(data, base + nextAccountIdOff) : 0n
3427
3430
  };
@@ -3470,6 +3473,7 @@ function parseEngineLight(data, layout, maxAccounts = 4096) {
3470
3473
  lastBreakerSlot: 0n,
3471
3474
  markPriceE6: 0n,
3472
3475
  // V2 has no mark_price
3476
+ oraclePriceE6: 0n,
3473
3477
  numUsedAccounts: canReadNumUsed ? readU16LE2(data, base + numUsedOff) : 0,
3474
3478
  nextAccountId: canReadNextId ? readU64LE2(data, base + nextAccountIdOff) : 0n
3475
3479
  };
@@ -3515,6 +3519,7 @@ function parseEngineLight(data, layout, maxAccounts = 4096) {
3515
3519
  emergencyStartSlot: l.engineEmergencyStartSlotOff >= 0 ? readU64LE2(data, base + l.engineEmergencyStartSlotOff) : 0n,
3516
3520
  lastBreakerSlot: l.engineLastBreakerSlotOff >= 0 ? readU64LE2(data, base + l.engineLastBreakerSlotOff) : 0n,
3517
3521
  markPriceE6: l.engineMarkPriceOff >= 0 ? readU64LE2(data, base + l.engineMarkPriceOff) : 0n,
3522
+ oraclePriceE6: 0n,
3518
3523
  numUsedAccounts: canReadNumUsed ? readU16LE2(data, base + numUsedOff) : 0,
3519
3524
  nextAccountId: canReadNextId ? readU64LE2(data, base + nextAccountIdOff) : 0n
3520
3525
  };
@@ -3559,6 +3564,7 @@ function parseEngineLight(data, layout, maxAccounts = 4096) {
3559
3564
  lastBreakerSlot: readU64LE2(data, base + 624),
3560
3565
  markPriceE6: readU64LE2(data, base + 400),
3561
3566
  // PERC-1094: was 392
3567
+ oraclePriceE6: 0n,
3562
3568
  numUsedAccounts: canReadNumUsed ? readU16LE2(data, base + numUsedOff) : 0,
3563
3569
  nextAccountId: canReadNextId ? readU64LE2(data, base + nextAccountIdOff) : 0n
3564
3570
  };