zo-sdk 0.0.13 → 0.0.14

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 (48) hide show
  1. package/dist/api.cjs +469 -0
  2. package/dist/{api.d.ts → api.d.cts} +6 -5
  3. package/dist/api.d.cts.map +1 -0
  4. package/dist/api.d.mts +26 -0
  5. package/dist/api.d.mts.map +1 -0
  6. package/dist/api.mjs +465 -0
  7. package/dist/consts/{index.js → index.cjs} +8 -12
  8. package/dist/consts/{index.d.ts → index.d.cts} +1 -0
  9. package/dist/consts/index.d.cts.map +1 -0
  10. package/dist/consts/index.d.mts +66 -0
  11. package/dist/consts/index.d.mts.map +1 -0
  12. package/dist/consts/index.mjs +92 -0
  13. package/dist/{data.js → data.cjs} +246 -155
  14. package/dist/{data.d.ts → data.d.cts} +9 -8
  15. package/dist/data.d.cts.map +1 -0
  16. package/dist/data.d.mts +221 -0
  17. package/dist/data.d.mts.map +1 -0
  18. package/dist/data.mjs +841 -0
  19. package/dist/{index.js → index.cjs} +5 -6
  20. package/dist/index.d.cts +6 -0
  21. package/dist/index.d.cts.map +1 -0
  22. package/dist/index.d.mts +6 -0
  23. package/dist/index.d.mts.map +1 -0
  24. package/dist/index.mjs +5 -0
  25. package/dist/{oracle.js → oracle.cjs} +51 -8
  26. package/dist/{oracle.d.ts → oracle.d.cts} +7 -6
  27. package/dist/oracle.d.cts.map +1 -0
  28. package/dist/oracle.d.mts +24 -0
  29. package/dist/oracle.d.mts.map +1 -0
  30. package/dist/oracle.mjs +173 -0
  31. package/dist/{utils.js → utils.cjs} +1 -2
  32. package/dist/{utils.d.ts → utils.d.cts} +5 -4
  33. package/dist/utils.d.cts.map +1 -0
  34. package/dist/utils.d.mts +46 -0
  35. package/dist/utils.d.mts.map +1 -0
  36. package/dist/utils.mjs +128 -0
  37. package/package.json +23 -13
  38. package/src/consts/index.ts +1 -1
  39. package/tsconfig.json +19 -9
  40. package/babel.config.js +0 -11
  41. package/dist/api.js +0 -400
  42. package/dist/api.js.map +0 -1
  43. package/dist/consts/index.js.map +0 -1
  44. package/dist/data.js.map +0 -1
  45. package/dist/index.d.ts +0 -5
  46. package/dist/index.js.map +0 -1
  47. package/dist/oracle.js.map +0 -1
  48. package/dist/utils.js.map +0 -1
