@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.
Files changed (275) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/.gitattributes +4 -0
  3. package/.prettierrc.js +9 -0
  4. package/README.md +28 -0
  5. package/dist/abstract/BaseAPI.cjs +206 -0
  6. package/dist/abstract/BaseAPI.cjs.map +1 -0
  7. package/dist/abstract/BaseAPI.d.cts +172 -0
  8. package/dist/abstract/BaseAPI.d.cts.map +1 -0
  9. package/dist/abstract/BaseAPI.d.mts +172 -0
  10. package/dist/abstract/BaseAPI.d.mts.map +1 -0
  11. package/dist/abstract/BaseAPI.mjs +202 -0
  12. package/dist/abstract/BaseAPI.mjs.map +1 -0
  13. package/dist/abstract/BaseDataAPI.cjs +140 -0
  14. package/dist/abstract/BaseDataAPI.cjs.map +1 -0
  15. package/dist/abstract/BaseDataAPI.d.cts +89 -0
  16. package/dist/abstract/BaseDataAPI.d.cts.map +1 -0
  17. package/dist/abstract/BaseDataAPI.d.mts +89 -0
  18. package/dist/abstract/BaseDataAPI.d.mts.map +1 -0
  19. package/dist/abstract/BaseDataAPI.mjs +136 -0
  20. package/dist/abstract/BaseDataAPI.mjs.map +1 -0
  21. package/dist/abstract/index.cjs +12 -0
  22. package/dist/abstract/index.cjs.map +1 -0
  23. package/dist/abstract/index.d.cts +7 -0
  24. package/dist/abstract/index.d.cts.map +1 -0
  25. package/dist/abstract/index.d.mts +7 -0
  26. package/dist/abstract/index.d.mts.map +1 -0
  27. package/dist/abstract/index.mjs +7 -0
  28. package/dist/abstract/index.mjs.map +1 -0
  29. package/dist/api.cjs +779 -0
  30. package/dist/api.cjs.map +1 -0
  31. package/dist/api.d.cts +75 -0
  32. package/dist/api.d.cts.map +1 -0
  33. package/dist/api.d.mts +75 -0
  34. package/dist/api.d.mts.map +1 -0
  35. package/dist/api.mjs +775 -0
  36. package/dist/api.mjs.map +1 -0
  37. package/dist/bcs.cjs +42 -0
  38. package/dist/bcs.cjs.map +1 -0
  39. package/dist/bcs.d.cts +91 -0
  40. package/dist/bcs.d.cts.map +1 -0
  41. package/dist/bcs.d.mts +91 -0
  42. package/dist/bcs.d.mts.map +1 -0
  43. package/dist/bcs.mjs +39 -0
  44. package/dist/bcs.mjs.map +1 -0
  45. package/dist/consts/deployments-shared-mainnet.json +50 -0
  46. package/dist/consts/deployments-shared-testnet.json +45 -0
  47. package/dist/consts/deployments-slp-mainnet.json +600 -0
  48. package/dist/consts/deployments-slp-testnet.json +87 -0
  49. package/dist/consts/deployments-usdz-mainnet.json +494 -0
  50. package/dist/consts/deployments-usdz-testnet.json +98 -0
  51. package/dist/consts/deployments-zbtcvc-mainnet.json +180 -0
  52. package/dist/consts/deployments-zlp-mainnet.json +791 -0
  53. package/dist/consts/deployments-zlp-testnet.json +76 -0
  54. package/dist/consts/index.cjs +200 -0
  55. package/dist/consts/index.cjs.map +1 -0
  56. package/dist/consts/index.d.cts +157 -0
  57. package/dist/consts/index.d.cts.map +1 -0
  58. package/dist/consts/index.d.mts +157 -0
  59. package/dist/consts/index.d.mts.map +1 -0
  60. package/dist/consts/index.mjs +189 -0
  61. package/dist/consts/index.mjs.map +1 -0
  62. package/dist/consts/price_id_to_object_id.mainnet.json +56 -0
  63. package/dist/consts/price_id_to_object_id.testnet.json +17 -0
  64. package/dist/data.cjs +919 -0
  65. package/dist/data.cjs.map +1 -0
  66. package/dist/data.d.cts +235 -0
  67. package/dist/data.d.cts.map +1 -0
  68. package/dist/data.d.mts +235 -0
  69. package/dist/data.d.mts.map +1 -0
  70. package/dist/data.mjs +915 -0
  71. package/dist/data.mjs.map +1 -0
  72. package/dist/factory/SDKFactory.cjs +228 -0
  73. package/dist/factory/SDKFactory.cjs.map +1 -0
  74. package/dist/factory/SDKFactory.d.cts +84 -0
  75. package/dist/factory/SDKFactory.d.cts.map +1 -0
  76. package/dist/factory/SDKFactory.d.mts +84 -0
  77. package/dist/factory/SDKFactory.d.mts.map +1 -0
  78. package/dist/factory/SDKFactory.mjs +222 -0
  79. package/dist/factory/SDKFactory.mjs.map +1 -0
  80. package/dist/implementations/SLPAPI.cjs +1794 -0
  81. package/dist/implementations/SLPAPI.cjs.map +1 -0
  82. package/dist/implementations/SLPAPI.d.cts +183 -0
  83. package/dist/implementations/SLPAPI.d.cts.map +1 -0
  84. package/dist/implementations/SLPAPI.d.mts +183 -0
  85. package/dist/implementations/SLPAPI.d.mts.map +1 -0
  86. package/dist/implementations/SLPAPI.mjs +1790 -0
  87. package/dist/implementations/SLPAPI.mjs.map +1 -0
  88. package/dist/implementations/SLPDataAPI.cjs +1384 -0
  89. package/dist/implementations/SLPDataAPI.cjs.map +1 -0
  90. package/dist/implementations/SLPDataAPI.d.cts +158 -0
  91. package/dist/implementations/SLPDataAPI.d.cts.map +1 -0
  92. package/dist/implementations/SLPDataAPI.d.mts +158 -0
  93. package/dist/implementations/SLPDataAPI.d.mts.map +1 -0
  94. package/dist/implementations/SLPDataAPI.mjs +1380 -0
  95. package/dist/implementations/SLPDataAPI.mjs.map +1 -0
  96. package/dist/implementations/USDZAPI.cjs +1676 -0
  97. package/dist/implementations/USDZAPI.cjs.map +1 -0
  98. package/dist/implementations/USDZAPI.d.cts +180 -0
  99. package/dist/implementations/USDZAPI.d.cts.map +1 -0
  100. package/dist/implementations/USDZAPI.d.mts +180 -0
  101. package/dist/implementations/USDZAPI.d.mts.map +1 -0
  102. package/dist/implementations/USDZAPI.mjs +1672 -0
  103. package/dist/implementations/USDZAPI.mjs.map +1 -0
  104. package/dist/implementations/USDZDataAPI.cjs +1209 -0
  105. package/dist/implementations/USDZDataAPI.cjs.map +1 -0
  106. package/dist/implementations/USDZDataAPI.d.cts +191 -0
  107. package/dist/implementations/USDZDataAPI.d.cts.map +1 -0
  108. package/dist/implementations/USDZDataAPI.d.mts +191 -0
  109. package/dist/implementations/USDZDataAPI.d.mts.map +1 -0
  110. package/dist/implementations/USDZDataAPI.mjs +1205 -0
  111. package/dist/implementations/USDZDataAPI.mjs.map +1 -0
  112. package/dist/implementations/ZBTCVCAPI.cjs +906 -0
  113. package/dist/implementations/ZBTCVCAPI.cjs.map +1 -0
  114. package/dist/implementations/ZBTCVCAPI.d.cts +107 -0
  115. package/dist/implementations/ZBTCVCAPI.d.cts.map +1 -0
  116. package/dist/implementations/ZBTCVCAPI.d.mts +107 -0
  117. package/dist/implementations/ZBTCVCAPI.d.mts.map +1 -0
  118. package/dist/implementations/ZBTCVCAPI.mjs +902 -0
  119. package/dist/implementations/ZBTCVCAPI.mjs.map +1 -0
  120. package/dist/implementations/ZBTCVCDataAPI.cjs +829 -0
  121. package/dist/implementations/ZBTCVCDataAPI.cjs.map +1 -0
  122. package/dist/implementations/ZBTCVCDataAPI.d.cts +94 -0
  123. package/dist/implementations/ZBTCVCDataAPI.d.cts.map +1 -0
  124. package/dist/implementations/ZBTCVCDataAPI.d.mts +94 -0
  125. package/dist/implementations/ZBTCVCDataAPI.d.mts.map +1 -0
  126. package/dist/implementations/ZBTCVCDataAPI.mjs +825 -0
  127. package/dist/implementations/ZBTCVCDataAPI.mjs.map +1 -0
  128. package/dist/implementations/ZLPAPI.cjs +1948 -0
  129. package/dist/implementations/ZLPAPI.cjs.map +1 -0
  130. package/dist/implementations/ZLPAPI.d.cts +192 -0
  131. package/dist/implementations/ZLPAPI.d.cts.map +1 -0
  132. package/dist/implementations/ZLPAPI.d.mts +192 -0
  133. package/dist/implementations/ZLPAPI.d.mts.map +1 -0
  134. package/dist/implementations/ZLPAPI.mjs +1944 -0
  135. package/dist/implementations/ZLPAPI.mjs.map +1 -0
  136. package/dist/implementations/ZLPDataAPI.cjs +1267 -0
  137. package/dist/implementations/ZLPDataAPI.cjs.map +1 -0
  138. package/dist/implementations/ZLPDataAPI.d.cts +193 -0
  139. package/dist/implementations/ZLPDataAPI.d.cts.map +1 -0
  140. package/dist/implementations/ZLPDataAPI.d.mts +193 -0
  141. package/dist/implementations/ZLPDataAPI.d.mts.map +1 -0
  142. package/dist/implementations/ZLPDataAPI.mjs +1263 -0
  143. package/dist/implementations/ZLPDataAPI.mjs.map +1 -0
  144. package/dist/implementations/index.cjs +26 -0
  145. package/dist/implementations/index.cjs.map +1 -0
  146. package/dist/implementations/index.d.cts +13 -0
  147. package/dist/implementations/index.d.cts.map +1 -0
  148. package/dist/implementations/index.d.mts +13 -0
  149. package/dist/implementations/index.d.mts.map +1 -0
  150. package/dist/implementations/index.mjs +15 -0
  151. package/dist/implementations/index.mjs.map +1 -0
  152. package/dist/index.cjs +69 -0
  153. package/dist/index.cjs.map +1 -0
  154. package/dist/index.d.cts +51 -0
  155. package/dist/index.d.cts.map +1 -0
  156. package/dist/index.d.mts +51 -0
  157. package/dist/index.d.mts.map +1 -0
  158. package/dist/index.mjs +51 -0
  159. package/dist/index.mjs.map +1 -0
  160. package/dist/interfaces/base.cjs +7 -0
  161. package/dist/interfaces/base.cjs.map +1 -0
  162. package/dist/interfaces/base.d.cts +346 -0
  163. package/dist/interfaces/base.d.cts.map +1 -0
  164. package/dist/interfaces/base.d.mts +346 -0
  165. package/dist/interfaces/base.d.mts.map +1 -0
  166. package/dist/interfaces/base.mjs +6 -0
  167. package/dist/interfaces/base.mjs.map +1 -0
  168. package/dist/interfaces/index.cjs +31 -0
  169. package/dist/interfaces/index.cjs.map +1 -0
  170. package/dist/interfaces/index.d.cts +15 -0
  171. package/dist/interfaces/index.d.cts.map +1 -0
  172. package/dist/interfaces/index.d.mts +15 -0
  173. package/dist/interfaces/index.d.mts.map +1 -0
  174. package/dist/interfaces/index.mjs +15 -0
  175. package/dist/interfaces/index.mjs.map +1 -0
  176. package/dist/interfaces/slp.cjs +7 -0
  177. package/dist/interfaces/slp.cjs.map +1 -0
  178. package/dist/interfaces/slp.d.cts +179 -0
  179. package/dist/interfaces/slp.d.cts.map +1 -0
  180. package/dist/interfaces/slp.d.mts +179 -0
  181. package/dist/interfaces/slp.d.mts.map +1 -0
  182. package/dist/interfaces/slp.mjs +6 -0
  183. package/dist/interfaces/slp.mjs.map +1 -0
  184. package/dist/interfaces/usdz.cjs +7 -0
  185. package/dist/interfaces/usdz.cjs.map +1 -0
  186. package/dist/interfaces/usdz.d.cts +104 -0
  187. package/dist/interfaces/usdz.d.cts.map +1 -0
  188. package/dist/interfaces/usdz.d.mts +104 -0
  189. package/dist/interfaces/usdz.d.mts.map +1 -0
  190. package/dist/interfaces/usdz.mjs +6 -0
  191. package/dist/interfaces/usdz.mjs.map +1 -0
  192. package/dist/interfaces/zbtcvc.cjs +7 -0
  193. package/dist/interfaces/zbtcvc.cjs.map +1 -0
  194. package/dist/interfaces/zbtcvc.d.cts +64 -0
  195. package/dist/interfaces/zbtcvc.d.cts.map +1 -0
  196. package/dist/interfaces/zbtcvc.d.mts +64 -0
  197. package/dist/interfaces/zbtcvc.d.mts.map +1 -0
  198. package/dist/interfaces/zbtcvc.mjs +6 -0
  199. package/dist/interfaces/zbtcvc.mjs.map +1 -0
  200. package/dist/interfaces/zlp.cjs +7 -0
  201. package/dist/interfaces/zlp.cjs.map +1 -0
  202. package/dist/interfaces/zlp.d.cts +114 -0
  203. package/dist/interfaces/zlp.d.cts.map +1 -0
  204. package/dist/interfaces/zlp.d.mts +114 -0
  205. package/dist/interfaces/zlp.d.mts.map +1 -0
  206. package/dist/interfaces/zlp.mjs +6 -0
  207. package/dist/interfaces/zlp.mjs.map +1 -0
  208. package/dist/oracle.cjs +118 -0
  209. package/dist/oracle.cjs.map +1 -0
  210. package/dist/oracle.d.cts +25 -0
  211. package/dist/oracle.d.cts.map +1 -0
  212. package/dist/oracle.d.mts +25 -0
  213. package/dist/oracle.d.mts.map +1 -0
  214. package/dist/oracle.mjs +114 -0
  215. package/dist/oracle.mjs.map +1 -0
  216. package/dist/utils.cjs +129 -0
  217. package/dist/utils.cjs.map +1 -0
  218. package/dist/utils.d.cts +44 -0
  219. package/dist/utils.d.cts.map +1 -0
  220. package/dist/utils.d.mts +44 -0
  221. package/dist/utils.d.mts.map +1 -0
  222. package/dist/utils.mjs +115 -0
  223. package/dist/utils.mjs.map +1 -0
  224. package/docs/SUMMARY.md +10 -0
  225. package/docs/api-reference.md +32 -0
  226. package/docs/architecture.md +14 -0
  227. package/docs/common-operations.md +52 -0
  228. package/docs/error-handling.md +17 -0
  229. package/docs/getting-started.md +60 -0
  230. package/docs/introduction.md +15 -0
  231. package/docs/lp-specific-features.md +96 -0
  232. package/docs/type-safety.md +29 -0
  233. package/eslint.config.mjs +18 -0
  234. package/package.json +42 -0
  235. package/src/abstract/BaseAPI.ts +575 -0
  236. package/src/abstract/BaseDataAPI.ts +207 -0
  237. package/src/abstract/index.ts +7 -0
  238. package/src/api.ts +1100 -0
  239. package/src/bcs.ts +45 -0
  240. package/src/consts/deployments-shared-mainnet.json +50 -0
  241. package/src/consts/deployments-shared-testnet.json +45 -0
  242. package/src/consts/deployments-slp-mainnet.json +600 -0
  243. package/src/consts/deployments-slp-testnet.json +87 -0
  244. package/src/consts/deployments-usdz-mainnet.json +494 -0
  245. package/src/consts/deployments-usdz-testnet.json +98 -0
  246. package/src/consts/deployments-zbtcvc-mainnet.json +180 -0
  247. package/src/consts/deployments-zlp-mainnet.json +791 -0
  248. package/src/consts/deployments-zlp-testnet.json +76 -0
  249. package/src/consts/index.ts +345 -0
  250. package/src/consts/price_id_to_object_id.mainnet.json +56 -0
  251. package/src/consts/price_id_to_object_id.testnet.json +17 -0
  252. package/src/data.ts +1279 -0
  253. package/src/factory/SDKFactory.ts +340 -0
  254. package/src/implementations/SLPAPI.ts +2722 -0
  255. package/src/implementations/SLPDataAPI.ts +1839 -0
  256. package/src/implementations/USDZAPI.ts +2488 -0
  257. package/src/implementations/USDZDataAPI.ts +1548 -0
  258. package/src/implementations/ZBTCVCAPI.ts +1337 -0
  259. package/src/implementations/ZBTCVCDataAPI.ts +993 -0
  260. package/src/implementations/ZLPAPI.ts +2888 -0
  261. package/src/implementations/ZLPDataAPI.ts +1603 -0
  262. package/src/implementations/index.ts +16 -0
  263. package/src/index.ts +58 -0
  264. package/src/interfaces/base.ts +838 -0
  265. package/src/interfaces/index.ts +50 -0
  266. package/src/interfaces/slp.ts +268 -0
  267. package/src/interfaces/usdz.ts +181 -0
  268. package/src/interfaces/zbtcvc.ts +116 -0
  269. package/src/interfaces/zlp.ts +244 -0
  270. package/src/oracle.ts +153 -0
  271. package/src/utils.ts +168 -0
  272. package/tests/api.test.ts +219 -0
  273. package/tests/data.test.ts +156 -0
  274. package/tests/oracle.test.ts +33 -0
  275. package/tsconfig.json +22 -0
@@ -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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"}
@@ -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"}
@@ -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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"}
@@ -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
+ ```