@mysten/deepbook-v3 1.0.2 → 1.0.4

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.
Files changed (28) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/client.d.mts +10 -0
  3. package/dist/client.d.mts.map +1 -1
  4. package/dist/client.mjs +54 -0
  5. package/dist/client.mjs.map +1 -1
  6. package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs +1 -1
  7. package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs.map +1 -1
  8. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set.mjs +1 -1
  9. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set.mjs.map +1 -1
  10. package/dist/utils/config.d.mts +1 -1
  11. package/dist/utils/config.mjs +1 -1
  12. package/dist/utils/config.mjs.map +1 -1
  13. package/dist/utils/constants.d.mts.map +1 -1
  14. package/dist/utils/constants.mjs +10 -0
  15. package/dist/utils/constants.mjs.map +1 -1
  16. package/package.json +4 -4
  17. package/src/client.ts +98 -0
  18. package/src/contracts/deepbook/balance_manager.ts +1 -1
  19. package/src/contracts/deepbook/big_vector.ts +1 -1
  20. package/src/contracts/deepbook/deps/sui/balance.ts +1 -1
  21. package/src/contracts/deepbook/deps/sui/table.ts +1 -1
  22. package/src/contracts/deepbook/pool.ts +7 -7
  23. package/src/contracts/deepbook/registry.ts +1 -1
  24. package/src/contracts/deepbook/vault.ts +1 -1
  25. package/src/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.ts +1 -1
  26. package/src/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set.ts +1 -1
  27. package/src/utils/config.ts +1 -1
  28. package/src/utils/constants.ts +10 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @mysten/deepbook-v3
2
2
 
3
+ ## 1.0.4
4
+
5
+ ### Patch Changes
6
+
7
+ - b1bf6fd: Batch pyth price feed updates, stale feeds older than 30 seconds
8
+ - Updated dependencies [265ec25]
9
+ - @mysten/sui@2.3.1
10
+
11
+ ## 1.0.3
12
+
13
+ ### Patch Changes
14
+
15
+ - bb40431: USDE Pools added
16
+
3
17
  ## 1.0.2
4
18
 
5
19
  ### Patch Changes
package/dist/client.d.mts CHANGED
@@ -388,6 +388,16 @@ declare class DeepBookClient {
388
388
  */
389
389
  getBalanceManagerReferralId(managerKey: string, poolKey: string): Promise<string | null>;
390
390
  getPriceInfoObject(tx: Transaction, coinKey: string): Promise<string>;
391
+ /**
392
+ * @description Batch update price info objects for multiple coins. Only updates stale feeds.
393
+ * This is more efficient than calling getPriceInfoObject multiple times as it:
394
+ * 1. Batch fetches all price info object ages in one RPC call
395
+ * 2. Fetches all stale price updates from Pyth in a single API call
396
+ * @param {Transaction} tx Transaction to add price update commands to
397
+ * @param {string[]} coinKeys Array of coin keys to update prices for
398
+ * @returns {Promise<Record<string, string>>} Map of coinKey -> priceInfoObjectId
399
+ */
400
+ getPriceInfoObjects(tx: Transaction, coinKeys: string[]): Promise<Record<string, string>>;
391
401
  /**
392
402
  * @description Get the age of the price info object for a specific coin
393
403
  * @param {string} coinKey Key of the coin
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.mts","names":[],"sources":["../src/client.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.mts","names":[],"sources":["../src/client.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/client.mjs CHANGED
@@ -749,6 +749,60 @@ var DeepBookClient = class {
749
749
  return (await new SuiPythClient(this.#client, pythStateId, wormholeStateId).updatePriceFeeds(tx, priceUpdateData, priceIDs))[0];
750
750
  }
751
751
  /**
752
+ * @description Batch update price info objects for multiple coins. Only updates stale feeds.
753
+ * This is more efficient than calling getPriceInfoObject multiple times as it:
754
+ * 1. Batch fetches all price info object ages in one RPC call
755
+ * 2. Fetches all stale price updates from Pyth in a single API call
756
+ * @param {Transaction} tx Transaction to add price update commands to
757
+ * @param {string[]} coinKeys Array of coin keys to update prices for
758
+ * @returns {Promise<Record<string, string>>} Map of coinKey -> priceInfoObjectId
759
+ */
760
+ async getPriceInfoObjects(tx, coinKeys) {
761
+ if (coinKeys.length === 0) return {};
762
+ const currentTime = Date.now();
763
+ const coinToObjectId = {};
764
+ const objectIds = [];
765
+ for (const coinKey of coinKeys) {
766
+ const priceInfoObjectId = this.#config.getCoin(coinKey).priceInfoObjectId;
767
+ coinToObjectId[coinKey] = priceInfoObjectId;
768
+ objectIds.push(priceInfoObjectId);
769
+ }
770
+ const res = await this.#client.core.getObjects({
771
+ objectIds,
772
+ include: { content: true }
773
+ });
774
+ const staleCoinKeys = [];
775
+ const result = {};
776
+ for (let i = 0; i < coinKeys.length; i++) {
777
+ const coinKey = coinKeys[i];
778
+ const obj = res.objects[i];
779
+ if (obj instanceof Error || !obj?.content) {
780
+ staleCoinKeys.push(coinKey);
781
+ continue;
782
+ }
783
+ const priceInfoObject = PriceInfoObject.parse(obj.content);
784
+ if (currentTime - Number(priceInfoObject.price_info.arrival_time) * 1e3 >= PRICE_INFO_OBJECT_MAX_AGE_MS) staleCoinKeys.push(coinKey);
785
+ else result[coinKey] = coinToObjectId[coinKey];
786
+ }
787
+ if (staleCoinKeys.length === 0) return result;
788
+ const staleFeedIds = [];
789
+ const feedIdToCoinKey = {};
790
+ for (const coinKey of staleCoinKeys) {
791
+ const feedId = this.#config.getCoin(coinKey).feed;
792
+ staleFeedIds.push(feedId);
793
+ feedIdToCoinKey[feedId] = coinKey;
794
+ }
795
+ const priceUpdateData = await new SuiPriceServiceConnection(this.#config.network === "testnet" ? "https://hermes-beta.pyth.network" : "https://hermes.pyth.network").getPriceFeedsUpdateData(staleFeedIds);
796
+ const wormholeStateId = this.#config.pyth.wormholeStateId;
797
+ const pythStateId = this.#config.pyth.pythStateId;
798
+ const updatedObjectIds = await new SuiPythClient(this.#client, pythStateId, wormholeStateId).updatePriceFeeds(tx, priceUpdateData, staleFeedIds);
799
+ for (let i = 0; i < staleFeedIds.length; i++) {
800
+ const coinKey = feedIdToCoinKey[staleFeedIds[i]];
801
+ result[coinKey] = updatedObjectIds[i];
802
+ }
803
+ return result;
804
+ }
805
+ /**
752
806
  * @description Get the age of the price info object for a specific coin
753
807
  * @param {string} coinKey Key of the coin
754
808
  * @returns {Promise<number>} The arrival time of the price info object