package/dist/api.mjs ADDED
@@ -0,0 +1,465 @@
1
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
+ };
6
+ var _API_instances, _API_processCoins, _API_processSlippage;
7
+ import { Transaction } from "@mysten/sui/transactions";
8
+ import { SUI_CLOCK_OBJECT_ID } from "@mysten/sui/utils";
9
+ import { ALLOW_TRADE_CAN_TRADE, ALLOW_TRADE_MUST_TRADE, ALLOW_TRADE_NO_TRADE } from "./consts/index.mjs";
10
+ import { DataAPI } from "./data.mjs";
11
+ import { joinSymbol } from "./utils.mjs";
12
+ export class API extends DataAPI {
13
+ // eslint-disable-next-line @typescript-eslint/no-useless-constructor
14
+ constructor(network, provider, apiEndpoint, connectionURL) {
15
+ super(network, provider, apiEndpoint, connectionURL);
16
+ _API_instances.add(this);
17
+ _API_processCoins.set(this, (tx, coin, coinObjects) => {
18
+ if (coin === 'sui') {
19
+ return tx.gas;
20
+ }
21
+ if (coinObjects.length > 1) {
22
+ tx.mergeCoins(tx.object(coinObjects[0]), coinObjects.slice(1).map(coinObject => tx.object(coinObject)));
23
+ }
24
+ return tx.object(coinObjects[0]);
25
+ });
26
+ Object.defineProperty(this, "deposit", {
27
+ enumerable: true,
28
+ configurable: true,
29
+ writable: true,
30
+ value: async (coin, coinObjects, amount, minAmountOut = 0) => {
31
+ const tx = await this.initOracleTxb(Object.keys(this.consts.pythFeeder.feeder));
32
+ const coinObject = __classPrivateFieldGet(this, _API_processCoins, "f").call(this, tx, coin, coinObjects);
33
+ const [depositObject] = tx.splitCoins(coinObject, [tx.pure.u64(amount)]);
34
+ const { vaultsValuation, symbolsValuation, } = this.valuate(tx);
35
+ tx.moveCall({
36
+ target: `${this.consts.zoCore.package}::market::deposit`,
37
+ typeArguments: [
38
+ `${this.consts.zoCore.package}::zlp::ZLP`,
39
+ this.consts.coins[coin].module,
40
+ ],
41
+ arguments: [
42
+ tx.object(this.consts.zoCore.market),
43
+ tx.object(this.consts.zoCore.rebaseFeeModel),
44
+ depositObject,
45
+ tx.pure.u64(minAmountOut),
46
+ vaultsValuation,
47
+ symbolsValuation,
48
+ ],
49
+ });
50
+ return tx;
51
+ }
52
+ });
53
+ Object.defineProperty(this, "withdraw", {
54
+ enumerable: true,
55
+ configurable: true,
56
+ writable: true,
57
+ value: async (coin, zlpCoinObjects, amount, minAmountOut = 0) => {
58
+ const tx = await this.initOracleTxb(Object.keys(this.consts.pythFeeder.feeder));
59
+ const zlpCoinObject = __classPrivateFieldGet(this, _API_processCoins, "f").call(this, tx, 'zlp', zlpCoinObjects);
60
+ const [withdrawObject] = tx.splitCoins(zlpCoinObject, [tx.pure.u64(amount)]);
61
+ const { vaultsValuation, symbolsValuation, } = this.valuate(tx);
62
+ tx.moveCall({
63
+ target: `${this.consts.zoCore.package}::market::withdraw`,
64
+ typeArguments: [
65
+ `${this.consts.zoCore.package}::zlp::ZLP`,
66
+ this.consts.coins[coin].module,
67
+ ],
68
+ arguments: [
69
+ tx.object(this.consts.zoCore.market),
70
+ tx.object(this.consts.zoCore.rebaseFeeModel),
71
+ withdrawObject,
72
+ tx.pure.u64(minAmountOut),
73
+ vaultsValuation,
74
+ symbolsValuation,
75
+ ],
76
+ });
77
+ return tx;
78
+ }
79
+ });
80
+ Object.defineProperty(this, "openPosition", {
81
+ enumerable: true,
82
+ configurable: true,
83
+ writable: true,
84
+ value: async (collateralToken, indexToken, size, collateralAmount, coinObjects, long, reserveAmount, indexPrice, collateralPrice, slippage = 0.003, isLimitOrder = false, isIocOrder = false, relayerFee = BigInt(1), referralAddress = '', sender = '') => {
85
+ let tx = new Transaction();
86
+ if (referralAddress && !await this.hasReferral(sender || '')) {
87
+ tx = await this.addReferral(referralAddress, tx);
88
+ }
89
+ tx = await this.initOracleTxb([collateralToken, indexToken], tx);
90
+ const coinObject = __classPrivateFieldGet(this, _API_processCoins, "f").call(this, tx, collateralToken, coinObjects);
91
+ const [depositObject, feeObject] = tx.splitCoins(coinObject, [
92
+ tx.pure.u64(collateralAmount),
93
+ tx.pure.u64(relayerFee)
94
+ ]);
95
+ const symbol = joinSymbol(long ? 'long' : 'short', indexToken);
96
+ const adjustPrice = __classPrivateFieldGet(this, _API_instances, "m", _API_processSlippage).call(this, indexPrice, long, isLimitOrder ? 0 : slippage);
97
+ const adjustCollateralPrice = __classPrivateFieldGet(this, _API_instances, "m", _API_processSlippage).call(this, collateralPrice, false, 0.5);
98
+ let allowTrade = ALLOW_TRADE_MUST_TRADE;
99
+ if (isLimitOrder) {
100
+ allowTrade = isIocOrder ? ALLOW_TRADE_NO_TRADE : ALLOW_TRADE_CAN_TRADE;
101
+ }
102
+ tx.moveCall({
103
+ target: `${this.consts.zoCore.package}::market::open_position`,
104
+ typeArguments: [
105
+ `${this.consts.zoCore.package}::zlp::ZLP`,
106
+ this.consts.coins[collateralToken].module,
107
+ this.consts.coins[indexToken].module,
108
+ `${this.consts.zoCore.package}::market::${long ? 'LONG' : 'SHORT'}`,
109
+ this.consts.coins[collateralToken].module,
110
+ ],
111
+ arguments: [
112
+ tx.object(SUI_CLOCK_OBJECT_ID),
113
+ tx.object(this.consts.zoCore.market),
114
+ tx.object(this.consts.zoCore.vaults[collateralToken].reservingFeeModel),
115
+ tx.object(this.consts.zoCore.symbols[symbol].fundingFeeModel),
116
+ tx.object(this.consts.zoCore.symbols[symbol].positionConfig),
117
+ tx.object(this.consts.pythFeeder.feeder[collateralToken]),
118
+ tx.object(this.consts.pythFeeder.feeder[indexToken]),
119
+ depositObject,
120
+ feeObject,
121
+ tx.pure.u8(allowTrade),
122
+ tx.pure.u64(size),
123
+ tx.pure.u64(reserveAmount),
124
+ tx.pure.u256(adjustCollateralPrice),
125
+ tx.pure.u256(adjustPrice),
126
+ ],
127
+ });
128
+ return tx;
129
+ }
130
+ });
131
+ Object.defineProperty(this, "pledgeInPosition", {
132
+ enumerable: true,
133
+ configurable: true,
134
+ writable: true,
135
+ value: async (pcpId, collateralToken, indexToken, amount, coinObjects, long) => {
136
+ const tx = await this.initOracleTxb([collateralToken, indexToken]);
137
+ const coinObject = __classPrivateFieldGet(this, _API_processCoins, "f").call(this, tx, collateralToken, coinObjects);
138
+ const [depositObject] = tx.splitCoins(coinObject, [tx.pure.u64(amount)]);
139
+ tx.moveCall({
140
+ target: `${this.consts.zoCore.package}::market::pledge_in_position`,
141
+ typeArguments: [
142
+ `${this.consts.zoCore.package}::zlp::ZLP`,
143
+ this.consts.coins[collateralToken].module,
144
+ this.consts.coins[indexToken].module,
145
+ `${this.consts.zoCore.package}::market::${long ? 'LONG' : 'SHORT'}`,
146
+ ],
147
+ arguments: [
148
+ tx.object(this.consts.zoCore.market),
149
+ tx.object(pcpId),
150
+ depositObject,
151
+ ],
152
+ });
153
+ return tx;
154
+ }
155
+ });
156
+ Object.defineProperty(this, "redeemFromPosition", {
157
+ enumerable: true,
158
+ configurable: true,
159
+ writable: true,
160
+ value: async (pcpId, collateralToken, indexToken, amount, long) => {
161
+ const tx = await this.initOracleTxb([collateralToken, indexToken]);
162
+ const symbol = joinSymbol(long ? 'long' : 'short', indexToken);
163
+ tx.moveCall({
164
+ target: `${this.consts.zoCore.package}::market::redeem_from_position`,
165
+ typeArguments: [
166
+ `${this.consts.zoCore.package}::zlp::ZLP`,
167
+ this.consts.coins[collateralToken].module,
168
+ this.consts.coins[indexToken].module,
169
+ `${this.consts.zoCore.package}::market::${long ? 'LONG' : 'SHORT'}`,
170
+ ],
171
+ arguments: [
172
+ tx.object(SUI_CLOCK_OBJECT_ID),
173
+ tx.object(this.consts.zoCore.market),
174
+ tx.object(pcpId),
175
+ tx.object(this.consts.zoCore.vaults[collateralToken].reservingFeeModel),
176
+ tx.object(this.consts.zoCore.symbols[symbol].fundingFeeModel),
177
+ tx.object(this.consts.pythFeeder.feeder[collateralToken]),
178
+ tx.object(this.consts.pythFeeder.feeder[indexToken]),
179
+ tx.pure.u64(amount),
180
+ ],
181
+ });
182
+ return tx;
183
+ }
184
+ });
185
+ Object.defineProperty(this, "decreasePosition", {
186
+ enumerable: true,
187
+ configurable: true,
188
+ writable: true,
189
+ value: async (pcpId, collateralToken, coinObjects, indexToken, amount, long, indexPrice, collateralPrice, isTriggerOrder = false, isTakeProfitOrder = true, isIocOrder = false, slippage = 0.003, relayerFee = BigInt(1)) => {
190
+ const tx = await this.initOracleTxb([collateralToken, indexToken]);
191
+ const symbol = joinSymbol(long ? 'long' : 'short', indexToken);
192
+ const coinObject = __classPrivateFieldGet(this, _API_processCoins, "f").call(this, tx, collateralToken, coinObjects);
193
+ const feeObject = tx.splitCoins(coinObject, [tx.pure.u64(relayerFee)]);
194
+ const adjustPrice = __classPrivateFieldGet(this, _API_instances, "m", _API_processSlippage).call(this, indexPrice, !long, isTriggerOrder ? 0 : slippage);
195
+ const adjustCollateralPrice = __classPrivateFieldGet(this, _API_instances, "m", _API_processSlippage).call(this, collateralPrice, false, 0.5);
196
+ let allowTrade = ALLOW_TRADE_MUST_TRADE;
197
+ if (isTriggerOrder) {
198
+ allowTrade = isIocOrder || !isTakeProfitOrder ? ALLOW_TRADE_NO_TRADE : ALLOW_TRADE_CAN_TRADE;
199
+ }
200
+ else {
201
+ isTakeProfitOrder = true;
202
+ }
203
+ /* console.log('isTriggerOrder:', isTriggerOrder)
204
+ console.log('isIocOrder:', isIocOrder)
205
+ console.log('isTakeProfitOrder:', isTakeProfitOrder)
206
+ console.log('adjustPrice:', adjustPrice)
207
+ console.log('allowTrade:', allowTrade)
208
+ console.log('isTriggerOrder:', isTriggerOrder)
209
+ console.log('isTakeProfitOrder:', isTakeProfitOrder) */
210
+ tx.moveCall({
211
+ target: `${this.consts.zoCore.package}::market::decrease_position`,
212
+ typeArguments: [
213
+ `${this.consts.zoCore.package}::zlp::ZLP`,
214
+ this.consts.coins[collateralToken].module,
215
+ this.consts.coins[indexToken].module,
216
+ `${this.consts.zoCore.package}::market::${long ? 'LONG' : 'SHORT'}`,
217
+ this.consts.coins[collateralToken].module,
218
+ ],
219
+ arguments: [
220
+ tx.object(SUI_CLOCK_OBJECT_ID),
221
+ tx.object(this.consts.zoCore.market),
222
+ tx.object(pcpId),
223
+ tx.object(this.consts.zoCore.vaults[collateralToken].reservingFeeModel),
224
+ tx.object(this.consts.zoCore.symbols[symbol].fundingFeeModel),
225
+ tx.object(this.consts.pythFeeder.feeder[collateralToken]),
226
+ tx.object(this.consts.pythFeeder.feeder[indexToken]),
227
+ feeObject,
228
+ tx.pure.u8(allowTrade),
229
+ tx.pure.bool(isTakeProfitOrder),
230
+ tx.pure.u64(amount),
231
+ tx.pure.u256(adjustCollateralPrice),
232
+ tx.pure.u256(adjustPrice),
233
+ ],
234
+ });
235
+ return tx;
236
+ }
237
+ });
238
+ Object.defineProperty(this, "cancelOrder", {
239
+ enumerable: true,
240
+ configurable: true,
241
+ writable: true,
242
+ value: (orderCapId, collateralToken, indexToken, long, type, isV11Order = false) => {
243
+ const tx = new Transaction();
244
+ let functionName = '';
245
+ switch (type) {
246
+ case 'OPEN_POSITION': {
247
+ functionName = isV11Order ? 'clear_open_position_order' : 'clear_open_position_order';
248
+ break;
249
+ }
250
+ case 'DECREASE_POSITION': {
251
+ functionName = isV11Order ? 'clear_decrease_position_order' : 'clear_decrease_position_order';
252
+ break;
253
+ }
254
+ default: {
255
+ throw new Error('invalid order type');
256
+ }
257
+ }
258
+ tx.moveCall({
259
+ target: `${this.consts.zoCore.package}::market::${functionName}`,
260
+ typeArguments: [
261
+ `${this.consts.zoCore.package}::zlp::ZLP`,
262
+ this.consts.coins[collateralToken].module,
263
+ this.consts.coins[indexToken].module,
264
+ `${this.consts.zoCore.package}::market::${long ? 'LONG' : 'SHORT'}`,
265
+ this.consts.coins[collateralToken].module,
266
+ ],
267
+ arguments: [
268
+ tx.object(this.consts.zoCore.market),
269
+ tx.object(orderCapId),
270
+ ],
271
+ });
272
+ return tx;
273
+ }
274
+ });
275
+ Object.defineProperty(this, "swap", {
276
+ enumerable: true,
277
+ configurable: true,
278
+ writable: true,
279
+ value: async (fromToken, toToken, fromAmount, fromCoinObjects) => {
280
+ const tx = await this.initOracleTxb(Object.keys(this.consts.zoCore.vaults));
281
+ const fromCoinObject = __classPrivateFieldGet(this, _API_processCoins, "f").call(this, tx, fromToken, fromCoinObjects);
282
+ const [fromDepositObject] = tx.splitCoins(fromCoinObject, [tx.pure.u64(fromAmount)]);
283
+ const vaultsValuation = this.valuateVaults(tx);
284
+ tx.moveCall({
285
+ target: `${this.consts.zoCore.package}::market::swap`,
286
+ typeArguments: [
287
+ `${this.consts.zoCore.package}::zlp::ZLP`,
288
+ this.consts.coins[fromToken].module,
289
+ this.consts.coins[toToken].module,
290
+ ],
291
+ arguments: [
292
+ tx.object(this.consts.zoCore.market),
293
+ tx.object(this.consts.zoCore.rebaseFeeModel),
294
+ fromDepositObject,
295
+ // FIXME: minAmountOut
296
+ tx.pure.u64(0),
297
+ vaultsValuation,
298
+ ],
299
+ });
300
+ return tx;
301
+ }
302
+ });
303
+ Object.defineProperty(this, "clearClosedPosition", {
304
+ enumerable: true,
305
+ configurable: true,
306
+ writable: true,
307
+ value: (pcpId, collateralToken, indexToken, long, tx) => {
308
+ tx.moveCall({
309
+ target: `${this.consts.zoCore.package}::market::clear_closed_position`,
310
+ typeArguments: [
311
+ `${this.consts.zoCore.package}::zlp::ZLP`,
312
+ this.consts.coins[collateralToken].module,
313
+ this.consts.coins[indexToken].module,
314
+ `${this.consts.zoCore.package}::market::${long ? 'LONG' : 'SHORT'}`,
315
+ ],
316
+ arguments: [
317
+ tx.object(this.consts.zoCore.market),
318
+ tx.object(pcpId),
319
+ ],
320
+ });
321
+ }
322
+ });
323
+ Object.defineProperty(this, "clearOpenPositionOrder", {
324
+ enumerable: true,
325
+ configurable: true,
326
+ writable: true,
327
+ value: (orderCapId, collateralToken, indexToken, long, tx, isV11Order = false) => {
328
+ const funcName = isV11Order ? 'clear_open_position_order' : 'clear_open_position_order';
329
+ tx.moveCall({
330
+ target: `${this.consts.zoCore.package}::market::${funcName}`,
331
+ typeArguments: [
332
+ `${this.consts.zoCore.package}::zlp::ZLP`,
333
+ this.consts.coins[collateralToken].module,
334
+ this.consts.coins[indexToken].module,
335
+ `${this.consts.zoCore.package}::market::${long ? 'LONG' : 'SHORT'}`,
336
+ this.consts.coins[collateralToken].module,
337
+ ],
338
+ arguments: [
339
+ tx.object(this.consts.zoCore.market),
340
+ tx.object(orderCapId),
341
+ ],
342
+ });
343
+ }
344
+ });
345
+ Object.defineProperty(this, "clearDecreasePositionOrder", {
346
+ enumerable: true,
347
+ configurable: true,
348
+ writable: true,
349
+ value: (orderCapId, collateralToken, indexToken, long, tx, isV11Order = false) => {
350
+ const funcName = isV11Order ? 'clear_decrease_position_order' : 'clear_decrease_position_order';
351
+ tx.moveCall({
352
+ target: `${this.consts.zoCore.package}::market::${funcName}`,
353
+ typeArguments: [
354
+ `${this.consts.zoCore.package}::zlp::ZLP`,
355
+ this.consts.coins[collateralToken].module,
356
+ this.consts.coins[indexToken].module,
357
+ `${this.consts.zoCore.package}::market::${long ? 'LONG' : 'SHORT'}`,
358
+ this.consts.coins[collateralToken].module,
359
+ ],
360
+ arguments: [
361
+ tx.object(this.consts.zoCore.market),
362
+ tx.object(orderCapId),
363
+ ],
364
+ });
365
+ }
366
+ });
367
+ Object.defineProperty(this, "stake", {
368
+ enumerable: true,
369
+ configurable: true,
370
+ writable: true,
371
+ value: (coinObjects, amount, pool, tx) => {
372
+ if (!tx) {
373
+ tx = new Transaction();
374
+ }
375
+ const coinObject = __classPrivateFieldGet(this, _API_processCoins, "f").call(this, tx, 'zlp', coinObjects);
376
+ const [depositObject] = tx.splitCoins(coinObject, [tx.pure.u64(amount)]);
377
+ tx.moveCall({
378
+ target: `${this.consts.zoStaking.package}::pool::deposit`,
379
+ typeArguments: [
380
+ `${this.consts.zoCore.package}::zlp::ZLP`,
381
+ this.consts.coins.sui.module,
382
+ ],
383
+ arguments: [
384
+ tx.object(pool),
385
+ tx.object(SUI_CLOCK_OBJECT_ID),
386
+ depositObject,
387
+ ],
388
+ });
389
+ return tx;
390
+ }
391
+ });
392
+ Object.defineProperty(this, "unstake", {
393
+ enumerable: true,
394
+ configurable: true,
395
+ writable: true,
396
+ value: (credentials, amount, pool, tx) => {
397
+ if (!tx) {
398
+ tx = new Transaction();
399
+ }
400
+ for (const credential of credentials) {
401
+ // eslint-disable-next-line unicorn/prefer-math-min-max
402
+ const withdrawAmount = amount < credential.amount ? amount : credential.amount;
403
+ amount -= withdrawAmount;
404
+ tx.moveCall({
405
+ target: `0xdb353cb79a88d5ee83b7c0ca0249662a1facab17ba62879080ea3d61b9d21112::pool::withdraw`,
406
+ typeArguments: [
407
+ `${this.consts.zoCore.package}::zlp::ZLP`,
408
+ this.consts.coins.sui.module,
409
+ ],
410
+ arguments: [
411
+ tx.object(pool),
412
+ tx.object(SUI_CLOCK_OBJECT_ID),
413
+ tx.object(credential.id),
414
+ tx.pure.u64(withdrawAmount),
415
+ ],
416
+ });
417
+ if (credential.amount === BigInt(0)) {
418
+ tx.moveCall({
419
+ target: `${this.consts.zoStaking.package}::pool::clear_empty_credential`,
420
+ typeArguments: [
421
+ `${this.consts.zoCore.package}::zlp::ZLP`,
422
+ this.consts.coins.sui.module,
423
+ ],
424
+ arguments: [
425
+ tx.object(credential.id),
426
+ ],
427
+ });
428
+ }
429
+ }
430
+ return tx;
431
+ }
432
+ });
433
+ Object.defineProperty(this, "addReferral", {
434
+ enumerable: true,
435
+ configurable: true,
436
+ writable: true,
437
+ value: (referrer, tx) => {
438
+ if (!tx) {
439
+ tx = new Transaction();
440
+ }
441
+ tx.moveCall({
442
+ target: `${this.consts.zoCore.package}::market::add_new_referral`,
443
+ typeArguments: [
444
+ `${this.consts.zoCore.package}::zlp::ZLP`,
445
+ ],
446
+ arguments: [
447
+ tx.object(this.consts.zoCore.market),
448
+ tx.object(referrer),
449
+ ],
450
+ });
451
+ return tx;
452
+ }
453
+ });
454
+ }
455
+ static getInstance(network, provider, apiEndpoint, connectionURL) {
456
+ if (!API.instance) {
457
+ API.instance = new API(network, provider, apiEndpoint, connectionURL);
458
+ }
459
+ return API.instance;
460
+ }
461
+ }
462
+ _API_processCoins = new WeakMap(), _API_instances = new WeakSet(), _API_processSlippage = function _API_processSlippage(indexPrice, long, slippage) {
463
+ const raw = long ? (indexPrice * (1 + slippage)) : (indexPrice * (1 - slippage));
464
+ return BigInt(Math.round(raw * 1e18));
465
+ };
@@ -1,22 +1,19 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.ALLOW_TRADE_MUST_TRADE = exports.ALLOW_TRADE_CAN_TRADE = exports.ALLOW_TRADE_NO_TRADE = exports.SECONDS_PER_EIGHT_HOUR = exports.ZLP_TOKEN_DECIMALS = exports.Network = void 0;
7
4
  exports.getConsts = getConsts;
