@alphafi/alphafi-sdk 0.0.36 → 0.0.38

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 (150) hide show
  1. package/README.md +130 -12
  2. package/dist/cjs/common/constants.d.ts +90 -0
  3. package/dist/cjs/common/constants.d.ts.map +1 -1
  4. package/dist/cjs/common/constants.js +67 -5
  5. package/dist/cjs/common/constants.js.map +1 -1
  6. package/dist/cjs/common/maps.d.ts +2 -0
  7. package/dist/cjs/common/maps.d.ts.map +1 -1
  8. package/dist/cjs/common/maps.js +94 -0
  9. package/dist/cjs/common/maps.js.map +1 -1
  10. package/dist/cjs/common/types.d.ts +2 -2
  11. package/dist/cjs/common/types.d.ts.map +1 -1
  12. package/dist/cjs/common/types.js.map +1 -1
  13. package/dist/cjs/getAllVaults.d.ts.map +1 -1
  14. package/dist/cjs/getAllVaults.js +5 -2
  15. package/dist/cjs/getAllVaults.js.map +1 -1
  16. package/dist/cjs/getVaultBalances.d.ts.map +1 -1
  17. package/dist/cjs/getVaultBalances.js +0 -1
  18. package/dist/cjs/getVaultBalances.js.map +1 -1
  19. package/dist/cjs/index.d.ts +5 -0
  20. package/dist/cjs/index.d.ts.map +1 -1
  21. package/dist/cjs/index.js +15 -2
  22. package/dist/cjs/index.js.map +1 -1
  23. package/dist/cjs/sui-sdk/events/fetchCheckRatioEvents.d.ts +3 -0
  24. package/dist/cjs/sui-sdk/events/fetchCheckRatioEvents.d.ts.map +1 -0
  25. package/dist/cjs/sui-sdk/events/fetchCheckRatioEvents.js +44 -0
  26. package/dist/cjs/sui-sdk/events/fetchCheckRatioEvents.js.map +1 -0
  27. package/dist/cjs/sui-sdk/events/fetchEvents.d.ts.map +1 -1
  28. package/dist/cjs/sui-sdk/events/fetchEvents.js +41 -0
  29. package/dist/cjs/sui-sdk/events/fetchEvents.js.map +1 -1
  30. package/dist/cjs/sui-sdk/events/types.d.ts +9 -1
  31. package/dist/cjs/sui-sdk/events/types.d.ts.map +1 -1
  32. package/dist/cjs/sui-sdk/events/types.js.map +1 -1
  33. package/dist/cjs/sui-sdk/functions/fetchUserVaults.d.ts.map +1 -1
  34. package/dist/cjs/sui-sdk/functions/fetchUserVaults.js +4 -2
  35. package/dist/cjs/sui-sdk/functions/fetchUserVaults.js.map +1 -1
  36. package/dist/cjs/sui-sdk/functions/getReceipts.d.ts +4 -4
  37. package/dist/cjs/sui-sdk/functions/getReceipts.d.ts.map +1 -1
  38. package/dist/cjs/sui-sdk/functions/getReceipts.js +26 -28
  39. package/dist/cjs/sui-sdk/functions/getReceipts.js.map +1 -1
  40. package/dist/cjs/transactions/alpha.d.ts +4 -0
  41. package/dist/cjs/transactions/alpha.d.ts.map +1 -0
  42. package/dist/cjs/transactions/alpha.js +104 -0
  43. package/dist/cjs/transactions/alpha.js.map +1 -0
  44. package/dist/cjs/transactions/bluefin.d.ts +15 -0
  45. package/dist/cjs/transactions/bluefin.d.ts.map +1 -0
  46. package/dist/cjs/transactions/bluefin.js +457 -0
  47. package/dist/cjs/transactions/bluefin.js.map +1 -0
  48. package/dist/cjs/transactions/bucket.d.ts +8 -0
  49. package/dist/cjs/transactions/bucket.d.ts.map +1 -0
  50. package/dist/cjs/transactions/bucket.js +131 -0
  51. package/dist/cjs/transactions/bucket.js.map +1 -0
  52. package/dist/cjs/transactions/cetus.d.ts +24 -0
  53. package/dist/cjs/transactions/cetus.d.ts.map +1 -0
  54. package/dist/cjs/transactions/cetus.js +552 -0
  55. package/dist/cjs/transactions/cetus.js.map +1 -0
  56. package/dist/cjs/transactions/collect_rewards.d.ts +3 -0
  57. package/dist/cjs/transactions/collect_rewards.d.ts.map +1 -0
  58. package/dist/cjs/transactions/collect_rewards.js +332 -0
  59. package/dist/cjs/transactions/collect_rewards.js.map +1 -0
  60. package/dist/cjs/transactions/deposit.d.ts +5 -0
  61. package/dist/cjs/transactions/deposit.d.ts.map +1 -0
  62. package/dist/cjs/transactions/deposit.js +57 -0
  63. package/dist/cjs/transactions/deposit.js.map +1 -0
  64. package/dist/cjs/transactions/navi.d.ts +9 -0
  65. package/dist/cjs/transactions/navi.d.ts.map +1 -0
  66. package/dist/cjs/transactions/navi.js +618 -0
  67. package/dist/cjs/transactions/navi.js.map +1 -0
  68. package/dist/cjs/transactions/withdraw.d.ts +6 -0
  69. package/dist/cjs/transactions/withdraw.d.ts.map +1 -0
  70. package/dist/cjs/transactions/withdraw.js +66 -0
  71. package/dist/cjs/transactions/withdraw.js.map +1 -0
  72. package/dist/cjs/transactions/zapDeposit.d.ts +1 -0
  73. package/dist/cjs/transactions/zapDeposit.d.ts.map +1 -0
  74. package/dist/cjs/transactions/zapDeposit.js +730 -0
  75. package/dist/cjs/transactions/zapDeposit.js.map +1 -0
  76. package/dist/esm/common/constants.d.ts +90 -0
  77. package/dist/esm/common/constants.d.ts.map +1 -1
  78. package/dist/esm/common/constants.js +67 -5
  79. package/dist/esm/common/constants.js.map +1 -1
  80. package/dist/esm/common/maps.d.ts +2 -0
  81. package/dist/esm/common/maps.d.ts.map +1 -1
  82. package/dist/esm/common/maps.js +94 -0
  83. package/dist/esm/common/maps.js.map +1 -1
  84. package/dist/esm/common/types.d.ts +2 -2
  85. package/dist/esm/common/types.d.ts.map +1 -1
  86. package/dist/esm/common/types.js.map +1 -1
  87. package/dist/esm/getAllVaults.d.ts.map +1 -1
  88. package/dist/esm/getAllVaults.js +5 -2
  89. package/dist/esm/getAllVaults.js.map +1 -1
  90. package/dist/esm/getVaultBalances.d.ts.map +1 -1
  91. package/dist/esm/getVaultBalances.js +0 -1
  92. package/dist/esm/getVaultBalances.js.map +1 -1
  93. package/dist/esm/index.d.ts +5 -0
  94. package/dist/esm/index.d.ts.map +1 -1
  95. package/dist/esm/index.js +5 -0
  96. package/dist/esm/index.js.map +1 -1
  97. package/dist/esm/sui-sdk/events/fetchCheckRatioEvents.d.ts +3 -0
  98. package/dist/esm/sui-sdk/events/fetchCheckRatioEvents.d.ts.map +1 -0
  99. package/dist/esm/sui-sdk/events/fetchCheckRatioEvents.js +41 -0
  100. package/dist/esm/sui-sdk/events/fetchCheckRatioEvents.js.map +1 -0
  101. package/dist/esm/sui-sdk/events/fetchEvents.d.ts.map +1 -1
  102. package/dist/esm/sui-sdk/events/fetchEvents.js +41 -0
  103. package/dist/esm/sui-sdk/events/fetchEvents.js.map +1 -1
  104. package/dist/esm/sui-sdk/events/types.d.ts +9 -1
  105. package/dist/esm/sui-sdk/events/types.d.ts.map +1 -1
  106. package/dist/esm/sui-sdk/events/types.js.map +1 -1
  107. package/dist/esm/sui-sdk/functions/fetchUserVaults.d.ts.map +1 -1
  108. package/dist/esm/sui-sdk/functions/fetchUserVaults.js +4 -2
  109. package/dist/esm/sui-sdk/functions/fetchUserVaults.js.map +1 -1
  110. package/dist/esm/sui-sdk/functions/getReceipts.d.ts +4 -4
  111. package/dist/esm/sui-sdk/functions/getReceipts.d.ts.map +1 -1
  112. package/dist/esm/sui-sdk/functions/getReceipts.js +26 -28
  113. package/dist/esm/sui-sdk/functions/getReceipts.js.map +1 -1
  114. package/dist/esm/transactions/alpha.d.ts +4 -0
  115. package/dist/esm/transactions/alpha.d.ts.map +1 -0
  116. package/dist/esm/transactions/alpha.js +99 -0
  117. package/dist/esm/transactions/alpha.js.map +1 -0
  118. package/dist/esm/transactions/bluefin.d.ts +15 -0
  119. package/dist/esm/transactions/bluefin.d.ts.map +1 -0
  120. package/dist/esm/transactions/bluefin.js +450 -0
  121. package/dist/esm/transactions/bluefin.js.map +1 -0
  122. package/dist/esm/transactions/bucket.d.ts +8 -0
  123. package/dist/esm/transactions/bucket.d.ts.map +1 -0
  124. package/dist/esm/transactions/bucket.js +127 -0
  125. package/dist/esm/transactions/bucket.js.map +1 -0
  126. package/dist/esm/transactions/cetus.d.ts +24 -0
  127. package/dist/esm/transactions/cetus.d.ts.map +1 -0
  128. package/dist/esm/transactions/cetus.js +539 -0
  129. package/dist/esm/transactions/cetus.js.map +1 -0
  130. package/dist/esm/transactions/collect_rewards.d.ts +3 -0
  131. package/dist/esm/transactions/collect_rewards.d.ts.map +1 -0
  132. package/dist/esm/transactions/collect_rewards.js +329 -0
  133. package/dist/esm/transactions/collect_rewards.js.map +1 -0
  134. package/dist/esm/transactions/deposit.d.ts +5 -0
  135. package/dist/esm/transactions/deposit.d.ts.map +1 -0
  136. package/dist/esm/transactions/deposit.js +53 -0
  137. package/dist/esm/transactions/deposit.js.map +1 -0
  138. package/dist/esm/transactions/navi.d.ts +9 -0
  139. package/dist/esm/transactions/navi.d.ts.map +1 -0
  140. package/dist/esm/transactions/navi.js +614 -0
  141. package/dist/esm/transactions/navi.js.map +1 -0
  142. package/dist/esm/transactions/withdraw.d.ts +6 -0
  143. package/dist/esm/transactions/withdraw.d.ts.map +1 -0
  144. package/dist/esm/transactions/withdraw.js +61 -0
  145. package/dist/esm/transactions/withdraw.js.map +1 -0
  146. package/dist/esm/transactions/zapDeposit.d.ts +2 -0
  147. package/dist/esm/transactions/zapDeposit.d.ts.map +1 -0
  148. package/dist/esm/transactions/zapDeposit.js +730 -0
  149. package/dist/esm/transactions/zapDeposit.js.map +1 -0
  150. package/package.json +4 -2
