@alphafi/alphafi-sdk 0.0.49 → 0.0.50

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 (252) hide show
  1. package/dist/cjs/adminFunctions.d.ts +2 -1
  2. package/dist/cjs/adminFunctions.d.ts.map +1 -1
  3. package/dist/cjs/adminFunctions.js +47 -0
  4. package/dist/cjs/adminFunctions.js.map +1 -1
  5. package/dist/cjs/common/maps.d.ts +1 -0
  6. package/dist/cjs/common/maps.d.ts.map +1 -1
  7. package/dist/cjs/common/maps.js.map +1 -1
  8. package/dist/cjs/common/types.d.ts +17 -3
  9. package/dist/cjs/common/types.d.ts.map +1 -1
  10. package/dist/cjs/common/types.js.map +1 -1
  11. package/dist/cjs/index.d.ts +2 -1
  12. package/dist/cjs/index.d.ts.map +1 -1
  13. package/dist/cjs/index.js +3 -2
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/cjs/sui-sdk/client.d.ts +8 -0
  16. package/dist/cjs/sui-sdk/client.d.ts.map +1 -1
  17. package/dist/cjs/sui-sdk/client.js +12 -0
  18. package/dist/cjs/sui-sdk/client.js.map +1 -1
  19. package/dist/cjs/sui-sdk/functions/getPositionRange.d.ts +10 -0
  20. package/dist/cjs/sui-sdk/functions/getPositionRange.d.ts.map +1 -0
  21. package/dist/cjs/sui-sdk/functions/getPositionRange.js +86 -0
  22. package/dist/cjs/sui-sdk/functions/getPositionRange.js.map +1 -0
  23. package/dist/cjs/sui-sdk/functions/getReceipts.d.ts +4 -12
  24. package/dist/cjs/sui-sdk/functions/getReceipts.d.ts.map +1 -1
  25. package/dist/cjs/sui-sdk/functions/getReceipts.js +0 -81
  26. package/dist/cjs/sui-sdk/functions/getReceipts.js.map +1 -1
  27. package/dist/cjs/transactions/zapDeposit.d.ts.map +1 -1
  28. package/dist/cjs/transactions/zapDeposit.js +58 -29
  29. package/dist/cjs/transactions/zapDeposit.js.map +1 -1
  30. package/dist/esm/adminFunctions.d.ts +2 -1
  31. package/dist/esm/adminFunctions.d.ts.map +1 -1
  32. package/dist/esm/adminFunctions.js +48 -2
  33. package/dist/esm/adminFunctions.js.map +1 -1
  34. package/dist/esm/common/maps.d.ts +1 -0
  35. package/dist/esm/common/maps.d.ts.map +1 -1
  36. package/dist/esm/common/maps.js.map +1 -1
  37. package/dist/esm/common/types.d.ts +17 -3
  38. package/dist/esm/common/types.d.ts.map +1 -1
  39. package/dist/esm/common/types.js.map +1 -1
  40. package/dist/esm/index.d.ts +2 -1
  41. package/dist/esm/index.d.ts.map +1 -1
  42. package/dist/esm/index.js +2 -1
  43. package/dist/esm/index.js.map +1 -1
  44. package/dist/esm/sui-sdk/client.d.ts +8 -0
  45. package/dist/esm/sui-sdk/client.d.ts.map +1 -1
  46. package/dist/esm/sui-sdk/client.js +10 -0
  47. package/dist/esm/sui-sdk/client.js.map +1 -1
  48. package/dist/esm/sui-sdk/functions/getPositionRange.d.ts +10 -0
  49. package/dist/esm/sui-sdk/functions/getPositionRange.d.ts.map +1 -0
  50. package/dist/esm/sui-sdk/functions/getPositionRange.js +82 -0
  51. package/dist/esm/sui-sdk/functions/getPositionRange.js.map +1 -0
  52. package/dist/esm/sui-sdk/functions/getReceipts.d.ts +4 -12
  53. package/dist/esm/sui-sdk/functions/getReceipts.d.ts.map +1 -1
  54. package/dist/esm/sui-sdk/functions/getReceipts.js +2 -81
  55. package/dist/esm/sui-sdk/functions/getReceipts.js.map +1 -1
  56. package/dist/esm/transactions/zapDeposit.d.ts.map +1 -1
  57. package/dist/esm/transactions/zapDeposit.js +59 -30
  58. package/dist/esm/transactions/zapDeposit.js.map +1 -1
  59. package/docs/assets/highlight.css +51 -74
  60. package/docs/assets/icons.js +17 -20
  61. package/docs/assets/main.js +5 -2163
  62. package/docs/assets/navigation.js +1 -2
  63. package/docs/assets/search.js +1 -2
  64. package/docs/assets/style.css +850 -846
  65. package/docs/functions/alphaLpBreakdown.html +1 -253
  66. package/docs/functions/cetusLpBreakdown.html +1 -253
  67. package/docs/functions/claimBlueRewardTxb.html +1 -0
  68. package/docs/functions/claimRewardTxb.html +1 -243
  69. package/docs/functions/coinAmountToXTokensDoubleAsset.html +1 -267
  70. package/docs/functions/coinAmountToXTokensSingleAsset.html +1 -260
  71. package/docs/functions/coinsInPool.html +1 -438
  72. package/docs/functions/collectRewards.html +1 -242
  73. package/docs/functions/deposit.html +1 -246
  74. package/docs/functions/depositDoubleAssetTxb.html +1 -270
  75. package/docs/functions/depositSingleAssetTxb.html +1 -263
  76. package/docs/functions/fetchAfterTransactionEvents.html +1 -306
  77. package/docs/functions/fetchAutoCompoundingEvents.html +1 -257
  78. package/docs/functions/fetchAutoCompoundingEventsGql.html +1 -251
  79. package/docs/functions/fetchCetusPools.html +1 -231
  80. package/docs/functions/fetchChainIdentifier.html +1 -233
  81. package/docs/functions/fetchCheckRatioEvents.html +1 -249
  82. package/docs/functions/fetchLiquidityChangeEvents.html +1 -257
  83. package/docs/functions/fetchMultiReceipts.html +1 -261
  84. package/docs/functions/fetchNftHolders.html +1 -233
  85. package/docs/functions/fetchPools.html +1 -230
  86. package/docs/functions/fetchPortfolioData.html +1 -243
  87. package/docs/functions/fetchProtocolData.html +1 -231
  88. package/docs/functions/fetchTVL.html +1 -253
  89. package/docs/functions/fetchUserVaultBalances.html +1 -245
  90. package/docs/functions/fetchUserVaults.html +1 -243
  91. package/docs/functions/fetchUserWalletData.html +1 -243
  92. package/docs/functions/fetchWithdrawV2Events.html +1 -255
  93. package/docs/functions/getAirdropShare.html +1 -243
  94. package/docs/functions/getAllDoubleAssetVaults.html +1 -235
  95. package/docs/functions/getAllSingleAssetVaults.html +1 -235
  96. package/docs/functions/getAllVaultBalances.html +1 -265
  97. package/docs/functions/getAllVaults.html +1 -233
  98. package/docs/functions/getAlphaUnlocks.html +1 -245
  99. package/docs/functions/getAlphaVaultBalance.html +1 -255
  100. package/docs/functions/getAmounts.html +1 -272
  101. package/docs/functions/getApr.html +1 -243
  102. package/docs/functions/getAprs.html +1 -255
  103. package/docs/functions/getApy.html +1 -243
  104. package/docs/functions/getApys.html +1 -255
  105. package/docs/functions/getCetusInvestorTicksMap.html +1 -284
  106. package/docs/functions/getCetusSqrtPriceMap.html +1 -249
  107. package/docs/functions/getCoinAmountsFromLiquidity.html +1 -273
  108. package/docs/functions/getConf.html +1 -11763
  109. package/docs/functions/getCurrentTick.html +1 -247
  110. package/docs/functions/getDoubleAssetVaultBalance.html +1 -268
  111. package/docs/functions/getDoubleAssetVaults.html +1 -253
  112. package/docs/functions/getHoldersFromTransactions.html +1 -299
  113. package/docs/functions/getInvestor.html +1 -259
  114. package/docs/functions/getInvestorPoolMap.html +1 -241
  115. package/docs/functions/getLastAutoCompoundTime.html +1 -249
  116. package/docs/functions/getLatestPrices.html +1 -253
  117. package/docs/functions/getLiquidity.html +1 -260
  118. package/docs/functions/getMultiInvestor.html +1 -231
  119. package/docs/functions/getMultiLatestPrices.html +1 -233
  120. package/docs/functions/getMultiParentPool.html +1 -231
  121. package/docs/functions/getMultiPool.html +1 -231
  122. package/docs/functions/getMultiReceipts.html +1 -243
  123. package/docs/functions/getParentPool.html +1 -266
  124. package/docs/functions/getPool.html +1 -262
  125. package/docs/functions/getPoolExchangeRateMap.html +1 -249
  126. package/docs/functions/getPoolsWeightDistribution.html +1 -0
  127. package/docs/functions/getPositionRange.html +1 -283
  128. package/docs/functions/getPositionRanges.html +1 -289
  129. package/docs/functions/getPositionTicks.html +1 -249
  130. package/docs/functions/getPriceToTick.html +1 -254
  131. package/docs/functions/getRebalanceHistories.html +1 -269
  132. package/docs/functions/getRebalanceHistory.html +1 -255
  133. package/docs/functions/getReceipts.html +1 -268
  134. package/docs/functions/getSingleAssetVaultBalance.html +1 -268
  135. package/docs/functions/getSingleAssetVaults.html +1 -253
  136. package/docs/functions/getSuiClient.html +3 -247
  137. package/docs/functions/getSuiNodeUrl.html +3 -232
  138. package/docs/functions/getTVLs-1.html +1 -243
  139. package/docs/functions/getTickToPrice.html +1 -254
  140. package/docs/functions/getTvls.html +1 -259
  141. package/docs/functions/getUserTokensFromTransactions.html +1 -269
  142. package/docs/functions/getUserTokensInUsdFromTransactions.html +1 -263
  143. package/docs/functions/getVaultBalance.html +1 -277
  144. package/docs/functions/getVaultBalanceForActiveUsers.html +1 -261
  145. package/docs/functions/getVaults.html +1 -250
  146. package/docs/functions/getXTokenVaultBalanceForActiveUsers.html +1 -261
  147. package/docs/functions/getZapAmounts.html +1 -323
  148. package/docs/functions/lastAutocompoundTime.html +1 -249
  149. package/docs/functions/liquidityToTokens.html +1 -253
  150. package/docs/functions/multiLiquidityToTokens.html +1 -271
  151. package/docs/functions/multiTokensToUsd.html +1 -262
  152. package/docs/functions/multiXTokensToLiquidity.html +1 -257
  153. package/docs/functions/parseUserWalletData.html +1 -243
  154. package/docs/functions/pendingBlueRewardAmount.html +1 -0
  155. package/docs/functions/setSuiClient.html +7 -255
  156. package/docs/functions/setSuiNodeUrl.html +5 -249
  157. package/docs/functions/withdraw.html +1 -249
  158. package/docs/functions/withdrawAlphaTxb.html +1 -257
  159. package/docs/functions/withdrawTxb.html +1 -260
  160. package/docs/functions/zapDepositTxb.html +1 -300
  161. package/docs/index.html +41 -587
  162. package/docs/interfaces/Coin.html +12 -474
  163. package/docs/interfaces/CoinPair.html +3 -358
  164. package/docs/interfaces/NaviVoloData.html +3 -514
  165. package/docs/interfaces/PoolData.html +6 -0
  166. package/docs/interfaces/PoolWeightDistribution.html +4 -0
  167. package/docs/interfaces/RebalanceHistoryType.html +9 -652
  168. package/docs/modules.html +186 -1315
  169. package/docs/types/AfterTransactionEventNode.html +1 -305
  170. package/docs/types/Allocator.html +1 -321
  171. package/docs/types/AlphaFiDoubleAssetVault.html +1 -258
  172. package/docs/types/AlphaFiMultiVaultBalance.html +1 -219
  173. package/docs/types/AlphaFiSingleAssetVault.html +1 -244
  174. package/docs/types/AlphaFiVault.html +1 -214
  175. package/docs/types/AlphaFiVaultBalance.html +1 -220
  176. package/docs/types/AlphaPoolType.html +1 -383
  177. package/docs/types/AlphaReceipt.html +1 -220
  178. package/docs/types/AlphaReceiptFields.html +1 -421
  179. package/docs/types/AlphaVaultBalance.html +1 -245
  180. package/docs/types/AutoBalancePoolNames.html +1 -0
  181. package/docs/types/AutoCompoundingEventNode.html +1 -225
  182. package/docs/types/BluefinInvestor.html +1 -209
  183. package/docs/types/BluefinPoolType.html +1 -440
  184. package/docs/types/BucketInvestor.html +1 -249
  185. package/docs/types/CetusInvestor.html +1 -240
  186. package/docs/types/CetusPoolType.html +1 -433
  187. package/docs/types/CetusSwapOptions.html +1 -209
  188. package/docs/types/CoinAmounts.html +1 -216
  189. package/docs/types/CoinName.html +1 -290
  190. package/docs/types/CoinType.html +1 -291
  191. package/docs/types/CommonInvestorFields.html +1 -276
  192. package/docs/types/CreatePoolOptions.html +1 -246
  193. package/docs/types/Distributor.html +1 -341
  194. package/docs/types/DoubleAssetMultiVaultBalance.html +1 -236
  195. package/docs/types/DoubleAssetPoolNames.html +1 -289
  196. package/docs/types/DoubleAssetTokenHoldings.html +1 -232
  197. package/docs/types/DoubleAssetVaultBalance.html +1 -229
  198. package/docs/types/GetHoldersParams.html +1 -221
  199. package/docs/types/GetTokenHoldingsParams.html +1 -227
  200. package/docs/types/GetUserTokensFromTransactionsParams.html +1 -233
  201. package/docs/types/GetUserTokensInUsdFromTransactionsParams.html +1 -244
  202. package/docs/types/GetVaultBalanceForActiveUsersParams.html +1 -231
  203. package/docs/types/GetVaultBalanceParams.html +1 -217
  204. package/docs/types/HoldingsObj.html +1 -223
  205. package/docs/types/Icon.html +1 -266
  206. package/docs/types/Investor.html +1 -245
  207. package/docs/types/LiquidityChangeEventNode.html +1 -220
  208. package/docs/types/LiquidityToTokensParams.html +1 -255
  209. package/docs/types/LiquidityToUsdParams.html +1 -267
  210. package/docs/types/LoopingDebt.html +1 -258
  211. package/docs/types/LoopingPoolNames.html +1 -0
  212. package/docs/types/LpBreakdownType.html +1 -238
  213. package/docs/types/MemberPoolDataType.html +1 -276
  214. package/docs/types/MemberType.html +1 -269
  215. package/docs/types/MultiGetVaultBalancesParams.html +1 -229
  216. package/docs/types/NaviInvestor.html +1 -235
  217. package/docs/types/OtherReceiptFields.html +1 -373
  218. package/docs/types/PoolName.html +1 -326
  219. package/docs/types/PoolReceipt.html +1 -253
  220. package/docs/types/PoolType.html +1 -388
  221. package/docs/types/Receipt.html +1 -475
  222. package/docs/types/ReceiptGQL.html +1 -374
  223. package/docs/types/SingleAssetMultiVaultBalance.html +1 -232
  224. package/docs/types/SingleAssetPoolNames.html +1 -247
  225. package/docs/types/SingleAssetTokenHoldings.html +1 -228
  226. package/docs/types/SingleAssetVaultBalance.html +1 -223
  227. package/docs/types/SingleGetVaultBalancesParams.html +1 -224
  228. package/docs/types/StrategyType.html +1 -217
  229. package/docs/types/SuiNetwork.html +1 -213
  230. package/docs/types/SwapOptions.html +1 -248
  231. package/docs/types/TickSpacing.html +1 -212
  232. package/docs/types/TotalWeightType.html +1 -246
  233. package/docs/types/TransactionBlockType.html +1 -358
  234. package/docs/types/UserPoolLiquidity.html +1 -221
  235. package/docs/types/UserPoolTokenHoldings.html +1 -217
  236. package/docs/types/UserUsdHoldings.html +1 -223
  237. package/docs/types/VaultBalance.html +1 -216
  238. package/docs/types/WithdrawV2EventNode.html +1 -208
  239. package/docs/variables/bluefinPoolMap.html +1 -214
  240. package/docs/variables/cetusPoolMap.html +1 -214
  241. package/docs/variables/coinsList.html +1 -220
  242. package/docs/variables/defunctPoolsSet.html +1 -209
  243. package/docs/variables/doubleAssetPoolCoinMap.html +1 -237
  244. package/docs/variables/ignoredWalletsForDailyRevenue.html +1 -218
  245. package/docs/variables/loopingAccountAddresses.html +1 -219
  246. package/docs/variables/loopingPoolCoinMap.html +1 -233
  247. package/docs/variables/naviAssetMap.html +1 -215
  248. package/docs/variables/poolIdPoolNameMap.html +1 -218
  249. package/docs/variables/poolInfo.html +1 -304
  250. package/docs/variables/singleAssetPoolCoinMap.html +1 -229
  251. package/docs/variables/stableCoins.html +1 -207
  252. package/package.json +2 -3