8
5
  exports.getPythFeederToPriceId = getPythFeederToPriceId;
9
6
  exports.getPriceIdToPythFeeder = getPriceIdToPythFeeder;
10
7
  exports.getPythFeederToId = getPythFeederToId;
11
- const utils_1 = require("../utils");
12
- const deployments_mainnet_json_1 = __importDefault(require("./deployments-mainnet.json"));
13
- const deployments_testnet_json_1 = __importDefault(require("./deployments-testnet.json"));
14
- const price_id_to_object_id_mainnet_json_1 = __importDefault(require("./price_id_to_object_id.mainnet.json"));
15
- const price_id_to_object_id_testnet_json_1 = __importDefault(require("./price_id_to_object_id.testnet.json"));
16
- const deployments_mainnet_json_2 = __importDefault(require("./staking/deployments-mainnet.json"));
17
- const deployments_testnet_json_2 = __importDefault(require("./staking/deployments-testnet.json"));
8
+ const utils_1 = require("../utils.cjs");
9
+ const deployments_mainnet_json_1 = require("./deployments-mainnet.json");
10
+ const deployments_testnet_json_1 = require("./deployments-testnet.json");
11
+ const price_id_to_object_id_mainnet_json_1 = require("./price_id_to_object_id.mainnet.json");
12
+ const price_id_to_object_id_testnet_json_1 = require("./price_id_to_object_id.testnet.json");
13
+ const deployments_mainnet_json_2 = require("./staking/deployments-mainnet.json");
14
+ const deployments_testnet_json_2 = require("./staking/deployments-testnet.json");
18
15
  function toCamelCase(str) {
19
- return str.replace(/_([a-z])/g, (match, letter) => letter.toUpperCase());
16
+ return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
20
17
  }
