@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.
- package/CHANGELOG.md +14 -0
- package/dist/client.d.mts +10 -0
- package/dist/client.d.mts.map +1 -1
- package/dist/client.mjs +54 -0
- package/dist/client.mjs.map +1 -1
- package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs +1 -1
- package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs.map +1 -1
- package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set.mjs +1 -1
- package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set.mjs.map +1 -1
- package/dist/utils/config.d.mts +1 -1
- package/dist/utils/config.mjs +1 -1
- package/dist/utils/config.mjs.map +1 -1
- package/dist/utils/constants.d.mts.map +1 -1
- package/dist/utils/constants.mjs +10 -0
- package/dist/utils/constants.mjs.map +1 -1
- package/package.json +4 -4
- package/src/client.ts +98 -0
- package/src/contracts/deepbook/balance_manager.ts +1 -1
- package/src/contracts/deepbook/big_vector.ts +1 -1
- package/src/contracts/deepbook/deps/sui/balance.ts +1 -1
- package/src/contracts/deepbook/deps/sui/table.ts +1 -1
- package/src/contracts/deepbook/pool.ts +7 -7
- package/src/contracts/deepbook/registry.ts +1 -1
- package/src/contracts/deepbook/vault.ts +1 -1
- package/src/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.ts +1 -1
- package/src/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set.ts +1 -1
- package/src/utils/config.ts +1 -1
- 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
|
package/dist/client.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.mts","names":[],"sources":["../src/client.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;;UAsCiB,wBAAA,SAAiC;AAAjC,UAEA,eAFyB,CAAA,OAAA,UAAQ,CAAA,CAAA;EAEjC,OAAA,EAAA,MAAA;EAEmB,eAAA,CAAA,EAAA;IACD,CAAA,GAAA,EAAA,MAAA,CAAA,EADC,cACD;EAC1B,CAAA;EACA,cAAA,CAAA,EAAA;IAID,CAAA,GAAA,EAAA,MAAA,CAAA,EAN2B,aAM3B;EAAI,CAAA;EAGK,KAAA,CAAA,EARR,OAQQ;EACR,KAAA,CAAA,EARA,OAQA;EACC,QAAA,CAAA,EAAA,MAAe;EAFsB,cAAA,CAAA,EAAA,MAAA;EAAe,mBAAA,CAAA,EAAA,MAAA;EAK9C,IAAA,CAAA,EARR,IAQgB;;AAGL,UARF,qBAAA,SAA8B,eAQ5B,CAAA;EAAhB,MAAA,EAPM,wBAON;EAA8C,OAAA,EANvC,cAAA,CAAe,OAMwB;;AAAgC,iBAHjE,QAGiE,CAAA,aAAA,MAAA,GAAA,UAAA,CAAA,CAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EAA9E,eAA8E,CAA9D,IAA8D,CAAA,CAAA,EAAtD,qBAAsD,CAAhC,wBAAgC,EAAN,IAAM,EAAA,cAAA,CAAA;;;AAgBjF;AAIiB,cAJJ,cAAA,CAII;EACN,CAAA,OAAA;EACK,cAAA,EAFC,sBAED;EACH,QAAA,EAFF,gBAEE;EACA,aAAA,EAFG,qBAEH;EACC,UAAA,EAFD,iBAEC;EACK,UAAA,EAFN,kBAEM;EACN,WAAA,EAFC,mBAED;EACG,gBAAA,EAFG,wBAEH;EACC,UAAA,EAFJ,kBAEI;EACI,aAAA,EAFL,qBAEK;EACT,cAAA,EAFK,sBAEL;EACC,kBAAA,EAFQ,0BAER;EAMX,SAAA,EAPU,iBAOV;EACA,UAAA,EAPW,kBAOX;EACA;;;EAGA,WAAA,CAAA;IAAA,MAAA;IAAA,OAAA;IAAA,OAAA;IAAA,eAAA;IAAA,cAAA;IAAA,KAAA;IAAA,KAAA;IAAA,QAAA;IAAA,cAAA;IAAA;EAAA,CAAA,EAKE,qBALF;EACA;;;;;;EAiEgC,mBAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EA1B4B,OA0B5B,CAAA;IAsB8B,QAAA,EAAA,MAAA;IA+BA,OAAA,EAAA,MAAA;EAgCkB,CAAA,CAAA;EA+BtB;;;;;EAsJD,WAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EA1QzB,OA0QyB,CAAA,OAAA,CAAA;EA4CvB;;;;;;;EA6MG,mBAAA,CAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EA7eyB,OA6ezB,CAAA;IAoDK,YAAA,EAAA,MAAA;IAoBO,OAAA,EAAA,MAAA;IAwB/C,QAAA,EAAA,MAAA;IAkCmD,YAAA,EAAA,MAAA;EAsBW,CAAA,CAAA;EAsBO;;;;;;;
|
|
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
|