@@ -1 +1 @@
1
- {"version":3,"file":"zapDeposit.js","sourceRoot":"","sources":["../../../src/transactions/zapDeposit.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Transaction,\n TransactionObjectArgument,\n} from \"@mysten/sui/transactions\";\nimport BN from \"bn.js\";\nimport { CoinStruct, SuiClient } from \"@mysten/sui/client\";\nimport { CoinName, PoolName, SwapOptions } from \"../common/types.js\";\nimport { getSuiClient } from \"../sui-sdk/client.js\";\nimport {\n bluefinPoolMap,\n cetusPoolMap,\n doubleAssetPoolCoinMap,\n poolInfo,\n} from \"../common/maps.js\";\nimport { coinsList } from \"../common/coins.js\";\nimport { getAmounts } from \"./deposit.js\";\nimport { SevenKGateway } from \"./7k.js\";\nimport { getConf } from \"../common/constants.js\";\nimport { getReceipts } from \"../sui-sdk/functions/getReceipts.js\";\nimport { getLatestPrices } from \"../utils/prices.js\";\nimport { PythPriceIdPair } from \"../common/pyth.js\";\nimport { mintTx, redeemTx } from \"@alphafi/stsui-sdk\";\n\nexport async function zapDepositTxb(\n inputCoinName: CoinName,\n inputCoinAmount: number,\n poolName: PoolName,\n slippage: number, // 0.01 --> 1%, 0.001 --> 0.1%\n options: { address: string },\n): Promise<Transaction | undefined> {\n let txb = new Transaction();\n const suiClient = getSuiClient();\n const address = options.address;\n const coinTypeA = doubleAssetPoolCoinMap[poolName].coin1;\n const coinTypeB = doubleAssetPoolCoinMap[poolName].coin2;\n const swapObjectA = coinsList[coinTypeA];\n const swapObjectB = coinsList[coinTypeB];\n const inputObject = coinsList[inputCoinName];\n\n let coin1, coin2;\n\n const amounts = await getAmounts(poolName, true, \"100000001\");\n if (amounts) {\n const amount1 = Number(amounts[0]);\n const amount2 = Number(amounts[1]);\n\n const swapGateway = new SevenKGateway();\n const swapOptions: SwapOptions = {\n pair: {\n coinA: swapObjectA,\n coinB: swapObjectB,\n },\n senderAddress: address,\n inAmount: new BN(amount1),\n slippage: slippage,\n };\n\n const ratioQuote = await swapGateway.getQuote(swapOptions);\n if (ratioQuote) {\n const amount1InCoinType2 = Number(ratioQuote.returnAmountWithDecimal);\n const totalAmount = amount2 + amount1InCoinType2;\n\n const inputAmountToType1 = Math.floor(\n (inputCoinAmount * amount1InCoinType2) / totalAmount,\n );\n const inputAmountToType2 = Math.floor(\n (inputCoinAmount * amount2) / totalAmount,\n );\n\n let amountA, amountB;\n const swapOptionsI2A = {\n pair: {\n coinA: inputObject,\n coinB: swapObjectA,\n },\n senderAddress: address,\n inAmount: new BN(inputAmountToType1),\n slippage: slippage,\n };\n const swapOptionsI2B = {\n pair: {\n coinA: inputObject,\n coinB: swapObjectB,\n },\n senderAddress: address,\n inAmount: new BN(inputAmountToType2),\n slippage: slippage,\n };\n\n if (inputCoinName === coinTypeA) {\n const result = await zapSwap(swapOptionsI2B, txb);\n if (result) {\n amountB = result.amountOut;\n txb = result.tx;\n if (result.coinOut) {\n coin2 = result.coinOut;\n }\n }\n\n amountA = inputAmountToType1.toString();\n const res = await splitFromExisting(\n coinTypeA,\n amountA,\n txb,\n suiClient,\n address,\n );\n txb = res.tx;\n coin1 = res.coinOut;\n } else if (inputCoinName === coinTypeB) {\n const result = await zapSwap(swapOptionsI2A, txb);\n if (result) {\n amountA = result.amountOut;\n txb = result.tx;\n if (result.coinOut) {\n coin1 = result.coinOut;\n }\n }\n\n amountB = inputAmountToType2.toString();\n const res = await splitFromExisting(\n coinTypeB,\n amountB,\n txb,\n suiClient,\n address,\n );\n txb = res.tx;\n coin2 = res.coinOut;\n } else {\n let result = await zapSwap(swapOptionsI2A, txb);\n if (result) {\n amountA = result.amountOut;\n txb = result.tx;\n if (result.coinOut) {\n coin1 = result.coinOut;\n }\n }\n\n result = await zapSwap(swapOptionsI2B, txb);\n if (result) {\n amountB = result.amountOut;\n txb = result.tx;\n if (result.coinOut) {\n coin2 = result.coinOut;\n }\n }\n }\n\n if (amountA && amountB && coin1 && coin2) {\n // fee charge\n const fee_address = getConf().FEE_ADDRESS;\n const feePercentage = 0.05;\n const amountAFee = ((Number(amountA) * feePercentage) / 100).toFixed(0);\n const amountBFee = ((Number(amountB) * feePercentage) / 100).toFixed(0);\n const [feeCoinA] = txb.splitCoins(coin1, [amountAFee]);\n const [feeCoinB] = txb.splitCoins(coin2, [amountBFee]);\n txb.transferObjects([feeCoinA, feeCoinB], fee_address);\n\n const pool1 = doubleAssetPoolCoinMap[poolName].coin1;\n const pool2 = doubleAssetPoolCoinMap[poolName].coin2;\n if (poolInfo[poolName].parentProtocolName === \"CETUS\") {\n if (pool1 === \"CETUS\" && pool2 === \"SUI\") {\n txb = await depositCetusSuiTxb(\n amountA,\n amountB,\n poolName,\n { address },\n txb,\n coin1,\n coin2,\n );\n } else if (pool2 === \"SUI\") {\n txb = await depositCetusAlphaSuiTxb(\n amountA,\n amountB,\n poolName,\n { address },\n txb,\n coin1,\n coin2,\n );\n } else {\n txb = await depositCetus(\n amountA,\n amountB,\n poolName,\n { address },\n txb,\n coin1,\n coin2,\n );\n }\n } else if (poolInfo[poolName].parentProtocolName === \"BLUEFIN\") {\n if (\n poolName === \"BLUEFIN-NAVX-VSUI\" ||\n poolName === \"BLUEFIN-ALPHA-USDC\" ||\n poolName === \"BLUEFIN-BLUE-USDC\"\n ) {\n txb = await depositBluefinType2Txb(\n amountA,\n amountB,\n poolName,\n { address },\n txb,\n coin1,\n coin2,\n );\n } else if (pool1 === \"SUI\") {\n txb = await depositBluefinSuiFirstTxb(\n amountA,\n amountB,\n poolName,\n { address },\n txb,\n coin1,\n coin2,\n );\n } else if (pool2 === \"SUI\") {\n txb = await depositBluefinSuiSecondTxb(\n amountA,\n amountB,\n poolName,\n { address },\n txb,\n coin1,\n coin2,\n );\n } else if (pool1 === \"STSUI\" || pool2 === \"STSUI\") {\n txb = await depositBluefinStsuiTxb(\n amountA,\n amountB,\n poolName,\n { address },\n txb,\n coin1,\n coin2,\n );\n } else {\n txb = await depositBluefinType1Txb(\n amountA,\n amountB,\n poolName,\n { address },\n txb,\n coin1,\n coin2,\n );\n }\n }\n }\n txb.setGasBudget(100000000);\n return txb;\n }\n }\n return undefined;\n}\n\nasync function zapSwap(\n swapOptions: SwapOptions,\n txb: Transaction,\n): Promise<\n | {\n tx: Transaction;\n coinOut: TransactionObjectArgument | undefined;\n amountOut: string;\n }\n | undefined\n> {\n if (\n swapOptions.pair.coinA.name === \"SUI\" &&\n swapOptions.pair.coinB.name === \"STSUI\"\n ) {\n const result = await mintTx(\n swapOptions.inAmount ? swapOptions.inAmount.toString() : \"0\",\n txb,\n );\n return result;\n } else if (\n swapOptions.pair.coinA.name === \"STSUI\" &&\n swapOptions.pair.coinB.name === \"SUI\"\n ) {\n const result = await redeemTx(\n swapOptions.inAmount ? swapOptions.inAmount.toString() : \"0\",\n txb,\n { address: swapOptions.senderAddress },\n );\n return result;\n } else {\n const swapGateway = new SevenKGateway();\n const quoteResponse = await swapGateway.getQuote(swapOptions);\n if (quoteResponse) {\n const result = await swapGateway.getTransactionBlock(\n swapOptions,\n quoteResponse,\n txb,\n );\n return {\n tx: result.tx,\n coinOut: result.coinOut,\n amountOut: quoteResponse.returnAmountWithDecimal,\n };\n }\n }\n}\n\nasync function splitFromExisting(\n coinType: CoinName,\n amount: string,\n txb: Transaction,\n suiClient: SuiClient,\n address: string,\n): Promise<{\n tx: Transaction;\n coinOut: TransactionObjectArgument;\n}> {\n let coin: TransactionObjectArgument;\n if (coinType === \"SUI\") {\n [coin] = txb.splitCoins(txb.gas, [amount]);\n } else {\n let currentCursor: string | null | undefined = null;\n let coins1: CoinStruct[] = [];\n do {\n const response = await suiClient.getCoins({\n owner: address,\n coinType: coinsList[coinType].type,\n cursor: currentCursor,\n });\n coins1 = coins1.concat(response.data);\n if (response.hasNextPage && response.nextCursor) {\n currentCursor = response.nextCursor;\n } else break;\n } while (true);\n [coin] = txb.splitCoins(txb.object(coins1[0].coinObjectId), [0]);\n txb.mergeCoins(\n coin,\n coins1.map((c) => c.coinObjectId),\n );\n }\n return {\n tx: txb,\n coinOut: coin,\n };\n}\n\nconst depositCetus = async (\n amountA: string,\n amountB: string,\n poolName: PoolName,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n coin1Arg: TransactionObjectArgument | undefined,\n coin2Arg: TransactionObjectArgument | undefined,\n): Promise<Transaction> => {\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 = await getReceipts(poolName, address, true);\n\n amountA = (Number(amountA) * 0.999).toString();\n amountB = (Number(amountB) * 0.999).toString();\n let amounts = await getAmounts(poolName, true, amountA);\n if (amounts === undefined || amounts[0] > amountA || amounts[1] > amountB) {\n amounts = await getAmounts(poolName, false, amountB);\n }\n\n if (amounts && coin1Arg !== undefined && coin2Arg !== undefined) {\n const [depositCoinA] = txb.splitCoins(coin1Arg, [amounts[0]]);\n const [depositCoinB] = txb.splitCoins(coin2Arg, [amounts[1]]);\n\n let someReceipt: any;\n\n if (receipt.length == 0) {\n [someReceipt] = txb.moveCall({\n target: `0x1::option::none`,\n typeArguments: [poolInfo[poolName].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([coin1Arg, coin2Arg], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n return txb;\n};\n\nconst depositCetusAlphaSuiTxb = async (\n amountA: string,\n amountB: string,\n poolName: PoolName,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n coin1Arg: TransactionObjectArgument | undefined,\n coin2Arg: TransactionObjectArgument | undefined,\n): Promise<Transaction> => {\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 = await getReceipts(poolName, address, true);\n\n amountA = (Number(amountA) * 0.999).toString();\n amountB = (Number(amountB) * 0.999).toString();\n let amounts = await getAmounts(poolName, true, amountA);\n if (amounts === undefined || amounts[0] > amountA || amounts[1] > amountB) {\n amounts = await getAmounts(poolName, false, amountB);\n }\n\n if (amounts && coin1Arg != undefined && coin2Arg !== undefined) {\n const [depositCoinA] = txb.splitCoins(coin1Arg, [amounts[0]]);\n const [depositCoinB] = txb.splitCoins(coin2Arg, [amounts[1]]);\n\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: `${getConf().ALPHA_LATEST_PACKAGE_ID}::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(poolinfo.parentPoolId),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n txb.transferObjects([coin1Arg, coin2Arg], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n\n return txb;\n};\n\nconst depositCetusSuiTxb = async (\n amountA: string,\n amountB: string,\n poolName: PoolName,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n coin1Arg: TransactionObjectArgument | undefined,\n coin2Arg: TransactionObjectArgument | undefined,\n): Promise<Transaction> => {\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 = await getReceipts(poolName, address, true);\n\n amountA = (Number(amountA) * 0.999).toString();\n amountB = (Number(amountB) * 0.999).toString();\n let amounts = await getAmounts(poolName, true, amountA);\n if (amounts === undefined || amounts[0] > amountA || amounts[1] > amountB) {\n amounts = await getAmounts(poolName, false, amountB);\n }\n\n if (amounts && coin1Arg && coin2Arg) {\n const [depositCoinA] = txb.splitCoins(coin1Arg, [amounts[0]]);\n const [depositCoinB] = txb.splitCoins(coin2Arg, [amounts[1]]);\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([coin1Arg, coin2Arg], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n\n return txb;\n};\n\nconst depositBluefinSuiFirstTxb = async (\n amountA: string,\n amountB: string,\n poolName: PoolName,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n coin1Arg: TransactionObjectArgument | undefined,\n coin2Arg: TransactionObjectArgument | undefined,\n): Promise<Transaction> => {\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 = await getReceipts(poolName, address, true);\n\n amountA = (Number(amountA) * 0.999).toString();\n amountB = (Number(amountB) * 0.999).toString();\n let amounts = await getAmounts(poolName, true, amountA);\n if (amounts === undefined || amounts[0] > amountA || amounts[1] > amountB) {\n amounts = await getAmounts(poolName, false, amountB);\n }\n\n if (amounts && coin1Arg && coin2Arg) {\n const [depositCoinA] = txb.splitCoins(txb.gas, [amounts[0]]);\n const [depositCoinB] = txb.splitCoins(coin2Arg, [amounts[1]]);\n\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 if (poolName === \"BLUEFIN-SUI-USDC\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_sui_first_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_SUI_USDC_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"USDC-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-SUI-BUCK\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_sui_first_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_SUI_BUCK_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"BUCK-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-SUI-AUSD\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_sui_first_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_SUI_AUSD_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"AUSD-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n txb.transferObjects([coin1Arg, coin2Arg], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n\n return txb;\n};\n\nconst depositBluefinType1Txb = async (\n amountA: string,\n amountB: string,\n poolName: PoolName,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n coin1Arg: TransactionObjectArgument | undefined,\n coin2Arg: TransactionObjectArgument | undefined,\n): Promise<Transaction> => {\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 = await getReceipts(poolName, address, true);\n\n amountA = (Number(amountA) * 0.999).toString();\n amountB = (Number(amountB) * 0.999).toString();\n let amounts = await getAmounts(poolName, true, amountA);\n if (amounts === undefined || amounts[0] > amountA || amounts[1] > amountB) {\n amounts = await getAmounts(poolName, false, amountB);\n }\n\n if (amounts && coin1Arg && coin2Arg) {\n const [depositCoinA] = txb.splitCoins(coin1Arg, [amounts[0]]);\n const [depositCoinB] = txb.splitCoins(coin2Arg, [amounts[1]]);\n\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 if (poolName === \"BLUEFIN-USDT-USDC\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_type_1_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_USDT_USDC_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"USDC-USDT\"]),\n txb.object(cetusPoolMap[\"USDC-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-AUSD-USDC\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_type_1_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_AUSD_USDC_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"USDC-AUSD\"]),\n txb.object(cetusPoolMap[\"USDC-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-WBTC-USDC\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_type_1_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_WBTC_USDC_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"USDC-WBTC\"]),\n txb.object(cetusPoolMap[\"USDC-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-SEND-USDC\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_type_1_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_SEND_USDC_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"USDC-SEND\"]),\n txb.object(cetusPoolMap[\"USDC-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n txb.transferObjects([coin1Arg, coin2Arg], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n\n return txb;\n};\n\nconst depositBluefinType2Txb = async (\n amountA: string,\n amountB: string,\n poolName: PoolName,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n coin1Arg: TransactionObjectArgument | undefined,\n coin2Arg: TransactionObjectArgument | undefined,\n): Promise<Transaction> => {\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 = await getReceipts(poolName, address, true);\n\n amountA = (Number(amountA) * 0.999).toString();\n amountB = (Number(amountB) * 0.999).toString();\n let amounts = await getAmounts(poolName, true, amountA);\n if (amounts === undefined || amounts[0] > amountA || amounts[1] > amountB) {\n amounts = await getAmounts(poolName, false, amountB);\n }\n if (amounts && coin1Arg && coin2Arg) {\n const [depositCoinA] = txb.splitCoins(coin1Arg, [amounts[0]]);\n const [depositCoinB] = txb.splitCoins(coin2Arg, [amounts[1]]);\n\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 if (poolName === \"BLUEFIN-ALPHA-USDC\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_type_2_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_ALPHA_USDC_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"ALPHA-USDC\"]),\n txb.object(cetusPoolMap[\"USDC-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-NAVX-VSUI\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_type_2_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_NAVX_VSUI_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"NAVX-VSUI\"]),\n txb.object(cetusPoolMap[\"VSUI-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-BLUE-USDC\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_type_2_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"DEEP\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_BLUE_USDC_POOL),\n txb.object(getConf().BLUEFIN_DEEP_SUI_POOL),\n txb.object(cetusPoolMap[\"BLUE-USDC\"]),\n txb.object(cetusPoolMap[\"USDC-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n txb.transferObjects([coin1Arg, coin2Arg], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n\n return txb;\n};\n\nconst depositBluefinSuiSecondTxb = async (\n amountA: string,\n amountB: string,\n poolName: PoolName,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n coin1Arg: TransactionObjectArgument | undefined,\n coin2Arg: TransactionObjectArgument | undefined,\n): Promise<Transaction> => {\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 = await getReceipts(poolName, address, true);\n\n amountA = (Number(amountA) * 0.999).toString();\n amountB = (Number(amountB) * 0.999).toString();\n let amounts = await getAmounts(poolName, true, amountA);\n if (amounts === undefined || amounts[0] > amountA || amounts[1] > amountB) {\n amounts = await getAmounts(poolName, false, amountB);\n }\n if (amounts && coin1Arg && coin2Arg) {\n const [depositCoinA] = txb.splitCoins(coin1Arg, [amounts[0]]);\n const [depositCoinB] = txb.splitCoins(coin2Arg, [amounts[1]]);\n\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 if (poolName === \"BLUEFIN-BLUE-SUI\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_sui_second_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"DEEP\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL),\n txb.object(getConf().BLUEFIN_DEEP_SUI_POOL),\n txb.object(cetusPoolMap[\"BLUE-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-WBTC-SUI\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_sui_second_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_WBTC_SUI_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL),\n txb.object(cetusPoolMap[\"WBTC-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-DEEP-SUI\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_sui_second_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_DEEP_SUI_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL),\n txb.object(cetusPoolMap[\"DEEP-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-STSUI-SUI\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_stsui_sui_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().BLUEFIN_STSUI_SUI_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL),\n txb.object(getConf().LST_INFO),\n txb.object(getConf().SUI_SYSTEM_STATE),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n txb.transferObjects([coin1Arg, coin2Arg], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n return txb;\n};\n\nconst depositBluefinStsuiTxb = async (\n amountA: string,\n amountB: string,\n poolName: PoolName,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n coin1Arg: TransactionObjectArgument | undefined,\n coin2Arg: TransactionObjectArgument | undefined,\n): Promise<Transaction> => {\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 = await getReceipts(poolName, address, true);\n\n amountA = (Number(amountA) * 0.999).toString();\n amountB = (Number(amountB) * 0.999).toString();\n let amounts = await getAmounts(poolName, true, amountA);\n if (amounts === undefined || amounts[0] > amountA || amounts[1] > amountB) {\n amounts = await getAmounts(poolName, false, amountB);\n }\n if (amounts && coin1Arg && coin2Arg) {\n const [depositCoinA] = txb.splitCoins(coin1Arg, [amounts[0]]);\n const [depositCoinB] = txb.splitCoins(coin2Arg, [amounts[1]]);\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 if (poolName === \"BLUEFIN-STSUI-USDC\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_stsui_first_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_STSUI_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_STSUI_USDC_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"USDC-SUI\"]),\n txb.object(bluefinPoolMap[\"SUI-USDC\"]),\n txb.object(getConf().LST_INFO),\n txb.object(getConf().SUI_SYSTEM_STATE),\n txb.pure.bool(true),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-ALPHA-STSUI\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_stsui_second_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_STSUI_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_ALPHA_STSUI_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"ALPHA-SUI\"]),\n txb.object(bluefinPoolMap[\"SUI-ALPHA\"]),\n txb.object(getConf().LST_INFO),\n txb.object(getConf().SUI_SYSTEM_STATE),\n txb.pure.bool(false),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n txb.transferObjects([coin1Arg, coin2Arg], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n\n return txb;\n};\n\nexport async function getZapAmounts(\n inputCoinAmount: number,\n inputCoinName: CoinName,\n poolName: PoolName,\n slippage: number,\n options: { address: string },\n ignoreCache: boolean,\n): Promise<[string, string, string, string] | undefined> {\n const address = options.address;\n const coinTypeA = doubleAssetPoolCoinMap[poolName].coin1;\n const coinTypeB = doubleAssetPoolCoinMap[poolName].coin2;\n const swapObjectA = coinsList[coinTypeA];\n const swapObjectB = coinsList[coinTypeB];\n const inputObject = coinsList[inputCoinName];\n\n const amounts = await getAmounts(poolName, true, \"100000001\");\n if (amounts) {\n const amount1 = Number(amounts[0]);\n const amount2 = Number(amounts[1]);\n\n const swapGateway = new SevenKGateway();\n const swapOptions: SwapOptions = {\n pair: {\n coinA: swapObjectA,\n coinB: swapObjectB,\n },\n senderAddress: address,\n inAmount: new BN(amount1),\n slippage: slippage,\n };\n\n const ratioQuote = await swapGateway.getQuote(swapOptions);\n if (ratioQuote) {\n const amount1InCoinType2 = Number(ratioQuote.returnAmountWithDecimal);\n const totalAmount = amount2 + amount1InCoinType2;\n\n const inputAmountToType1 = Math.floor(\n (inputCoinAmount * amount1InCoinType2) / totalAmount,\n );\n const inputAmountToType2 = Math.floor(\n (inputCoinAmount * amount2) / totalAmount,\n );\n\n let amountA, amountB;\n const swapOptionsI2A = {\n pair: {\n coinA: inputObject,\n coinB: swapObjectA,\n },\n senderAddress: address,\n inAmount: new BN(inputAmountToType1),\n slippage: slippage,\n };\n const swapOptionsI2B = {\n pair: {\n coinA: inputObject,\n coinB: swapObjectB,\n },\n senderAddress: address,\n inAmount: new BN(inputAmountToType2),\n slippage: slippage,\n };\n if (inputCoinName === coinTypeA) {\n const quoteResponse = await swapGateway.getQuote(swapOptionsI2B);\n if (quoteResponse) {\n amountB = quoteResponse.returnAmountWithDecimal;\n }\n amountA = inputAmountToType1.toString();\n } else if (inputCoinName === coinTypeB) {\n const quoteResponse = await swapGateway.getQuote(swapOptionsI2A);\n if (quoteResponse) {\n amountA = quoteResponse.returnAmountWithDecimal;\n }\n amountB = inputAmountToType2.toString();\n } else {\n let quoteResponse = await swapGateway.getQuote(swapOptionsI2A);\n if (quoteResponse) {\n amountA = quoteResponse.returnAmountWithDecimal;\n }\n quoteResponse = await swapGateway.getQuote(swapOptionsI2B);\n if (quoteResponse) {\n amountB = quoteResponse.returnAmountWithDecimal;\n }\n }\n\n if (amountA && amountB) {\n const [coin1Price, coin2Price] = await getLatestPrices(\n [\n `${swapObjectA.name}/USD` as PythPriceIdPair,\n `${swapObjectB.name}/USD` as PythPriceIdPair,\n ],\n ignoreCache,\n );\n const coin1InUSD = Number(amountA) * Number(coin1Price);\n const coin2InUSD = Number(amountB) * Number(coin2Price);\n return [\n amountA.toString(),\n coin1InUSD.toString(),\n amountB.toString(),\n coin2InUSD.toString(),\n ];\n }\n }\n }\n}\n\n// export async function zapWithdraw(\n// amount: string,\n// poolName: PoolName,\n// outputCoinName: string,\n// options: { suiClient: SuiClient; address: string },\n// ) {\n// const suiClient = options.suiClient;\n// const address = options.address;\n// const txb = new Transaction();\n\n// const pool1 = doubleAssetPoolCoinMap[poolName].pool1;\n// const pool2 = doubleAssetPoolCoinMap[poolName].pool2;\n// }\n\n//calculate ratio of both coins in terms of coin-type 2\n//convert outputAmount in coinType2\n//then calculate coinType1 and coinType2 based on previous ratio\n//convert those amounts to liquidity\n//pass that liquidity into cetusWithdrawTxb\n//swap the amount withdrawn to outputAmountType.\n"]}
1
+ {"version":3,"file":"zapDeposit.js","sourceRoot":"","sources":["../../../src/transactions/zapDeposit.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Transaction,\n TransactionObjectArgument,\n} from \"@mysten/sui/transactions\";\nimport BN from \"bn.js\";\nimport { CoinStruct, SuiClient } from \"@mysten/sui/client\";\nimport { CoinName, PoolName, SwapOptions } from \"../common/types.js\";\nimport { getSuiClient } from \"../sui-sdk/client.js\";\nimport {\n bluefinPoolMap,\n cetusPoolMap,\n doubleAssetPoolCoinMap,\n poolInfo,\n} from \"../common/maps.js\";\nimport { coinsList } from \"../common/coins.js\";\nimport { getAmounts } from \"./deposit.js\";\nimport { SevenKGateway } from \"./7k.js\";\nimport { getConf } from \"../common/constants.js\";\nimport { getReceipts } from \"../sui-sdk/functions/getReceipts.js\";\nimport { getLatestPrices } from \"../utils/prices.js\";\nimport { PythPriceIdPair } from \"../common/pyth.js\";\nimport { mintTx, redeemTx, stSuiExchangeRate } from \"@alphafi/stsui-sdk\";\nimport { Decimal } from \"decimal.js\";\n\nexport async function zapDepositTxb(\n inputCoinName: CoinName,\n inputCoinAmount: number,\n poolName: PoolName,\n slippage: number, // 0.01 --> 1%, 0.001 --> 0.1%\n options: { address: string },\n): Promise<Transaction | undefined> {\n let txb = new Transaction();\n const suiClient = getSuiClient();\n const address = options.address;\n const coinTypeA = doubleAssetPoolCoinMap[poolName].coin1;\n const coinTypeB = doubleAssetPoolCoinMap[poolName].coin2;\n const swapObjectA = coinsList[coinTypeA];\n const swapObjectB = coinsList[coinTypeB];\n const inputObject = coinsList[inputCoinName];\n\n let coin1, coin2;\n\n const amounts = await getAmounts(poolName, true, \"100000001\");\n if (amounts) {\n const amount1 = Number(amounts[0]);\n const amount2 = Number(amounts[1]);\n\n const swapGateway = new SevenKGateway();\n const swapOptions: SwapOptions = {\n pair: {\n coinA: swapObjectA,\n coinB: swapObjectB,\n },\n senderAddress: address,\n inAmount: new BN(amount1),\n slippage: slippage,\n };\n\n const ratioQuote = await zapGetQuote(swapGateway, swapOptions);\n if (ratioQuote) {\n const amount1InCoinType2 = Number(ratioQuote);\n const totalAmount = amount2 + amount1InCoinType2;\n\n const inputAmountToType1 = Math.floor(\n (inputCoinAmount * amount1InCoinType2) / totalAmount,\n );\n const inputAmountToType2 = Math.floor(\n (inputCoinAmount * amount2) / totalAmount,\n );\n\n let amountA: string | undefined, amountB: string | undefined;\n const swapOptionsI2A = {\n pair: {\n coinA: inputObject,\n coinB: swapObjectA,\n },\n senderAddress: address,\n inAmount: new BN(inputAmountToType1),\n slippage: slippage,\n };\n const swapOptionsI2B = {\n pair: {\n coinA: inputObject,\n coinB: swapObjectB,\n },\n senderAddress: address,\n inAmount: new BN(inputAmountToType2),\n slippage: slippage,\n };\n\n if (inputCoinName === coinTypeA) {\n const result = await zapSwap(swapOptionsI2B, txb);\n if (result) {\n amountB = result.amountOut;\n txb = result.tx;\n if (result.coinOut) {\n coin2 = result.coinOut;\n }\n }\n\n amountA = inputAmountToType1.toString();\n if (result && result.remainingLSTCoin) {\n coin1 = result.remainingLSTCoin;\n } else {\n const res = await splitFromExisting(\n coinTypeA,\n amountA,\n txb,\n suiClient,\n address,\n );\n txb = res.tx;\n coin1 = res.coinOut;\n }\n } else if (inputCoinName === coinTypeB) {\n const result = await zapSwap(swapOptionsI2A, txb);\n if (result) {\n amountA = result.amountOut;\n txb = result.tx;\n if (result.coinOut) {\n coin1 = result.coinOut;\n }\n }\n\n if (result && result.remainingLSTCoin) {\n coin2 = result.remainingLSTCoin;\n } else {\n amountB = inputAmountToType2.toString();\n const res = await splitFromExisting(\n coinTypeB,\n amountB,\n txb,\n suiClient,\n address,\n );\n txb = res.tx;\n coin2 = res.coinOut;\n }\n } else {\n let result = await zapSwap(swapOptionsI2A, txb);\n if (result) {\n amountA = result.amountOut;\n txb = result.tx;\n if (result.coinOut) {\n coin1 = result.coinOut;\n }\n }\n\n result = await zapSwap(swapOptionsI2B, txb);\n if (result) {\n amountB = result.amountOut;\n txb = result.tx;\n if (result.coinOut) {\n coin2 = result.coinOut;\n }\n }\n }\n\n if (amountA && amountB && coin1 && coin2) {\n // fee charge\n const fee_address = getConf().FEE_ADDRESS;\n const feePercentage = 0.05;\n const amountAFee = ((Number(amountA) * feePercentage) / 100).toFixed(0);\n const amountBFee = ((Number(amountB) * feePercentage) / 100).toFixed(0);\n const [feeCoinA] = txb.splitCoins(coin1, [amountAFee]);\n const [feeCoinB] = txb.splitCoins(coin2, [amountBFee]);\n txb.transferObjects([feeCoinA, feeCoinB], fee_address);\n\n const pool1 = doubleAssetPoolCoinMap[poolName].coin1;\n const pool2 = doubleAssetPoolCoinMap[poolName].coin2;\n if (poolInfo[poolName].parentProtocolName === \"CETUS\") {\n if (pool1 === \"CETUS\" && pool2 === \"SUI\") {\n txb = await depositCetusSuiTxb(\n amountA,\n amountB,\n poolName,\n { address },\n txb,\n coin1,\n coin2,\n );\n } else if (pool2 === \"SUI\") {\n txb = await depositCetusAlphaSuiTxb(\n amountA,\n amountB,\n poolName,\n { address },\n txb,\n coin1,\n coin2,\n );\n } else {\n txb = await depositCetus(\n amountA,\n amountB,\n poolName,\n { address },\n txb,\n coin1,\n coin2,\n );\n }\n } else if (poolInfo[poolName].parentProtocolName === \"BLUEFIN\") {\n if (\n poolName === \"BLUEFIN-NAVX-VSUI\" ||\n poolName === \"BLUEFIN-ALPHA-USDC\" ||\n poolName === \"BLUEFIN-BLUE-USDC\"\n ) {\n txb = await depositBluefinType2Txb(\n amountA,\n amountB,\n poolName,\n { address },\n txb,\n coin1,\n coin2,\n );\n } else if (pool1 === \"SUI\") {\n txb = await depositBluefinSuiFirstTxb(\n amountA,\n amountB,\n poolName,\n { address },\n txb,\n coin1,\n coin2,\n );\n } else if (pool2 === \"SUI\") {\n txb = await depositBluefinSuiSecondTxb(\n amountA,\n amountB,\n poolName,\n { address },\n txb,\n coin1,\n coin2,\n );\n } else if (pool1 === \"STSUI\" || pool2 === \"STSUI\") {\n txb = await depositBluefinStsuiTxb(\n amountA,\n amountB,\n poolName,\n { address },\n txb,\n coin1,\n coin2,\n );\n } else {\n txb = await depositBluefinType1Txb(\n amountA,\n amountB,\n poolName,\n { address },\n txb,\n coin1,\n coin2,\n );\n }\n }\n }\n txb.setGasBudget(100000000);\n return txb;\n }\n }\n return undefined;\n}\n\nasync function zapGetQuote(\n swapGateway: SevenKGateway,\n swapOptions: SwapOptions,\n): Promise<string | undefined> {\n if (\n swapOptions.pair.coinA.name === \"SUI\" &&\n swapOptions.pair.coinB.name === \"STSUI\"\n ) {\n const exchangeRate = new Decimal(await stSuiExchangeRate());\n const amount = new Decimal(\n swapOptions.inAmount ? swapOptions.inAmount.toString() : \"0\",\n );\n return amount.div(exchangeRate).toString();\n } else if (\n swapOptions.pair.coinA.name === \"STSUI\" &&\n swapOptions.pair.coinB.name === \"SUI\"\n ) {\n const exchangeRate = new Decimal(await stSuiExchangeRate());\n const amount = new Decimal(\n swapOptions.inAmount ? swapOptions.inAmount.toString() : \"0\",\n );\n return amount.mul(exchangeRate).toString();\n } else {\n const quoteResponse = await swapGateway.getQuote(swapOptions);\n if (quoteResponse) {\n return quoteResponse.returnAmountWithDecimal\n ? quoteResponse.returnAmountWithDecimal\n : \"0\";\n }\n }\n}\n\nasync function zapSwap(\n swapOptions: SwapOptions,\n txb: Transaction,\n): Promise<\n | {\n tx: Transaction;\n coinOut: TransactionObjectArgument | undefined;\n remainingLSTCoin: TransactionObjectArgument | undefined;\n amountOut: string;\n }\n | undefined\n> {\n if (\n swapOptions.pair.coinA.name === \"SUI\" &&\n swapOptions.pair.coinB.name === \"STSUI\"\n ) {\n const result = await mintTx(\n swapOptions.inAmount ? swapOptions.inAmount.toString() : \"0\",\n txb,\n );\n return {\n tx: result.tx,\n coinOut: result.coinOut,\n amountOut: result.amountOut,\n remainingLSTCoin: undefined,\n };\n } else if (\n swapOptions.pair.coinA.name === \"STSUI\" &&\n swapOptions.pair.coinB.name === \"SUI\"\n ) {\n const result = await redeemTx(\n swapOptions.inAmount ? swapOptions.inAmount.toString() : \"0\",\n txb,\n { address: swapOptions.senderAddress },\n );\n return result;\n } else {\n const swapGateway = new SevenKGateway();\n const quoteResponse = await swapGateway.getQuote(swapOptions);\n if (quoteResponse) {\n const result = await swapGateway.getTransactionBlock(\n swapOptions,\n quoteResponse,\n txb,\n );\n return {\n tx: result.tx,\n coinOut: result.coinOut,\n amountOut: quoteResponse.returnAmountWithDecimal\n ? quoteResponse.returnAmountWithDecimal\n : \"0\",\n remainingLSTCoin: undefined,\n };\n }\n }\n}\n\nasync function splitFromExisting(\n coinType: CoinName,\n amount: string,\n txb: Transaction,\n suiClient: SuiClient,\n address: string,\n): Promise<{\n tx: Transaction;\n coinOut: TransactionObjectArgument;\n}> {\n let coin: TransactionObjectArgument;\n if (coinType === \"SUI\") {\n [coin] = txb.splitCoins(txb.gas, [amount]);\n } else {\n let currentCursor: string | null | undefined = null;\n let coins1: CoinStruct[] = [];\n do {\n const response = await suiClient.getCoins({\n owner: address,\n coinType: coinsList[coinType].type,\n cursor: currentCursor,\n });\n coins1 = coins1.concat(response.data);\n if (response.hasNextPage && response.nextCursor) {\n currentCursor = response.nextCursor;\n } else break;\n } while (true);\n [coin] = txb.splitCoins(txb.object(coins1[0].coinObjectId), [0]);\n txb.mergeCoins(\n coin,\n coins1.map((c) => c.coinObjectId),\n );\n }\n return {\n tx: txb,\n coinOut: coin,\n };\n}\n\nconst depositCetus = async (\n amountA: string,\n amountB: string,\n poolName: PoolName,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n coin1Arg: TransactionObjectArgument | undefined,\n coin2Arg: TransactionObjectArgument | undefined,\n): Promise<Transaction> => {\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 = await getReceipts(poolName, address, true);\n\n amountA = (Number(amountA) * 0.999).toString();\n amountB = (Number(amountB) * 0.999).toString();\n let amounts = await getAmounts(poolName, true, amountA);\n if (amounts === undefined || amounts[0] > amountA || amounts[1] > amountB) {\n amounts = await getAmounts(poolName, false, amountB);\n }\n\n if (amounts && coin1Arg !== undefined && coin2Arg !== undefined) {\n const [depositCoinA] = txb.splitCoins(coin1Arg, [amounts[0]]);\n const [depositCoinB] = txb.splitCoins(coin2Arg, [amounts[1]]);\n\n let someReceipt: any;\n\n if (receipt.length == 0) {\n [someReceipt] = txb.moveCall({\n target: `0x1::option::none`,\n typeArguments: [poolInfo[poolName].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([coin1Arg, coin2Arg], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n return txb;\n};\n\nconst depositCetusAlphaSuiTxb = async (\n amountA: string,\n amountB: string,\n poolName: PoolName,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n coin1Arg: TransactionObjectArgument | undefined,\n coin2Arg: TransactionObjectArgument | undefined,\n): Promise<Transaction> => {\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 = await getReceipts(poolName, address, true);\n\n amountA = (Number(amountA) * 0.999).toString();\n amountB = (Number(amountB) * 0.999).toString();\n let amounts = await getAmounts(poolName, true, amountA);\n if (amounts === undefined || amounts[0] > amountA || amounts[1] > amountB) {\n amounts = await getAmounts(poolName, false, amountB);\n }\n\n if (amounts && coin1Arg != undefined && coin2Arg !== undefined) {\n const [depositCoinA] = txb.splitCoins(coin1Arg, [amounts[0]]);\n const [depositCoinB] = txb.splitCoins(coin2Arg, [amounts[1]]);\n\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: `${getConf().ALPHA_LATEST_PACKAGE_ID}::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(poolinfo.parentPoolId),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n txb.transferObjects([coin1Arg, coin2Arg], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n\n return txb;\n};\n\nconst depositCetusSuiTxb = async (\n amountA: string,\n amountB: string,\n poolName: PoolName,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n coin1Arg: TransactionObjectArgument | undefined,\n coin2Arg: TransactionObjectArgument | undefined,\n): Promise<Transaction> => {\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 = await getReceipts(poolName, address, true);\n\n amountA = (Number(amountA) * 0.999).toString();\n amountB = (Number(amountB) * 0.999).toString();\n let amounts = await getAmounts(poolName, true, amountA);\n if (amounts === undefined || amounts[0] > amountA || amounts[1] > amountB) {\n amounts = await getAmounts(poolName, false, amountB);\n }\n\n if (amounts && coin1Arg && coin2Arg) {\n const [depositCoinA] = txb.splitCoins(coin1Arg, [amounts[0]]);\n const [depositCoinB] = txb.splitCoins(coin2Arg, [amounts[1]]);\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([coin1Arg, coin2Arg], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n\n return txb;\n};\n\nconst depositBluefinSuiFirstTxb = async (\n amountA: string,\n amountB: string,\n poolName: PoolName,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n coin1Arg: TransactionObjectArgument | undefined,\n coin2Arg: TransactionObjectArgument | undefined,\n): Promise<Transaction> => {\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 = await getReceipts(poolName, address, true);\n\n amountA = (Number(amountA) * 0.999).toString();\n amountB = (Number(amountB) * 0.999).toString();\n let amounts = await getAmounts(poolName, true, amountA);\n if (amounts === undefined || amounts[0] > amountA || amounts[1] > amountB) {\n amounts = await getAmounts(poolName, false, amountB);\n }\n\n if (amounts && coin1Arg && coin2Arg) {\n const [depositCoinA] = txb.splitCoins(txb.gas, [amounts[0]]);\n const [depositCoinB] = txb.splitCoins(coin2Arg, [amounts[1]]);\n\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 if (poolName === \"BLUEFIN-SUI-USDC\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_sui_first_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_SUI_USDC_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"USDC-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-SUI-BUCK\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_sui_first_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_SUI_BUCK_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"BUCK-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-SUI-AUSD\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_sui_first_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_SUI_AUSD_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"AUSD-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n txb.transferObjects([coin1Arg, coin2Arg], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n\n return txb;\n};\n\nconst depositBluefinType1Txb = async (\n amountA: string,\n amountB: string,\n poolName: PoolName,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n coin1Arg: TransactionObjectArgument | undefined,\n coin2Arg: TransactionObjectArgument | undefined,\n): Promise<Transaction> => {\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 = await getReceipts(poolName, address, true);\n\n amountA = (Number(amountA) * 0.999).toString();\n amountB = (Number(amountB) * 0.999).toString();\n let amounts = await getAmounts(poolName, true, amountA);\n if (amounts === undefined || amounts[0] > amountA || amounts[1] > amountB) {\n amounts = await getAmounts(poolName, false, amountB);\n }\n\n if (amounts && coin1Arg && coin2Arg) {\n const [depositCoinA] = txb.splitCoins(coin1Arg, [amounts[0]]);\n const [depositCoinB] = txb.splitCoins(coin2Arg, [amounts[1]]);\n\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 if (poolName === \"BLUEFIN-USDT-USDC\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_type_1_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_USDT_USDC_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"USDC-USDT\"]),\n txb.object(cetusPoolMap[\"USDC-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-AUSD-USDC\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_type_1_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_AUSD_USDC_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"USDC-AUSD\"]),\n txb.object(cetusPoolMap[\"USDC-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-WBTC-USDC\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_type_1_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_WBTC_USDC_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"USDC-WBTC\"]),\n txb.object(cetusPoolMap[\"USDC-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-SEND-USDC\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_type_1_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_SEND_USDC_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"USDC-SEND\"]),\n txb.object(cetusPoolMap[\"USDC-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n txb.transferObjects([coin1Arg, coin2Arg], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n\n return txb;\n};\n\nconst depositBluefinType2Txb = async (\n amountA: string,\n amountB: string,\n poolName: PoolName,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n coin1Arg: TransactionObjectArgument | undefined,\n coin2Arg: TransactionObjectArgument | undefined,\n): Promise<Transaction> => {\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 = await getReceipts(poolName, address, true);\n\n amountA = (Number(amountA) * 0.999).toString();\n amountB = (Number(amountB) * 0.999).toString();\n let amounts = await getAmounts(poolName, true, amountA);\n if (amounts === undefined || amounts[0] > amountA || amounts[1] > amountB) {\n amounts = await getAmounts(poolName, false, amountB);\n }\n if (amounts && coin1Arg && coin2Arg) {\n const [depositCoinA] = txb.splitCoins(coin1Arg, [amounts[0]]);\n const [depositCoinB] = txb.splitCoins(coin2Arg, [amounts[1]]);\n\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 if (poolName === \"BLUEFIN-ALPHA-USDC\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_type_2_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_ALPHA_USDC_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"ALPHA-USDC\"]),\n txb.object(cetusPoolMap[\"USDC-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-NAVX-VSUI\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_type_2_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_NAVX_VSUI_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"NAVX-VSUI\"]),\n txb.object(cetusPoolMap[\"VSUI-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-BLUE-USDC\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_type_2_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"DEEP\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_BLUE_USDC_POOL),\n txb.object(getConf().BLUEFIN_DEEP_SUI_POOL),\n txb.object(cetusPoolMap[\"BLUE-USDC\"]),\n txb.object(cetusPoolMap[\"USDC-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n txb.transferObjects([coin1Arg, coin2Arg], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n\n return txb;\n};\n\nconst depositBluefinSuiSecondTxb = async (\n amountA: string,\n amountB: string,\n poolName: PoolName,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n coin1Arg: TransactionObjectArgument | undefined,\n coin2Arg: TransactionObjectArgument | undefined,\n): Promise<Transaction> => {\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 = await getReceipts(poolName, address, true);\n\n amountA = (Number(amountA) * 0.999).toString();\n amountB = (Number(amountB) * 0.999).toString();\n let amounts = await getAmounts(poolName, true, amountA);\n if (amounts === undefined || amounts[0] > amountA || amounts[1] > amountB) {\n amounts = await getAmounts(poolName, false, amountB);\n }\n if (amounts && coin1Arg && coin2Arg) {\n const [depositCoinA] = txb.splitCoins(coin1Arg, [amounts[0]]);\n const [depositCoinB] = txb.splitCoins(coin2Arg, [amounts[1]]);\n\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 if (poolName === \"BLUEFIN-BLUE-SUI\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_sui_second_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"DEEP\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL),\n txb.object(getConf().BLUEFIN_DEEP_SUI_POOL),\n txb.object(cetusPoolMap[\"BLUE-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-WBTC-SUI\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_sui_second_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_WBTC_SUI_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL),\n txb.object(cetusPoolMap[\"WBTC-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-DEEP-SUI\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_sui_second_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n coinsList[\"SUI\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_DEEP_SUI_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL),\n txb.object(cetusPoolMap[\"DEEP-SUI\"]),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-STSUI-SUI\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_stsui_sui_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_4_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().BLUEFIN_STSUI_SUI_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL),\n txb.object(getConf().LST_INFO),\n txb.object(getConf().SUI_SYSTEM_STATE),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n txb.transferObjects([coin1Arg, coin2Arg], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n return txb;\n};\n\nconst depositBluefinStsuiTxb = async (\n amountA: string,\n amountB: string,\n poolName: PoolName,\n options: { address: string },\n transaction: Transaction | undefined = undefined,\n coin1Arg: TransactionObjectArgument | undefined,\n coin2Arg: TransactionObjectArgument | undefined,\n): Promise<Transaction> => {\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 = await getReceipts(poolName, address, true);\n\n amountA = (Number(amountA) * 0.999).toString();\n amountB = (Number(amountB) * 0.999).toString();\n let amounts = await getAmounts(poolName, true, amountA);\n if (amounts === undefined || amounts[0] > amountA || amounts[1] > amountB) {\n amounts = await getAmounts(poolName, false, amountB);\n }\n if (amounts && coin1Arg && coin2Arg) {\n const [depositCoinA] = txb.splitCoins(coin1Arg, [amounts[0]]);\n const [depositCoinB] = txb.splitCoins(coin2Arg, [amounts[1]]);\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 if (poolName === \"BLUEFIN-STSUI-USDC\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_stsui_first_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_STSUI_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_STSUI_USDC_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"USDC-SUI\"]),\n txb.object(bluefinPoolMap[\"SUI-USDC\"]),\n txb.object(getConf().LST_INFO),\n txb.object(getConf().SUI_SYSTEM_STATE),\n txb.pure.bool(true),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n } else if (poolName === \"BLUEFIN-ALPHA-STSUI\") {\n txb.moveCall({\n target: `${poolinfo.packageId}::alphafi_bluefin_stsui_second_pool::user_deposit`,\n typeArguments: [\n coinsList[pool1].type,\n coinsList[pool2].type,\n coinsList[\"BLUE\"].type,\n ],\n arguments: [\n txb.object(getConf().ALPHA_STSUI_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().BLUEFIN_GLOBAL_CONFIG),\n txb.object(getConf().CETUS_GLOBAL_CONFIG_ID),\n txb.object(getConf().BLUEFIN_ALPHA_STSUI_POOL),\n txb.object(getConf().BLUEFIN_BLUE_SUI_POOL_AUTOCOMPOUND),\n txb.object(cetusPoolMap[\"ALPHA-SUI\"]),\n txb.object(bluefinPoolMap[\"SUI-ALPHA\"]),\n txb.object(getConf().LST_INFO),\n txb.object(getConf().SUI_SYSTEM_STATE),\n txb.pure.bool(false),\n txb.object(getConf().CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n txb.transferObjects([coin1Arg, coin2Arg], address);\n } else {\n throw new Error(`No ${pool1} or ${pool2} Coins`);\n }\n\n return txb;\n};\n\nexport async function getZapAmounts(\n inputCoinAmount: number,\n inputCoinName: CoinName,\n poolName: PoolName,\n slippage: number,\n options: { address: string },\n ignoreCache: boolean,\n): Promise<[string, string, string, string] | undefined> {\n const address = options.address;\n const coinTypeA = doubleAssetPoolCoinMap[poolName].coin1;\n const coinTypeB = doubleAssetPoolCoinMap[poolName].coin2;\n const swapObjectA = coinsList[coinTypeA];\n const swapObjectB = coinsList[coinTypeB];\n const inputObject = coinsList[inputCoinName];\n\n const amounts = await getAmounts(poolName, true, \"100000001\");\n if (amounts) {\n const amount1 = Number(amounts[0]);\n const amount2 = Number(amounts[1]);\n\n const swapGateway = new SevenKGateway();\n const swapOptions: SwapOptions = {\n pair: {\n coinA: swapObjectA,\n coinB: swapObjectB,\n },\n senderAddress: address,\n inAmount: new BN(amount1),\n slippage: slippage,\n };\n\n const ratioQuote = await zapGetQuote(swapGateway, swapOptions);\n if (ratioQuote) {\n const amount1InCoinType2 = Number(ratioQuote);\n const totalAmount = amount2 + amount1InCoinType2;\n\n const inputAmountToType1 = Math.floor(\n (inputCoinAmount * amount1InCoinType2) / totalAmount,\n );\n const inputAmountToType2 = Math.floor(\n (inputCoinAmount * amount2) / totalAmount,\n );\n\n let amountA: string | undefined, amountB: string | undefined;\n const swapOptionsI2A = {\n pair: {\n coinA: inputObject,\n coinB: swapObjectA,\n },\n senderAddress: address,\n inAmount: new BN(inputAmountToType1),\n slippage: slippage,\n };\n const swapOptionsI2B = {\n pair: {\n coinA: inputObject,\n coinB: swapObjectB,\n },\n senderAddress: address,\n inAmount: new BN(inputAmountToType2),\n slippage: slippage,\n };\n if (inputCoinName === coinTypeA) {\n amountB = await zapGetQuote(swapGateway, swapOptionsI2B);\n amountA = inputAmountToType1.toString();\n } else if (inputCoinName === coinTypeB) {\n amountA = await zapGetQuote(swapGateway, swapOptionsI2A);\n amountB = inputAmountToType2.toString();\n } else {\n amountA = await zapGetQuote(swapGateway, swapOptionsI2A);\n amountB = await zapGetQuote(swapGateway, swapOptionsI2B);\n }\n\n if (amountA && amountB) {\n const [coin1Price, coin2Price] = await getLatestPrices(\n [\n `${swapObjectA.name}/USD` as PythPriceIdPair,\n `${swapObjectB.name}/USD` as PythPriceIdPair,\n ],\n ignoreCache,\n );\n const coin1InUSD = Number(amountA) * Number(coin1Price);\n const coin2InUSD = Number(amountB) * Number(coin2Price);\n return [\n amountA.toString(),\n coin1InUSD.toString(),\n amountB.toString(),\n coin2InUSD.toString(),\n ];\n }\n }\n }\n}\n\n// export async function zapWithdraw(\n// amount: string,\n// poolName: PoolName,\n// outputCoinName: string,\n// options: { suiClient: SuiClient; address: string },\n// ) {\n// const suiClient = options.suiClient;\n// const address = options.address;\n// const txb = new Transaction();\n\n// const pool1 = doubleAssetPoolCoinMap[poolName].pool1;\n// const pool2 = doubleAssetPoolCoinMap[poolName].pool2;\n// }\n\n//calculate ratio of both coins in terms of coin-type 2\n//convert outputAmount in coinType2\n//then calculate coinType1 and coinType2 based on previous ratio\n//convert those amounts to liquidity\n//pass that liquidity into cetusWithdrawTxb\n//swap the amount withdrawn to outputAmountType.\n"]}
@@ -1,6 +1,7 @@
1
- import { PoolName } from "./common/types.js";
1
+ import { PoolName, PoolWeightDistribution, CoinName } from "./common/types.js";
2
2
  export declare function getCurrentTick(poolName: PoolName): Promise<string>;
3
3
  export declare function getPositionTicks(poolName: PoolName): Promise<string[]>;
4
4
  export declare function getTickToPrice(poolName: PoolName, tick: string): Promise<string>;
5
5
  export declare function getPriceToTick(poolName: PoolName, price: string): Promise<string>;
6
+ export declare function getPoolsWeightDistribution(coinTypetoSetWeight: CoinName, ignoreCache: boolean): Promise<PoolWeightDistribution>;
6
7
  //# sourceMappingURL=adminFunctions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adminFunctions.d.ts","sourceRoot":"","sources":["../../src/adminFunctions.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAO3B,wBAAsB,cAAc,CAAC,QAAQ,EAAE,QAAQ,mBAKtD;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,qBAaxD;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,mBAOpE;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAsBrE"}
1
+ {"version":3,"file":"adminFunctions.d.ts","sourceRoot":"","sources":["../../src/adminFunctions.ts"],"names":[],"mappings":"AACA,OAAO,EAQL,QAAQ,EACR,sBAAsB,EACtB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAe3B,wBAAsB,cAAc,CAAC,QAAQ,EAAE,QAAQ,mBAKtD;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,qBAaxD;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,mBAOpE;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAsBrE;AAED,wBAAsB,0BAA0B,CAC9C,mBAAmB,EAAE,QAAQ,EAC7B,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,sBAAsB,CAAC,CAuDjC"}
@@ -1,8 +1,8 @@
1
1
  import { TickMath } from "@cetusprotocol/cetus-sui-clmm-sdk";
2
- import { getInvestor, getParentPool } from "./sui-sdk/functions/getReceipts.js";
2
+ import { getDistributor, getInvestor, getParentPool, } from "./sui-sdk/functions/getReceipts.js";
3
3
  import BN from "bn.js";
4
4
  import { coinsList } from "./common/coins.js";
5
- import { doubleAssetPoolCoinMap, poolInfo } from "./common/maps.js";
5
+ import { doubleAssetPoolCoinMap, poolIdPoolNameMap, poolInfo, } from "./common/maps.js";
6
6
  import { Decimal } from "decimal.js";
7
7
  export async function getCurrentTick(poolName) {
8
8
  const parentPool = await getParentPool(poolName, false);
@@ -50,4 +50,50 @@ export async function getPriceToTick(poolName, price) {
50
50
  const tick = TickMath.priceToInitializableTickIndex(priceDecimal, coinA.expo, coinB.expo, tickSpacing);
51
51
  return tick.toString();
52
52
  }
53
+ export async function getPoolsWeightDistribution(coinTypetoSetWeight, ignoreCache) {
54
+ const distributor = await getDistributor(ignoreCache);
55
+ if (!distributor || !distributor.content.fields.pool_allocator) {
56
+ throw new Error("Distributor or pool allocator not found");
57
+ }
58
+ const allocator = distributor.content.fields.pool_allocator;
59
+ const members = allocator.fields.members.fields.contents;
60
+ const totalWeightArr = allocator.fields.total_weights.fields.contents;
61
+ let totalWeight = 0;
62
+ totalWeightArr.forEach((entry) => {
63
+ if (entry.fields.key.fields.name ===
64
+ coinsList[coinTypetoSetWeight].type.substring(2)) {
65
+ totalWeight = Number(entry.fields.value);
66
+ }
67
+ });
68
+ const poolIdmap = poolIdPoolNameMap;
69
+ const poolDataArray = [];
70
+ for (const member of members) {
71
+ const poolId = member.fields.key;
72
+ const poolName = poolIdmap[poolId];
73
+ if (!poolInfo[poolName]) {
74
+ continue;
75
+ }
76
+ const imageUrl = poolInfo[poolName].imageUrl;
77
+ let weight = 0;
78
+ if (member.fields.value.fields) {
79
+ const poolData = member.fields.value.fields.pool_data.fields.contents;
80
+ poolData.forEach((entry) => {
81
+ if (entry.fields.key.fields.name ===
82
+ coinsList[coinTypetoSetWeight].type.substring(2)) {
83
+ weight = Number(entry.fields.value.fields.weight);
84
+ }
85
+ });
86
+ }
87
+ poolDataArray.push({
88
+ weight: weight,
89
+ imageUrl: imageUrl,
90
+ poolName: poolName,
91
+ });
92
+ }
93
+ return {
94
+ data: poolDataArray,
95
+ totalWeight: totalWeight,
96
+ coinType: coinTypetoSetWeight,
97
+ };
98
+ }
53
99
  //# sourceMappingURL=adminFunctions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adminFunctions.js","sourceRoot":"","sources":["../../src/adminFunctions.ts"],"names":[],"mappings":"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","sourcesContent":["import { TickMath } from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport {\n BluefinPoolType,\n CetusInvestor,\n CetusPoolType,\n CommonInvestorFields,\n PoolName,\n} from \"./common/types.js\";\nimport { getInvestor, getParentPool } from \"./sui-sdk/functions/getReceipts.js\";\nimport BN from \"bn.js\";\nimport { coinsList } from \"./common/coins.js\";\nimport { doubleAssetPoolCoinMap, poolInfo } from \"./common/maps.js\";\nimport { Decimal } from \"decimal.js\";\n\nexport async function getCurrentTick(poolName: PoolName) {\n const parentPool = await getParentPool(poolName, false);\n const current_sqrt_price = parentPool.content.fields.current_sqrt_price;\n const tick = TickMath.sqrtPriceX64ToTickIndex(new BN(current_sqrt_price));\n return tick.toString();\n}\n\nexport async function getPositionTicks(poolName: PoolName) {\n const upperBound = 443636;\n const investor = (await getInvestor(poolName, false)) as CetusInvestor &\n CommonInvestorFields;\n let lowerTick = Number(investor.content.fields.lower_tick);\n let upperTick = Number(investor.content.fields.upper_tick);\n if (lowerTick > upperBound) {\n lowerTick = -~(lowerTick - 1);\n }\n if (upperTick > upperBound) {\n upperTick = -~(upperTick - 1);\n }\n return [lowerTick.toString(), upperTick.toString()];\n}\n\nexport async function getTickToPrice(poolName: PoolName, tick: string) {\n const coinAName = doubleAssetPoolCoinMap[poolName].coin1;\n const coinA = coinsList[coinAName];\n const coinBName = doubleAssetPoolCoinMap[poolName].coin2;\n const coinB = coinsList[coinBName];\n const price = TickMath.tickIndexToPrice(Number(tick), coinA.expo, coinB.expo);\n return price.toString();\n}\n\nexport async function getPriceToTick(poolName: PoolName, price: string) {\n const coinAName = doubleAssetPoolCoinMap[poolName].coin1;\n const coinA = coinsList[coinAName];\n const coinBName = doubleAssetPoolCoinMap[poolName].coin2;\n const coinB = coinsList[coinBName];\n const parentPool = await getParentPool(poolName, false);\n console.log(parentPool.content.fields);\n let tickSpacing = 1;\n if (poolInfo[poolName].parentProtocolName === \"CETUS\") {\n tickSpacing = (parentPool as CetusPoolType).content.fields.tick_spacing;\n } else if (poolInfo[poolName].parentProtocolName === \"BLUEFIN\") {\n tickSpacing = (parentPool as BluefinPoolType).content.fields.ticks_manager\n .fields.tick_spacing;\n }\n const priceDecimal = new Decimal(price);\n const tick = TickMath.priceToInitializableTickIndex(\n priceDecimal,\n coinA.expo,\n coinB.expo,\n tickSpacing,\n );\n return tick.toString();\n}\n"]}
1
+ {"version":3,"file":"adminFunctions.js","sourceRoot":"","sources":["../../src/adminFunctions.ts"],"names":[],"mappings":"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","sourcesContent":["import { TickMath } from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport {\n Allocator,\n BluefinPoolType,\n CetusInvestor,\n CetusPoolType,\n CommonInvestorFields,\n MemberType,\n PoolData,\n PoolName,\n PoolWeightDistribution,\n CoinName,\n} from \"./common/types.js\";\nimport {\n getDistributor,\n getInvestor,\n getParentPool,\n} from \"./sui-sdk/functions/getReceipts.js\";\nimport BN from \"bn.js\";\nimport { coinsList } from \"./common/coins.js\";\nimport {\n doubleAssetPoolCoinMap,\n poolIdPoolNameMap,\n poolInfo,\n} from \"./common/maps.js\";\nimport { Decimal } from \"decimal.js\";\n\nexport async function getCurrentTick(poolName: PoolName) {\n const parentPool = await getParentPool(poolName, false);\n const current_sqrt_price = parentPool.content.fields.current_sqrt_price;\n const tick = TickMath.sqrtPriceX64ToTickIndex(new BN(current_sqrt_price));\n return tick.toString();\n}\n\nexport async function getPositionTicks(poolName: PoolName) {\n const upperBound = 443636;\n const investor = (await getInvestor(poolName, false)) as CetusInvestor &\n CommonInvestorFields;\n let lowerTick = Number(investor.content.fields.lower_tick);\n let upperTick = Number(investor.content.fields.upper_tick);\n if (lowerTick > upperBound) {\n lowerTick = -~(lowerTick - 1);\n }\n if (upperTick > upperBound) {\n upperTick = -~(upperTick - 1);\n }\n return [lowerTick.toString(), upperTick.toString()];\n}\n\nexport async function getTickToPrice(poolName: PoolName, tick: string) {\n const coinAName = doubleAssetPoolCoinMap[poolName].coin1;\n const coinA = coinsList[coinAName];\n const coinBName = doubleAssetPoolCoinMap[poolName].coin2;\n const coinB = coinsList[coinBName];\n const price = TickMath.tickIndexToPrice(Number(tick), coinA.expo, coinB.expo);\n return price.toString();\n}\n\nexport async function getPriceToTick(poolName: PoolName, price: string) {\n const coinAName = doubleAssetPoolCoinMap[poolName].coin1;\n const coinA = coinsList[coinAName];\n const coinBName = doubleAssetPoolCoinMap[poolName].coin2;\n const coinB = coinsList[coinBName];\n const parentPool = await getParentPool(poolName, false);\n console.log(parentPool.content.fields);\n let tickSpacing = 1;\n if (poolInfo[poolName].parentProtocolName === \"CETUS\") {\n tickSpacing = (parentPool as CetusPoolType).content.fields.tick_spacing;\n } else if (poolInfo[poolName].parentProtocolName === \"BLUEFIN\") {\n tickSpacing = (parentPool as BluefinPoolType).content.fields.ticks_manager\n .fields.tick_spacing;\n }\n const priceDecimal = new Decimal(price);\n const tick = TickMath.priceToInitializableTickIndex(\n priceDecimal,\n coinA.expo,\n coinB.expo,\n tickSpacing,\n );\n return tick.toString();\n}\n\nexport async function getPoolsWeightDistribution(\n coinTypetoSetWeight: CoinName,\n ignoreCache: boolean,\n): Promise<PoolWeightDistribution> {\n const distributor = await getDistributor(ignoreCache);\n if (!distributor || !distributor.content.fields.pool_allocator) {\n throw new Error(\"Distributor or pool allocator not found\");\n }\n const allocator: Allocator = distributor.content.fields.pool_allocator;\n const members: MemberType[] = allocator.fields.members.fields.contents;\n\n const totalWeightArr = allocator.fields.total_weights.fields.contents;\n let totalWeight = 0;\n totalWeightArr.forEach((entry) => {\n if (\n entry.fields.key.fields.name ===\n coinsList[coinTypetoSetWeight].type.substring(2)\n ) {\n totalWeight = Number(entry.fields.value);\n }\n });\n\n const poolIdmap = poolIdPoolNameMap;\n\n const poolDataArray: PoolData[] = [];\n\n for (const member of members) {\n const poolId = member.fields.key;\n const poolName = poolIdmap[poolId];\n if (!poolInfo[poolName]) {\n continue;\n }\n const imageUrl = poolInfo[poolName].imageUrl;\n\n let weight = 0;\n if (member.fields.value.fields) {\n const poolData = member.fields.value.fields.pool_data.fields.contents;\n poolData.forEach((entry) => {\n if (\n entry.fields.key.fields.name ===\n coinsList[coinTypetoSetWeight].type.substring(2)\n ) {\n weight = Number(entry.fields.value.fields.weight);\n }\n });\n }\n\n poolDataArray.push({\n weight: weight,\n imageUrl: imageUrl,\n poolName: poolName,\n });\n }\n return {\n data: poolDataArray,\n totalWeight: totalWeight,\n coinType: coinTypetoSetWeight,\n };\n}\n"]}
@@ -47,6 +47,7 @@ export declare const poolInfo: {
47
47
  afterTransactionEventType?: string;
48
48
  strategyType?: StrategyType;
49
49
  checkRatioEventType?: string;
50
+ imageUrl?: string | undefined;
50
51
  };
51
52
  };
52
53
  export declare function coinsInPool(poolName: DoubleAssetPoolNames, event?: {
@@ -1 +1 @@
1
- {"version":3,"file":"maps.d.ts","sourceRoot":"","sources":["../../../src/common/maps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"maps.d.ts","sourceRoot":"","sources":["../../../src/common/maps.ts"],"names":[],"mappings":"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"}