21
18
  function parse(obj) {
22
19
  if (typeof obj !== 'object' || obj === null) {
@@ -100,4 +97,3 @@ function getPythFeederToId(network) {
100
97
  exports.ALLOW_TRADE_NO_TRADE = 0;
101
98
  exports.ALLOW_TRADE_CAN_TRADE = 1;
102
99
  exports.ALLOW_TRADE_MUST_TRADE = 2;
103
- //# sourceMappingURL=index.js.map
@@ -63,3 +63,4 @@ export declare const ALLOW_TRADE_NO_TRADE = 0;
63
63
  export declare const ALLOW_TRADE_CAN_TRADE = 1;
64
64
  export declare const ALLOW_TRADE_MUST_TRADE = 2;
65
65
  export {};
66
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/consts/index.ts"],"names":[],"mappings":"AAQA,UAAU,MAAM;IACd,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,UAAU,OAAO;IACf,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,UAAU,KAAK;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,KAAK,kBAAkB,GAAG,MAAM,CAAA;AAEhC,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;AAEjD,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAA;QACf,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,kBAAkB,CAAA;QAC1B,WAAW,EAAE,kBAAkB,CAAA;QAC/B,cAAc,EAAE,kBAAkB,CAAA;QAClC,YAAY,EAAE,MAAM,CAAA;QACpB,aAAa,EAAE,MAAM,CAAA;QACrB,eAAe,EAAE,MAAM,CAAA;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAChC,eAAe,EAAE,MAAM,CAAA;QACvB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAA;QACf,KAAK,EAAE,kBAAkB,CAAA;QACzB,QAAQ,EAAE;YACR,OAAO,EAAE,MAAM,CAAA;YACf,KAAK,EAAE,kBAAkB,CAAA;SAC1B,CAAA;QACD,MAAM,EAAE,OAAO,CAAA;KAChB,CAAA;IACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC5B,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAA;QACf,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;CACF;AAyBD,oBAAY,OAAO;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAMD,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAYlD;AAED,eAAO,MAAM,kBAAkB,IAAI,CAAA;AAEnC,eAAO,MAAM,sBAAsB,QAAc,CAAA;AAEjD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAY/E;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgB/E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUzE;AAED,eAAO,MAAM,oBAAoB,IAAI,CAAA;AACrC,eAAO,MAAM,qBAAqB,IAAI,CAAA;AACtC,eAAO,MAAM,sBAAsB,IAAI,CAAA"}
@@ -0,0 +1,66 @@
1
+ interface IVault {
2
+ weight: string;
3
+ reservingFeeModel: string;
4
+ }
5
+ interface ISymbol {
6
+ supportedCollaterals: string[];
7
+ fundingFeeModel: string;
8
+ positionConfig: string;
9
+ }
10
+ interface ICoin {
11
+ decimals: number;
12
+ module: string;
13
+ metadata: string;
14
+ treasury: string | null;
15
+ }
16
+ type IVersionedContract = string;
17
+ type IFeeder = Record<string, IVersionedContract>;
18
+ export interface IConsts {
19
+ zoCore: {
20
+ package: string;
21
+ upgradeCap: string;
22
+ adminCap: string;
23
+ market: IVersionedContract;
24
+ zlpMetadata: IVersionedContract;
25
+ rebaseFeeModel: IVersionedContract;
26
+ vaultsParent: string;
27
+ symbolsParent: string;
28
+ positionsParent: string;
29
+ vaults: Record<string, IVault>;
30
+ symbols: Record<string, ISymbol>;
31
+ referralsParent: string;
32
+ ordersParent: string;
33
+ };
34
+ pythFeeder: {
35
+ package: string;
36
+ state: IVersionedContract;
37
+ wormhole: {
38
+ package: string;
39
+ state: IVersionedContract;
40
+ };
41
+ feeder: IFeeder;
42
+ };
43
+ coins: Record<string, ICoin>;
44
+ zoStaking: {
45
+ package: string;
46
+ upgradeCap: string;
47
+ adminCap: string;
48
+ pool: string;
49
+ };
50
+ }
51
+ export declare enum Network {
52
+ MAINNET = "mainnet",
53
+ TESTNET = "testnet",
54
+ DEVNET = "devnet"
55
+ }
56
+ export declare function getConsts(network: string): IConsts;
57
+ export declare const ZLP_TOKEN_DECIMALS = 6;
58
+ export declare const SECONDS_PER_EIGHT_HOUR: number;
59
+ export declare function getPythFeederToPriceId(network: Network): Record<string, string>;
60
+ export declare function getPriceIdToPythFeeder(network: Network): Record<string, string>;
61
+ export declare function getPythFeederToId(network: string): Record<string, string>;
62
+ export declare const ALLOW_TRADE_NO_TRADE = 0;
63
+ export declare const ALLOW_TRADE_CAN_TRADE = 1;
64
+ export declare const ALLOW_TRADE_MUST_TRADE = 2;
65
+ export {};
66
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/consts/index.ts"],"names":[],"mappings":"AAQA,UAAU,MAAM;IACd,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,UAAU,OAAO;IACf,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,UAAU,KAAK;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,KAAK,kBAAkB,GAAG,MAAM,CAAA;AAEhC,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;AAEjD,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAA;QACf,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,kBAAkB,CAAA;QAC1B,WAAW,EAAE,kBAAkB,CAAA;QAC/B,cAAc,EAAE,kBAAkB,CAAA;QAClC,YAAY,EAAE,MAAM,CAAA;QACpB,aAAa,EAAE,MAAM,CAAA;QACrB,eAAe,EAAE,MAAM,CAAA;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAChC,eAAe,EAAE,MAAM,CAAA;QACvB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAA;QACf,KAAK,EAAE,kBAAkB,CAAA;QACzB,QAAQ,EAAE;YACR,OAAO,EAAE,MAAM,CAAA;YACf,KAAK,EAAE,kBAAkB,CAAA;SAC1B,CAAA;QACD,MAAM,EAAE,OAAO,CAAA;KAChB,CAAA;IACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC5B,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAA;QACf,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;CACF;AAyBD,oBAAY,OAAO;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAMD,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAYlD;AAED,eAAO,MAAM,kBAAkB,IAAI,CAAA;AAEnC,eAAO,MAAM,sBAAsB,QAAc,CAAA;AAEjD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAY/E;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgB/E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUzE;AAED,eAAO,MAAM,oBAAoB,IAAI,CAAA;AACrC,eAAO,MAAM,qBAAqB,IAAI,CAAA;AACtC,eAAO,MAAM,sBAAsB,IAAI,CAAA"}