@exponent-labs/exponent-fetcher 0.9.23 → 0.9.25

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.
@@ -1 +1 @@
1
- {"version":3,"file":"sanctum.js","sourceRoot":"","sources":["../../src/utils/sanctum.ts"],"names":[],"mappings":";;;;;AAKA,sDAkBC;AAvBD,4DAA4D;AAC5D,iDAA8C;AAC9C,4DAAgC;AAChC,8CAAsC;AAEtC,SAAgB,qBAAqB,CAAC,QAAqE;IACzG,MAAM,SAAS,GAAG,IAAA,6BAAe,EAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAEhE,MAAM,MAAM,GAAG,sBAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,sBAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IAEzF,MAAM,MAAM,GAAG,IAAI,WAAE,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,SAAS,GAAG,IAAI,WAAE,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC/C,MAAM,eAAe,GAAG,IAAI,WAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IACxD,MAAM,mBAAmB,GAAG,IAAI,WAAE,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAA;IAEtE,IAAI,eAAe,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,mBAAmB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QACjE,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IAC9E,MAAM,YAAY,GAAG,IAAI,oBAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAA;IAEhG,OAAO,CAAC,GAAG,YAAY,CAAA,CAAC,kCAAkC;AAC5D,CAAC"}
1
+ {"version":3,"file":"sanctum.js","sourceRoot":"","sources":["../../src/utils/sanctum.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4D;AAC5D,iDAA8C;AAC9C,4DAAgC;AAChC,8CAAsC;AAEtC,SAAgB,qBAAqB,CAAC,QAAqE;IACzG,MAAM,SAAS,GAAG,IAAA,6BAAe,EAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAEhE,MAAM,MAAM,GAAG,sBAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,sBAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IAEzF,MAAM,MAAM,GAAG,IAAI,WAAE,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,SAAS,GAAG,IAAI,WAAE,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC/C,MAAM,eAAe,GAAG,IAAI,WAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IACxD,MAAM,mBAAmB,GAAG,IAAI,WAAE,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAA;IAEtE,IAAI,eAAe,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,mBAAmB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QACjE,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IAC9E,MAAM,YAAY,GAAG,IAAI,oBAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAA;IAEhG,OAAO,CAAC,GAAG,YAAY,CAAA,CAAC,kCAAkC;AAC5D,CAAC;AAlBD,sDAkBC"}
@@ -1,3 +1,5 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
1
3
  export declare function calculateSolsticeRedemptionRate(accounts: {
2
4
  yieldPool: Buffer;
3
5
  vestingSchedule: Buffer;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateSolsticeRedemptionRate = calculateSolsticeRedemptionRate;
4
- exports.calculateSolsticeGlamVaultExchangeRate = calculateSolsticeGlamVaultExchangeRate;
3
+ exports.calculateSolsticeGlamVaultExchangeRate = exports.calculateSolsticeRedemptionRate = void 0;
5
4
  const solstice_idl_1 = require("@exponent-labs/solstice-idl");
6
5
  const spl_token_1 = require("@solana/spl-token");
7
6
  function calculateSolsticeRedemptionRate(accounts) {
@@ -43,6 +42,7 @@ function calculateSolsticeRedemptionRate(accounts) {
43
42
  totalVestedAssets: totalVestedAssets.toString(),
44
43
  };
45
44
  }
45
+ exports.calculateSolsticeRedemptionRate = calculateSolsticeRedemptionRate;
46
46
  /**
47
47
  * Calculates the Solstice GLAM vault stSLX exchange rate using the same account
48
48
  * layout and ratio as the Generic Standard on-chain interface.
@@ -60,4 +60,5 @@ function calculateSolsticeGlamVaultExchangeRate(accounts) {
60
60
  const denominator = stslxSupply * 10n ** BigInt(slxMint.decimals);
61
61
  return Number(numerator) / Number(denominator);
62
62
  }
63
+ exports.calculateSolsticeGlamVaultExchangeRate = calculateSolsticeGlamVaultExchangeRate;
63
64
  //# sourceMappingURL=solstice.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"solstice.js","sourceRoot":"","sources":["../../src/utils/solstice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solstice.js","sourceRoot":"","sources":["../../src/utils/solstice.ts"],"names":[],"mappings":";;;AAAA,8DAAuF;AACvF,iDAA6D;AAE7D,SAAgB,+BAA+B,CAAC,QAAwD;IAOtG,sDAAsD;IACtD,MAAM,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,GAAG,IAAA,wDAAyC,EAAC;QAC7F,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,eAAe,EAAE,QAAQ,CAAC,eAAe;KAC1C,CAAC,CAAA;IAEF,wDAAwD;IACxD,MAAM,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;IACxE,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC1E,MAAM,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAA;IAE9E,2DAA2D;IAC3D,IAAI,iBAAyB,CAAA;IAC7B,IAAI,aAAa,KAAK,EAAE,EAAE,CAAC;QACzB,iBAAiB,GAAG,eAAe,CAAA,CAAC,yDAAyD;IAC/F,CAAC;SAAM,CAAC;QACN,MAAM,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;QACzE,MAAM,UAAU,GAAG,MAAM,CAAC,sBAAsB,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;QACrE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA,CAAC,yBAAyB;QAEnF,4BAA4B;QAC5B,IAAI,cAAsB,CAAA;QAC1B,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;YAC7B,cAAc,GAAG,EAAE,CAAA,CAAC,6DAA6D;QACnF,CAAC;aAAM,CAAC;YACN,cAAc,GAAG,CAAC,aAAa,GAAG,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,YAAY,CAAC,CAAA;QAC7F,CAAC;QAED,iBAAiB,GAAG,eAAe,GAAG,cAAc,CAAA;IACtD,CAAC;IAED,kFAAkF;IAClF,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAA;IAErF,OAAO;QACL,cAAc;QACd,WAAW,EAAE,eAAe,CAAC,QAAQ,EAAE;QACvC,YAAY,EAAE,gBAAgB,CAAC,QAAQ,EAAE;QACzC,aAAa,EAAE,aAAa,CAAC,QAAQ,EAAE;QACvC,iBAAiB,EAAE,iBAAiB,CAAC,QAAQ,EAAE;KAChD,CAAA;AACH,CAAC;AAhDD,0EAgDC;AAED;;;GAGG;AACH,SAAgB,sCAAsC,CAAC,QAItD;IACC,MAAM,sBAAsB,GAAG,yBAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,yBAAa,CAAC,IAAI,CAAC,CAAC,CAAA;IAChH,MAAM,OAAO,GAAG,sBAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,sBAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IAChF,MAAM,SAAS,GAAG,sBAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,sBAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IAEpF,MAAM,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC/E,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IAEvD,IAAI,sBAAsB,KAAK,EAAE,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;QACxD,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,SAAS,GAAG,sBAAsB,GAAG,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC5E,MAAM,WAAW,GAAG,WAAW,GAAG,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAEjE,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;AAChD,CAAC;AApBD,wFAoBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exponent-labs/exponent-fetcher",
3
- "version": "0.9.23",
3
+ "version": "0.9.25",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "license": "AGPL-3.0",
@@ -9,26 +9,26 @@
9
9
  },
10
10
  "dependencies": {
11
11
  "@coral-xyz/anchor": "0.30.0",
12
- "@exponent-labs/adrena-idl": "0.9.23",
13
- "@exponent-labs/chainlink-idl": "0.9.23",
14
- "@exponent-labs/exponent-idl": "0.9.23",
15
- "@exponent-labs/exponent-types": "0.9.23",
16
- "@exponent-labs/fragmetric-idl": "0.9.23",
17
- "@exponent-labs/generic-sy-idl": "0.9.23",
18
- "@exponent-labs/jito-restaking-sy-idl": "0.9.23",
19
- "@exponent-labs/jupiter-lend-idl": "0.9.23",
20
- "@exponent-labs/jupiter-perps-idl": "0.9.23",
21
- "@exponent-labs/kamino-reserve-deserializer": "0.9.23",
22
- "@exponent-labs/kamino-sy-idl": "0.9.23",
23
- "@exponent-labs/kamino-vault-idl": "0.9.23",
24
- "@exponent-labs/marginfi-sy-idl": "0.9.23",
25
- "@exponent-labs/meteora-idl": "0.9.23",
26
- "@exponent-labs/perena-sy-idl": "0.9.23",
27
- "@exponent-labs/precise-number": "0.9.23",
28
- "@exponent-labs/sanctum-idl": "0.9.23",
29
- "@exponent-labs/solstice-idl": "0.9.23",
30
- "@exponent-labs/exponent-clmm-idl": "0.9.23",
31
- "@exponent-labs/exponent-orderbook-idl": "0.9.23",
12
+ "@exponent-labs/adrena-idl": "0.9.25",
13
+ "@exponent-labs/chainlink-idl": "0.9.25",
14
+ "@exponent-labs/exponent-idl": "0.9.25",
15
+ "@exponent-labs/exponent-types": "0.9.25",
16
+ "@exponent-labs/fragmetric-idl": "0.9.25",
17
+ "@exponent-labs/generic-sy-idl": "0.9.25",
18
+ "@exponent-labs/jito-restaking-sy-idl": "0.9.25",
19
+ "@exponent-labs/jupiter-lend-idl": "0.9.25",
20
+ "@exponent-labs/jupiter-perps-idl": "0.9.25",
21
+ "@exponent-labs/kamino-reserve-deserializer": "0.9.25",
22
+ "@exponent-labs/kamino-sy-idl": "0.9.25",
23
+ "@exponent-labs/kamino-vault-idl": "0.9.25",
24
+ "@exponent-labs/marginfi-sy-idl": "0.9.25",
25
+ "@exponent-labs/meteora-idl": "0.9.25",
26
+ "@exponent-labs/perena-sy-idl": "0.9.25",
27
+ "@exponent-labs/precise-number": "0.9.25",
28
+ "@exponent-labs/sanctum-idl": "0.9.25",
29
+ "@exponent-labs/solstice-idl": "0.9.25",
30
+ "@exponent-labs/exponent-clmm-idl": "0.9.25",
31
+ "@exponent-labs/exponent-orderbook-idl": "0.9.25",
32
32
  "@solana/spl-stake-pool": "1.1.8",
33
33
  "@solana/spl-token": "0.4.6",
34
34
  "bn-sqrt": "^1.0.0",
@@ -700,6 +700,7 @@ export function deserializeMarketThree(m: MarketThreeRaw): MarketThree {
700
700
  selfAddress: m.selfAddress,
701
701
  syProgram: m.syProgram,
702
702
  statusFlags: m.statusFlags,
703
+ selfCpiStatus: m.selfCpiStatus,
703
704
  cpiSyAccounts: m.cpiSyAccounts,
704
705
  isCurrentFlashSwap: m.isCurrentFlashSwap,
705
706
  lpFarm: m.lpFarm,
@@ -868,9 +869,12 @@ function deserializeOrderbook(data: Buffer): Orderbook {
868
869
  offset += 8
869
870
  const priceDecimals = data.readUint8(offset)
870
871
  offset += 1
872
+ // _placeholder_one[15]
873
+ offset += 15
874
+ const finalPyIndex = readPreciseNumberAsFloat()
871
875
  // Skip ConfigurationOptions padding/reserve:
872
- // _placeholder_one[15] + _placeholder_two[32] + _placeholder_three[32] + _placeholder_four[32] + _reserved[1024]
873
- offset += 1135
876
+ // _placeholder_three[32] + _placeholder_four[32] + _reserved[1024]
877
+ offset += 1088
874
878
 
875
879
  // Pubkeys
876
880
  const vault = readPubkey()
@@ -884,12 +888,10 @@ function deserializeOrderbook(data: Buffer): Orderbook {
884
888
  const cpiAccountOrderbook = readPubkey()
885
889
  const admin = readPubkey()
886
890
 
887
- // Skip last_sy_exchange_rate (Number type = 32 bytes)
888
- offset += 32
891
+ const lastSyExchangeRate = readPreciseNumberAsFloat()
889
892
 
890
893
  // OrderbookFinancials struct
891
- // Skip last_seen_sy_index (Number type = 32 bytes)
892
- offset += 32
894
+ const lastSeenSyIndex = readPreciseNumberAsFloat()
893
895
  const ytBalance = data.readBigUInt64LE(offset)
894
896
  offset += 8
895
897
  const syBalance = data.readBigUInt64LE(offset)
@@ -914,9 +916,11 @@ function deserializeOrderbook(data: Buffer): Orderbook {
914
916
  thresholdAmount,
915
917
  lnMakerFeeRate,
916
918
  lnTakerFeeRate,
919
+ finalPyIndex,
917
920
  }
918
921
  const financials: OrderbookFinancials = {
919
922
  expirationTs,
923
+ lastSeenSyIndex,
920
924
  syBalance: syBalance,
921
925
  ytBalance: ytBalance,
922
926
  ptBalance: ptBalance,
@@ -948,7 +952,7 @@ function deserializeOrderbook(data: Buffer): Orderbook {
948
952
  offset += 4
949
953
 
950
954
  // each RBNode entry = registers[3] + key:u32 + first_offer:u32
951
- const prices: PriceTreeNode[] = []
955
+ const priceSlots: PriceTreeNode[] = []
952
956
  for (let i = 0; i < MAX_PRICE_NODES; i++) {
953
957
  const left = data.readUInt32LE(offset)
954
958
  offset += 4
@@ -968,10 +972,35 @@ function deserializeOrderbook(data: Buffer): Orderbook {
968
972
  offset += 4
969
973
  const lastOfferBuyYt = data.readUInt32LE(offset)
970
974
  offset += 4
971
- if (key === 0) continue
972
- prices.push({ key, firstOfferSellYt, firstOfferBuyYt, lastOfferSellYt, lastOfferBuyYt, parent, left, right })
975
+ priceSlots.push({
976
+ priceIndex: i + 1,
977
+ key,
978
+ firstOfferSellYt,
979
+ firstOfferBuyYt,
980
+ lastOfferSellYt,
981
+ lastOfferBuyYt,
982
+ parent,
983
+ left,
984
+ right,
985
+ })
973
986
  }
974
987
 
988
+ const pricePointers = [root]
989
+ const visitedPricePointers = new Set<number>()
990
+ while (pricePointers.length > 0) {
991
+ const pricePointer = pricePointers.pop()!
992
+ if (pricePointer === 0 || visitedPricePointers.has(pricePointer)) continue
993
+ const price = priceSlots[pricePointer - 1]
994
+ if (!price) throw new Error(`Invalid orderbook price pointer ${pricePointer}`)
995
+
996
+ visitedPricePointers.add(pricePointer)
997
+ pricePointers.push(price.left, price.right)
998
+ }
999
+ if (visitedPricePointers.size !== priceTreeSize) {
1000
+ throw new Error(`Orderbook price tree size mismatch: decoded ${visitedPricePointers.size}, expected ${priceTreeSize}`)
1001
+ }
1002
+ const prices = priceSlots.filter((price) => visitedPricePointers.has(price.priceIndex))
1003
+
975
1004
  // ─── Parse Offers slab ────────────────────────────────────────────────────
976
1005
  // NodeAllocator<Offer, MAX_OFFERS, 4>
977
1006
  // header: size:u64, bump_index:u32, free_list_head:u32
@@ -1024,6 +1053,7 @@ function deserializeOrderbook(data: Buffer): Orderbook {
1024
1053
  // ─── Parse UserEscrow slab ────────────────────────────────────────────────
1025
1054
  // NodeAllocator<UserEscrow, MAX_USER_ESCROWS, 2>
1026
1055
  // header: size:u64, bump_index:u32, free_list_head:u32
1056
+ const escrowStartOffset = offset
1027
1057
  const escSize = Number(data.readBigUInt64LE(offset))
1028
1058
  offset += 8
1029
1059
  const _escBump = data.readUInt32LE(offset)
@@ -1031,7 +1061,8 @@ function deserializeOrderbook(data: Buffer): Orderbook {
1031
1061
  const _escFreeIdx = data.readUInt32LE(offset)
1032
1062
  offset += 4
1033
1063
 
1034
- // each Node = [ no registers ] + UserEscrow.value
1064
+ // each Node = registers[2] + UserEscrow.value
1065
+ // NodeAllocator<UserEscrow, MAX_USER_ESCROWS, 2> means 2 registers per node
1035
1066
  const userEscrows: UserEscrowNode[] = []
1036
1067
  for (let i = 0; i < MAX_USER_ESCROWS; i++) {
1037
1068
  const register = data.readUInt32LE(offset)
@@ -1082,6 +1113,7 @@ function deserializeOrderbook(data: Buffer): Orderbook {
1082
1113
  tokenEscrowYt,
1083
1114
  tokenEscrowPt,
1084
1115
  cpiAccountOrderbook,
1116
+ lastSyExchangeRate,
1085
1117
  financials,
1086
1118
  prices,
1087
1119
  configurationOptions,
@@ -1268,6 +1300,7 @@ export interface MarketThree {
1268
1300
  ticks: web3.PublicKey
1269
1301
  statusFlags: number
1270
1302
  configurationOptions: MarketConfigurationOptions
1303
+ selfCpiStatus: number
1271
1304
  financials: MarketThreeFinancials
1272
1305
  cpiSyAccounts: CpiAccountIndexes
1273
1306
  cpiCoreAccounts: MarketCpiCoreIndexes
@@ -1367,6 +1400,7 @@ export interface MarketThreeRaw {
1367
1400
  ticks: web3.PublicKey
1368
1401
  statusFlags: number
1369
1402
  configurationOptions: MarketConfigurationOptionsRaw
1403
+ selfCpiStatus: number
1370
1404
  financials: MarketThreeFinancialsRaw
1371
1405
  cpiSyAccounts: CpiAccountIndexes
1372
1406
  cpiCoreAccounts: MarketCpiCoreIndexes
@@ -1494,6 +1528,7 @@ export interface Vault {
1494
1528
 
1495
1529
  interface OrderbookFinancials {
1496
1530
  expirationTs: number
1531
+ lastSeenSyIndex: number
1497
1532
  ytBalance: bigint
1498
1533
  syBalance: bigint
1499
1534
  ptBalance: bigint
@@ -1508,6 +1543,7 @@ export interface ConfigurationOptions {
1508
1543
  thresholdAmount: bigint
1509
1544
  lnMakerFeeRate: number
1510
1545
  lnTakerFeeRate: number
1546
+ finalPyIndex: number
1511
1547
  }
1512
1548
 
1513
1549
  export interface Orderbook {
@@ -1521,6 +1557,7 @@ export interface Orderbook {
1521
1557
  tokenEscrowPt: web3.PublicKey
1522
1558
  cpiAccountOrderbook: web3.PublicKey
1523
1559
  admin: web3.PublicKey
1560
+ lastSyExchangeRate: number
1524
1561
  configurationOptions: ConfigurationOptions
1525
1562
  financials: OrderbookFinancials
1526
1563
  prices: PriceTreeNode[]
@@ -1783,6 +1820,7 @@ interface OrderbookRaw {
1783
1820
 
1784
1821
  interface OrderbookFinancialsRaw {
1785
1822
  expirationTs: number
1823
+ lastSeenSyIndex: number
1786
1824
  ytBalance: BN
1787
1825
  syBalance: BN
1788
1826
  ptBalance: BN
@@ -1809,11 +1847,12 @@ export interface OfferNodeRaw {
1809
1847
 
1810
1848
  export interface UserEscrowNodeRaw {
1811
1849
  user: web3.PublicKey
1812
- yieldIndex: BN
1850
+ yieldIndex: number
1813
1851
  ptAmount: BN
1814
1852
  syAmount: BN
1815
1853
  ytAmount: BN
1816
- staged: number
1854
+ stakedYtAmount: BN
1855
+ staged: BN
1817
1856
  }
1818
1857
 
1819
1858
  export function deserializeAnchorizedPNum(x: AnchorizedPNum): number {
@@ -2338,6 +2377,9 @@ export async function fetchReflectRedemptionRate({
2338
2377
  if (slot > currentSlot) {
2339
2378
  throw new Error("Reflect oracle slot is ahead of the current slot")
2340
2379
  }
2380
+
2381
+ console.log("currentSlot", currentSlot)
2382
+ console.log("slot", slot)
2341
2383
  const slotDelta = currentSlot - slot
2342
2384
 
2343
2385
  if (slotDelta > REFLECT_MAX_STALENESS_SLOTS) {