@zofai/zo-sdk 0.1.92
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/.claude/settings.local.json +9 -0
- package/.gitattributes +4 -0
- package/.prettierrc.js +9 -0
- package/README.md +28 -0
- package/dist/abstract/BaseAPI.cjs +206 -0
- package/dist/abstract/BaseAPI.cjs.map +1 -0
- package/dist/abstract/BaseAPI.d.cts +172 -0
- package/dist/abstract/BaseAPI.d.cts.map +1 -0
- package/dist/abstract/BaseAPI.d.mts +172 -0
- package/dist/abstract/BaseAPI.d.mts.map +1 -0
- package/dist/abstract/BaseAPI.mjs +202 -0
- package/dist/abstract/BaseAPI.mjs.map +1 -0
- package/dist/abstract/BaseDataAPI.cjs +140 -0
- package/dist/abstract/BaseDataAPI.cjs.map +1 -0
- package/dist/abstract/BaseDataAPI.d.cts +89 -0
- package/dist/abstract/BaseDataAPI.d.cts.map +1 -0
- package/dist/abstract/BaseDataAPI.d.mts +89 -0
- package/dist/abstract/BaseDataAPI.d.mts.map +1 -0
- package/dist/abstract/BaseDataAPI.mjs +136 -0
- package/dist/abstract/BaseDataAPI.mjs.map +1 -0
- package/dist/abstract/index.cjs +12 -0
- package/dist/abstract/index.cjs.map +1 -0
- package/dist/abstract/index.d.cts +7 -0
- package/dist/abstract/index.d.cts.map +1 -0
- package/dist/abstract/index.d.mts +7 -0
- package/dist/abstract/index.d.mts.map +1 -0
- package/dist/abstract/index.mjs +7 -0
- package/dist/abstract/index.mjs.map +1 -0
- package/dist/api.cjs +779 -0
- package/dist/api.cjs.map +1 -0
- package/dist/api.d.cts +75 -0
- package/dist/api.d.cts.map +1 -0
- package/dist/api.d.mts +75 -0
- package/dist/api.d.mts.map +1 -0
- package/dist/api.mjs +775 -0
- package/dist/api.mjs.map +1 -0
- package/dist/bcs.cjs +42 -0
- package/dist/bcs.cjs.map +1 -0
- package/dist/bcs.d.cts +91 -0
- package/dist/bcs.d.cts.map +1 -0
- package/dist/bcs.d.mts +91 -0
- package/dist/bcs.d.mts.map +1 -0
- package/dist/bcs.mjs +39 -0
- package/dist/bcs.mjs.map +1 -0
- package/dist/consts/deployments-shared-mainnet.json +50 -0
- package/dist/consts/deployments-shared-testnet.json +45 -0
- package/dist/consts/deployments-slp-mainnet.json +600 -0
- package/dist/consts/deployments-slp-testnet.json +87 -0
- package/dist/consts/deployments-usdz-mainnet.json +494 -0
- package/dist/consts/deployments-usdz-testnet.json +98 -0
- package/dist/consts/deployments-zbtcvc-mainnet.json +180 -0
- package/dist/consts/deployments-zlp-mainnet.json +791 -0
- package/dist/consts/deployments-zlp-testnet.json +76 -0
- package/dist/consts/index.cjs +200 -0
- package/dist/consts/index.cjs.map +1 -0
- package/dist/consts/index.d.cts +157 -0
- package/dist/consts/index.d.cts.map +1 -0
- package/dist/consts/index.d.mts +157 -0
- package/dist/consts/index.d.mts.map +1 -0
- package/dist/consts/index.mjs +189 -0
- package/dist/consts/index.mjs.map +1 -0
- package/dist/consts/price_id_to_object_id.mainnet.json +56 -0
- package/dist/consts/price_id_to_object_id.testnet.json +17 -0
- package/dist/data.cjs +919 -0
- package/dist/data.cjs.map +1 -0
- package/dist/data.d.cts +235 -0
- package/dist/data.d.cts.map +1 -0
- package/dist/data.d.mts +235 -0
- package/dist/data.d.mts.map +1 -0
- package/dist/data.mjs +915 -0
- package/dist/data.mjs.map +1 -0
- package/dist/factory/SDKFactory.cjs +228 -0
- package/dist/factory/SDKFactory.cjs.map +1 -0
- package/dist/factory/SDKFactory.d.cts +84 -0
- package/dist/factory/SDKFactory.d.cts.map +1 -0
- package/dist/factory/SDKFactory.d.mts +84 -0
- package/dist/factory/SDKFactory.d.mts.map +1 -0
- package/dist/factory/SDKFactory.mjs +222 -0
- package/dist/factory/SDKFactory.mjs.map +1 -0
- package/dist/implementations/SLPAPI.cjs +1794 -0
- package/dist/implementations/SLPAPI.cjs.map +1 -0
- package/dist/implementations/SLPAPI.d.cts +183 -0
- package/dist/implementations/SLPAPI.d.cts.map +1 -0
- package/dist/implementations/SLPAPI.d.mts +183 -0
- package/dist/implementations/SLPAPI.d.mts.map +1 -0
- package/dist/implementations/SLPAPI.mjs +1790 -0
- package/dist/implementations/SLPAPI.mjs.map +1 -0
- package/dist/implementations/SLPDataAPI.cjs +1384 -0
- package/dist/implementations/SLPDataAPI.cjs.map +1 -0
- package/dist/implementations/SLPDataAPI.d.cts +158 -0
- package/dist/implementations/SLPDataAPI.d.cts.map +1 -0
- package/dist/implementations/SLPDataAPI.d.mts +158 -0
- package/dist/implementations/SLPDataAPI.d.mts.map +1 -0
- package/dist/implementations/SLPDataAPI.mjs +1380 -0
- package/dist/implementations/SLPDataAPI.mjs.map +1 -0
- package/dist/implementations/USDZAPI.cjs +1676 -0
- package/dist/implementations/USDZAPI.cjs.map +1 -0
- package/dist/implementations/USDZAPI.d.cts +180 -0
- package/dist/implementations/USDZAPI.d.cts.map +1 -0
- package/dist/implementations/USDZAPI.d.mts +180 -0
- package/dist/implementations/USDZAPI.d.mts.map +1 -0
- package/dist/implementations/USDZAPI.mjs +1672 -0
- package/dist/implementations/USDZAPI.mjs.map +1 -0
- package/dist/implementations/USDZDataAPI.cjs +1209 -0
- package/dist/implementations/USDZDataAPI.cjs.map +1 -0
- package/dist/implementations/USDZDataAPI.d.cts +191 -0
- package/dist/implementations/USDZDataAPI.d.cts.map +1 -0
- package/dist/implementations/USDZDataAPI.d.mts +191 -0
- package/dist/implementations/USDZDataAPI.d.mts.map +1 -0
- package/dist/implementations/USDZDataAPI.mjs +1205 -0
- package/dist/implementations/USDZDataAPI.mjs.map +1 -0
- package/dist/implementations/ZBTCVCAPI.cjs +906 -0
- package/dist/implementations/ZBTCVCAPI.cjs.map +1 -0
- package/dist/implementations/ZBTCVCAPI.d.cts +107 -0
- package/dist/implementations/ZBTCVCAPI.d.cts.map +1 -0
- package/dist/implementations/ZBTCVCAPI.d.mts +107 -0
- package/dist/implementations/ZBTCVCAPI.d.mts.map +1 -0
- package/dist/implementations/ZBTCVCAPI.mjs +902 -0
- package/dist/implementations/ZBTCVCAPI.mjs.map +1 -0
- package/dist/implementations/ZBTCVCDataAPI.cjs +829 -0
- package/dist/implementations/ZBTCVCDataAPI.cjs.map +1 -0
- package/dist/implementations/ZBTCVCDataAPI.d.cts +94 -0
- package/dist/implementations/ZBTCVCDataAPI.d.cts.map +1 -0
- package/dist/implementations/ZBTCVCDataAPI.d.mts +94 -0
- package/dist/implementations/ZBTCVCDataAPI.d.mts.map +1 -0
- package/dist/implementations/ZBTCVCDataAPI.mjs +825 -0
- package/dist/implementations/ZBTCVCDataAPI.mjs.map +1 -0
- package/dist/implementations/ZLPAPI.cjs +1948 -0
- package/dist/implementations/ZLPAPI.cjs.map +1 -0
- package/dist/implementations/ZLPAPI.d.cts +192 -0
- package/dist/implementations/ZLPAPI.d.cts.map +1 -0
- package/dist/implementations/ZLPAPI.d.mts +192 -0
- package/dist/implementations/ZLPAPI.d.mts.map +1 -0
- package/dist/implementations/ZLPAPI.mjs +1944 -0
- package/dist/implementations/ZLPAPI.mjs.map +1 -0
- package/dist/implementations/ZLPDataAPI.cjs +1267 -0
- package/dist/implementations/ZLPDataAPI.cjs.map +1 -0
- package/dist/implementations/ZLPDataAPI.d.cts +193 -0
- package/dist/implementations/ZLPDataAPI.d.cts.map +1 -0
- package/dist/implementations/ZLPDataAPI.d.mts +193 -0
- package/dist/implementations/ZLPDataAPI.d.mts.map +1 -0
- package/dist/implementations/ZLPDataAPI.mjs +1263 -0
- package/dist/implementations/ZLPDataAPI.mjs.map +1 -0
- package/dist/implementations/index.cjs +26 -0
- package/dist/implementations/index.cjs.map +1 -0
- package/dist/implementations/index.d.cts +13 -0
- package/dist/implementations/index.d.cts.map +1 -0
- package/dist/implementations/index.d.mts +13 -0
- package/dist/implementations/index.d.mts.map +1 -0
- package/dist/implementations/index.mjs +15 -0
- package/dist/implementations/index.mjs.map +1 -0
- package/dist/index.cjs +69 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +51 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +51 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +51 -0
- package/dist/index.mjs.map +1 -0
- package/dist/interfaces/base.cjs +7 -0
- package/dist/interfaces/base.cjs.map +1 -0
- package/dist/interfaces/base.d.cts +346 -0
- package/dist/interfaces/base.d.cts.map +1 -0
- package/dist/interfaces/base.d.mts +346 -0
- package/dist/interfaces/base.d.mts.map +1 -0
- package/dist/interfaces/base.mjs +6 -0
- package/dist/interfaces/base.mjs.map +1 -0
- package/dist/interfaces/index.cjs +31 -0
- package/dist/interfaces/index.cjs.map +1 -0
- package/dist/interfaces/index.d.cts +15 -0
- package/dist/interfaces/index.d.cts.map +1 -0
- package/dist/interfaces/index.d.mts +15 -0
- package/dist/interfaces/index.d.mts.map +1 -0
- package/dist/interfaces/index.mjs +15 -0
- package/dist/interfaces/index.mjs.map +1 -0
- package/dist/interfaces/slp.cjs +7 -0
- package/dist/interfaces/slp.cjs.map +1 -0
- package/dist/interfaces/slp.d.cts +179 -0
- package/dist/interfaces/slp.d.cts.map +1 -0
- package/dist/interfaces/slp.d.mts +179 -0
- package/dist/interfaces/slp.d.mts.map +1 -0
- package/dist/interfaces/slp.mjs +6 -0
- package/dist/interfaces/slp.mjs.map +1 -0
- package/dist/interfaces/usdz.cjs +7 -0
- package/dist/interfaces/usdz.cjs.map +1 -0
- package/dist/interfaces/usdz.d.cts +104 -0
- package/dist/interfaces/usdz.d.cts.map +1 -0
- package/dist/interfaces/usdz.d.mts +104 -0
- package/dist/interfaces/usdz.d.mts.map +1 -0
- package/dist/interfaces/usdz.mjs +6 -0
- package/dist/interfaces/usdz.mjs.map +1 -0
- package/dist/interfaces/zbtcvc.cjs +7 -0
- package/dist/interfaces/zbtcvc.cjs.map +1 -0
- package/dist/interfaces/zbtcvc.d.cts +64 -0
- package/dist/interfaces/zbtcvc.d.cts.map +1 -0
- package/dist/interfaces/zbtcvc.d.mts +64 -0
- package/dist/interfaces/zbtcvc.d.mts.map +1 -0
- package/dist/interfaces/zbtcvc.mjs +6 -0
- package/dist/interfaces/zbtcvc.mjs.map +1 -0
- package/dist/interfaces/zlp.cjs +7 -0
- package/dist/interfaces/zlp.cjs.map +1 -0
- package/dist/interfaces/zlp.d.cts +114 -0
- package/dist/interfaces/zlp.d.cts.map +1 -0
- package/dist/interfaces/zlp.d.mts +114 -0
- package/dist/interfaces/zlp.d.mts.map +1 -0
- package/dist/interfaces/zlp.mjs +6 -0
- package/dist/interfaces/zlp.mjs.map +1 -0
- package/dist/oracle.cjs +118 -0
- package/dist/oracle.cjs.map +1 -0
- package/dist/oracle.d.cts +25 -0
- package/dist/oracle.d.cts.map +1 -0
- package/dist/oracle.d.mts +25 -0
- package/dist/oracle.d.mts.map +1 -0
- package/dist/oracle.mjs +114 -0
- package/dist/oracle.mjs.map +1 -0
- package/dist/utils.cjs +129 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.d.cts +44 -0
- package/dist/utils.d.cts.map +1 -0
- package/dist/utils.d.mts +44 -0
- package/dist/utils.d.mts.map +1 -0
- package/dist/utils.mjs +115 -0
- package/dist/utils.mjs.map +1 -0
- package/docs/SUMMARY.md +10 -0
- package/docs/api-reference.md +32 -0
- package/docs/architecture.md +14 -0
- package/docs/common-operations.md +52 -0
- package/docs/error-handling.md +17 -0
- package/docs/getting-started.md +60 -0
- package/docs/introduction.md +15 -0
- package/docs/lp-specific-features.md +96 -0
- package/docs/type-safety.md +29 -0
- package/eslint.config.mjs +18 -0
- package/package.json +42 -0
- package/src/abstract/BaseAPI.ts +575 -0
- package/src/abstract/BaseDataAPI.ts +207 -0
- package/src/abstract/index.ts +7 -0
- package/src/api.ts +1100 -0
- package/src/bcs.ts +45 -0
- package/src/consts/deployments-shared-mainnet.json +50 -0
- package/src/consts/deployments-shared-testnet.json +45 -0
- package/src/consts/deployments-slp-mainnet.json +600 -0
- package/src/consts/deployments-slp-testnet.json +87 -0
- package/src/consts/deployments-usdz-mainnet.json +494 -0
- package/src/consts/deployments-usdz-testnet.json +98 -0
- package/src/consts/deployments-zbtcvc-mainnet.json +180 -0
- package/src/consts/deployments-zlp-mainnet.json +791 -0
- package/src/consts/deployments-zlp-testnet.json +76 -0
- package/src/consts/index.ts +345 -0
- package/src/consts/price_id_to_object_id.mainnet.json +56 -0
- package/src/consts/price_id_to_object_id.testnet.json +17 -0
- package/src/data.ts +1279 -0
- package/src/factory/SDKFactory.ts +340 -0
- package/src/implementations/SLPAPI.ts +2722 -0
- package/src/implementations/SLPDataAPI.ts +1839 -0
- package/src/implementations/USDZAPI.ts +2488 -0
- package/src/implementations/USDZDataAPI.ts +1548 -0
- package/src/implementations/ZBTCVCAPI.ts +1337 -0
- package/src/implementations/ZBTCVCDataAPI.ts +993 -0
- package/src/implementations/ZLPAPI.ts +2888 -0
- package/src/implementations/ZLPDataAPI.ts +1603 -0
- package/src/implementations/index.ts +16 -0
- package/src/index.ts +58 -0
- package/src/interfaces/base.ts +838 -0
- package/src/interfaces/index.ts +50 -0
- package/src/interfaces/slp.ts +268 -0
- package/src/interfaces/usdz.ts +181 -0
- package/src/interfaces/zbtcvc.ts +116 -0
- package/src/interfaces/zlp.ts +244 -0
- package/src/oracle.ts +153 -0
- package/src/utils.ts +168 -0
- package/tests/api.test.ts +219 -0
- package/tests/data.test.ts +156 -0
- package/tests/oracle.test.ts +33 -0
- package/tsconfig.json +22 -0
package/dist/oracle.mjs
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Transaction } from "@mysten/sui/transactions";
|
|
2
|
+
import { SuiPriceServiceConnection, SuiPythClient } from "@pythnetwork/pyth-sui-js";
|
|
3
|
+
import { getConsts, getPriceIdToPythFeeder, getPythFeederToId, getPythFeederToPriceId, getSharedConfig, LPToken } from "./consts/index.mjs";
|
|
4
|
+
import { createJsonRpcProvider } from "./utils.mjs";
|
|
5
|
+
export class OracleAPI {
|
|
6
|
+
constructor(network, provider,
|
|
7
|
+
// todo 需要从配置文件中获取
|
|
8
|
+
connectionURL, lpToken = LPToken.ZLP) {
|
|
9
|
+
this.priceCache = {};
|
|
10
|
+
this.network = network;
|
|
11
|
+
this.consts = getConsts(network, lpToken);
|
|
12
|
+
this.sharedConfig = getSharedConfig(network);
|
|
13
|
+
this.connectionURL = connectionURL;
|
|
14
|
+
this.PythFeederToPriceId = getPythFeederToPriceId(network);
|
|
15
|
+
this.PythFeederToId = getPythFeederToId(network);
|
|
16
|
+
this.provider = provider || createJsonRpcProvider(network);
|
|
17
|
+
this.client = new SuiPythClient(this.provider, this.consts.pythFeeder.state, this.consts.pythFeeder.wormhole.state);
|
|
18
|
+
}
|
|
19
|
+
validateCache() {
|
|
20
|
+
const now = Date.now() / 1000;
|
|
21
|
+
for (const key in this.priceCache) {
|
|
22
|
+
if (now - (this.priceCache[key].getPriceUnchecked().publishTime || 0) > 7) {
|
|
23
|
+
delete this.priceCache[key];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async getOraclePrice(tokenId) {
|
|
28
|
+
this.validateCache();
|
|
29
|
+
if (this.priceCache[tokenId]) {
|
|
30
|
+
return this.priceCache[tokenId];
|
|
31
|
+
}
|
|
32
|
+
const res = await this.getOraclePrices([tokenId]);
|
|
33
|
+
if (!res || !res[0]) {
|
|
34
|
+
throw new Error(`Unknown token: ${tokenId}`);
|
|
35
|
+
}
|
|
36
|
+
this.priceCache[tokenId] = res[0];
|
|
37
|
+
return res[0];
|
|
38
|
+
}
|
|
39
|
+
async getOraclePrices(tokens) {
|
|
40
|
+
const connection = new SuiPriceServiceConnection(this.connectionURL, {
|
|
41
|
+
priceFeedRequestConfig: {
|
|
42
|
+
binary: true,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
const pythObjectIds = tokens.map(token => this.consts.pythFeeder.feeder[token]);
|
|
46
|
+
const priceFeedIds = pythObjectIds.map(pythObjectId => `0x${this.PythFeederToPriceId[pythObjectId]}`);
|
|
47
|
+
const price = await connection.getLatestPriceFeeds(priceFeedIds);
|
|
48
|
+
return price || [];
|
|
49
|
+
}
|
|
50
|
+
// memory leak
|
|
51
|
+
async subOraclePrices(tokens, callback) {
|
|
52
|
+
const connection = new SuiPriceServiceConnection(this.connectionURL, {
|
|
53
|
+
priceFeedRequestConfig: {
|
|
54
|
+
binary: true,
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
const pythObjectIds = tokens.map(token => this.consts.pythFeeder.feeder[token]);
|
|
58
|
+
const priceFeedIds = pythObjectIds.map(pythObjectId => `0x${this.PythFeederToPriceId[pythObjectId]}`);
|
|
59
|
+
await connection.subscribePriceFeedUpdates(priceFeedIds, (price) => {
|
|
60
|
+
price.id = this.PythFeederToId[getPriceIdToPythFeeder(this.network)[price.id]];
|
|
61
|
+
this.priceCache[price.id] = price;
|
|
62
|
+
callback(price);
|
|
63
|
+
});
|
|
64
|
+
return () => {
|
|
65
|
+
connection.unsubscribePriceFeedUpdates(priceFeedIds);
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
async initOracleTxb(tokens, tx, sponsoredTx, suiCoinObject) {
|
|
69
|
+
let tx_ = tx;
|
|
70
|
+
if (!tx_) {
|
|
71
|
+
tx_ = new Transaction();
|
|
72
|
+
}
|
|
73
|
+
// Remove redundant tokens first
|
|
74
|
+
const uniqueTokens = Array.from(new Set(tokens));
|
|
75
|
+
const connection = new SuiPriceServiceConnection(this.connectionURL, {
|
|
76
|
+
priceFeedRequestConfig: {
|
|
77
|
+
binary: true,
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
let pythObjectIds = uniqueTokens.map(token => this.consts.pythFeeder.feeder[token]);
|
|
81
|
+
// remove dupe object ids. If any of the object ids are duplicates the call will fail
|
|
82
|
+
pythObjectIds = [...new Set(pythObjectIds)].filter(Boolean);
|
|
83
|
+
const needUpdateObjectIds = (await this.provider.multiGetObjects({
|
|
84
|
+
ids: pythObjectIds,
|
|
85
|
+
options: {
|
|
86
|
+
showContent: true,
|
|
87
|
+
},
|
|
88
|
+
})).map(pythObject => [
|
|
89
|
+
Number.parseInt((pythObject.data?.content).fields.price_info.fields.arrival_time || 0, 10) - Date.now() / 1000,
|
|
90
|
+
pythObject.data?.objectId,
|
|
91
|
+
]).filter((x) => Math.abs(x[0]) >= 0).map(x => x[1]);
|
|
92
|
+
if (needUpdateObjectIds.length === 0) {
|
|
93
|
+
return tx_;
|
|
94
|
+
}
|
|
95
|
+
const priceFeedIds = needUpdateObjectIds
|
|
96
|
+
.map(pythObjectId => this.PythFeederToPriceId[pythObjectId])
|
|
97
|
+
.filter(Boolean)
|
|
98
|
+
.map(x => `0x${x}`);
|
|
99
|
+
const priceUpdateData = await connection.getPriceFeedsUpdateData(priceFeedIds);
|
|
100
|
+
if (sponsoredTx) {
|
|
101
|
+
const baseUpdateFee = await this.getBaseUpdateFee();
|
|
102
|
+
const pythUpdateCoins = tx_.splitCoins(suiCoinObject, priceFeedIds.map(() => tx_.pure.u64(baseUpdateFee)));
|
|
103
|
+
await this.client.updatePriceFeedsWithCoins(tx_, priceUpdateData, priceFeedIds, pythUpdateCoins);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
await this.client.updatePriceFeeds(tx_, priceUpdateData, priceFeedIds);
|
|
107
|
+
}
|
|
108
|
+
return tx_;
|
|
109
|
+
}
|
|
110
|
+
async getBaseUpdateFee() {
|
|
111
|
+
return await this.client.getBaseUpdateFee();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=oracle.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oracle.mjs","sourceRoot":"","sources":["../src/oracle.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.cjs
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createJsonRpcProvider = createJsonRpcProvider;
|
|
4
|
+
exports.decimalToObject = decimalToObject;
|
|
5
|
+
exports.rateToObject = rateToObject;
|
|
6
|
+
exports.sRateToObject = sRateToObject;
|
|
7
|
+
exports.sDecimalToObject = sDecimalToObject;
|
|
8
|
+
exports.parseValue = parseValue;
|
|
9
|
+
exports.reverseKeyValue = reverseKeyValue;
|
|
10
|
+
exports.parseSymbolKey = parseSymbolKey;
|
|
11
|
+
exports.upperFirstCharacter = upperFirstCharacter;
|
|
12
|
+
exports.joinSymbol = joinSymbol;
|
|
13
|
+
exports.suiSymbolToSymbol = suiSymbolToSymbol;
|
|
14
|
+
exports.base64ToUint8Array = base64ToUint8Array;
|
|
15
|
+
const client_1 = require("@mysten/sui/client");
|
|
16
|
+
const consts_1 = require("./consts/index.cjs");
|
|
17
|
+
function createJsonRpcProvider(network) {
|
|
18
|
+
let url = '';
|
|
19
|
+
switch (network) {
|
|
20
|
+
case consts_1.Network.DEVNET: {
|
|
21
|
+
url = 'https://explorer-rpc.devnet.sui.io/';
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
case consts_1.Network.TESTNET: {
|
|
25
|
+
url = 'https://sui-testnet.blockvision.org/v1/2sXCJEJNOCdIJhLaDtyhKzqwn6k';
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
case consts_1.Network.MAINNET: {
|
|
29
|
+
url = 'https://rpc-mainnet.suiscan.xyz';
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
default: {
|
|
33
|
+
url = 'https://explorer-rpc.devnet.sui.io/';
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return new client_1.SuiClient({
|
|
37
|
+
transport: new client_1.SuiHTTPTransport({ url }),
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function decimalToObject(decimal) {
|
|
41
|
+
return Number(BigInt(decimal.value)) / 1e18;
|
|
42
|
+
}
|
|
43
|
+
function rateToObject(rate) {
|
|
44
|
+
return Number(BigInt(rate.value)) / 1e18;
|
|
45
|
+
}
|
|
46
|
+
function sRateToObject(sRate) {
|
|
47
|
+
const sign = sRate.fields.is_positive ? 1 : -1;
|
|
48
|
+
return Number(BigInt(sRate.fields.value.fields.value)) / 1e18 * sign;
|
|
49
|
+
}
|
|
50
|
+
function sDecimalToObject(sDecimal) {
|
|
51
|
+
const sign = sDecimal.fields.is_positive ? 1 : -1;
|
|
52
|
+
return Number(BigInt(sDecimal.fields.value.fields.value)) / 1e18 * sign;
|
|
53
|
+
}
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
55
|
+
function parseValue(field) {
|
|
56
|
+
if (field.type && field.type.endsWith('::decimal::Decimal')) {
|
|
57
|
+
return decimalToObject({ value: field.fields.value });
|
|
58
|
+
}
|
|
59
|
+
else if (field.type && field.type.endsWith('::rate::Rate')) {
|
|
60
|
+
return rateToObject({ value: field.fields.value });
|
|
61
|
+
}
|
|
62
|
+
else if (field.type && field.type.endsWith('::srate::SRate')) {
|
|
63
|
+
return sRateToObject(field);
|
|
64
|
+
}
|
|
65
|
+
else if (field.type && field.type.endsWith('::sdecimal::SDecimal')) {
|
|
66
|
+
return sDecimalToObject(field);
|
|
67
|
+
}
|
|
68
|
+
return Number.parseInt(field, 10);
|
|
69
|
+
}
|
|
70
|
+
function reverseKeyValue(obj) {
|
|
71
|
+
const reversed = {};
|
|
72
|
+
for (const key in obj) {
|
|
73
|
+
if (Object.hasOwn(obj, key)) {
|
|
74
|
+
const value = obj[key];
|
|
75
|
+
reversed[value] = key;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return reversed;
|
|
79
|
+
}
|
|
80
|
+
function parseSymbolKey(input) {
|
|
81
|
+
// This regex will match uppercase letters and numeric letters
|
|
82
|
+
const regex = /[A-Z0-9]/;
|
|
83
|
+
let result = [];
|
|
84
|
+
let wordStart = 0;
|
|
85
|
+
for (let i = 1; i < input.length; i += 1) {
|
|
86
|
+
if (regex.test(input[i])) {
|
|
87
|
+
// Found an uppercase letter, so we split the string here
|
|
88
|
+
result.push(input.slice(wordStart, i));
|
|
89
|
+
wordStart = i;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// Add the last word to the result array
|
|
93
|
+
result.push(input.slice(wordStart));
|
|
94
|
+
// Convert the words to lowercase, handle words ending with '_'
|
|
95
|
+
result = result.map(word => word.endsWith('_') ? word.slice(0, -1).toLowerCase() : word.toLowerCase());
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
function upperFirstCharacter(word) {
|
|
99
|
+
return word.charAt(0).toUpperCase() + word.slice(1);
|
|
100
|
+
}
|
|
101
|
+
function isLetter(char) {
|
|
102
|
+
return /^[a-z]$/i.test(char);
|
|
103
|
+
}
|
|
104
|
+
function joinSymbol(direction, token) {
|
|
105
|
+
const firstChar = token.charAt(0);
|
|
106
|
+
return `${direction}${isLetter(firstChar) ? upperFirstCharacter(token) : `_${token}`}`;
|
|
107
|
+
}
|
|
108
|
+
function suiSymbolToSymbol(symbol, consts) {
|
|
109
|
+
if (symbol === '0x2::sui::SUI') {
|
|
110
|
+
return 'sui';
|
|
111
|
+
}
|
|
112
|
+
const ret = {};
|
|
113
|
+
for (const key of Object.keys(consts.coins)) {
|
|
114
|
+
ret[consts.coins[key].module] = key;
|
|
115
|
+
}
|
|
116
|
+
return ret[symbol];
|
|
117
|
+
}
|
|
118
|
+
function base64ToUint8Array(base64) {
|
|
119
|
+
// Decode Base64 to binary
|
|
120
|
+
const binary = atob(base64);
|
|
121
|
+
// Create a Uint8Array from the binary data
|
|
122
|
+
const uint8Array = new Uint8Array(binary.length);
|
|
123
|
+
// Populate the Uint8Array with the binary data
|
|
124
|
+
for (let i = 0; i < binary.length; i += 1) {
|
|
125
|
+
uint8Array[i] = binary.codePointAt(i);
|
|
126
|
+
}
|
|
127
|
+
return uint8Array;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=utils.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.cjs","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.cts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { SuiClient } from "@mysten/sui/client";
|
|
2
|
+
import type { IConsts } from "./consts/index.cjs";
|
|
3
|
+
import { Network } from "./consts/index.cjs";
|
|
4
|
+
export declare function createJsonRpcProvider(network: Network): SuiClient;
|
|
5
|
+
export declare function decimalToObject(decimal: {
|
|
6
|
+
value: string;
|
|
7
|
+
}): number;
|
|
8
|
+
export declare function rateToObject(rate: {
|
|
9
|
+
value: string;
|
|
10
|
+
}): number;
|
|
11
|
+
interface SRate {
|
|
12
|
+
fields: {
|
|
13
|
+
is_positive: boolean;
|
|
14
|
+
value: {
|
|
15
|
+
fields: {
|
|
16
|
+
value: string | number;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export declare function sRateToObject(sRate: SRate): number;
|
|
22
|
+
interface SuiDecimal {
|
|
23
|
+
fields: {
|
|
24
|
+
is_positive: boolean;
|
|
25
|
+
value: {
|
|
26
|
+
fields: {
|
|
27
|
+
value: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export declare function sDecimalToObject(sDecimal: SuiDecimal): number;
|
|
33
|
+
export declare function parseValue(field: any): number;
|
|
34
|
+
export type ReversedKeyValue<T extends object> = {
|
|
35
|
+
[K in keyof T]: T[K] extends keyof T ? keyof T : T[K] extends keyof T | infer V ? V : never;
|
|
36
|
+
};
|
|
37
|
+
export declare function reverseKeyValue<T extends object>(obj: T): ReversedKeyValue<T>;
|
|
38
|
+
export declare function parseSymbolKey(input: string): string[];
|
|
39
|
+
export declare function upperFirstCharacter(word: string): string;
|
|
40
|
+
export declare function joinSymbol(direction: string, token: string): string;
|
|
41
|
+
export declare function suiSymbolToSymbol(symbol: string, consts: IConsts): string;
|
|
42
|
+
export declare function base64ToUint8Array(base64: string): Uint8Array<ArrayBuffer>;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=utils.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.cts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,2BAA0B;AAEhE,OAAO,KAAK,EAAE,OAAO,EAAE,2BAAgB;AACvC,OAAO,EAAE,OAAO,EAAE,2BAAgB;AAElC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,aAuBrD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,UAEzD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,UAEnD;AAED,UAAU,KAAK;IACb,MAAM,EAAE;QACN,WAAW,EAAE,OAAO,CAAA;QACpB,KAAK,EAAE;YACL,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;aACvB,CAAA;SACF,CAAA;KACF,CAAA;CACF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,UAGzC;AAED,UAAU,UAAU;IAClB,MAAM,EAAE;QACN,WAAW,EAAE,OAAO,CAAA;QACpB,KAAK,EAAE;YACL,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM,CAAA;aACd,CAAA;SACF,CAAA;KACF,CAAA;CACF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,UAGpD;AAGD,wBAAgB,UAAU,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAc7C;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAI;KAC9C,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GAChC,MAAM,CAAC,GACP,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,GAC5B,CAAC,GACD,KAAK;CACZ,CAAA;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAW7E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBtD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAMD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CASzE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,2BAYhD"}
|
package/dist/utils.d.mts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { SuiClient } from "@mysten/sui/client";
|
|
2
|
+
import type { IConsts } from "./consts/index.mjs";
|
|
3
|
+
import { Network } from "./consts/index.mjs";
|
|
4
|
+
export declare function createJsonRpcProvider(network: Network): SuiClient;
|
|
5
|
+
export declare function decimalToObject(decimal: {
|
|
6
|
+
value: string;
|
|
7
|
+
}): number;
|
|
8
|
+
export declare function rateToObject(rate: {
|
|
9
|
+
value: string;
|
|
10
|
+
}): number;
|
|
11
|
+
interface SRate {
|
|
12
|
+
fields: {
|
|
13
|
+
is_positive: boolean;
|
|
14
|
+
value: {
|
|
15
|
+
fields: {
|
|
16
|
+
value: string | number;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export declare function sRateToObject(sRate: SRate): number;
|
|
22
|
+
interface SuiDecimal {
|
|
23
|
+
fields: {
|
|
24
|
+
is_positive: boolean;
|
|
25
|
+
value: {
|
|
26
|
+
fields: {
|
|
27
|
+
value: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export declare function sDecimalToObject(sDecimal: SuiDecimal): number;
|
|
33
|
+
export declare function parseValue(field: any): number;
|
|
34
|
+
export type ReversedKeyValue<T extends object> = {
|
|
35
|
+
[K in keyof T]: T[K] extends keyof T ? keyof T : T[K] extends keyof T | infer V ? V : never;
|
|
36
|
+
};
|
|
37
|
+
export declare function reverseKeyValue<T extends object>(obj: T): ReversedKeyValue<T>;
|
|
38
|
+
export declare function parseSymbolKey(input: string): string[];
|
|
39
|
+
export declare function upperFirstCharacter(word: string): string;
|
|
40
|
+
export declare function joinSymbol(direction: string, token: string): string;
|
|
41
|
+
export declare function suiSymbolToSymbol(symbol: string, consts: IConsts): string;
|
|
42
|
+
export declare function base64ToUint8Array(base64: string): Uint8Array<ArrayBuffer>;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=utils.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.mts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,2BAA0B;AAEhE,OAAO,KAAK,EAAE,OAAO,EAAE,2BAAgB;AACvC,OAAO,EAAE,OAAO,EAAE,2BAAgB;AAElC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,aAuBrD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,UAEzD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,UAEnD;AAED,UAAU,KAAK;IACb,MAAM,EAAE;QACN,WAAW,EAAE,OAAO,CAAA;QACpB,KAAK,EAAE;YACL,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;aACvB,CAAA;SACF,CAAA;KACF,CAAA;CACF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,UAGzC;AAED,UAAU,UAAU;IAClB,MAAM,EAAE;QACN,WAAW,EAAE,OAAO,CAAA;QACpB,KAAK,EAAE;YACL,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM,CAAA;aACd,CAAA;SACF,CAAA;KACF,CAAA;CACF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,UAGpD;AAGD,wBAAgB,UAAU,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAc7C;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAI;KAC9C,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GAChC,MAAM,CAAC,GACP,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,GAC5B,CAAC,GACD,KAAK;CACZ,CAAA;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAW7E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBtD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAMD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CASzE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,2BAYhD"}
|
package/dist/utils.mjs
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { SuiClient, SuiHTTPTransport } from "@mysten/sui/client";
|
|
2
|
+
import { Network } from "./consts/index.mjs";
|
|
3
|
+
export function createJsonRpcProvider(network) {
|
|
4
|
+
let url = '';
|
|
5
|
+
switch (network) {
|
|
6
|
+
case Network.DEVNET: {
|
|
7
|
+
url = 'https://explorer-rpc.devnet.sui.io/';
|
|
8
|
+
break;
|
|
9
|
+
}
|
|
10
|
+
case Network.TESTNET: {
|
|
11
|
+
url = 'https://sui-testnet.blockvision.org/v1/2sXCJEJNOCdIJhLaDtyhKzqwn6k';
|
|
12
|
+
break;
|
|
13
|
+
}
|
|
14
|
+
case Network.MAINNET: {
|
|
15
|
+
url = 'https://rpc-mainnet.suiscan.xyz';
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
default: {
|
|
19
|
+
url = 'https://explorer-rpc.devnet.sui.io/';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return new SuiClient({
|
|
23
|
+
transport: new SuiHTTPTransport({ url }),
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
export function decimalToObject(decimal) {
|
|
27
|
+
return Number(BigInt(decimal.value)) / 1e18;
|
|
28
|
+
}
|
|
29
|
+
export function rateToObject(rate) {
|
|
30
|
+
return Number(BigInt(rate.value)) / 1e18;
|
|
31
|
+
}
|
|
32
|
+
export function sRateToObject(sRate) {
|
|
33
|
+
const sign = sRate.fields.is_positive ? 1 : -1;
|
|
34
|
+
return Number(BigInt(sRate.fields.value.fields.value)) / 1e18 * sign;
|
|
35
|
+
}
|
|
36
|
+
export function sDecimalToObject(sDecimal) {
|
|
37
|
+
const sign = sDecimal.fields.is_positive ? 1 : -1;
|
|
38
|
+
return Number(BigInt(sDecimal.fields.value.fields.value)) / 1e18 * sign;
|
|
39
|
+
}
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
41
|
+
export function parseValue(field) {
|
|
42
|
+
if (field.type && field.type.endsWith('::decimal::Decimal')) {
|
|
43
|
+
return decimalToObject({ value: field.fields.value });
|
|
44
|
+
}
|
|
45
|
+
else if (field.type && field.type.endsWith('::rate::Rate')) {
|
|
46
|
+
return rateToObject({ value: field.fields.value });
|
|
47
|
+
}
|
|
48
|
+
else if (field.type && field.type.endsWith('::srate::SRate')) {
|
|
49
|
+
return sRateToObject(field);
|
|
50
|
+
}
|
|
51
|
+
else if (field.type && field.type.endsWith('::sdecimal::SDecimal')) {
|
|
52
|
+
return sDecimalToObject(field);
|
|
53
|
+
}
|
|
54
|
+
return Number.parseInt(field, 10);
|
|
55
|
+
}
|
|
56
|
+
export function reverseKeyValue(obj) {
|
|
57
|
+
const reversed = {};
|
|
58
|
+
for (const key in obj) {
|
|
59
|
+
if (Object.hasOwn(obj, key)) {
|
|
60
|
+
const value = obj[key];
|
|
61
|
+
reversed[value] = key;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return reversed;
|
|
65
|
+
}
|
|
66
|
+
export function parseSymbolKey(input) {
|
|
67
|
+
// This regex will match uppercase letters and numeric letters
|
|
68
|
+
const regex = /[A-Z0-9]/;
|
|
69
|
+
let result = [];
|
|
70
|
+
let wordStart = 0;
|
|
71
|
+
for (let i = 1; i < input.length; i += 1) {
|
|
72
|
+
if (regex.test(input[i])) {
|
|
73
|
+
// Found an uppercase letter, so we split the string here
|
|
74
|
+
result.push(input.slice(wordStart, i));
|
|
75
|
+
wordStart = i;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Add the last word to the result array
|
|
79
|
+
result.push(input.slice(wordStart));
|
|
80
|
+
// Convert the words to lowercase, handle words ending with '_'
|
|
81
|
+
result = result.map(word => word.endsWith('_') ? word.slice(0, -1).toLowerCase() : word.toLowerCase());
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
export function upperFirstCharacter(word) {
|
|
85
|
+
return word.charAt(0).toUpperCase() + word.slice(1);
|
|
86
|
+
}
|
|
87
|
+
function isLetter(char) {
|
|
88
|
+
return /^[a-z]$/i.test(char);
|
|
89
|
+
}
|
|
90
|
+
export function joinSymbol(direction, token) {
|
|
91
|
+
const firstChar = token.charAt(0);
|
|
92
|
+
return `${direction}${isLetter(firstChar) ? upperFirstCharacter(token) : `_${token}`}`;
|
|
93
|
+
}
|
|
94
|
+
export function suiSymbolToSymbol(symbol, consts) {
|
|
95
|
+
if (symbol === '0x2::sui::SUI') {
|
|
96
|
+
return 'sui';
|
|
97
|
+
}
|
|
98
|
+
const ret = {};
|
|
99
|
+
for (const key of Object.keys(consts.coins)) {
|
|
100
|
+
ret[consts.coins[key].module] = key;
|
|
101
|
+
}
|
|
102
|
+
return ret[symbol];
|
|
103
|
+
}
|
|
104
|
+
export function base64ToUint8Array(base64) {
|
|
105
|
+
// Decode Base64 to binary
|
|
106
|
+
const binary = atob(base64);
|
|
107
|
+
// Create a Uint8Array from the binary data
|
|
108
|
+
const uint8Array = new Uint8Array(binary.length);
|
|
109
|
+
// Populate the Uint8Array with the binary data
|
|
110
|
+
for (let i = 0; i < binary.length; i += 1) {
|
|
111
|
+
uint8Array[i] = binary.codePointAt(i);
|
|
112
|
+
}
|
|
113
|
+
return uint8Array;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=utils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.mjs","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/docs/SUMMARY.md
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Summary
|
|
2
|
+
|
|
3
|
+
* [Introduction](introduction.md)
|
|
4
|
+
* [Architecture](architecture.md)
|
|
5
|
+
* [Getting Started](getting-started.md)
|
|
6
|
+
* [Common Operations](common-operations.md)
|
|
7
|
+
* [Trading Examples](lp-specific-features.md)
|
|
8
|
+
* [Type Safety](type-safety.md)
|
|
9
|
+
* [Error Handling](error-handling.md)
|
|
10
|
+
* [API Reference](api-reference.md)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# API Reference
|
|
2
|
+
|
|
3
|
+
## Factory methods
|
|
4
|
+
|
|
5
|
+
**API (full – transactions + data):**
|
|
6
|
+
|
|
7
|
+
- `SDK.createZLPAPI(network, provider, apiEndpoint, connectionURL)`
|
|
8
|
+
- `SDK.createSLPAPI(network, provider, apiEndpoint, connectionURL)`
|
|
9
|
+
- `SDK.createUSDZAPI(network, provider, apiEndpoint, connectionURL)`
|
|
10
|
+
- `SDK.createAPI(LPToken, network, provider, apiEndpoint, connectionURL)`
|
|
11
|
+
|
|
12
|
+
**DataAPI (read-only):**
|
|
13
|
+
|
|
14
|
+
- `SDK.createZLPDataAPI(network, provider, apiEndpoint, connectionURL)`
|
|
15
|
+
- `SDK.createSLPDataAPI(network, provider, apiEndpoint, connectionURL)`
|
|
16
|
+
- `SDK.createUSDZDataAPI(network, provider, apiEndpoint, connectionURL)`
|
|
17
|
+
- `SDK.createDataAPI(LPToken, network, provider, apiEndpoint, connectionURL)`
|
|
18
|
+
|
|
19
|
+
## Interfaces
|
|
20
|
+
|
|
21
|
+
- **Base**: `IBaseAPI`, `IBaseDataAPI` for common operations
|
|
22
|
+
- **LP-specific**: `IZLPAPI`, `ISLPAPI`, `IUSDZAPI` for typed usage
|
|
23
|
+
- **Data types**: `IBaseMarketValuationInfo`, `IBaseVaultInfo`, `IBaseSymbolInfo`, `IBasePositionInfo`, `IBaseOrderInfo`, etc.
|
|
24
|
+
|
|
25
|
+
## Source code
|
|
26
|
+
|
|
27
|
+
- **Interfaces**: `src/interfaces/` – TypeScript interface definitions
|
|
28
|
+
- **Implementations**: `src/implementations/` – Concrete API implementations
|
|
29
|
+
- **Abstract classes**: `src/abstract/` – Shared base functionality
|
|
30
|
+
- **Factory**: `src/factory/SDKFactory.ts` – SDK instance creation
|
|
31
|
+
|
|
32
|
+
See the type definitions and source for detailed method signatures and parameters.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
The SDK supports multiple LP tokens through a unified interface:
|
|
4
|
+
|
|
5
|
+
- **ZLP (ZO Liquidity Provider)**: Original ZO Protocol LP token
|
|
6
|
+
- **SLP (Sudo Liquidity Provider)**: Sudo SDK-based LP token
|
|
7
|
+
- **USDZ (USD Stablecoin)**: Stablecoin LP token
|
|
8
|
+
|
|
9
|
+
## Key Components
|
|
10
|
+
|
|
11
|
+
1. **Common Interfaces**: Unified API surface for all LP tokens (`IBaseAPI`, `IBaseDataAPI`)
|
|
12
|
+
2. **Abstract Base Classes**: Shared logic with delegation to DataAPI (`BaseAPI`, `BaseDataAPI`)
|
|
13
|
+
3. **Concrete Implementations**: LP-specific functionality (`ZLPAPI`, `SLPAPI`, `USDZAPI`)
|
|
14
|
+
4. **Factory Pattern**: Type-safe instance creation via `SDK` (e.g. `SDK.createZLPAPI()`)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Common Operations
|
|
2
|
+
|
|
3
|
+
These operations work across all LP tokens (ZLP, SLP, USDZ).
|
|
4
|
+
|
|
5
|
+
## Data / read operations
|
|
6
|
+
|
|
7
|
+
Use the API or DataAPI; the methods are the same.
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
const zlpMarket = await zlpAPI.valuateMarket()
|
|
11
|
+
const slpMarket = await slpAPI.getMarketInfo()
|
|
12
|
+
const vaultInfo = await usdzAPI.getVaultInfo('usdc')
|
|
13
|
+
const positionCaps = await zlpAPI.getPositionCapInfoList(ownerAddress)
|
|
14
|
+
const positions = await zlpAPI.getPositionInfoList(positionCaps, ownerAddress)
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Deposit
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
const depositTx = await zlpAPI.deposit(
|
|
21
|
+
'usdc', // coin type
|
|
22
|
+
['coinObjectId'], // coin object IDs
|
|
23
|
+
1000000, // amount
|
|
24
|
+
0, // minimum amount out (optional)
|
|
25
|
+
'referralAddress', // optional referral
|
|
26
|
+
'senderAddress' // optional sender
|
|
27
|
+
)
|
|
28
|
+
const slpDepositTx = await slpAPI.deposit('usdc', ['coinObjectId'], 1000000)
|
|
29
|
+
const usdzDepositTx = await usdzAPI.deposit('usdc', ['coinObjectId'], 1000000)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Withdraw
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
const withdrawTx = await zlpAPI.withdraw(
|
|
36
|
+
'usdc',
|
|
37
|
+
['lpCoinObjectId'],
|
|
38
|
+
1000000,
|
|
39
|
+
0
|
|
40
|
+
)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Swap
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
const swapTx = await zlpAPI.swap(
|
|
47
|
+
'usdc', // from token
|
|
48
|
+
'sui', // to token
|
|
49
|
+
BigInt(1000000), // amount
|
|
50
|
+
['coinObjectId'] // coin objects
|
|
51
|
+
)
|
|
52
|
+
```
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Error Handling
|
|
2
|
+
|
|
3
|
+
The SDK throws errors for invalid operations and network issues. Always wrap API calls in try-catch blocks:
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
const zlpAPI = SDK.createZLPAPI(network, provider, apiEndpoint, connectionURL)
|
|
7
|
+
|
|
8
|
+
try {
|
|
9
|
+
const marketInfo = await zlpAPI.getMarketInfo()
|
|
10
|
+
const depositTx = await zlpAPI.deposit('usdc', ['coinId'], 1000000)
|
|
11
|
+
} catch (error) {
|
|
12
|
+
console.error('SDK operation failed:', error)
|
|
13
|
+
if (error.message.includes('Unsupported LP token')) {
|
|
14
|
+
console.error('Invalid LP token type provided')
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
```
|