zo-sdk 0.0.14 → 0.0.16

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/dist/api.mjs CHANGED
@@ -23,359 +23,325 @@ export class API extends DataAPI {
23
23
  }
24
24
  return tx.object(coinObjects[0]);
25
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;
26
+ this.deposit = async (coin, coinObjects, amount, minAmountOut = 0, referralAddress = '', sender = '') => {
27
+ let tx = await this.initOracleTxb(Object.keys(this.consts.pythFeeder.feeder));
28
+ if (referralAddress && !await this.hasReferral(sender || '')) {
29
+ tx = await this.addReferral(referralAddress, tx);
51
30
  }
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;
31
+ const coinObject = __classPrivateFieldGet(this, _API_processCoins, "f").call(this, tx, coin, coinObjects);
32
+ const [depositObject] = tx.splitCoins(coinObject, [tx.pure.u64(amount)]);
33
+ const { vaultsValuation, symbolsValuation, } = this.valuate(tx);
34
+ tx.moveCall({
35
+ target: `${this.consts.zoCore.package}::market::deposit`,
36
+ typeArguments: [
37
+ `${this.consts.zoCore.package}::zlp::ZLP`,
38
+ this.consts.coins[coin].module,
39
+ ],
40
+ arguments: [
41
+ tx.object(this.consts.zoCore.market),
42
+ tx.object(this.consts.zoCore.rebaseFeeModel),
43
+ depositObject,
44
+ tx.pure.u64(minAmountOut),
45
+ vaultsValuation,
46
+ symbolsValuation,
47
+ ],
48
+ });
49
+ return tx;
50
+ };
51
+ this.withdraw = async (coin, zlpCoinObjects, amount, minAmountOut = 0) => {
52
+ const tx = await this.initOracleTxb(Object.keys(this.consts.pythFeeder.feeder));
53
+ const zlpCoinObject = __classPrivateFieldGet(this, _API_processCoins, "f").call(this, tx, 'zlp', zlpCoinObjects);
54
+ const [withdrawObject] = tx.splitCoins(zlpCoinObject, [tx.pure.u64(amount)]);
55
+ const { vaultsValuation, symbolsValuation, } = this.valuate(tx);
56
+ tx.moveCall({
57
+ target: `${this.consts.zoCore.package}::market::withdraw`,
58
+ typeArguments: [
59
+ `${this.consts.zoCore.package}::zlp::ZLP`,
60
+ this.consts.coins[coin].module,
61
+ ],
62
+ arguments: [
63
+ tx.object(this.consts.zoCore.market),
64
+ tx.object(this.consts.zoCore.rebaseFeeModel),
65
+ withdrawObject,
66
+ tx.pure.u64(minAmountOut),
67
+ vaultsValuation,
68
+ symbolsValuation,
69
+ ],
70
+ });
71
+ return tx;
72
+ };
73
+ this.openPosition = async (collateralToken, indexToken, size, collateralAmount, coinObjects, long, reserveAmount, indexPrice, collateralPrice, slippage = 0.003, isLimitOrder = false, isIocOrder = false, relayerFee = BigInt(1), referralAddress = '', sender = '') => {
74
+ let tx = new Transaction();
75
+ if (referralAddress && !await this.hasReferral(sender || '')) {
76
+ tx = await this.addReferral(referralAddress, tx);
78
77
  }
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;
78
+ tx = await this.initOracleTxb([collateralToken, indexToken], tx);
79
+ const coinObject = __classPrivateFieldGet(this, _API_processCoins, "f").call(this, tx, collateralToken, coinObjects);
80
+ const [depositObject, feeObject] = tx.splitCoins(coinObject, [
81
+ tx.pure.u64(collateralAmount),
82
+ tx.pure.u64(relayerFee)
83
+ ]);
84
+ const symbol = joinSymbol(long ? 'long' : 'short', indexToken);
85
+ const adjustPrice = __classPrivateFieldGet(this, _API_instances, "m", _API_processSlippage).call(this, indexPrice, long, isLimitOrder ? 0 : slippage);
86
+ const adjustCollateralPrice = __classPrivateFieldGet(this, _API_instances, "m", _API_processSlippage).call(this, collateralPrice, false, 0.5);
87
+ let allowTrade = ALLOW_TRADE_MUST_TRADE;
88
+ if (isLimitOrder) {
89
+ allowTrade = isIocOrder ? ALLOW_TRADE_NO_TRADE : ALLOW_TRADE_CAN_TRADE;
129
90
  }
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;
91
+ tx.moveCall({
92
+ target: `${this.consts.zoCore.package}::market::open_position`,
93
+ typeArguments: [
94
+ `${this.consts.zoCore.package}::zlp::ZLP`,
95
+ this.consts.coins[collateralToken].module,
96
+ this.consts.coins[indexToken].module,
97
+ `${this.consts.zoCore.package}::market::${long ? 'LONG' : 'SHORT'}`,
98
+ this.consts.coins[collateralToken].module,
99
+ ],
100
+ arguments: [
101
+ tx.object(SUI_CLOCK_OBJECT_ID),
102
+ tx.object(this.consts.zoCore.market),
103
+ tx.object(this.consts.zoCore.vaults[collateralToken].reservingFeeModel),
104
+ tx.object(this.consts.zoCore.symbols[symbol].fundingFeeModel),
105
+ tx.object(this.consts.zoCore.symbols[symbol].positionConfig),
106
+ tx.object(this.consts.pythFeeder.feeder[collateralToken]),
107
+ tx.object(this.consts.pythFeeder.feeder[indexToken]),
108
+ depositObject,
109
+ feeObject,
110
+ tx.pure.u8(allowTrade),
111
+ tx.pure.u64(size),
112
+ tx.pure.u64(reserveAmount),
113
+ tx.pure.u256(adjustCollateralPrice),
114
+ tx.pure.u256(adjustPrice),
115
+ ],
116
+ });
117
+ return tx;
118
+ };
119
+ this.pledgeInPosition = async (pcpId, collateralToken, indexToken, amount, coinObjects, long) => {
120
+ const tx = await this.initOracleTxb([collateralToken, indexToken]);
121
+ const coinObject = __classPrivateFieldGet(this, _API_processCoins, "f").call(this, tx, collateralToken, coinObjects);
122
+ const [depositObject] = tx.splitCoins(coinObject, [tx.pure.u64(amount)]);
123
+ tx.moveCall({
124
+ target: `${this.consts.zoCore.package}::market::pledge_in_position`,
125
+ typeArguments: [
126
+ `${this.consts.zoCore.package}::zlp::ZLP`,
127
+ this.consts.coins[collateralToken].module,
128
+ this.consts.coins[indexToken].module,
129
+ `${this.consts.zoCore.package}::market::${long ? 'LONG' : 'SHORT'}`,
130
+ ],
131
+ arguments: [
132
+ tx.object(this.consts.zoCore.market),
133
+ tx.object(pcpId),
134
+ depositObject,
135
+ ],
136
+ });
137
+ return tx;
138
+ };
139
+ this.redeemFromPosition = async (pcpId, collateralToken, indexToken, amount, long) => {
140
+ const tx = await this.initOracleTxb([collateralToken, indexToken]);
141
+ const symbol = joinSymbol(long ? 'long' : 'short', indexToken);
142
+ tx.moveCall({
143
+ target: `${this.consts.zoCore.package}::market::redeem_from_position`,
144
+ typeArguments: [
145
+ `${this.consts.zoCore.package}::zlp::ZLP`,
146
+ this.consts.coins[collateralToken].module,
147
+ this.consts.coins[indexToken].module,
148
+ `${this.consts.zoCore.package}::market::${long ? 'LONG' : 'SHORT'}`,
149
+ ],
150
+ arguments: [
151
+ tx.object(SUI_CLOCK_OBJECT_ID),
152
+ tx.object(this.consts.zoCore.market),
153
+ tx.object(pcpId),
154
+ tx.object(this.consts.zoCore.vaults[collateralToken].reservingFeeModel),
155
+ tx.object(this.consts.zoCore.symbols[symbol].fundingFeeModel),
156
+ tx.object(this.consts.pythFeeder.feeder[collateralToken]),
157
+ tx.object(this.consts.pythFeeder.feeder[indexToken]),
158
+ tx.pure.u64(amount),
159
+ ],
160
+ });
161
+ return tx;
162
+ };
163
+ this.decreasePosition = async (pcpId, collateralToken, coinObjects, indexToken, amount, long, indexPrice, collateralPrice, isTriggerOrder = false, isTakeProfitOrder = true, isIocOrder = false, slippage = 0.003, relayerFee = BigInt(1)) => {
164
+ const tx = await this.initOracleTxb([collateralToken, indexToken]);
165
+ const symbol = joinSymbol(long ? 'long' : 'short', indexToken);
166
+ const coinObject = __classPrivateFieldGet(this, _API_processCoins, "f").call(this, tx, collateralToken, coinObjects);
167
+ const feeObject = tx.splitCoins(coinObject, [tx.pure.u64(relayerFee)]);
168
+ const adjustPrice = __classPrivateFieldGet(this, _API_instances, "m", _API_processSlippage).call(this, indexPrice, !long, isTriggerOrder ? 0 : slippage);
169
+ const adjustCollateralPrice = __classPrivateFieldGet(this, _API_instances, "m", _API_processSlippage).call(this, collateralPrice, false, 0.5);
170
+ let allowTrade = ALLOW_TRADE_MUST_TRADE;
171
+ if (isTriggerOrder) {
172
+ allowTrade = isIocOrder || !isTakeProfitOrder ? ALLOW_TRADE_NO_TRADE : ALLOW_TRADE_CAN_TRADE;
154
173
  }
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;
174
+ else {
175
+ isTakeProfitOrder = true;
183
176
  }
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;
177
+ /* console.log('isTriggerOrder:', isTriggerOrder)
178
+ console.log('isIocOrder:', isIocOrder)
179
+ console.log('isTakeProfitOrder:', isTakeProfitOrder)
180
+ console.log('adjustPrice:', adjustPrice)
181
+ console.log('allowTrade:', allowTrade)
182
+ console.log('isTriggerOrder:', isTriggerOrder)
183
+ console.log('isTakeProfitOrder:', isTakeProfitOrder) */
184
+ tx.moveCall({
185
+ target: `${this.consts.zoCore.package}::market::decrease_position`,
186
+ typeArguments: [
187
+ `${this.consts.zoCore.package}::zlp::ZLP`,
188
+ this.consts.coins[collateralToken].module,
189
+ this.consts.coins[indexToken].module,
190
+ `${this.consts.zoCore.package}::market::${long ? 'LONG' : 'SHORT'}`,
191
+ this.consts.coins[collateralToken].module,
192
+ ],
193
+ arguments: [
194
+ tx.object(SUI_CLOCK_OBJECT_ID),
195
+ tx.object(this.consts.zoCore.market),
196
+ tx.object(pcpId),
197
+ tx.object(this.consts.zoCore.vaults[collateralToken].reservingFeeModel),
198
+ tx.object(this.consts.zoCore.symbols[symbol].fundingFeeModel),
199
+ tx.object(this.consts.pythFeeder.feeder[collateralToken]),
200
+ tx.object(this.consts.pythFeeder.feeder[indexToken]),
201
+ feeObject,
202
+ tx.pure.u8(allowTrade),
203
+ tx.pure.bool(isTakeProfitOrder),
204
+ tx.pure.u64(amount),
205
+ tx.pure.u256(adjustCollateralPrice),
206
+ tx.pure.u256(adjustPrice),
207
+ ],
208
+ });
209
+ return tx;
210
+ };
211
+ this.cancelOrder = (orderCapId, collateralToken, indexToken, long, type, isV11Order = false) => {
212
+ const tx = new Transaction();
213
+ let functionName = '';
214
+ switch (type) {
215
+ case 'OPEN_POSITION': {
216
+ functionName = isV11Order ? 'clear_open_position_order' : 'clear_open_position_order';
217
+ break;
199
218
  }
200
- else {
201
- isTakeProfitOrder = true;
219
+ case 'DECREASE_POSITION': {
220
+ functionName = isV11Order ? 'clear_decrease_position_order' : 'clear_decrease_position_order';
221
+ break;
202
222
  }
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
- }
223
+ default: {
224
+ throw new Error('invalid order type');
257
225
  }
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
226
  }
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;
227
+ tx.moveCall({
228
+ target: `${this.consts.zoCore.package}::market::${functionName}`,
229
+ typeArguments: [
230
+ `${this.consts.zoCore.package}::zlp::ZLP`,
231
+ this.consts.coins[collateralToken].module,
232
+ this.consts.coins[indexToken].module,
233
+ `${this.consts.zoCore.package}::market::${long ? 'LONG' : 'SHORT'}`,
234
+ this.consts.coins[collateralToken].module,
235
+ ],
236
+ arguments: [
237
+ tx.object(this.consts.zoCore.market),
238
+ tx.object(orderCapId),
239
+ ],
240
+ });
241
+ return tx;
242
+ };
243
+ this.swap = async (fromToken, toToken, fromAmount, fromCoinObjects) => {
244
+ const tx = await this.initOracleTxb(Object.keys(this.consts.zoCore.vaults));
245
+ const fromCoinObject = __classPrivateFieldGet(this, _API_processCoins, "f").call(this, tx, fromToken, fromCoinObjects);
246
+ const [fromDepositObject] = tx.splitCoins(fromCoinObject, [tx.pure.u64(fromAmount)]);
247
+ const vaultsValuation = this.valuateVaults(tx);
248
+ tx.moveCall({
249
+ target: `${this.consts.zoCore.package}::market::swap`,
250
+ typeArguments: [
251
+ `${this.consts.zoCore.package}::zlp::ZLP`,
252
+ this.consts.coins[fromToken].module,
253
+ this.consts.coins[toToken].module,
254
+ ],
255
+ arguments: [
256
+ tx.object(this.consts.zoCore.market),
257
+ tx.object(this.consts.zoCore.rebaseFeeModel),
258
+ fromDepositObject,
259
+ // FIXME: minAmountOut
260
+ tx.pure.u64(0),
261
+ vaultsValuation,
262
+ ],
263
+ });
264
+ return tx;
265
+ };
266
+ this.clearClosedPosition = (pcpId, collateralToken, indexToken, long, tx) => {
267
+ tx.moveCall({
268
+ target: `${this.consts.zoCore.package}::market::clear_closed_position`,
269
+ typeArguments: [
270
+ `${this.consts.zoCore.package}::zlp::ZLP`,
271
+ this.consts.coins[collateralToken].module,
272
+ this.consts.coins[indexToken].module,
273
+ `${this.consts.zoCore.package}::market::${long ? 'LONG' : 'SHORT'}`,
274
+ ],
275
+ arguments: [
276
+ tx.object(this.consts.zoCore.market),
277
+ tx.object(pcpId),
278
+ ],
279
+ });
280
+ };
281
+ this.clearOpenPositionOrder = (orderCapId, collateralToken, indexToken, long, tx, isV11Order = false) => {
282
+ const funcName = isV11Order ? 'clear_open_position_order' : 'clear_open_position_order';
283
+ tx.moveCall({
284
+ target: `${this.consts.zoCore.package}::market::${funcName}`,
285
+ typeArguments: [
286
+ `${this.consts.zoCore.package}::zlp::ZLP`,
287
+ this.consts.coins[collateralToken].module,
288
+ this.consts.coins[indexToken].module,
289
+ `${this.consts.zoCore.package}::market::${long ? 'LONG' : 'SHORT'}`,
290
+ this.consts.coins[collateralToken].module,
291
+ ],
292
+ arguments: [
293
+ tx.object(this.consts.zoCore.market),
294
+ tx.object(orderCapId),
295
+ ],
296
+ });
297
+ };
298
+ this.clearDecreasePositionOrder = (orderCapId, collateralToken, indexToken, long, tx, isV11Order = false) => {
299
+ const funcName = isV11Order ? 'clear_decrease_position_order' : 'clear_decrease_position_order';
300
+ tx.moveCall({
301
+ target: `${this.consts.zoCore.package}::market::${funcName}`,
302
+ typeArguments: [
303
+ `${this.consts.zoCore.package}::zlp::ZLP`,
304
+ this.consts.coins[collateralToken].module,
305
+ this.consts.coins[indexToken].module,
306
+ `${this.consts.zoCore.package}::market::${long ? 'LONG' : 'SHORT'}`,
307
+ this.consts.coins[collateralToken].module,
308
+ ],
309
+ arguments: [
310
+ tx.object(this.consts.zoCore.market),
311
+ tx.object(orderCapId),
312
+ ],
313
+ });
314
+ };
315
+ this.stake = (coinObjects, amount, pool, tx) => {
316
+ if (!tx) {
317
+ tx = new Transaction();
301
318
  }
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
- });
319
+ const coinObject = __classPrivateFieldGet(this, _API_processCoins, "f").call(this, tx, 'zlp', coinObjects);
320
+ const [depositObject] = tx.splitCoins(coinObject, [tx.pure.u64(amount)]);
321
+ tx.moveCall({
322
+ target: `${this.consts.zoStaking.package}::pool::deposit`,
323
+ typeArguments: [
324
+ `${this.consts.zoCore.package}::zlp::ZLP`,
325
+ this.consts.coins.sui.module,
326
+ ],
327
+ arguments: [
328
+ tx.object(pool),
329
+ tx.object(SUI_CLOCK_OBJECT_ID),
330
+ depositObject,
331
+ ],
332
+ });
333
+ return tx;
334
+ };
335
+ this.unstake = (credentials, amount, pool, tx) => {
336
+ if (!tx) {
337
+ tx = new Transaction();
321
338
  }
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';
339
+ for (const credential of credentials) {
340
+ // eslint-disable-next-line unicorn/prefer-math-min-max
341
+ const withdrawAmount = amount < credential.amount ? amount : credential.amount;
342
+ amount -= withdrawAmount;
329
343
  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`,
344
+ target: `0xdb353cb79a88d5ee83b7c0ca0249662a1facab17ba62879080ea3d61b9d21112::pool::withdraw`,
379
345
  typeArguments: [
380
346
  `${this.consts.zoCore.package}::zlp::ZLP`,
381
347
  this.consts.coins.sui.module,
@@ -383,74 +349,41 @@ export class API extends DataAPI {
383
349
  arguments: [
384
350
  tx.object(pool),
385
351
  tx.object(SUI_CLOCK_OBJECT_ID),
386
- depositObject,
352
+ tx.object(credential.id),
353
+ tx.pure.u64(withdrawAmount),
387
354
  ],
388
355
  });
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;
356
+ if (credential.amount === BigInt(0)) {
404
357
  tx.moveCall({
405
- target: `0xdb353cb79a88d5ee83b7c0ca0249662a1facab17ba62879080ea3d61b9d21112::pool::withdraw`,
358
+ target: `${this.consts.zoStaking.package}::pool::clear_empty_credential`,
406
359
  typeArguments: [
407
360
  `${this.consts.zoCore.package}::zlp::ZLP`,
408
361
  this.consts.coins.sui.module,
409
362
  ],
410
363
  arguments: [
411
- tx.object(pool),
412
- tx.object(SUI_CLOCK_OBJECT_ID),
413
364
  tx.object(credential.id),
414
- tx.pure.u64(withdrawAmount),
415
365
  ],
416
366
  });
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
367
  }
430
- return tx;
431
368
  }
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;
369
+ return tx;
370
+ };
371
+ this.addReferral = (referrer, tx) => {
372
+ if (!tx) {
373
+ tx = new Transaction();
452
374
  }
453
- });
375
+ tx.moveCall({
376
+ target: `${this.consts.zoCore.package}::market::add_new_referral`,
377
+ typeArguments: [
378
+ `${this.consts.zoCore.package}::zlp::ZLP`,
379
+ ],
380
+ arguments: [
381
+ tx.object(this.consts.zoCore.market),
382
+ tx.object(referrer),
383
+ ],
384
+ });
385
+ return tx;
386
+ };
454
387
  }
455
388
  static getInstance(network, provider, apiEndpoint, connectionURL) {
456
389
  if (!API.instance) {
@@ -463,3 +396,4 @@ _API_processCoins = new WeakMap(), _API_instances = new WeakSet(), _API_processS
463
396
  const raw = long ? (indexPrice * (1 + slippage)) : (indexPrice * (1 - slippage));
464
397
  return BigInt(Math.round(raw * 1e18));
465
398
  };
399
+ //# sourceMappingURL=api.mjs.map