@@ -0,0 +1,552 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withdrawCetusTxb = exports.withdrawCetusSuiTxb = exports.withdrawCetusAlphaSuiTxb = exports.depositCetusTxb = exports.depositCetusSuiTxb = exports.depositCetusAlphaSuiTxb = void 0;
4
+ exports.getLiquidity = getLiquidity;
5
+ exports.getAmounts = getAmounts;
6
+ exports.getCoinAmountsFromLiquidity = getCoinAmountsFromLiquidity;
7
+ const tslib_1 = require("tslib");
8
+ const transactions_1 = require("@mysten/sui/transactions");
9
+ const cetus_sui_clmm_sdk_1 = require("@cetusprotocol/cetus-sui-clmm-sdk");
10
+ const bn_js_1 = tslib_1.__importDefault(require("bn.js"));
11
+ const index_js_1 = require("../index.js");
12
+ const depositCetusAlphaSuiTxb = async (amount, poolName, isAmountA, options, transaction = undefined) => {
13
+ const suiClient = (0, index_js_1.getSuiClient)();
14
+ const address = options.address;
15
+ let txb;
16
+ if (transaction)
17
+ txb = transaction;
18
+ else
19
+ txb = new transactions_1.Transaction();
20
+ poolName = poolName.toUpperCase();
21
+ const pool1 = index_js_1.doubleAssetPoolCoinMap[poolName].coin1;
22
+ const pool2 = index_js_1.doubleAssetPoolCoinMap[poolName].coin2;
23
+ const receipt = await (0, index_js_1.getReceipts)(poolName, address, true);
24
+ let coins1 = [];
25
+ let currentCursor = null;
26
+ do {
27
+ const response = await suiClient.getCoins({
28
+ owner: address,
29
+ coinType: index_js_1.coinsList[pool1].type,
30
+ cursor: currentCursor,
31
+ });
32
+ coins1 = coins1.concat(response.data);
33
+ // Check if there's a next page
34
+ if (response.hasNextPage && response.nextCursor) {
35
+ currentCursor = response.nextCursor;
36
+ }
37
+ else {
38
+ // No more pages available
39
+ // console.log("No more receipts available.");
40
+ break;
41
+ }
42
+ } while (true);
43
+ const amounts = await getAmounts(poolName, isAmountA, amount);
44
+ if (amounts) {
45
+ const amount1 = amounts[0];
46
+ const amount2 = amounts[1];
47
+ let coin1;
48
+ if (coins1.length >= 1) {
49
+ //coin1
50
+ [coin1] = txb.splitCoins(txb.object(coins1[0].coinObjectId), [0]);
51
+ txb.mergeCoins(coin1, coins1.map((c) => c.coinObjectId));
52
+ const [depositCoinA] = txb.splitCoins(coin1, [amount1]);
53
+ //coin2
54
+ const [depositCoinB] = txb.splitCoins(txb.gas, [amount2]);
55
+ const poolinfo = index_js_1.poolInfo[poolName];
56
+ let someReceipt;
57
+ if (receipt.length == 0) {
58
+ [someReceipt] = txb.moveCall({
59
+ target: `0x1::option::none`,
60
+ typeArguments: [poolinfo.receiptType],
61
+ arguments: [],
62
+ });
63
+ }
64
+ else {
65
+ [someReceipt] = txb.moveCall({
66
+ target: `0x1::option::some`,
67
+ typeArguments: [receipt[0].content.type],
68
+ arguments: [txb.object(receipt[0].objectId)],
69
+ });
70
+ }
71
+ txb.moveCall({
72
+ target: `${poolinfo.packageId}::alphafi_cetus_sui_pool::user_deposit`,
73
+ typeArguments: [index_js_1.coinsList[pool1].type, index_js_1.coinsList[pool2].type],
74
+ arguments: [
75
+ txb.object((0, index_js_1.getConf)().VERSION),
76
+ someReceipt,
77
+ txb.object(poolinfo.poolId),
78
+ depositCoinA,
79
+ depositCoinB,
80
+ txb.object((0, index_js_1.getConf)().ALPHA_DISTRIBUTOR),
81
+ txb.object(poolinfo.investorId),
82
+ txb.object((0, index_js_1.getConf)().CETUS_GLOBAL_CONFIG_ID),
83
+ txb.object((0, index_js_1.getConf)().CETUS_REWARDER_GLOBAL_VAULT_ID),
84
+ txb.object(index_js_1.cetusPoolMap["CETUS-SUI"]),
85
+ txb.object(index_js_1.cetusPoolMap[poolName]),
86
+ txb.object((0, index_js_1.getConf)().CLOCK_PACKAGE_ID),
87
+ ],
88
+ });
89
+ txb.transferObjects([coin1], address);
90
+ }
91
+ else {
92
+ throw new Error(`No ${pool1} or ${pool2} Coins`);
93
+ }
94
+ }
95
+ return txb;
96
+ };
97
+ exports.depositCetusAlphaSuiTxb = depositCetusAlphaSuiTxb;
98
+ const depositCetusSuiTxb = async (amount, poolName, isAmountA, options, transaction = undefined) => {
99
+ const suiClient = (0, index_js_1.getSuiClient)();
100
+ const address = options.address;
101
+ let txb;
102
+ if (transaction)
103
+ txb = transaction;
104
+ else
105
+ txb = new transactions_1.Transaction();
106
+ poolName = poolName.toUpperCase();
107
+ const pool1 = index_js_1.doubleAssetPoolCoinMap[poolName].coin1;
108
+ const pool2 = index_js_1.doubleAssetPoolCoinMap[poolName].coin2;
109
+ const receipt = await (0, index_js_1.getReceipts)(poolName, address, true);
110
+ let coins1 = [];
111
+ let currentCursor = null;
112
+ do {
113
+ const response = await suiClient.getCoins({
114
+ owner: address,
115
+ coinType: index_js_1.coinsList[pool1].type,
116
+ cursor: currentCursor,
117
+ });
118
+ coins1 = coins1.concat(response.data);
119
+ // Check if there's a next page
120
+ if (response.hasNextPage && response.nextCursor) {
121
+ currentCursor = response.nextCursor;
122
+ }
123
+ else {
124
+ // No more pages available
125
+ // console.log("No more receipts available.");
126
+ break;
127
+ }
128
+ } while (true);
129
+ const amounts = await getAmounts(poolName, isAmountA, amount);
130
+ if (amounts) {
131
+ const amount1 = amounts[0];
132
+ const amount2 = amounts[1];
133
+ let coin1;
134
+ if (coins1.length >= 1) {
135
+ //coin1
136
+ [coin1] = txb.splitCoins(txb.object(coins1[0].coinObjectId), [0]);
137
+ txb.mergeCoins(coin1, coins1.map((c) => c.coinObjectId));
138
+ const [depositCoinA] = txb.splitCoins(coin1, [amount1]);
139
+ //coin2
140
+ const [depositCoinB] = txb.splitCoins(txb.gas, [amount2]);
141
+ const poolinfo = index_js_1.poolInfo[poolName];
142
+ let someReceipt;
143
+ if (receipt.length == 0) {
144
+ [someReceipt] = txb.moveCall({
145
+ target: `0x1::option::none`,
146
+ typeArguments: [poolinfo.receiptType],
147
+ arguments: [],
148
+ });
149
+ }
150
+ else {
151
+ [someReceipt] = txb.moveCall({
152
+ target: `0x1::option::some`,
153
+ typeArguments: [receipt[0].content.type],
154
+ arguments: [txb.object(receipt[0].objectId)],
155
+ });
156
+ }
157
+ txb.moveCall({
158
+ target: `${poolinfo.packageId}::alphafi_cetus_sui_pool::user_deposit`,
159
+ typeArguments: [index_js_1.coinsList[pool1].type, index_js_1.coinsList[pool2].type],
160
+ arguments: [
161
+ txb.object((0, index_js_1.getConf)().ALPHA_2_VERSION),
162
+ txb.object((0, index_js_1.getConf)().VERSION),
163
+ someReceipt,
164
+ txb.object(poolinfo.poolId),
165
+ depositCoinA,
166
+ depositCoinB,
167
+ txb.object((0, index_js_1.getConf)().ALPHA_DISTRIBUTOR),
168
+ txb.object(poolinfo.investorId),
169
+ txb.object((0, index_js_1.getConf)().CETUS_GLOBAL_CONFIG_ID),
170
+ txb.object((0, index_js_1.getConf)().CETUS_REWARDER_GLOBAL_VAULT_ID),
171
+ txb.object(index_js_1.cetusPoolMap[poolName]),
172
+ txb.object((0, index_js_1.getConf)().CLOCK_PACKAGE_ID),
173
+ ],
174
+ });
175
+ txb.transferObjects([coin1], address);
176
+ }
177
+ else {
178
+ throw new Error(`No ${pool1} or ${pool2} Coins`);
179
+ }
180
+ }
181
+ return txb;
182
+ };
183
+ exports.depositCetusSuiTxb = depositCetusSuiTxb;
184
+ const depositCetusTxb = async (amount, poolName, isAmountA, options, transaction = undefined) => {
185
+ const suiClient = (0, index_js_1.getSuiClient)();
186
+ const address = options.address;
187
+ let txb;
188
+ if (transaction)
189
+ txb = transaction;
190
+ else
191
+ txb = new transactions_1.Transaction();
192
+ poolName = poolName.toUpperCase();
193
+ const poolinfo = index_js_1.poolInfo[poolName];
194
+ const pool1 = index_js_1.doubleAssetPoolCoinMap[poolName].coin1;
195
+ const pool2 = index_js_1.doubleAssetPoolCoinMap[poolName].coin2;
196
+ const receipt = await (0, index_js_1.getReceipts)(poolName, address, true);
197
+ let coins1 = [];
198
+ let coins2 = [];
199
+ let currentCursor = null;
200
+ do {
201
+ const response = await suiClient.getCoins({
202
+ owner: address,
203
+ coinType: index_js_1.coinsList[pool1].type,
204
+ cursor: currentCursor,
205
+ });
206
+ coins1 = coins1.concat(response.data);
207
+ // Check if there's a next page
208
+ if (response.hasNextPage && response.nextCursor) {
209
+ currentCursor = response.nextCursor;
210
+ }
211
+ else {
212
+ // No more pages available
213
+ // console.log("No more receipts available.");
214
+ break;
215
+ }
216
+ } while (true);
217
+ currentCursor = null;
218
+ do {
219
+ const response = await suiClient.getCoins({
220
+ owner: address,
221
+ coinType: index_js_1.coinsList[pool2].type,
222
+ cursor: currentCursor,
223
+ });
224
+ coins2 = coins2.concat(response.data);
225
+ // Check if there's a next page
226
+ if (response.hasNextPage && response.nextCursor) {
227
+ currentCursor = response.nextCursor;
228
+ }
229
+ else {
230
+ // No more pages available
231
+ // console.log("No more receipts available.");
232
+ break;
233
+ }
234
+ } while (true);
235
+ const amounts = await getAmounts(poolName, isAmountA, amount);
236
+ if (amounts) {
237
+ const amount1 = amounts[0];
238
+ const amount2 = amounts[1];
239
+ let coin1;
240
+ let coin2;
241
+ if (coins1.length >= 1 && coins2.length >= 1) {
242
+ //coin1
243
+ [coin1] = txb.splitCoins(txb.object(coins1[0].coinObjectId), [0]);
244
+ txb.mergeCoins(coin1, coins1.map((c) => c.coinObjectId));
245
+ const [depositCoinA] = txb.splitCoins(coin1, [amount1]);
246
+ //coin2
247
+ [coin2] = txb.splitCoins(txb.object(coins2[0].coinObjectId), [0]);
248
+ txb.mergeCoins(coin2, coins2.map((c) => c.coinObjectId));
249
+ const [depositCoinB] = txb.splitCoins(coin2, [amount2]);
250
+ let someReceipt;
251
+ if (receipt.length == 0) {
252
+ [someReceipt] = txb.moveCall({
253
+ target: `0x1::option::none`,
254
+ typeArguments: [poolinfo.receiptType],
255
+ arguments: [],
256
+ });
257
+ }
258
+ else {
259
+ [someReceipt] = txb.moveCall({
260
+ target: `0x1::option::some`,
261
+ typeArguments: [receipt[0].content.type],
262
+ arguments: [txb.object(receipt[0].objectId)],
263
+ });
264
+ }
265
+ if (poolName == "WUSDC-WBTC" ||
266
+ poolName == "USDC-USDT" ||
267
+ poolName == "USDC-WUSDC" ||
268
+ poolName == "USDC-ETH") {
269
+ txb.moveCall({
270
+ target: `${(0, index_js_1.getConf)().ALPHA_LATEST_PACKAGE_ID}::alphafi_cetus_pool_base_a::user_deposit`,
271
+ typeArguments: [index_js_1.coinsList[pool1].type, index_js_1.coinsList[pool2].type],
272
+ arguments: [
273
+ txb.object((0, index_js_1.getConf)().VERSION),
274
+ someReceipt,
275
+ txb.object(poolinfo.poolId),
276
+ depositCoinA,
277
+ depositCoinB,
278
+ txb.object((0, index_js_1.getConf)().ALPHA_DISTRIBUTOR),
279
+ txb.object(poolinfo.investorId),
280
+ txb.object((0, index_js_1.getConf)().CETUS_GLOBAL_CONFIG_ID),
281
+ txb.object((0, index_js_1.getConf)().CETUS_REWARDER_GLOBAL_VAULT_ID),
282
+ txb.object(index_js_1.cetusPoolMap[`${pool1}-SUI`]),
283
+ txb.object(index_js_1.cetusPoolMap["CETUS-SUI"]),
284
+ txb.object(index_js_1.cetusPoolMap[poolName]),
285
+ txb.object((0, index_js_1.getConf)().CLOCK_PACKAGE_ID),
286
+ ],
287
+ });
288
+ }
289
+ else {
290
+ txb.moveCall({
291
+ target: `${(0, index_js_1.getConf)().ALPHA_LATEST_PACKAGE_ID}::alphafi_cetus_pool::user_deposit`,
292
+ typeArguments: [index_js_1.coinsList[pool1].type, index_js_1.coinsList[pool2].type],
293
+ arguments: [
294
+ txb.object((0, index_js_1.getConf)().VERSION),
295
+ someReceipt,
296
+ txb.object(poolinfo.poolId),
297
+ depositCoinA,
298
+ depositCoinB,
299
+ txb.object((0, index_js_1.getConf)().ALPHA_DISTRIBUTOR),
300
+ txb.object(poolinfo.investorId),
301
+ txb.object((0, index_js_1.getConf)().CETUS_GLOBAL_CONFIG_ID),
302
+ txb.object((0, index_js_1.getConf)().CETUS_REWARDER_GLOBAL_VAULT_ID),
303
+ txb.object(index_js_1.cetusPoolMap[`${pool2}-SUI`]),
304
+ txb.object(index_js_1.cetusPoolMap["CETUS-SUI"]),
305
+ txb.object(index_js_1.cetusPoolMap[poolName]),
306
+ txb.object((0, index_js_1.getConf)().CLOCK_PACKAGE_ID),
307
+ ],
308
+ });
309
+ }
310
+ txb.transferObjects([coin1], address);
311
+ txb.transferObjects([coin2], address);
312
+ }
313
+ else {
314
+ throw new Error(`No ${pool1} or ${pool2} Coins`);
315
+ }
316
+ }
317
+ return txb;
318
+ };
319
+ exports.depositCetusTxb = depositCetusTxb;
320
+ const withdrawCetusAlphaSuiTxb = async (xTokens, poolName, options) => {
321
+ const address = options.address;
322
+ const txb = new transactions_1.Transaction();
323
+ const pool1 = index_js_1.doubleAssetPoolCoinMap[poolName].coin1;
324
+ const pool2 = index_js_1.doubleAssetPoolCoinMap[poolName].coin2;
325
+ const receipt = await (0, index_js_1.getReceipts)(poolName, address, true);
326
+ const alphaReceipt = await (0, index_js_1.getReceipts)("ALPHA", address, true);
327
+ if (receipt.length > 0) {
328
+ let alpha_receipt;
329
+ if (alphaReceipt.length == 0) {
330
+ [alpha_receipt] = txb.moveCall({
331
+ target: `0x1::option::none`,
332
+ typeArguments: [(0, index_js_1.getConf)().ALPHA_POOL_RECEIPT],
333
+ arguments: [],
334
+ });
335
+ }
336
+ else {
337
+ [alpha_receipt] = txb.moveCall({
338
+ target: `0x1::option::some`,
339
+ typeArguments: [alphaReceipt[0].content.type],
340
+ arguments: [txb.object(alphaReceipt[0].objectId)],
341
+ });
342
+ }
343
+ const poolinfo = index_js_1.poolInfo[poolName];
344
+ txb.moveCall({
345
+ target: `${poolinfo.packageId}::alphafi_cetus_sui_pool::user_withdraw`,
346
+ typeArguments: [index_js_1.coinsList[pool1].type, index_js_1.coinsList[pool2].type],
347
+ arguments: [
348
+ txb.object((0, index_js_1.getConf)().VERSION),
349
+ txb.object(receipt[0].objectId),
350
+ alpha_receipt,
351
+ txb.object((0, index_js_1.getConf)().ALPHA_POOL),
352
+ txb.object(poolinfo.poolId),
353
+ txb.object((0, index_js_1.getConf)().ALPHA_DISTRIBUTOR),
354
+ txb.object(poolinfo.investorId),
355
+ txb.pure.u128(xTokens),
356
+ txb.object((0, index_js_1.getConf)().CETUS_GLOBAL_CONFIG_ID),
357
+ txb.object((0, index_js_1.getConf)().CETUS_REWARDER_GLOBAL_VAULT_ID),
358
+ txb.object(index_js_1.cetusPoolMap["CETUS-SUI"]),
359
+ txb.object(index_js_1.cetusPoolMap[poolName]),
360
+ txb.object((0, index_js_1.getConf)().CLOCK_PACKAGE_ID),
361
+ ],
362
+ });
363
+ }
364
+ else {
365
+ throw new Error("No receipt found!");
366
+ }
367
+ return txb;
368
+ };
369
+ exports.withdrawCetusAlphaSuiTxb = withdrawCetusAlphaSuiTxb;
370
+ const withdrawCetusSuiTxb = async (xTokens, poolName, options) => {
371
+ const address = options.address;
372
+ const txb = new transactions_1.Transaction();
373
+ const pool1 = index_js_1.doubleAssetPoolCoinMap[poolName].coin1;
374
+ const pool2 = index_js_1.doubleAssetPoolCoinMap[poolName].coin2;
375
+ const receipt = await (0, index_js_1.getReceipts)(poolName, address, true);
376
+ const alphaReceipt = await (0, index_js_1.getReceipts)("ALPHA", address, true);
377
+ if (receipt.length > 0) {
378
+ let alpha_receipt;
379
+ if (alphaReceipt.length == 0) {
380
+ [alpha_receipt] = txb.moveCall({
381
+ target: `0x1::option::none`,
382
+ typeArguments: [(0, index_js_1.getConf)().ALPHA_POOL_RECEIPT],
383
+ arguments: [],
384
+ });
385
+ }
386
+ else {
387
+ [alpha_receipt] = txb.moveCall({
388
+ target: `0x1::option::some`,
389
+ typeArguments: [alphaReceipt[0].content.type],
390
+ arguments: [txb.object(alphaReceipt[0].objectId)],
391
+ });
392
+ }
393
+ const poolinfo = index_js_1.poolInfo[poolName];
394
+ txb.moveCall({
395
+ target: `${poolinfo.packageId}::alphafi_cetus_sui_pool::user_withdraw`,
396
+ typeArguments: [index_js_1.coinsList[pool1].type, index_js_1.coinsList[pool2].type],
397
+ arguments: [
398
+ txb.object((0, index_js_1.getConf)().ALPHA_2_VERSION),
399
+ txb.object((0, index_js_1.getConf)().VERSION),
400
+ txb.object(receipt[0].objectId),
401
+ alpha_receipt,
402
+ txb.object((0, index_js_1.getConf)().ALPHA_POOL),
403
+ txb.object(poolinfo.poolId),
404
+ txb.object((0, index_js_1.getConf)().ALPHA_DISTRIBUTOR),
405
+ txb.object(poolinfo.investorId),
406
+ txb.pure.u128(xTokens),
407
+ txb.object((0, index_js_1.getConf)().CETUS_GLOBAL_CONFIG_ID),
408
+ txb.object((0, index_js_1.getConf)().CETUS_REWARDER_GLOBAL_VAULT_ID),
409
+ txb.object(index_js_1.cetusPoolMap[poolName]),
410
+ txb.object((0, index_js_1.getConf)().CLOCK_PACKAGE_ID),
411
+ ],
412
+ });
413
+ }
414
+ else {
415
+ throw new Error("No receipt found!");
416
+ }
417
+ return txb;
418
+ };
419
+ exports.withdrawCetusSuiTxb = withdrawCetusSuiTxb;
420
+ const withdrawCetusTxb = async (xTokens, poolName, options) => {
421
+ const address = options.address;
422
+ const txb = new transactions_1.Transaction();
423
+ const pool1 = index_js_1.doubleAssetPoolCoinMap[poolName].coin1;
424
+ const pool2 = index_js_1.doubleAssetPoolCoinMap[poolName].coin2;
425
+ const receipt = await (0, index_js_1.getReceipts)(poolName, address, true);
426
+ const alphaReceipt = await (0, index_js_1.getReceipts)("ALPHA", address, true);
427
+ if (receipt.length > 0) {
428
+ let alpha_receipt;
429
+ if (alphaReceipt.length == 0) {
430
+ [alpha_receipt] = txb.moveCall({
431
+ target: `0x1::option::none`,
432
+ typeArguments: [(0, index_js_1.getConf)().ALPHA_POOL_RECEIPT],
433
+ arguments: [],
434
+ });
435
+ }
436
+ else {
437
+ [alpha_receipt] = txb.moveCall({
438
+ target: `0x1::option::some`,
439
+ typeArguments: [alphaReceipt[0].content.type],
440
+ arguments: [txb.object(alphaReceipt[0].objectId)],
441
+ });
442
+ }
443
+ const poolinfo = index_js_1.poolInfo[poolName];
444
+ if (poolName == "WUSDC-WBTC" ||
445
+ poolName == "USDC-USDT" ||
446
+ poolName == "USDC-WUSDC" ||
447
+ poolName == "USDC-ETH") {
448
+ txb.moveCall({
449
+ target: `${(0, index_js_1.getConf)().ALPHA_LATEST_PACKAGE_ID}::alphafi_cetus_pool_base_a::user_withdraw`,
450
+ typeArguments: [index_js_1.coinsList[pool1].type, index_js_1.coinsList[pool2].type],
451
+ arguments: [
452
+ txb.object((0, index_js_1.getConf)().VERSION),
453
+ txb.object(receipt[0].objectId),
454
+ alpha_receipt,
455
+ txb.object((0, index_js_1.getConf)().ALPHA_POOL),
456
+ txb.object(poolinfo.poolId),
457
+ txb.object((0, index_js_1.getConf)().ALPHA_DISTRIBUTOR),
458
+ txb.object(poolinfo.investorId),
459
+ txb.pure.u128(xTokens),
460
+ txb.object((0, index_js_1.getConf)().CETUS_GLOBAL_CONFIG_ID),
461
+ txb.object((0, index_js_1.getConf)().CETUS_REWARDER_GLOBAL_VAULT_ID),
462
+ txb.object(index_js_1.cetusPoolMap[`${pool1}-SUI`]),
463
+ txb.object(index_js_1.cetusPoolMap["CETUS-SUI"]),
464
+ txb.object(index_js_1.cetusPoolMap[poolName]),
465
+ txb.object((0, index_js_1.getConf)().CLOCK_PACKAGE_ID),
466
+ ],
467
+ });
468
+ }
469
+ else {
470
+ txb.moveCall({
471
+ target: `${(0, index_js_1.getConf)().ALPHA_LATEST_PACKAGE_ID}::alphafi_cetus_pool::user_withdraw`,
472
+ typeArguments: [index_js_1.coinsList[pool1].type, index_js_1.coinsList[pool2].type],
473
+ arguments: [
474
+ txb.object((0, index_js_1.getConf)().VERSION),
475
+ txb.object(receipt[0].objectId),
476
+ alpha_receipt,
477
+ txb.object((0, index_js_1.getConf)().ALPHA_POOL),
478
+ txb.object(poolinfo.poolId),
479
+ txb.object((0, index_js_1.getConf)().ALPHA_DISTRIBUTOR),
480
+ txb.object(poolinfo.investorId),
481
+ txb.pure.u128(xTokens),
482
+ txb.object((0, index_js_1.getConf)().CETUS_GLOBAL_CONFIG_ID),
483
+ txb.object((0, index_js_1.getConf)().CETUS_REWARDER_GLOBAL_VAULT_ID),
484
+ txb.object(index_js_1.cetusPoolMap[`${pool2}-SUI`]),
485
+ txb.object(index_js_1.cetusPoolMap["CETUS-SUI"]),
486
+ txb.object(index_js_1.cetusPoolMap[poolName]),
487
+ txb.object((0, index_js_1.getConf)().CLOCK_PACKAGE_ID),
488
+ ],
489
+ });
490
+ }
491
+ }
492
+ else {
493
+ throw new Error("No receipt found!");
494
+ }
495
+ return txb;
496
+ };
497
+ exports.withdrawCetusTxb = withdrawCetusTxb;
498
+ async function getLiquidity(poolName, a2b, amount) {
499
+ const cetusInvestor = (await (0, index_js_1.getInvestor)(poolName, true));
500
+ const cetus_pool = await (0, index_js_1.getParentPool)(poolName, true);
501
+ //TODO
502
+ //check if you calculate lower_tick, upper_tick like this only
503
+ const upper_bound = 443636;
504
+ let lower_tick = Number(cetusInvestor.content.fields.lower_tick);
505
+ let upper_tick = Number(cetusInvestor.content.fields.upper_tick);
506
+ if (lower_tick > upper_bound) {
507
+ lower_tick = -~(lower_tick - 1);
508
+ }
509
+ if (upper_tick > upper_bound) {
510
+ upper_tick = -~(upper_tick - 1);
511
+ }
512
+ // AlphaFi Mascot
513
+ //
514
+ // a
515
+ // ~~|~~
516
+ // / \
517
+ //
518
+ /////////////////
519
+ const current_sqrt_price = new bn_js_1.default(cetus_pool.content.fields.current_sqrt_price);
520
+ const liquidity = cetus_sui_clmm_sdk_1.ClmmPoolUtil.estLiquidityAndcoinAmountFromOneAmounts(lower_tick, upper_tick, new bn_js_1.default(`${Math.floor(parseFloat(amount))}`), a2b, false, 0.5, current_sqrt_price);
521
+ return liquidity;
522
+ }
523
+ async function getAmounts(poolName, a2b, amount) {
524
+ const liquidity = await getLiquidity(poolName, a2b, amount);
525
+ if (liquidity) {
526
+ const numA = liquidity.coinAmountA.toString();
527
+ const numB = liquidity.coinAmountB.toString();
528
+ return [numA, numB];
529
+ }
530
+ }
531
+ async function getCoinAmountsFromLiquidity(poolName, liquidity) {
532
+ const clmmPool = await (0, index_js_1.getParentPool)(poolName, true);
533
+ const investor = (await (0, index_js_1.getInvestor)(poolName, true));
534
+ const upper_bound = 443636;
535
+ let lower_tick = Number(investor.content.fields.lower_tick);
536
+ let upper_tick = Number(investor.content.fields.upper_tick);
537
+ if (lower_tick > upper_bound) {
538
+ lower_tick = -~(lower_tick - 1);
539
+ }
540
+ if (upper_tick > upper_bound) {
541
+ upper_tick = -~(upper_tick - 1);
542
+ }
543
+ if (clmmPool) {
544
+ const liquidityInt = Math.floor(parseFloat(liquidity));
545
+ const coin_amounts = cetus_sui_clmm_sdk_1.ClmmPoolUtil.getCoinAmountFromLiquidity(new bn_js_1.default(`${liquidityInt}`), new bn_js_1.default(clmmPool.content.fields.current_sqrt_price), cetus_sui_clmm_sdk_1.TickMath.tickIndexToSqrtPriceX64(lower_tick), cetus_sui_clmm_sdk_1.TickMath.tickIndexToSqrtPriceX64(upper_tick), true);
546
+ return [coin_amounts.coinA.toString(), coin_amounts.coinB.toString()];
547
+ }
548
+ else {
549
+ return ["0", "0"];
550
+ }
551
+ }
552
+ //# sourceMappingURL=cetus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cetus.js","sourceRoot":"","sources":["../../../src/transactions/cetus.ts"],"names":[],"mappings":"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","sourcesContent":["import { Transaction } from \"@mysten/sui/transactions\";\nimport { CoinStruct } from \"@mysten/sui/client\";\nimport { ClmmPoolUtil, TickMath } from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport BN from \"bn.js\";\nimport {\n BluefinInvestor,\n CetusInvestor,\n cetusPoolMap,\n coinsList,\n CommonInvestorFields,\n doubleAssetPoolCoinMap,\n getConf,\n getInvestor,\n getParentPool,\n getReceipts,\n getSuiClient,\n poolInfo,\n PoolName,\n Receipt,\n} from \"../index.js\";\n\nexport const depositCetusAlphaSuiTxb = async (\n amount: string,\n poolName: PoolName,\n isAmountA: boolean,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n): Promise<Transaction> => {\n const suiClient = getSuiClient();\n const address = options.address;\n let txb;\n if (transaction) txb = transaction;\n else txb = new Transaction();\n poolName = poolName.toUpperCase() as PoolName;\n const pool1 = doubleAssetPoolCoinMap[poolName].coin1;\n const pool2 = doubleAssetPoolCoinMap[poolName].coin2;\n\n const receipt: Receipt[] = await getReceipts(poolName, address, true);\n let coins1: CoinStruct[] = [];\n\n let currentCursor: string | null | undefined = null;\n\n do {\n const response = await suiClient.getCoins({\n owner: address,\n coinType: coinsList[pool1].type,\n cursor: currentCursor,\n });\n\n coins1 = coins1.concat(response.data);\n\n // Check if there's a next page\n if (response.hasNextPage && response.nextCursor) {\n currentCursor = response.nextCursor;\n } else {\n // No more pages available\n // console.log(\"No more receipts available.\");\n break;\n }\n } while (true);\n\n const amounts = await getAmounts(poolName, isAmountA, amount);\n\n if (amounts) {\n const amount1 = amounts[0];\n const amount2 = amounts[1];\n\n let coin1: any;\n if (coins1.length >= 1) {\n //coin1\n [coin1] = txb.splitCoins(txb.object(coins1[0].coinObjectId), [0]);\n txb.mergeCoins(\n coin1,\n coins1.map((c) => c.coinObjectId),\n );\n const [depositCoinA] = txb.splitCoins(coin1, [amount1]);\n\n //coin2\n const [depositCoinB] = txb.splitCoins(txb.gas, [amount2]);\n const poolinfo = poolInfo[poolName];\n let someReceipt: any;\n if (receipt.length == 0) {\n [someReceipt] = txb.moveCall({\n target: `0x1::option::none`,\n typeArguments: [poolinfo.receiptType],\n arguments: [],\n });\n } else {\n [someReceipt] = txb.moveCall({\n target: `0x1::option::some`,\n typeArguments: [receipt[0].content.type],\n arguments: [txb.object(receipt[0].objectId)],\n });\n }\n\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_cetus_sui_pool::user_deposit`,\n typeArguments: [coinsList[pool1].type, coinsList[pool2].type],\n arguments: [\n txb.object(getConf().VERSION),\n someReceipt,\n txb.object(poolinfo.poolId),\n depositCoinA,\n depositCoinB,\n txb.object(getConf().ALPHA_DISTRIBUTOR),\n txb.object(poolinfo.investorId),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().CETUS_REWARDER_GLOBAL_VAULT_ID),\n txb.object(cetusPoolMap[\"CETUS-SUI\"]),\n txb.object(cetusPoolMap[poolName]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n txb.transferObjects([coin1], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n }\n\n return txb;\n};\n\nexport const depositCetusSuiTxb = async (\n amount: string,\n poolName: PoolName,\n isAmountA: boolean,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n): Promise<Transaction> => {\n const suiClient = getSuiClient();\n const address = options.address;\n let txb;\n if (transaction) txb = transaction;\n else txb = new Transaction();\n poolName = poolName.toUpperCase() as PoolName;\n const pool1 = doubleAssetPoolCoinMap[poolName].coin1;\n const pool2 = doubleAssetPoolCoinMap[poolName].coin2;\n\n const receipt: Receipt[] = await getReceipts(poolName, address, true);\n let coins1: CoinStruct[] = [];\n\n let currentCursor: string | null | undefined = null;\n\n do {\n const response = await suiClient.getCoins({\n owner: address,\n coinType: coinsList[pool1].type,\n cursor: currentCursor,\n });\n\n coins1 = coins1.concat(response.data);\n\n // Check if there's a next page\n if (response.hasNextPage && response.nextCursor) {\n currentCursor = response.nextCursor;\n } else {\n // No more pages available\n // console.log(\"No more receipts available.\");\n break;\n }\n } while (true);\n\n const amounts = await getAmounts(poolName, isAmountA, amount);\n\n if (amounts) {\n const amount1 = amounts[0];\n const amount2 = amounts[1];\n\n let coin1: any;\n if (coins1.length >= 1) {\n //coin1\n [coin1] = txb.splitCoins(txb.object(coins1[0].coinObjectId), [0]);\n txb.mergeCoins(\n coin1,\n coins1.map((c) => c.coinObjectId),\n );\n const [depositCoinA] = txb.splitCoins(coin1, [amount1]);\n\n //coin2\n const [depositCoinB] = txb.splitCoins(txb.gas, [amount2]);\n const poolinfo = poolInfo[poolName];\n let someReceipt: any;\n if (receipt.length == 0) {\n [someReceipt] = txb.moveCall({\n target: `0x1::option::none`,\n typeArguments: [poolinfo.receiptType],\n arguments: [],\n });\n } else {\n [someReceipt] = txb.moveCall({\n target: `0x1::option::some`,\n typeArguments: [receipt[0].content.type],\n arguments: [txb.object(receipt[0].objectId)],\n });\n }\n\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_cetus_sui_pool::user_deposit`,\n typeArguments: [coinsList[pool1].type, coinsList[pool2].type],\n arguments: [\n txb.object(getConf().ALPHA_2_VERSION),\n txb.object(getConf().VERSION),\n someReceipt,\n txb.object(poolinfo.poolId),\n depositCoinA,\n depositCoinB,\n txb.object(getConf().ALPHA_DISTRIBUTOR),\n txb.object(poolinfo.investorId),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().CETUS_REWARDER_GLOBAL_VAULT_ID),\n txb.object(cetusPoolMap[poolName]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n txb.transferObjects([coin1], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n }\n\n return txb;\n};\n\nexport const depositCetusTxb = async (\n amount: string,\n poolName: PoolName,\n isAmountA: boolean,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n): Promise<Transaction> => {\n const suiClient = getSuiClient();\n const address = options.address;\n let txb;\n if (transaction) txb = transaction;\n else txb = new Transaction();\n poolName = poolName.toUpperCase() as PoolName;\n const poolinfo = poolInfo[poolName];\n const pool1 = doubleAssetPoolCoinMap[poolName].coin1;\n const pool2 = doubleAssetPoolCoinMap[poolName].coin2;\n\n const receipt: Receipt[] = await getReceipts(poolName, address, true);\n let coins1: CoinStruct[] = [];\n let coins2: CoinStruct[] = [];\n let currentCursor: string | null | undefined = null;\n\n do {\n const response = await suiClient.getCoins({\n owner: address,\n coinType: coinsList[pool1].type,\n cursor: currentCursor,\n });\n\n coins1 = coins1.concat(response.data);\n\n // Check if there's a next page\n if (response.hasNextPage && response.nextCursor) {\n currentCursor = response.nextCursor;\n } else {\n // No more pages available\n // console.log(\"No more receipts available.\");\n break;\n }\n } while (true);\n\n currentCursor = null;\n\n do {\n const response = await suiClient.getCoins({\n owner: address,\n coinType: coinsList[pool2].type,\n cursor: currentCursor,\n });\n\n coins2 = coins2.concat(response.data);\n\n // Check if there's a next page\n if (response.hasNextPage && response.nextCursor) {\n currentCursor = response.nextCursor;\n } else {\n // No more pages available\n // console.log(\"No more receipts available.\");\n break;\n }\n } while (true);\n\n const amounts = await getAmounts(poolName, isAmountA, amount);\n if (amounts) {\n const amount1 = amounts[0];\n const amount2 = amounts[1];\n\n let coin1: any;\n let coin2: any;\n if (coins1.length >= 1 && coins2.length >= 1) {\n //coin1\n [coin1] = txb.splitCoins(txb.object(coins1[0].coinObjectId), [0]);\n txb.mergeCoins(\n coin1,\n coins1.map((c) => c.coinObjectId),\n );\n const [depositCoinA] = txb.splitCoins(coin1, [amount1]);\n\n //coin2\n [coin2] = txb.splitCoins(txb.object(coins2[0].coinObjectId), [0]);\n txb.mergeCoins(\n coin2,\n coins2.map((c) => c.coinObjectId),\n );\n const [depositCoinB] = txb.splitCoins(coin2, [amount2]);\n\n let someReceipt: any;\n\n if (receipt.length == 0) {\n [someReceipt] = txb.moveCall({\n target: `0x1::option::none`,\n typeArguments: [poolinfo.receiptType],\n arguments: [],\n });\n } else {\n [someReceipt] = txb.moveCall({\n target: `0x1::option::some`,\n typeArguments: [receipt[0].content.type],\n arguments: [txb.object(receipt[0].objectId)],\n });\n }\n\n if (\n poolName == \"WUSDC-WBTC\" ||\n poolName == \"USDC-USDT\" ||\n poolName == \"USDC-WUSDC\" ||\n poolName == \"USDC-ETH\"\n ) {\n txb.moveCall({\n target: `${getConf().ALPHA_LATEST_PACKAGE_ID}::alphafi_cetus_pool_base_a::user_deposit`,\n typeArguments: [coinsList[pool1].type, coinsList[pool2].type],\n arguments: [\n txb.object(getConf().VERSION),\n someReceipt,\n txb.object(poolinfo.poolId),\n depositCoinA,\n depositCoinB,\n txb.object(getConf().ALPHA_DISTRIBUTOR),\n txb.object(poolinfo.investorId),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().CETUS_REWARDER_GLOBAL_VAULT_ID),\n txb.object(cetusPoolMap[`${pool1}-SUI`]),\n txb.object(cetusPoolMap[\"CETUS-SUI\"]),\n txb.object(cetusPoolMap[poolName]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else {\n txb.moveCall({\n target: `${getConf().ALPHA_LATEST_PACKAGE_ID}::alphafi_cetus_pool::user_deposit`,\n typeArguments: [coinsList[pool1].type, coinsList[pool2].type],\n arguments: [\n txb.object(getConf().VERSION),\n someReceipt,\n txb.object(poolinfo.poolId),\n depositCoinA,\n depositCoinB,\n txb.object(getConf().ALPHA_DISTRIBUTOR),\n txb.object(poolinfo.investorId),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().CETUS_REWARDER_GLOBAL_VAULT_ID),\n txb.object(cetusPoolMap[`${pool2}-SUI`]),\n txb.object(cetusPoolMap[\"CETUS-SUI\"]),\n txb.object(cetusPoolMap[poolName]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n txb.transferObjects([coin1], address);\n txb.transferObjects([coin2], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n }\n\n return txb;\n};\n\nexport const withdrawCetusAlphaSuiTxb = async (\n xTokens: string,\n poolName: PoolName,\n options: { address: string },\n) => {\n const address = options.address;\n const txb = new Transaction();\n const pool1 = doubleAssetPoolCoinMap[poolName].coin1;\n const pool2 = doubleAssetPoolCoinMap[poolName].coin2;\n\n const receipt: Receipt[] = await getReceipts(poolName, address, true);\n const alphaReceipt: Receipt[] = await getReceipts(\"ALPHA\", address, true);\n\n if (receipt.length > 0) {\n let alpha_receipt: any;\n if (alphaReceipt.length == 0) {\n [alpha_receipt] = txb.moveCall({\n target: `0x1::option::none`,\n typeArguments: [getConf().ALPHA_POOL_RECEIPT],\n arguments: [],\n });\n } else {\n [alpha_receipt] = txb.moveCall({\n target: `0x1::option::some`,\n typeArguments: [alphaReceipt[0].content.type],\n arguments: [txb.object(alphaReceipt[0].objectId)],\n });\n }\n const poolinfo = poolInfo[poolName];\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_cetus_sui_pool::user_withdraw`,\n typeArguments: [coinsList[pool1].type, coinsList[pool2].type],\n arguments: [\n txb.object(getConf().VERSION),\n txb.object(receipt[0].objectId),\n alpha_receipt,\n txb.object(getConf().ALPHA_POOL),\n txb.object(poolinfo.poolId),\n txb.object(getConf().ALPHA_DISTRIBUTOR),\n txb.object(poolinfo.investorId),\n txb.pure.u128(xTokens),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().CETUS_REWARDER_GLOBAL_VAULT_ID),\n txb.object(cetusPoolMap[\"CETUS-SUI\"]),\n txb.object(cetusPoolMap[poolName]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else {\n throw new Error(\"No receipt found!\");\n }\n\n return txb;\n};\n\nexport const withdrawCetusSuiTxb = async (\n xTokens: string,\n poolName: PoolName,\n options: { address: string },\n) => {\n const address = options.address;\n const txb = new Transaction();\n const pool1 = doubleAssetPoolCoinMap[poolName].coin1;\n const pool2 = doubleAssetPoolCoinMap[poolName].coin2;\n\n const receipt: Receipt[] = await getReceipts(poolName, address, true);\n const alphaReceipt: Receipt[] = await getReceipts(\"ALPHA\", address, true);\n\n if (receipt.length > 0) {\n let alpha_receipt: any;\n if (alphaReceipt.length == 0) {\n [alpha_receipt] = txb.moveCall({\n target: `0x1::option::none`,\n typeArguments: [getConf().ALPHA_POOL_RECEIPT],\n arguments: [],\n });\n } else {\n [alpha_receipt] = txb.moveCall({\n target: `0x1::option::some`,\n typeArguments: [alphaReceipt[0].content.type],\n arguments: [txb.object(alphaReceipt[0].objectId)],\n });\n }\n const poolinfo = poolInfo[poolName];\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_cetus_sui_pool::user_withdraw`,\n typeArguments: [coinsList[pool1].type, coinsList[pool2].type],\n arguments: [\n txb.object(getConf().ALPHA_2_VERSION),\n txb.object(getConf().VERSION),\n txb.object(receipt[0].objectId),\n alpha_receipt,\n txb.object(getConf().ALPHA_POOL),\n txb.object(poolinfo.poolId),\n txb.object(getConf().ALPHA_DISTRIBUTOR),\n txb.object(poolinfo.investorId),\n txb.pure.u128(xTokens),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().CETUS_REWARDER_GLOBAL_VAULT_ID),\n txb.object(cetusPoolMap[poolName]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else {\n throw new Error(\"No receipt found!\");\n }\n\n return txb;\n};\n\nexport const withdrawCetusTxb = async (\n xTokens: string,\n poolName: PoolName,\n options: { address: string },\n) => {\n const address = options.address;\n const txb = new Transaction();\n const pool1 = doubleAssetPoolCoinMap[poolName].coin1;\n const pool2 = doubleAssetPoolCoinMap[poolName].coin2;\n\n const receipt: Receipt[] = await getReceipts(poolName, address, true);\n const alphaReceipt: Receipt[] = await getReceipts(\"ALPHA\", address, true);\n\n if (receipt.length > 0) {\n let alpha_receipt: any;\n if (alphaReceipt.length == 0) {\n [alpha_receipt] = txb.moveCall({\n target: `0x1::option::none`,\n typeArguments: [getConf().ALPHA_POOL_RECEIPT],\n arguments: [],\n });\n } else {\n [alpha_receipt] = txb.moveCall({\n target: `0x1::option::some`,\n typeArguments: [alphaReceipt[0].content.type],\n arguments: [txb.object(alphaReceipt[0].objectId)],\n });\n }\n const poolinfo = poolInfo[poolName];\n if (\n poolName == \"WUSDC-WBTC\" ||\n poolName == \"USDC-USDT\" ||\n poolName == \"USDC-WUSDC\" ||\n poolName == \"USDC-ETH\"\n ) {\n txb.moveCall({\n target: `${getConf().ALPHA_LATEST_PACKAGE_ID}::alphafi_cetus_pool_base_a::user_withdraw`,\n typeArguments: [coinsList[pool1].type, coinsList[pool2].type],\n arguments: [\n txb.object(getConf().VERSION),\n txb.object(receipt[0].objectId),\n alpha_receipt,\n txb.object(getConf().ALPHA_POOL),\n txb.object(poolinfo.poolId),\n txb.object(getConf().ALPHA_DISTRIBUTOR),\n txb.object(poolinfo.investorId),\n txb.pure.u128(xTokens),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().CETUS_REWARDER_GLOBAL_VAULT_ID),\n txb.object(cetusPoolMap[`${pool1}-SUI`]),\n txb.object(cetusPoolMap[\"CETUS-SUI\"]),\n txb.object(cetusPoolMap[poolName]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else {\n txb.moveCall({\n target: `${getConf().ALPHA_LATEST_PACKAGE_ID}::alphafi_cetus_pool::user_withdraw`,\n typeArguments: [coinsList[pool1].type, coinsList[pool2].type],\n arguments: [\n txb.object(getConf().VERSION),\n txb.object(receipt[0].objectId),\n alpha_receipt,\n txb.object(getConf().ALPHA_POOL),\n txb.object(poolinfo.poolId),\n txb.object(getConf().ALPHA_DISTRIBUTOR),\n txb.object(poolinfo.investorId),\n txb.pure.u128(xTokens),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().CETUS_REWARDER_GLOBAL_VAULT_ID),\n txb.object(cetusPoolMap[`${pool2}-SUI`]),\n txb.object(cetusPoolMap[\"CETUS-SUI\"]),\n txb.object(cetusPoolMap[poolName]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n }\n } else {\n throw new Error(\"No receipt found!\");\n }\n\n return txb;\n};\n\nexport async function getLiquidity(\n poolName: PoolName,\n a2b: boolean,\n amount: string,\n) {\n const cetusInvestor = (await getInvestor(poolName, true)) as CetusInvestor &\n CommonInvestorFields;\n const cetus_pool = await getParentPool(poolName, true);\n //TODO\n //check if you calculate lower_tick, upper_tick like this only\n const upper_bound = 443636;\n let lower_tick = Number(cetusInvestor.content.fields.lower_tick);\n let upper_tick = Number(cetusInvestor.content.fields.upper_tick);\n\n if (lower_tick > upper_bound) {\n lower_tick = -~(lower_tick - 1);\n }\n if (upper_tick > upper_bound) {\n upper_tick = -~(upper_tick - 1);\n }\n\n // AlphaFi Mascot\n //\n // a\n // ~~|~~\n // / \\\n //\n /////////////////\n\n const current_sqrt_price = new BN(\n cetus_pool.content.fields.current_sqrt_price,\n );\n\n const liquidity = ClmmPoolUtil.estLiquidityAndcoinAmountFromOneAmounts(\n lower_tick,\n upper_tick,\n new BN(`${Math.floor(parseFloat(amount))}`),\n a2b,\n false,\n 0.5,\n current_sqrt_price,\n );\n return liquidity;\n}\n\nexport async function getAmounts(\n poolName: PoolName,\n a2b: boolean,\n amount: string,\n): Promise<[string, string] | undefined> {\n const liquidity = await getLiquidity(poolName, a2b, amount);\n if (liquidity) {\n const numA = liquidity.coinAmountA.toString();\n const numB = liquidity.coinAmountB.toString();\n\n return [numA, numB];\n }\n}\n\nexport async function getCoinAmountsFromLiquidity(\n poolName: PoolName,\n liquidity: string,\n): Promise<[string, string]> {\n const clmmPool = await getParentPool(poolName, true);\n const investor = (await getInvestor(poolName, true)) as (\n | CetusInvestor\n | BluefinInvestor\n ) &\n CommonInvestorFields;\n\n const upper_bound = 443636;\n let lower_tick = Number(investor!.content.fields.lower_tick);\n let upper_tick = Number(investor!.content.fields.upper_tick);\n\n if (lower_tick > upper_bound) {\n lower_tick = -~(lower_tick - 1);\n }\n if (upper_tick > upper_bound) {\n upper_tick = -~(upper_tick - 1);\n }\n if (clmmPool) {\n const liquidityInt = Math.floor(parseFloat(liquidity));\n const coin_amounts = ClmmPoolUtil.getCoinAmountFromLiquidity(\n new BN(`${liquidityInt}`),\n new BN(clmmPool.content.fields.current_sqrt_price),\n TickMath.tickIndexToSqrtPriceX64(lower_tick),\n TickMath.tickIndexToSqrtPriceX64(upper_tick),\n true,\n );\n return [coin_amounts.coinA.toString(), coin_amounts.coinB.toString()];\n } else {\n return [\"0\", \"0\"];\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import { Transaction } from "@mysten/sui/transactions";
2
+ export declare function claimRewardTxb(address: string): Promise<Transaction>;
3
+ //# sourceMappingURL=collect_rewards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect_rewards.d.ts","sourceRoot":"","sources":["../../../src/transactions/collect_rewards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAUvD,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,wBAgUnD"}