@kamino-finance/klend-sdk 7.0.1 → 7.0.3

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.
@@ -23,7 +23,7 @@ export type ScopePriceRefreshConfig = {
23
23
  scopeConfigurations: [Address, Configuration][];
24
24
  };
25
25
  export declare function getTokenOracleDataSync(allOracleAccounts: AllOracleAccounts, reserves: Reserve[]): [Reserve, TokenOracleData | undefined][];
26
- export declare function getTokenOracleData(rpc: Rpc<GetMultipleAccountsApi>, reserves: Reserve[]): Promise<Array<[Reserve, TokenOracleData | undefined]>>;
26
+ export declare function getTokenOracleData(rpc: Rpc<GetMultipleAccountsApi>, reserves: Reserve[], oracleAccounts?: AllOracleAccounts): Promise<Array<[Reserve, TokenOracleData | undefined]>>;
27
27
  export type AllOracleAccounts = Map<Address, Account<Base64EncodedDataResponse>>;
28
28
  export declare function getAllOracleAccounts(rpc: Rpc<GetMultipleAccountsApi>, reserves: Reserve[]): Promise<AllOracleAccounts>;
29
29
  export type PythPrices = {
@@ -1 +1 @@
1
- {"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../../src/utils/oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAChH,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,qEAAqE,CAAC;AAGnG,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAQjC,OAAO,EAAE,aAAa,EAAE,MAAM,sEAAsE,CAAC;AAGrG,eAAO,MAAM,yBAAyB,EAAE,OAA0B,CAAC;AAGnE,eAAO,MAAM,iBAAiB,EAAE,OAA2D,CAAC;AAM5F,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,KAAK,CAAC;IACb,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,CAAC;CACjD,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,4CAyD/F;AAGD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,GAAG,CAAC,sBAAsB,CAAC,EAChC,QAAQ,EAAE,OAAO,EAAE,GAClB,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,CAGxD;AAED,MAAM,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAEjF,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,GAAG,CAAC,sBAAsB,CAAC,EAChC,QAAQ,EAAE,OAAO,EAAE,GAClB,OAAO,CAAC,iBAAiB,CAAC,CA4B5B;AAMD,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,EAC/B,cAAc,EAAE,iBAAiB,GAChC,UAAU,GAAG,IAAI,CAwCnB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,OAAO,EACf,gBAAgB,EAAE,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,EAC9C,cAAc,EAAE,iBAAiB,GAChC,cAAc,GAAG,IAAI,CA4BvB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,EACtC,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,MAAM,EAAE,GACd,cAAc,GAAG,IAAI,CAsBvB"}
1
+ {"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../../src/utils/oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAChH,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,qEAAqE,CAAC;AAGnG,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAQjC,OAAO,EAAE,aAAa,EAAE,MAAM,sEAAsE,CAAC;AAGrG,eAAO,MAAM,yBAAyB,EAAE,OAA0B,CAAC;AAGnE,eAAO,MAAM,iBAAiB,EAAE,OAA2D,CAAC;AAM5F,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,KAAK,CAAC;IACb,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,CAAC;CACjD,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,4CAyD/F;AAGD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,GAAG,CAAC,sBAAsB,CAAC,EAChC,QAAQ,EAAE,OAAO,EAAE,EACnB,cAAc,CAAC,EAAE,iBAAiB,GACjC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,CAGxD;AAED,MAAM,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAEjF,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,GAAG,CAAC,sBAAsB,CAAC,EAChC,QAAQ,EAAE,OAAO,EAAE,GAClB,OAAO,CAAC,iBAAiB,CAAC,CA4B5B;AAMD,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,EAC/B,cAAc,EAAE,iBAAiB,GAChC,UAAU,GAAG,IAAI,CAwCnB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,OAAO,EACf,gBAAgB,EAAE,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,EAC9C,cAAc,EAAE,iBAAiB,GAChC,cAAc,GAAG,IAAI,CA4BvB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,EACtC,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,MAAM,EAAE,GACd,cAAc,GAAG,IAAI,CAsBvB"}
@@ -77,8 +77,8 @@ function getTokenOracleDataSync(allOracleAccounts, reserves) {
77
77
  return tokenOracleDataForReserves;
78
78
  }
79
79
  // TODO: Add freshness of the latest price to match sc logic
80
- async function getTokenOracleData(rpc, reserves) {
81
- const allOracleAccounts = await getAllOracleAccounts(rpc, reserves);
80
+ async function getTokenOracleData(rpc, reserves, oracleAccounts) {
81
+ const allOracleAccounts = oracleAccounts ?? (await getAllOracleAccounts(rpc, reserves));
82
82
  return getTokenOracleDataSync(allOracleAccounts, reserves);
83
83
  }
84
84
  async function getAllOracleAccounts(rpc, reserves) {
@@ -1 +1 @@
1
- {"version":3,"file":"oracle.js","sourceRoot":"","sources":["../../src/utils/oracle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oracle.js","sourceRoot":"","sources":["../../src/utils/oracle.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kamino-finance/klend-sdk",
3
- "version": "7.0.1",
3
+ "version": "7.0.3",
4
4
  "description": "Typescript SDK for interacting with the Kamino Lending (klend) protocol",
5
5
  "repository": {
6
6
  "type": "git",
@@ -64,7 +64,7 @@
64
64
  "@coral-xyz/borsh": "^0.28.0",
65
65
  "@kamino-finance/farms-sdk": "^3.1.0",
66
66
  "@kamino-finance/kliquidity-sdk": "^8.4.0",
67
- "@kamino-finance/scope-sdk": "^10.0.3",
67
+ "@kamino-finance/scope-sdk": "^10.0.4",
68
68
  "@solana-program/address-lookup-table": "^0.7.0",
69
69
  "@solana-program/system": "^0.7.0",
70
70
  "@solana-program/token": "^0.5.1",
@@ -429,15 +429,11 @@ export class KaminoAction {
429
429
  }
430
430
 
431
431
  async addScopeRefreshIxs(scope: Scope, tokens: number[], scopeConfig: Address) {
432
- this.setupIxsLabels.unshift(`refreshScopePrices`);
433
- this.setupIxs.unshift(
434
- await scope.refreshPriceListIx(
435
- {
436
- config: scopeConfig,
437
- },
438
- tokens
439
- )
440
- );
432
+ const refreshIx = await scope.refreshPriceListIx({ config: scopeConfig }, tokens);
433
+ if (refreshIx) {
434
+ this.setupIxsLabels.unshift(`refreshScopePrices`);
435
+ this.setupIxs.unshift(refreshIx);
436
+ }
441
437
  }
442
438
 
443
439
  static async buildBorrowTxns(
@@ -20,6 +20,7 @@ import { KaminoObligation } from './obligation';
20
20
  import { KaminoReserve, KaminoReserveRpcApi } from './reserve';
21
21
  import { LendingMarket, Obligation, ReferrerTokenState, Reserve, UserMetadata } from '../@codegen/klend/accounts';
22
22
  import {
23
+ AllOracleAccounts,
23
24
  cacheOrGetPythPrices,
24
25
  cacheOrGetScopePrice,
25
26
  cacheOrGetSwitchboardPrice,
@@ -48,7 +49,7 @@ import { PROGRAM_ID } from '../@codegen/klend/programId';
48
49
  import { Scope, U16_MAX } from '@kamino-finance/scope-sdk';
49
50
  import { OraclePrices } from '@kamino-finance/scope-sdk/dist/@codegen/scope/accounts/OraclePrices';
50
51
  import { Fraction } from './fraction';
51
- import { chunks, KaminoPrices, MintToPriceMap } from '@kamino-finance/kliquidity-sdk';
52
+ import { batchFetch, chunks, KaminoPrices, MintToPriceMap } from '@kamino-finance/kliquidity-sdk';
52
53
  import { parseTokenSymbol, parseZeroPaddedUtf8 } from './utils';
53
54
  import { ObligationZP } from '../@codegen/klend/zero_padding';
54
55
  import { checkDefined } from '../utils/validations';
@@ -99,6 +100,10 @@ export class KaminoMarket {
99
100
  recentSlotDurationMs: number,
100
101
  programId: Address = PROGRAM_ID
101
102
  ) {
103
+ if (recentSlotDurationMs <= 0) {
104
+ throw new Error('Recent slot duration cannot be 0');
105
+ }
106
+
102
107
  this.address = marketAddress;
103
108
  this.rpc = rpc;
104
109
  this.state = state;
@@ -134,10 +139,6 @@ export class KaminoMarket {
134
139
  return null;
135
140
  }
136
141
 
137
- if (recentSlotDurationMs <= 0) {
138
- throw new Error('Recent slot duration cannot be 0');
139
- }
140
-
141
142
  const reserves = withReserves
142
143
  ? await getReservesForMarket(marketAddress, rpc, programId, recentSlotDurationMs)
143
144
  : new Map<Address, KaminoReserve>();
@@ -156,6 +157,68 @@ export class KaminoMarket {
156
157
  return new KaminoMarket(connection, market, marketAddress, reserves, recentSlotDurationMs, programId);
157
158
  }
158
159
 
160
+ static async loadMultiple(
161
+ connection: Rpc<KaminoMarketRpcApi>,
162
+ markets: Address[],
163
+ recentSlotDurationMs: number,
164
+ programId: Address = PROGRAM_ID,
165
+ withReserves: boolean = true,
166
+ oracleAccounts?: AllOracleAccounts
167
+ ) {
168
+ const marketStates = await batchFetch(markets, (market) =>
169
+ LendingMarket.fetchMultiple(connection, market, programId)
170
+ );
171
+ const kaminoMarkets = new Map<Address, KaminoMarket>();
172
+ for (let i = 0; i < markets.length; i++) {
173
+ const market = marketStates[i];
174
+ const marketAddress = markets[i];
175
+ if (market === null) {
176
+ throw Error(`Could not fetch LendingMarket account state for market ${marketAddress}`);
177
+ }
178
+
179
+ const marketReserves = withReserves
180
+ ? await getReservesForMarket(marketAddress, connection, programId, recentSlotDurationMs, oracleAccounts)
181
+ : new Map<Address, KaminoReserve>();
182
+
183
+ kaminoMarkets.set(
184
+ marketAddress,
185
+ new KaminoMarket(connection, market, marketAddress, marketReserves, recentSlotDurationMs, programId)
186
+ );
187
+ }
188
+ return kaminoMarkets;
189
+ }
190
+
191
+ static async loadMultipleWithReserves(
192
+ connection: Rpc<KaminoMarketRpcApi>,
193
+ markets: Address[],
194
+ reserves: Map<Address, Map<Address, KaminoReserve>>,
195
+ recentSlotDurationMs: number,
196
+ programId: Address = PROGRAM_ID
197
+ ) {
198
+ const marketStates = await batchFetch(markets, (market) =>
199
+ LendingMarket.fetchMultiple(connection, market, programId)
200
+ );
201
+ const kaminoMarkets = new Map<Address, KaminoMarket>();
202
+ for (let i = 0; i < markets.length; i++) {
203
+ const market = marketStates[i];
204
+ const marketAddress = markets[i];
205
+ if (market === null) {
206
+ throw Error(`Could not fetch LendingMarket account state for market ${marketAddress}`);
207
+ }
208
+ const marketReserves = reserves.get(marketAddress);
209
+ if (!marketReserves) {
210
+ throw Error(
211
+ `Could not get reserves for market ${marketAddress} from the reserves map argument supplied to this method`
212
+ );
213
+ }
214
+ kaminoMarkets.set(
215
+ marketAddress,
216
+ new KaminoMarket(connection, market, marketAddress, marketReserves, recentSlotDurationMs, programId)
217
+ );
218
+ }
219
+ return kaminoMarkets;
220
+ }
221
+
159
222
  async reload(): Promise<void> {
160
223
  const market = await LendingMarket.fetch(this.rpc, this.getAddress(), this.programId);
161
224
  if (market === null) {
@@ -395,7 +458,7 @@ export class KaminoMarket {
395
458
  : debtReserve.getMaxBorrowAmountWithCollReserve(this, collReserve, slot);
396
459
  }
397
460
 
398
- async loadReserves() {
461
+ async loadReserves(oracleAccounts?: AllOracleAccounts) {
399
462
  const addresses = [...this.reserves.keys()];
400
463
  const reserveAccounts = await this.rpc
401
464
  .getMultipleAccounts(addresses, { commitment: 'processed', encoding: 'base64' })
@@ -411,7 +474,7 @@ export class KaminoMarket {
411
474
  }
412
475
  return reserveAccount;
413
476
  });
414
- const reservesAndOracles = await getTokenOracleData(this.getRpc(), deserializedReserves);
477
+ const reservesAndOracles = await getTokenOracleData(this.getRpc(), deserializedReserves, oracleAccounts);
415
478
  const kaminoReserves = new Map<Address, KaminoReserve>();
416
479
  reservesAndOracles.forEach(([reserve, oracle], index) => {
417
480
  if (!oracle) {
@@ -881,9 +944,13 @@ export class KaminoMarket {
881
944
  return finalObligations;
882
945
  }
883
946
 
884
- async getAllUserObligations(user: Address, commitment: Commitment = 'processed'): Promise<KaminoObligation[]> {
947
+ async getAllUserObligations(
948
+ user: Address,
949
+ commitment: Commitment = 'processed',
950
+ slot?: bigint
951
+ ): Promise<KaminoObligation[]> {
885
952
  const [currentSlot, obligations] = await Promise.all([
886
- this.rpc.getSlot().send(),
953
+ slot !== undefined ? Promise.resolve(slot) : this.rpc.getSlot().send(),
887
954
  this.rpc
888
955
  .getProgramAccounts(this.programId, {
889
956
  filters: [
@@ -1261,8 +1328,7 @@ export class KaminoMarket {
1261
1328
  /**
1262
1329
  * Get all Scope prices used by all the market reserves
1263
1330
  */
1264
- async getAllScopePrices(scope: Scope): Promise<KaminoPrices> {
1265
- const allOraclePrices = await this.getReserveOraclePrices(scope);
1331
+ async getAllScopePrices(scope: Scope, allOraclePrices: Map<Address, OraclePrices>): Promise<KaminoPrices> {
1266
1332
  const spot: MintToPriceMap = {};
1267
1333
  const twaps: MintToPriceMap = {};
1268
1334
  for (const reserve of this.reserves.values()) {
@@ -1271,7 +1337,7 @@ export class KaminoMarket {
1271
1337
  const oracle = reserve.state.config.tokenInfo.scopeConfiguration.priceFeed;
1272
1338
  const chain = reserve.state.config.tokenInfo.scopeConfiguration.priceChain;
1273
1339
  const twapChain = reserve.state.config.tokenInfo.scopeConfiguration.twapChain.filter((x) => x > 0);
1274
- const oraclePrices = allOraclePrices.get(reserve.address);
1340
+ const oraclePrices = allOraclePrices.get(oracle);
1275
1341
  if (oraclePrices && oracle && isNotNullPubkey(oracle) && chain && Scope.isScopeChainValid(chain)) {
1276
1342
  const spotPrice = await scope.getPriceFromChain(chain, oraclePrices);
1277
1343
  spot[tokenMint] = { price: spotPrice.price, name: tokenName };
@@ -1287,16 +1353,18 @@ export class KaminoMarket {
1287
1353
  /**
1288
1354
  * Get all Scope/Pyth/Switchboard prices used by all the market reserves
1289
1355
  */
1290
- async getAllPrices(): Promise<KlendPrices> {
1356
+ async getAllPrices(oracleAccounts?: AllOracleAccounts): Promise<KlendPrices> {
1291
1357
  const klendPrices: KlendPrices = {
1292
1358
  scope: { spot: {}, twap: {} },
1293
1359
  pyth: { spot: {}, twap: {} },
1294
1360
  switchboard: { spot: {}, twap: {} },
1295
1361
  };
1296
- const allOracleAccounts = await getAllOracleAccounts(
1297
- this.rpc,
1298
- this.getReserves().map((x) => x.state)
1299
- );
1362
+ const allOracleAccounts =
1363
+ oracleAccounts ??
1364
+ (await getAllOracleAccounts(
1365
+ this.rpc,
1366
+ this.getReserves().map((x) => x.state)
1367
+ ));
1300
1368
  const pythCache = new Map<Address, PythPrices>();
1301
1369
  const switchboardCache = new Map<Address, CandidatePrice>();
1302
1370
  const scopeCache = new Map<Address, OraclePrices>();
@@ -1506,7 +1574,8 @@ export async function getReservesForMarket(
1506
1574
  marketAddress: Address,
1507
1575
  rpc: Rpc<KaminoReserveRpcApi>,
1508
1576
  programId: Address,
1509
- recentSlotDurationMs: number
1577
+ recentSlotDurationMs: number,
1578
+ oracleAccounts?: AllOracleAccounts
1510
1579
  ): Promise<Map<Address, KaminoReserve>> {
1511
1580
  const reserves = await rpc
1512
1581
  .getProgramAccounts(programId, {
@@ -1537,7 +1606,7 @@ export async function getReservesForMarket(
1537
1606
  }
1538
1607
  return reserveAccount;
1539
1608
  });
1540
- const reservesAndOracles = await getTokenOracleData(rpc, deserializedReserves);
1609
+ const reservesAndOracles = await getTokenOracleData(rpc, deserializedReserves, oracleAccounts);
1541
1610
  const reservesByAddress = new Map<Address, KaminoReserve>();
1542
1611
  reservesAndOracles.forEach(([reserve, oracle], index) => {
1543
1612
  if (!oracle) {
@@ -1553,14 +1622,15 @@ export async function getSingleReserve(
1553
1622
  reservePk: Address,
1554
1623
  rpc: Rpc<KaminoReserveRpcApi>,
1555
1624
  recentSlotDurationMs: number,
1556
- reserveData?: Reserve
1625
+ reserveData?: Reserve,
1626
+ oracleAccounts?: AllOracleAccounts
1557
1627
  ): Promise<KaminoReserve> {
1558
1628
  const reserve = reserveData ?? (await Reserve.fetch(rpc, reservePk));
1559
1629
 
1560
1630
  if (reserve === null) {
1561
1631
  throw new Error(`Reserve account ${reservePk} does not exist`);
1562
1632
  }
1563
- const reservesAndOracles = await getTokenOracleData(rpc, [reserve]);
1633
+ const reservesAndOracles = await getTokenOracleData(rpc, [reserve], oracleAccounts);
1564
1634
  const [, oracle] = reservesAndOracles[0];
1565
1635
 
1566
1636
  if (!oracle) {
@@ -16,6 +16,7 @@ import {
16
16
  } from '@solana/kit';
17
17
  import Decimal from 'decimal.js';
18
18
  import {
19
+ AllOracleAccounts,
19
20
  DEFAULT_PUBLIC_KEY,
20
21
  getTokenOracleData,
21
22
  globalConfigPda,
@@ -102,14 +103,15 @@ export class KaminoReserve {
102
103
  address: Address,
103
104
  rpc: Rpc<KaminoReserveRpcApi>,
104
105
  recentSlotDurationMs: number,
105
- reserveState?: Reserve
106
+ reserveState?: Reserve,
107
+ oracleAccounts?: AllOracleAccounts
106
108
  ) {
107
109
  const reserve = reserveState ?? (await Reserve.fetch(rpc, address));
108
110
  if (reserve === null) {
109
111
  throw new Error(`Reserve account ${address} does not exist`);
110
112
  }
111
113
 
112
- const tokenOracleDataWithReserve = await getTokenOracleData(rpc, [reserve]);
114
+ const tokenOracleDataWithReserve = await getTokenOracleData(rpc, [reserve], oracleAccounts);
113
115
  if (!tokenOracleDataWithReserve[0]) {
114
116
  throw new Error('Token oracle data not found');
115
117
  }
@@ -23,6 +23,7 @@ import {
23
23
  TransactionSigner,
24
24
  } from '@solana/kit';
25
25
  import {
26
+ AllOracleAccounts,
26
27
  DEFAULT_PUBLIC_KEY,
27
28
  DEFAULT_RECENT_SLOT_DURATION_MS,
28
29
  getAssociatedTokenAddress,
@@ -2361,9 +2362,13 @@ export class KaminoVaultClient {
2361
2362
  /**
2362
2363
  * This will load the onchain state for all the reserves that the vaults have allocations for, deduplicating the reserves
2363
2364
  * @param vaults - the vault states to load reserves for
2365
+ * @param oracleAccounts (optional) all reserve oracle accounts, if not supplied will make an additional rpc call to fetch these accounts
2364
2366
  * @returns a hashmap from each reserve pubkey to the reserve state
2365
2367
  */
2366
- async loadVaultsReserves(vaults: VaultState[]): Promise<Map<Address, KaminoReserve>> {
2368
+ async loadVaultsReserves(
2369
+ vaults: VaultState[],
2370
+ oracleAccounts?: AllOracleAccounts
2371
+ ): Promise<Map<Address, KaminoReserve>> {
2367
2372
  const vaultReservesAddressesSet = new Set<Address>(vaults.flatMap((vault) => this.getVaultReserves(vault)));
2368
2373
  const vaultReservesAddresses = [...vaultReservesAddressesSet];
2369
2374
  const reserveAccounts = await this.getConnection()
@@ -2382,7 +2387,7 @@ export class KaminoVaultClient {
2382
2387
  return reserveAccount;
2383
2388
  });
2384
2389
 
2385
- const reservesAndOracles = await getTokenOracleData(this.getConnection(), deserializedReserves);
2390
+ const reservesAndOracles = await getTokenOracleData(this.getConnection(), deserializedReserves, oracleAccounts);
2386
2391
 
2387
2392
  const kaminoReserves = new Map<Address, KaminoReserve>();
2388
2393
 
@@ -2409,13 +2414,15 @@ export class KaminoVaultClient {
2409
2414
  * @param [slot] - the slot for which to retrieve the vault collaterals for. Optional. If not provided the function will fetch the current slot
2410
2415
  * @param [vaultReservesMap] - hashmap from each reserve pubkey to the reserve state. Optional. If provided the function will be significantly faster as it will not have to fetch the reserves
2411
2416
  * @param [kaminoMarkets] - a list of all the kamino markets. Optional. If provided the function will be significantly faster as it will not have to fetch the markets
2417
+ * @param oracleAccounts (optional) all reserve oracle accounts, if not supplied will make an additional rpc call to fetch these accounts
2412
2418
  * @returns a hashmap from each reserve pubkey to the market overview of the collaterals that can be used and the min and max loan to value ratio in that market
2413
2419
  */
2414
2420
  async getVaultCollaterals(
2415
2421
  vaultState: VaultState,
2416
2422
  slot: Slot,
2417
2423
  vaultReservesMap?: Map<Address, KaminoReserve>,
2418
- kaminoMarkets?: KaminoMarket[]
2424
+ kaminoMarkets?: KaminoMarket[],
2425
+ oracleAccounts?: AllOracleAccounts
2419
2426
  ): Promise<Map<Address, MarketOverview>> {
2420
2427
  const vaultReservesStateMap = vaultReservesMap ? vaultReservesMap : await this.loadVaultReserves(vaultState);
2421
2428
  const vaultReservesState: KaminoReserve[] = [];
@@ -2439,7 +2446,11 @@ export class KaminoVaultClient {
2439
2446
  const missingReservesStates = (await Reserve.fetchMultiple(this.getConnection(), [...missingReserves])).filter(
2440
2447
  (reserve) => reserve !== null
2441
2448
  );
2442
- const missingReservesAndOracles = await getTokenOracleData(this.getConnection(), missingReservesStates);
2449
+ const missingReservesAndOracles = await getTokenOracleData(
2450
+ this.getConnection(),
2451
+ missingReservesStates,
2452
+ oracleAccounts
2453
+ );
2443
2454
  missingReservesAndOracles.forEach(([reserve, oracle], index) => {
2444
2455
  const fetchedReserve = new KaminoReserve(
2445
2456
  reserve,
@@ -1684,7 +1684,10 @@ export const getScopeRefreshIx = async (
1684
1684
  for (const [configPubkey, config] of scopeRefreshConfig.scopeConfigurations) {
1685
1685
  const tokenIds = scopeTokensMap.get(config.oraclePrices);
1686
1686
  if (tokenIds && tokenIds.length > 0) {
1687
- scopeRefreshIxs.push(await scopeRefreshConfig.scope.refreshPriceListIx({ config: configPubkey }, tokenIds));
1687
+ const refreshIx = await scopeRefreshConfig.scope.refreshPriceListIx({ config: configPubkey }, tokenIds);
1688
+ if (refreshIx) {
1689
+ scopeRefreshIxs.push(refreshIx);
1690
+ }
1688
1691
  }
1689
1692
  }
1690
1693
  }
@@ -105,9 +105,10 @@ export function getTokenOracleDataSync(allOracleAccounts: AllOracleAccounts, res
105
105
  // TODO: Add freshness of the latest price to match sc logic
106
106
  export async function getTokenOracleData(
107
107
  rpc: Rpc<GetMultipleAccountsApi>,
108
- reserves: Reserve[]
108
+ reserves: Reserve[],
109
+ oracleAccounts?: AllOracleAccounts
109
110
  ): Promise<Array<[Reserve, TokenOracleData | undefined]>> {
110
- const allOracleAccounts = await getAllOracleAccounts(rpc, reserves);
111
+ const allOracleAccounts = oracleAccounts ?? (await getAllOracleAccounts(rpc, reserves));
111
112
  return getTokenOracleDataSync(allOracleAccounts, reserves);
112
113
  }
113
114