@alphafi/alphafi-sdk 1.0.0 → 1.0.1

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 (97) hide show
  1. package/dist/cjs/core/index.js +1 -1
  2. package/dist/cjs/core/index.js.map +1 -1
  3. package/dist/cjs/core/types.d.ts +2 -0
  4. package/dist/cjs/core/types.d.ts.map +1 -1
  5. package/dist/cjs/core/types.js.map +1 -1
  6. package/dist/cjs/models/strategyContext.d.ts +2 -1
  7. package/dist/cjs/models/strategyContext.d.ts.map +1 -1
  8. package/dist/cjs/models/strategyContext.js +9 -9
  9. package/dist/cjs/models/strategyContext.js.map +1 -1
  10. package/dist/cjs/models/types.d.ts +6 -0
  11. package/dist/cjs/models/types.d.ts.map +1 -1
  12. package/dist/cjs/models/types.js.map +1 -1
  13. package/dist/cjs/strategies/alphaVault.d.ts.map +1 -1
  14. package/dist/cjs/strategies/alphaVault.js +2 -0
  15. package/dist/cjs/strategies/alphaVault.js.map +1 -1
  16. package/dist/cjs/strategies/autobalanceLp.d.ts.map +1 -1
  17. package/dist/cjs/strategies/autobalanceLp.js +3 -0
  18. package/dist/cjs/strategies/autobalanceLp.js.map +1 -1
  19. package/dist/cjs/strategies/fungibleLending.d.ts.map +1 -1
  20. package/dist/cjs/strategies/fungibleLending.js +2 -0
  21. package/dist/cjs/strategies/fungibleLending.js.map +1 -1
  22. package/dist/cjs/strategies/fungibleLp.d.ts.map +1 -1
  23. package/dist/cjs/strategies/fungibleLp.js +5 -2
  24. package/dist/cjs/strategies/fungibleLp.js.map +1 -1
  25. package/dist/cjs/strategies/lending.d.ts.map +1 -1
  26. package/dist/cjs/strategies/lending.js +5 -2
  27. package/dist/cjs/strategies/lending.js.map +1 -1
  28. package/dist/cjs/strategies/looping.d.ts.map +1 -1
  29. package/dist/cjs/strategies/looping.js +3 -2
  30. package/dist/cjs/strategies/looping.js.map +1 -1
  31. package/dist/cjs/strategies/lp.d.ts.map +1 -1
  32. package/dist/cjs/strategies/lp.js +3 -0
  33. package/dist/cjs/strategies/lp.js.map +1 -1
  34. package/dist/cjs/strategies/lyf.d.ts.map +1 -1
  35. package/dist/cjs/strategies/lyf.js +3 -0
  36. package/dist/cjs/strategies/lyf.js.map +1 -1
  37. package/dist/cjs/strategies/singleAssetLooping.d.ts.map +1 -1
  38. package/dist/cjs/strategies/singleAssetLooping.js +2 -0
  39. package/dist/cjs/strategies/singleAssetLooping.js.map +1 -1
  40. package/dist/cjs/strategies/slushLending.d.ts.map +1 -1
  41. package/dist/cjs/strategies/slushLending.js +2 -0
  42. package/dist/cjs/strategies/slushLending.js.map +1 -1
  43. package/dist/cjs/utils/constants.d.ts +1 -0
  44. package/dist/cjs/utils/constants.d.ts.map +1 -1
  45. package/dist/cjs/utils/constants.js +2 -1
  46. package/dist/cjs/utils/constants.js.map +1 -1
  47. package/dist/cjs/utils/testing-pools.js +4 -4
  48. package/dist/cjs/utils/testing-pools.js.map +1 -1
  49. package/dist/esm/core/index.js +1 -1
  50. package/dist/esm/core/index.js.map +1 -1
  51. package/dist/esm/core/types.d.ts +2 -0
  52. package/dist/esm/core/types.d.ts.map +1 -1
  53. package/dist/esm/core/types.js.map +1 -1
  54. package/dist/esm/models/strategyContext.d.ts +2 -1
  55. package/dist/esm/models/strategyContext.d.ts.map +1 -1
  56. package/dist/esm/models/strategyContext.js +9 -9
  57. package/dist/esm/models/strategyContext.js.map +1 -1
  58. package/dist/esm/models/types.d.ts +6 -0
  59. package/dist/esm/models/types.d.ts.map +1 -1
  60. package/dist/esm/models/types.js.map +1 -1
  61. package/dist/esm/strategies/alphaVault.d.ts.map +1 -1
  62. package/dist/esm/strategies/alphaVault.js +2 -0
  63. package/dist/esm/strategies/alphaVault.js.map +1 -1
  64. package/dist/esm/strategies/autobalanceLp.d.ts.map +1 -1
  65. package/dist/esm/strategies/autobalanceLp.js +3 -0
  66. package/dist/esm/strategies/autobalanceLp.js.map +1 -1
  67. package/dist/esm/strategies/fungibleLending.d.ts.map +1 -1
  68. package/dist/esm/strategies/fungibleLending.js +2 -0
  69. package/dist/esm/strategies/fungibleLending.js.map +1 -1
  70. package/dist/esm/strategies/fungibleLp.d.ts.map +1 -1
  71. package/dist/esm/strategies/fungibleLp.js +5 -2
  72. package/dist/esm/strategies/fungibleLp.js.map +1 -1
  73. package/dist/esm/strategies/lending.d.ts.map +1 -1
  74. package/dist/esm/strategies/lending.js +5 -2
  75. package/dist/esm/strategies/lending.js.map +1 -1
  76. package/dist/esm/strategies/looping.d.ts.map +1 -1
  77. package/dist/esm/strategies/looping.js +3 -2
  78. package/dist/esm/strategies/looping.js.map +1 -1
  79. package/dist/esm/strategies/lp.d.ts.map +1 -1
  80. package/dist/esm/strategies/lp.js +3 -0
  81. package/dist/esm/strategies/lp.js.map +1 -1
  82. package/dist/esm/strategies/lyf.d.ts.map +1 -1
  83. package/dist/esm/strategies/lyf.js +3 -0
  84. package/dist/esm/strategies/lyf.js.map +1 -1
  85. package/dist/esm/strategies/singleAssetLooping.d.ts.map +1 -1
  86. package/dist/esm/strategies/singleAssetLooping.js +2 -0
  87. package/dist/esm/strategies/singleAssetLooping.js.map +1 -1
  88. package/dist/esm/strategies/slushLending.d.ts.map +1 -1
  89. package/dist/esm/strategies/slushLending.js +2 -0
  90. package/dist/esm/strategies/slushLending.js.map +1 -1
  91. package/dist/esm/utils/constants.d.ts +1 -0
  92. package/dist/esm/utils/constants.d.ts.map +1 -1
  93. package/dist/esm/utils/constants.js +2 -1
  94. package/dist/esm/utils/constants.js.map +1 -1
  95. package/dist/esm/utils/testing-pools.js +4 -4
  96. package/dist/esm/utils/testing-pools.js.map +1 -1
  97. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"autobalanceLp.js","sourceRoot":"","sources":["../../../src/strategies/autobalanceLp.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * AutobalanceLp Strategy\n */\n\nimport { Decimal } from 'decimal.js';\nimport { AlphaMiningData, BaseStrategy, StringMap, ProtocolType } from './strategy.js';\nimport { PoolData, DoubleTvl, PoolBalance } from '../models/types.js';\nimport { StrategyContext } from '../models/strategyContext.js';\nimport BN from 'bn.js';\nimport { ClmmPoolUtil, LiquidityInput, TickMath } from '@cetusprotocol/cetus-sui-clmm-sdk';\nimport { DepositOptions, WithdrawOptions } from '../core/types.js';\nimport { Transaction, TransactionResult } from '@mysten/sui/transactions';\nimport {\n GLOBAL_CONFIGS,\n CLOCK_PACKAGE_ID,\n DISTRIBUTOR_OBJECT_ID,\n VERSIONS,\n} from '../utils/constants.js';\n\n/**\n * AutobalanceLp Strategy for dual-asset liquidity pools with automatic rebalancing\n */\nexport class AutobalanceLpStrategy extends BaseStrategy<\n AutobalanceLpPoolObject,\n AutobalanceLpInvestorObject,\n AutobalanceLpParentPoolObject,\n AutobalanceLpReceiptObject\n> {\n private poolLabel: AutobalanceLpPoolLabel;\n private poolObject: AutobalanceLpPoolObject;\n private investorObject: AutobalanceLpInvestorObject;\n private parentPoolObject: AutobalanceLpParentPoolObject;\n private receiptObjects: AutobalanceLpReceiptObject[] = [];\n private context: StrategyContext;\n\n constructor(\n poolLabel: AutobalanceLpPoolLabel,\n poolObject: any,\n investorObject: any,\n parentPoolObject: any,\n context: StrategyContext,\n ) {\n super();\n this.poolLabel = poolLabel;\n this.poolObject = this.parsePoolObject(poolObject);\n this.investorObject = this.parseInvestorObject(investorObject);\n this.parentPoolObject = this.parseParentPoolObject(parentPoolObject);\n this.context = context;\n }\n\n getPoolLabel(): AutobalanceLpPoolLabel {\n return this.poolLabel;\n }\n\n updateReceipts(receipts: any[]): void {\n this.receiptObjects = this.parseReceiptObjects(receipts);\n }\n\n /**\n * Returns alpha mining data - AutobalanceLp pools do not support alpha mining\n */\n protected getAlphaMiningData(): AlphaMiningData {\n return {\n poolId: this.poolLabel.poolId,\n accRewardsPerXtoken: [],\n xTokenSupply: '0',\n receipt: null,\n };\n }\n\n /**\n * Get the exchange rate for xtoken to underlying token ratio\n * Calculated as tokens_invested / xtoken_supply\n */\n exchangeRate(): Decimal {\n const tokensInvested = new Decimal(this.poolObject.tokensInvested);\n const xtokenSupply = new Decimal(this.poolObject.xTokenSupply);\n\n if (xtokenSupply.isZero()) {\n return new Decimal(1); // Default exchange rate when no tokens are supplied\n }\n\n return tokensInvested.div(xtokenSupply);\n }\n\n /**\n * Get comprehensive pool data including TVL, LP breakdown, price, and position range\n */\n async getData(): Promise<PoolData> {\n const [\n alphafi,\n parent,\n lpBreakdown,\n parentLpBreakdown,\n currentLPPoolPrice,\n positionRange,\n apr,\n ] = await Promise.all([\n this.getTvl(),\n this.getParentTvl(),\n this.getLpBreakdown(),\n this.getParentLpBreakdown(),\n this.getCurrentLPPoolPrice(),\n this.getPositionRange(),\n this.context.getAprData(this.poolLabel.poolId),\n ]);\n return {\n poolId: this.poolLabel.poolId,\n poolName: this.poolLabel.poolName,\n apr,\n tvl: {\n alphafi,\n parent,\n },\n lpBreakdown,\n parentLpBreakdown,\n currentLPPoolPrice,\n positionRange,\n };\n }\n\n /**\n * Calculate total value locked using current asset prices and token amounts\n */\n async getTvl(): Promise<DoubleTvl> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const priceA = await this.context.getCoinPrice(coinTypeA);\n const priceB = await this.context.getCoinPrice(coinTypeB);\n const { amountA, amountB } = await this.getTokenAmounts(this.poolObject.tokensInvested);\n const usdValue = amountA.mul(priceA).add(amountB.mul(priceB));\n return { tokenAmountA: amountA, tokenAmountB: amountB, usdValue };\n }\n\n /**\n * Calculate parent pool TVL from underlying protocol reserves\n */\n async getParentTvl(): Promise<DoubleTvl> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const decimalsA = await this.context.getCoinDecimals(coinTypeA);\n const decimalsB = await this.context.getCoinDecimals(coinTypeB);\n const priceA = await this.context.getCoinPrice(coinTypeA);\n const priceB = await this.context.getCoinPrice(coinTypeB);\n\n const tokenAmountA = new Decimal(this.parentPoolObject.coinA).div(\n new Decimal(10).pow(decimalsA),\n );\n const tokenAmountB = new Decimal(this.parentPoolObject.coinB).div(\n new Decimal(10).pow(decimalsB),\n );\n const usdValue = tokenAmountA.mul(priceA).add(tokenAmountB.mul(priceB));\n return { tokenAmountA, tokenAmountB, usdValue };\n }\n\n /**\n * Get LP token breakdown showing individual asset amounts and total liquidity\n */\n async getLpBreakdown(): Promise<{\n token1Amount: Decimal;\n token2Amount: Decimal;\n totalLiquidity: Decimal;\n }> {\n const liquidity = this.poolObject.tokensInvested;\n const { amountA, amountB } = await this.getTokenAmounts(liquidity);\n const totalLiquidity = new Decimal(liquidity).div(new Decimal(1e9));\n return {\n token1Amount: amountA,\n token2Amount: amountB,\n totalLiquidity,\n };\n }\n\n /**\n * Get parent pool LP breakdown from underlying protocol\n */\n async getParentLpBreakdown(): Promise<{\n token1Amount: Decimal;\n token2Amount: Decimal;\n totalLiquidity: Decimal;\n }> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const decimalsA = await this.context.getCoinDecimals(coinTypeA);\n const decimalsB = await this.context.getCoinDecimals(coinTypeB);\n const token1Amount = new Decimal(this.parentPoolObject.coinA).div(\n new Decimal(10).pow(decimalsA),\n );\n const token2Amount = new Decimal(this.parentPoolObject.coinB).div(\n new Decimal(10).pow(decimalsB),\n );\n const totalLiquidity = new Decimal(this.parentPoolObject.liquidity).div(new Decimal(1e9));\n return { token1Amount, token2Amount, totalLiquidity };\n }\n\n /**\n * Get current LP pool price from tick index\n */\n async getCurrentLPPoolPrice(): Promise<Decimal> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const decimalsA = await this.context.getCoinDecimals(coinTypeA);\n const decimalsB = await this.context.getCoinDecimals(coinTypeB);\n let currentTick = this.parentPoolObject.currentTickIndex;\n const upperBound = 443636;\n if (currentTick > upperBound) {\n currentTick = -~(currentTick - 1);\n }\n const price = TickMath.tickIndexToPrice(currentTick, decimalsA, decimalsB);\n return new Decimal(price.toString());\n }\n\n /**\n * Get position price range from lower and upper tick bounds\n */\n async getPositionRange(): Promise<{ lowerPrice: Decimal; upperPrice: Decimal }> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const decimalsA = await this.context.getCoinDecimals(coinTypeA);\n const decimalsB = await this.context.getCoinDecimals(coinTypeB);\n\n const upperBound = 443636;\n let lowerTick = this.investorObject.lowerTick;\n let upperTick = this.investorObject.upperTick;\n if (lowerTick > upperBound) {\n lowerTick = -~(lowerTick - 1);\n }\n if (upperTick > upperBound) {\n upperTick = -~(upperTick - 1);\n }\n const lower = TickMath.tickIndexToPrice(lowerTick, decimalsA, decimalsB);\n const upper = TickMath.tickIndexToPrice(upperTick, decimalsA, decimalsB);\n return { lowerPrice: new Decimal(lower.toString()), upperPrice: new Decimal(upper.toString()) };\n }\n\n /**\n * Calculate user's current pool balance from receipt objects\n * Converts xToken balance to underlying assets and USD value\n */\n async getBalance(_userAddress: string): Promise<PoolBalance> {\n if (this.receiptObjects.length === 0 || this.receiptObjects[0].xTokenBalance === '0') {\n return {\n tokenAAmount: new Decimal(0),\n tokenBAmount: new Decimal(0),\n usdValue: new Decimal(0),\n };\n }\n const xTokens = new Decimal(this.receiptObjects[0].xTokenBalance);\n\n const exchangeRate = this.exchangeRate();\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const [priceA, priceB] = await Promise.all([\n this.context.getCoinPrice(coinTypeA),\n this.context.getCoinPrice(coinTypeB),\n ]);\n\n const tokens = xTokens.mul(exchangeRate);\n const { amountA, amountB } = await this.getTokenAmounts(tokens.floor().toString());\n\n const usdValue = amountA.mul(priceA).add(amountB.mul(priceB));\n return { tokenAAmount: amountA, tokenBAmount: amountB, usdValue };\n }\n\n /**\n * Calculate token A and B amounts from liquidity using Cetus CLMM SDK\n */\n private async getTokenAmounts(\n liquidity: string,\n ): Promise<{ amountA: Decimal; amountB: Decimal }> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const scalingA = new Decimal(10).pow(await this.context.getCoinDecimals(coinTypeA));\n const scalingB = new Decimal(10).pow(await this.context.getCoinDecimals(coinTypeB));\n\n const liquidityBN = new BN(new Decimal(liquidity).toFixed(0));\n const currentSqrtPriceBN = new BN(this.parentPoolObject.currentSqrtPrice);\n\n const upperBound = 443636;\n let lowerTick = this.investorObject.lowerTick;\n let upperTick = this.investorObject.upperTick;\n if (lowerTick > upperBound) {\n lowerTick = -~(lowerTick - 1);\n }\n if (upperTick > upperBound) {\n upperTick = -~(upperTick - 1);\n }\n const lowerSqrtPriceBN = TickMath.tickIndexToSqrtPriceX64(lowerTick as number);\n const upperSqrtPriceBN = TickMath.tickIndexToSqrtPriceX64(upperTick as number);\n const amounts = ClmmPoolUtil.getCoinAmountFromLiquidity(\n liquidityBN,\n currentSqrtPriceBN,\n lowerSqrtPriceBN,\n upperSqrtPriceBN,\n false,\n );\n\n const amountA = new Decimal(amounts.coinA.toString()).div(scalingA);\n const amountB = new Decimal(amounts.coinB.toString()).div(scalingB);\n return { amountA, amountB };\n }\n\n private getLiquidity(amount: string, isAmountA: boolean): LiquidityInput {\n const upperBound = 443636;\n let lowerTick = this.investorObject.lowerTick;\n let upperTick = this.investorObject.upperTick;\n if (lowerTick > upperBound) {\n lowerTick = -~(lowerTick - 1);\n }\n if (upperTick > upperBound) {\n upperTick = -~(upperTick - 1);\n }\n const currentSqrtPriceBN = new BN(this.parentPoolObject.currentSqrtPrice);\n\n return ClmmPoolUtil.estLiquidityAndcoinAmountFromOneAmounts(\n lowerTick,\n upperTick,\n new BN(`${Math.floor(parseFloat(amount))}`),\n isAmountA,\n false,\n 0.5,\n currentSqrtPriceBN,\n );\n }\n\n getOtherAmount(amount: string, isAmountA: boolean): [string, string] {\n const liquidity = this.getLiquidity(amount, isAmountA);\n return [liquidity.coinAmountA.toString(), liquidity.coinAmountB.toString()];\n }\n\n private coinAmountToXToken(amount: string, isAmountA: boolean): string {\n const liquidity = new Decimal(this.getLiquidity(amount, isAmountA).liquidityAmount.toString());\n const exchangeRate = this.exchangeRate();\n return liquidity.div(exchangeRate).floor().toString();\n }\n\n /**\n * Parse pool object from blockchain response\n */\n parsePoolObject(response: any): AutobalanceLpPoolObject {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n return {\n accRewardsPerXtoken: this.parseVecMap(fields.acc_rewards_per_xtoken || {}),\n depositFee: this.getStringField(fields, 'deposit_fee'),\n depositFeeMaxCap: this.getStringField(fields, 'deposit_fee_max_cap'),\n id: this.getStringField(fields, 'id'),\n imageUrl: this.getStringField(fields, 'image_url'),\n name: this.getStringField(fields, 'name'),\n paused: this.getBooleanField(fields, 'paused', false),\n rewards: (() => {\n const idVal = this.getNestedField(fields, 'rewards.id');\n const sizeVal = this.getNestedField(fields, 'rewards.size');\n return { id: String(idVal), size: String(sizeVal) };\n })(),\n tokensInvested: this.getStringField(fields, 'tokensInvested'),\n withdrawFeeMaxCap: this.getStringField(fields, 'withdraw_fee_max_cap'),\n withdrawalFee: this.getStringField(fields, 'withdrawal_fee'),\n xTokenSupply: this.getStringField(fields, 'xTokenSupply'),\n };\n }, 'Failed to parse AutobalanceLp pool object');\n }\n\n /**\n * Parse investor object from blockchain response\n */\n parseInvestorObject(response: any): AutobalanceLpInvestorObject {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n return {\n emergencyBalanceA: this.getStringField(fields, 'emergency_balance_a'),\n emergencyBalanceB: this.getStringField(fields, 'emergency_balance_b'),\n freeBalanceA: this.getStringField(fields, 'free_balance_a'),\n freeBalanceB: this.getStringField(fields, 'free_balance_b'),\n freeRewards: (() => {\n const idVal = this.getNestedField(fields, 'free_rewards.id');\n const sizeVal = this.getNestedField(fields, 'free_rewards.size');\n return { id: String(idVal), size: String(sizeVal) };\n })(),\n id: this.getStringField(fields, 'id'),\n isEmergency: this.getBooleanField(fields, 'is_emergency', false),\n lowerTick: this.getNumberField(fields, 'lower_tick'),\n minimumSwapAmount: this.getStringField(fields, 'minimum_swap_amount'),\n performanceFee: this.getStringField(fields, 'performance_fee'),\n performanceFeeMaxCap: this.getStringField(fields, 'performance_fee_max_cap'),\n upperTick: this.getNumberField(fields, 'upper_tick'),\n };\n }, 'Failed to parse AutobalanceLp investor object');\n }\n\n /**\n * Parse parent pool object from blockchain response\n */\n parseParentPoolObject(response: any): AutobalanceLpParentPoolObject {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n const rewardInfos = (fields.reward_infos || []).map((info: any) => ({\n rewardCoinType: String(info.reward_coin_type || ''),\n totalReward: String(info.total_reward || '0'),\n }));\n\n return {\n coinA: this.getStringField(fields, 'coin_a'),\n coinB: this.getStringField(fields, 'coin_b'),\n currentSqrtPrice: this.getStringField(fields, 'current_sqrt_price'),\n currentTickIndex: this.getNestedField(fields, 'current_tick_index.bits'),\n id: this.getStringField(fields, 'id'),\n liquidity: this.getStringField(fields, 'liquidity'),\n rewardInfos,\n };\n }, 'Failed to parse AutobalanceLp parent pool object');\n }\n\n /**\n * Parse receipt objects from blockchain responses\n */\n parseReceiptObjects(responses: any[]): AutobalanceLpReceiptObject[] {\n return responses\n .map((response, index) => {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n return {\n id: this.getStringField(fields, 'id'),\n imageUrl: this.getStringField(fields, 'image_url'),\n lastAccRewardPerXtoken: this.parseVecMap(fields.last_acc_reward_per_xtoken || {}),\n owner: this.getStringField(fields, 'owner'),\n name: this.getStringField(fields, 'name'),\n pendingRewards: this.parseVecMap(fields.pending_rewards || {}),\n poolId: this.getStringField(fields, 'pool_id'),\n xTokenBalance: this.getStringField(fields, 'xTokenBalance'),\n };\n }, `Failed to parse AutobalanceLp receipt object at index ${index}`);\n })\n .filter((receipt) => receipt.poolId === this.poolLabel.poolId);\n }\n\n async deposit(tx: Transaction, options: DepositOptions) {\n if (options.isAmountA === undefined) {\n throw new Error('isAmountA is required for AutobalanceLp strategy');\n }\n const [amountA, amountB] = this.getOtherAmount(options.amount.toString(), options.isAmountA);\n\n // get Coin Objects\n const depositCoinA = await this.context.blockchain.getCoinObject(\n tx,\n this.poolLabel.assetA.type,\n options.address,\n BigInt(amountA),\n );\n const depositCoinB = await this.context.blockchain.getCoinObject(\n tx,\n this.poolLabel.assetB.type,\n options.address,\n BigInt(amountB),\n );\n\n const receiptOption = this.context.blockchain.getOptionReceipt(\n tx,\n this.poolLabel.receipt.type,\n this.receiptObjects.length > 0 ? this.receiptObjects[0].id : undefined,\n );\n\n this.collectReward(tx);\n\n let target = `${this.poolLabel.packageId}::alphafi_bluefin_type_1_pool::user_deposit_v3`;\n if (this.poolLabel.assetA.name === 'SUI') {\n target = `${this.poolLabel.packageId}::alphafi_bluefin_sui_first_pool::user_deposit_v4`;\n } else if (this.poolLabel.assetB.name === 'SUI') {\n target = `${this.poolLabel.packageId}::alphafi_bluefin_sui_second_pool::user_deposit_v3`;\n }\n tx.moveCall({\n target,\n typeArguments: [this.poolLabel.assetA.type, this.poolLabel.assetB.type],\n arguments: [\n tx.object(VERSIONS.AUTOBALANCE_LP),\n receiptOption,\n tx.object(this.poolLabel.poolId),\n depositCoinA,\n depositCoinB,\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(this.poolLabel.investorId),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(this.poolLabel.parentPoolId),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n async withdraw(tx: Transaction, options: WithdrawOptions) {\n if (options.isAmountA === undefined) {\n throw new Error('isAmountA is required for AutobalanceLp strategy');\n }\n if (this.receiptObjects.length === 0) {\n throw new Error('No receipt found!');\n }\n let xTokenAmount = '0';\n if (options.withdrawMax) {\n xTokenAmount = this.receiptObjects[0].xTokenBalance;\n } else {\n xTokenAmount = this.coinAmountToXToken(options.amount.toString(), options.isAmountA);\n }\n\n if (xTokenAmount === this.receiptObjects[0].xTokenBalance) {\n this.getUserRewards(tx);\n } else this.collectReward(tx);\n\n let target = `${this.poolLabel.packageId}::alphafi_bluefin_type_1_pool::user_withdraw_v3`;\n if (this.poolLabel.assetA.name === 'SUI') {\n target = `${this.poolLabel.packageId}::alphafi_bluefin_sui_first_pool::user_withdraw_v4`;\n } else if (this.poolLabel.assetB.name === 'SUI') {\n target = `${this.poolLabel.packageId}::alphafi_bluefin_sui_second_pool::user_withdraw_v3`;\n }\n tx.moveCall({\n target,\n typeArguments: [this.poolLabel.assetA.type, this.poolLabel.assetB.type],\n arguments: [\n tx.object(VERSIONS.AUTOBALANCE_LP),\n tx.object(this.receiptObjects[0].id),\n tx.object(this.poolLabel.poolId),\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(this.poolLabel.investorId),\n tx.pure.u128(xTokenAmount),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(this.poolLabel.parentPoolId),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n async claimRewards(_tx: Transaction, _alphaReceipt: TransactionResult) {\n return;\n }\n\n private collectReward(tx: Transaction) {\n if (this.poolLabel.assetA.name === 'SUI') {\n for (const reward of this.parentPoolObject.rewardInfos) {\n const rewardType = '0x' + reward.rewardCoinType;\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_bluefin_sui_first_pool::collect_reward`,\n typeArguments: [this.poolLabel.assetA.type, this.poolLabel.assetB.type, rewardType],\n arguments: [\n tx.object(VERSIONS.AUTOBALANCE_LP),\n tx.object(this.poolLabel.poolId),\n tx.object(this.poolLabel.investorId),\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(this.poolLabel.parentPoolId),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n }\n } else if (this.poolLabel.assetB.name === 'SUI') {\n for (const reward of this.parentPoolObject.rewardInfos) {\n const rewardType = '0x' + reward.rewardCoinType;\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_bluefin_sui_second_pool::collect_reward`,\n typeArguments: [this.poolLabel.assetA.type, this.poolLabel.assetB.type, rewardType],\n arguments: [\n tx.object(VERSIONS.AUTOBALANCE_LP),\n tx.object(this.poolLabel.poolId),\n tx.object(this.poolLabel.investorId),\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(this.poolLabel.parentPoolId),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n }\n } else {\n for (const reward of this.parentPoolObject.rewardInfos) {\n const rewardType = '0x' + reward.rewardCoinType;\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_bluefin_type_1_pool::collect_reward`,\n typeArguments: [this.poolLabel.assetA.type, this.poolLabel.assetB.type, rewardType],\n arguments: [\n tx.object(VERSIONS.AUTOBALANCE_LP),\n tx.object(this.poolLabel.poolId),\n tx.object(this.poolLabel.investorId),\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(this.poolLabel.parentPoolId),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n }\n }\n }\n\n private getUserRewards(tx: Transaction): TransactionResult[] {\n this.collectReward(tx);\n const rewardsList = this.parentPoolObject.rewardInfos.map((ele) => {\n return '0x' + ele.rewardCoinType;\n });\n rewardsList.push(this.poolLabel.assetA.type);\n rewardsList.push(this.poolLabel.assetB.type);\n\n const rewards: TransactionResult[] = [];\n if (this.poolLabel.assetA.name === 'SUI') {\n for (const rewardType of [...new Set(rewardsList)]) {\n const balance = tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_bluefin_sui_first_pool::get_user_rewards_v4`,\n typeArguments: [this.poolLabel.assetA.type, this.poolLabel.assetB.type, rewardType],\n arguments: [\n tx.object(this.receiptObjects[0].id),\n tx.object(VERSIONS.AUTOBALANCE_LP),\n tx.object(this.poolLabel.poolId),\n tx.object(this.poolLabel.investorId),\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(this.poolLabel.parentPoolId),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n const coin = tx.moveCall({\n target: '0x2::coin::from_balance',\n typeArguments: [rewardType],\n arguments: [balance!],\n });\n rewards.push(coin);\n }\n } else if (this.poolLabel.assetB.name === 'SUI') {\n for (const rewardType of [...new Set(rewardsList)]) {\n const balance = tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_bluefin_sui_second_pool::get_user_rewards_v3`,\n typeArguments: [this.poolLabel.assetA.type, this.poolLabel.assetB.type, rewardType],\n arguments: [\n tx.object(this.receiptObjects[0].id),\n tx.object(VERSIONS.AUTOBALANCE_LP),\n tx.object(this.poolLabel.poolId),\n tx.object(this.poolLabel.investorId),\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(this.poolLabel.parentPoolId),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n const coin = tx.moveCall({\n target: '0x2::coin::from_balance',\n typeArguments: [rewardType],\n arguments: [balance!],\n });\n rewards.push(coin);\n }\n } else {\n for (const rewardType of [...new Set(rewardsList)]) {\n const balance = tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_bluefin_type_1_pool::get_user_rewards_v3`,\n typeArguments: [this.poolLabel.assetA.type, this.poolLabel.assetB.type, rewardType],\n arguments: [\n tx.object(this.receiptObjects[0].id),\n tx.object(VERSIONS.AUTOBALANCE_LP),\n tx.object(this.poolLabel.poolId),\n tx.object(this.poolLabel.investorId),\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(this.poolLabel.parentPoolId),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n const coin = tx.moveCall({\n target: '0x2::coin::from_balance',\n typeArguments: [rewardType],\n arguments: [balance!],\n });\n rewards.push(coin);\n }\n }\n return rewards;\n }\n}\n\n/**\n * AutobalanceLp Pool object data structure\n */\nexport interface AutobalanceLpPoolObject {\n accRewardsPerXtoken: StringMap[];\n depositFee: string;\n depositFeeMaxCap: string;\n id: string;\n imageUrl: string;\n name: string;\n paused: boolean;\n rewards: {\n id: string;\n size: string;\n };\n tokensInvested: string;\n withdrawFeeMaxCap: string;\n withdrawalFee: string;\n xTokenSupply: string;\n}\n\n/**\n * AutobalanceLp Investor object data structure\n */\nexport interface AutobalanceLpInvestorObject {\n emergencyBalanceA: string;\n emergencyBalanceB: string;\n freeBalanceA: string;\n freeBalanceB: string;\n freeRewards: {\n id: string;\n size: string;\n };\n id: string;\n isEmergency: boolean;\n lowerTick: number;\n minimumSwapAmount: string;\n performanceFee: string;\n performanceFeeMaxCap: string;\n upperTick: number;\n}\n\n/**\n * AutobalanceLp Parent Pool object data structure\n */\nexport interface AutobalanceLpParentPoolObject {\n coinA: string;\n coinB: string;\n currentSqrtPrice: string;\n currentTickIndex: number;\n id: string;\n liquidity: string;\n rewardInfos: {\n rewardCoinType: string;\n totalReward: string;\n }[];\n}\n\n/**\n * AutobalanceLp Receipt object data structure\n */\nexport interface AutobalanceLpReceiptObject {\n id: string;\n imageUrl: string;\n lastAccRewardPerXtoken: StringMap[];\n owner: string;\n name: string;\n pendingRewards: StringMap[];\n poolId: string;\n xTokenBalance: string;\n}\n\n/**\n * AutobalanceLp Pool Label configuration\n */\nexport interface AutobalanceLpPoolLabel {\n poolId: string;\n packageId: string;\n packageNumber: number;\n strategyType: 'AutobalanceLp';\n parentProtocol: ProtocolType;\n parentPoolId: string;\n investorId: string;\n receipt: StringMap;\n assetA: StringMap;\n assetB: StringMap;\n events: {\n autocompoundEventType: string;\n rebalanceEventType: string;\n liquidityChangeEventType: string;\n afterTransactionEventType?: string;\n };\n isActive: boolean;\n poolName: string;\n isNative: boolean;\n}\n"]}
1
+ {"version":3,"file":"autobalanceLp.js","sourceRoot":"","sources":["../../../src/strategies/autobalanceLp.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * AutobalanceLp Strategy\n */\n\nimport { Decimal } from 'decimal.js';\nimport { AlphaMiningData, BaseStrategy, StringMap, ProtocolType } from './strategy.js';\nimport { PoolData, DoubleTvl, PoolBalance } from '../models/types.js';\nimport { StrategyContext } from '../models/strategyContext.js';\nimport BN from 'bn.js';\nimport { ClmmPoolUtil, LiquidityInput, TickMath } from '@cetusprotocol/cetus-sui-clmm-sdk';\nimport { DepositOptions, WithdrawOptions } from '../core/types.js';\nimport { Transaction, TransactionResult } from '@mysten/sui/transactions';\nimport {\n GLOBAL_CONFIGS,\n CLOCK_PACKAGE_ID,\n DISTRIBUTOR_OBJECT_ID,\n VERSIONS,\n} from '../utils/constants.js';\n\n/**\n * AutobalanceLp Strategy for dual-asset liquidity pools with automatic rebalancing\n */\nexport class AutobalanceLpStrategy extends BaseStrategy<\n AutobalanceLpPoolObject,\n AutobalanceLpInvestorObject,\n AutobalanceLpParentPoolObject,\n AutobalanceLpReceiptObject\n> {\n private poolLabel: AutobalanceLpPoolLabel;\n private poolObject: AutobalanceLpPoolObject;\n private investorObject: AutobalanceLpInvestorObject;\n private parentPoolObject: AutobalanceLpParentPoolObject;\n private receiptObjects: AutobalanceLpReceiptObject[] = [];\n private context: StrategyContext;\n\n constructor(\n poolLabel: AutobalanceLpPoolLabel,\n poolObject: any,\n investorObject: any,\n parentPoolObject: any,\n context: StrategyContext,\n ) {\n super();\n this.poolLabel = poolLabel;\n this.poolObject = this.parsePoolObject(poolObject);\n this.investorObject = this.parseInvestorObject(investorObject);\n this.parentPoolObject = this.parseParentPoolObject(parentPoolObject);\n this.context = context;\n }\n\n getPoolLabel(): AutobalanceLpPoolLabel {\n return this.poolLabel;\n }\n\n updateReceipts(receipts: any[]): void {\n this.receiptObjects = this.parseReceiptObjects(receipts);\n }\n\n /**\n * Returns alpha mining data - AutobalanceLp pools do not support alpha mining\n */\n protected getAlphaMiningData(): AlphaMiningData {\n return {\n poolId: this.poolLabel.poolId,\n accRewardsPerXtoken: [],\n xTokenSupply: '0',\n receipt: null,\n };\n }\n\n /**\n * Get the exchange rate for xtoken to underlying token ratio\n * Calculated as tokens_invested / xtoken_supply\n */\n exchangeRate(): Decimal {\n const tokensInvested = new Decimal(this.poolObject.tokensInvested);\n const xtokenSupply = new Decimal(this.poolObject.xTokenSupply);\n\n if (xtokenSupply.isZero()) {\n return new Decimal(1); // Default exchange rate when no tokens are supplied\n }\n\n return tokensInvested.div(xtokenSupply);\n }\n\n /**\n * Get comprehensive pool data including TVL, LP breakdown, price, and position range\n */\n async getData(): Promise<PoolData> {\n const [\n alphafi,\n parent,\n lpBreakdown,\n parentLpBreakdown,\n currentLPPoolPrice,\n positionRange,\n apr,\n ] = await Promise.all([\n this.getTvl(),\n this.getParentTvl(),\n this.getLpBreakdown(),\n this.getParentLpBreakdown(),\n this.getCurrentLPPoolPrice(),\n this.getPositionRange(),\n this.context.getAprData(this.poolLabel.poolId),\n ]);\n return {\n poolId: this.poolLabel.poolId,\n strategyType: this.poolLabel.strategyType,\n coinAType: this.poolLabel.assetA.type,\n coinBType: this.poolLabel.assetB.type,\n poolName: this.poolLabel.poolName,\n apr,\n tvl: {\n alphafi,\n parent,\n },\n lpBreakdown,\n parentLpBreakdown,\n currentLPPoolPrice,\n positionRange,\n };\n }\n\n /**\n * Calculate total value locked using current asset prices and token amounts\n */\n async getTvl(): Promise<DoubleTvl> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const priceA = await this.context.getCoinPrice(coinTypeA);\n const priceB = await this.context.getCoinPrice(coinTypeB);\n const { amountA, amountB } = await this.getTokenAmounts(this.poolObject.tokensInvested);\n const usdValue = amountA.mul(priceA).add(amountB.mul(priceB));\n return { tokenAmountA: amountA, tokenAmountB: amountB, usdValue };\n }\n\n /**\n * Calculate parent pool TVL from underlying protocol reserves\n */\n async getParentTvl(): Promise<DoubleTvl> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const decimalsA = await this.context.getCoinDecimals(coinTypeA);\n const decimalsB = await this.context.getCoinDecimals(coinTypeB);\n const priceA = await this.context.getCoinPrice(coinTypeA);\n const priceB = await this.context.getCoinPrice(coinTypeB);\n\n const tokenAmountA = new Decimal(this.parentPoolObject.coinA).div(\n new Decimal(10).pow(decimalsA),\n );\n const tokenAmountB = new Decimal(this.parentPoolObject.coinB).div(\n new Decimal(10).pow(decimalsB),\n );\n const usdValue = tokenAmountA.mul(priceA).add(tokenAmountB.mul(priceB));\n return { tokenAmountA, tokenAmountB, usdValue };\n }\n\n /**\n * Get LP token breakdown showing individual asset amounts and total liquidity\n */\n async getLpBreakdown(): Promise<{\n token1Amount: Decimal;\n token2Amount: Decimal;\n totalLiquidity: Decimal;\n }> {\n const liquidity = this.poolObject.tokensInvested;\n const { amountA, amountB } = await this.getTokenAmounts(liquidity);\n const totalLiquidity = new Decimal(liquidity).div(new Decimal(1e9));\n return {\n token1Amount: amountA,\n token2Amount: amountB,\n totalLiquidity,\n };\n }\n\n /**\n * Get parent pool LP breakdown from underlying protocol\n */\n async getParentLpBreakdown(): Promise<{\n token1Amount: Decimal;\n token2Amount: Decimal;\n totalLiquidity: Decimal;\n }> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const decimalsA = await this.context.getCoinDecimals(coinTypeA);\n const decimalsB = await this.context.getCoinDecimals(coinTypeB);\n const token1Amount = new Decimal(this.parentPoolObject.coinA).div(\n new Decimal(10).pow(decimalsA),\n );\n const token2Amount = new Decimal(this.parentPoolObject.coinB).div(\n new Decimal(10).pow(decimalsB),\n );\n const totalLiquidity = new Decimal(this.parentPoolObject.liquidity).div(new Decimal(1e9));\n return { token1Amount, token2Amount, totalLiquidity };\n }\n\n /**\n * Get current LP pool price from tick index\n */\n async getCurrentLPPoolPrice(): Promise<Decimal> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const decimalsA = await this.context.getCoinDecimals(coinTypeA);\n const decimalsB = await this.context.getCoinDecimals(coinTypeB);\n let currentTick = this.parentPoolObject.currentTickIndex;\n const upperBound = 443636;\n if (currentTick > upperBound) {\n currentTick = -~(currentTick - 1);\n }\n const price = TickMath.tickIndexToPrice(currentTick, decimalsA, decimalsB);\n return new Decimal(price.toString());\n }\n\n /**\n * Get position price range from lower and upper tick bounds\n */\n async getPositionRange(): Promise<{ lowerPrice: Decimal; upperPrice: Decimal }> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const decimalsA = await this.context.getCoinDecimals(coinTypeA);\n const decimalsB = await this.context.getCoinDecimals(coinTypeB);\n\n const upperBound = 443636;\n let lowerTick = this.investorObject.lowerTick;\n let upperTick = this.investorObject.upperTick;\n if (lowerTick > upperBound) {\n lowerTick = -~(lowerTick - 1);\n }\n if (upperTick > upperBound) {\n upperTick = -~(upperTick - 1);\n }\n const lower = TickMath.tickIndexToPrice(lowerTick, decimalsA, decimalsB);\n const upper = TickMath.tickIndexToPrice(upperTick, decimalsA, decimalsB);\n return { lowerPrice: new Decimal(lower.toString()), upperPrice: new Decimal(upper.toString()) };\n }\n\n /**\n * Calculate user's current pool balance from receipt objects\n * Converts xToken balance to underlying assets and USD value\n */\n async getBalance(_userAddress: string): Promise<PoolBalance> {\n if (this.receiptObjects.length === 0 || this.receiptObjects[0].xTokenBalance === '0') {\n return {\n tokenAAmount: new Decimal(0),\n tokenBAmount: new Decimal(0),\n usdValue: new Decimal(0),\n };\n }\n const xTokens = new Decimal(this.receiptObjects[0].xTokenBalance);\n\n const exchangeRate = this.exchangeRate();\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const [priceA, priceB] = await Promise.all([\n this.context.getCoinPrice(coinTypeA),\n this.context.getCoinPrice(coinTypeB),\n ]);\n\n const tokens = xTokens.mul(exchangeRate);\n const { amountA, amountB } = await this.getTokenAmounts(tokens.floor().toString());\n\n const usdValue = amountA.mul(priceA).add(amountB.mul(priceB));\n return { tokenAAmount: amountA, tokenBAmount: amountB, usdValue };\n }\n\n /**\n * Calculate token A and B amounts from liquidity using Cetus CLMM SDK\n */\n private async getTokenAmounts(\n liquidity: string,\n ): Promise<{ amountA: Decimal; amountB: Decimal }> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const scalingA = new Decimal(10).pow(await this.context.getCoinDecimals(coinTypeA));\n const scalingB = new Decimal(10).pow(await this.context.getCoinDecimals(coinTypeB));\n\n const liquidityBN = new BN(new Decimal(liquidity).toFixed(0));\n const currentSqrtPriceBN = new BN(this.parentPoolObject.currentSqrtPrice);\n\n const upperBound = 443636;\n let lowerTick = this.investorObject.lowerTick;\n let upperTick = this.investorObject.upperTick;\n if (lowerTick > upperBound) {\n lowerTick = -~(lowerTick - 1);\n }\n if (upperTick > upperBound) {\n upperTick = -~(upperTick - 1);\n }\n const lowerSqrtPriceBN = TickMath.tickIndexToSqrtPriceX64(lowerTick as number);\n const upperSqrtPriceBN = TickMath.tickIndexToSqrtPriceX64(upperTick as number);\n const amounts = ClmmPoolUtil.getCoinAmountFromLiquidity(\n liquidityBN,\n currentSqrtPriceBN,\n lowerSqrtPriceBN,\n upperSqrtPriceBN,\n false,\n );\n\n const amountA = new Decimal(amounts.coinA.toString()).div(scalingA);\n const amountB = new Decimal(amounts.coinB.toString()).div(scalingB);\n return { amountA, amountB };\n }\n\n private getLiquidity(amount: string, isAmountA: boolean): LiquidityInput {\n const upperBound = 443636;\n let lowerTick = this.investorObject.lowerTick;\n let upperTick = this.investorObject.upperTick;\n if (lowerTick > upperBound) {\n lowerTick = -~(lowerTick - 1);\n }\n if (upperTick > upperBound) {\n upperTick = -~(upperTick - 1);\n }\n const currentSqrtPriceBN = new BN(this.parentPoolObject.currentSqrtPrice);\n\n return ClmmPoolUtil.estLiquidityAndcoinAmountFromOneAmounts(\n lowerTick,\n upperTick,\n new BN(`${Math.floor(parseFloat(amount))}`),\n isAmountA,\n false,\n 0.5,\n currentSqrtPriceBN,\n );\n }\n\n getOtherAmount(amount: string, isAmountA: boolean): [string, string] {\n const liquidity = this.getLiquidity(amount, isAmountA);\n return [liquidity.coinAmountA.toString(), liquidity.coinAmountB.toString()];\n }\n\n private coinAmountToXToken(amount: string, isAmountA: boolean): string {\n const liquidity = new Decimal(this.getLiquidity(amount, isAmountA).liquidityAmount.toString());\n const exchangeRate = this.exchangeRate();\n return liquidity.div(exchangeRate).floor().toString();\n }\n\n /**\n * Parse pool object from blockchain response\n */\n parsePoolObject(response: any): AutobalanceLpPoolObject {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n return {\n accRewardsPerXtoken: this.parseVecMap(fields.acc_rewards_per_xtoken || {}),\n depositFee: this.getStringField(fields, 'deposit_fee'),\n depositFeeMaxCap: this.getStringField(fields, 'deposit_fee_max_cap'),\n id: this.getStringField(fields, 'id'),\n imageUrl: this.getStringField(fields, 'image_url'),\n name: this.getStringField(fields, 'name'),\n paused: this.getBooleanField(fields, 'paused', false),\n rewards: (() => {\n const idVal = this.getNestedField(fields, 'rewards.id');\n const sizeVal = this.getNestedField(fields, 'rewards.size');\n return { id: String(idVal), size: String(sizeVal) };\n })(),\n tokensInvested: this.getStringField(fields, 'tokensInvested'),\n withdrawFeeMaxCap: this.getStringField(fields, 'withdraw_fee_max_cap'),\n withdrawalFee: this.getStringField(fields, 'withdrawal_fee'),\n xTokenSupply: this.getStringField(fields, 'xTokenSupply'),\n };\n }, 'Failed to parse AutobalanceLp pool object');\n }\n\n /**\n * Parse investor object from blockchain response\n */\n parseInvestorObject(response: any): AutobalanceLpInvestorObject {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n return {\n emergencyBalanceA: this.getStringField(fields, 'emergency_balance_a'),\n emergencyBalanceB: this.getStringField(fields, 'emergency_balance_b'),\n freeBalanceA: this.getStringField(fields, 'free_balance_a'),\n freeBalanceB: this.getStringField(fields, 'free_balance_b'),\n freeRewards: (() => {\n const idVal = this.getNestedField(fields, 'free_rewards.id');\n const sizeVal = this.getNestedField(fields, 'free_rewards.size');\n return { id: String(idVal), size: String(sizeVal) };\n })(),\n id: this.getStringField(fields, 'id'),\n isEmergency: this.getBooleanField(fields, 'is_emergency', false),\n lowerTick: this.getNumberField(fields, 'lower_tick'),\n minimumSwapAmount: this.getStringField(fields, 'minimum_swap_amount'),\n performanceFee: this.getStringField(fields, 'performance_fee'),\n performanceFeeMaxCap: this.getStringField(fields, 'performance_fee_max_cap'),\n upperTick: this.getNumberField(fields, 'upper_tick'),\n };\n }, 'Failed to parse AutobalanceLp investor object');\n }\n\n /**\n * Parse parent pool object from blockchain response\n */\n parseParentPoolObject(response: any): AutobalanceLpParentPoolObject {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n const rewardInfos = (fields.reward_infos || []).map((info: any) => ({\n rewardCoinType: String(info.reward_coin_type || ''),\n totalReward: String(info.total_reward || '0'),\n }));\n\n return {\n coinA: this.getStringField(fields, 'coin_a'),\n coinB: this.getStringField(fields, 'coin_b'),\n currentSqrtPrice: this.getStringField(fields, 'current_sqrt_price'),\n currentTickIndex: this.getNestedField(fields, 'current_tick_index.bits'),\n id: this.getStringField(fields, 'id'),\n liquidity: this.getStringField(fields, 'liquidity'),\n rewardInfos,\n };\n }, 'Failed to parse AutobalanceLp parent pool object');\n }\n\n /**\n * Parse receipt objects from blockchain responses\n */\n parseReceiptObjects(responses: any[]): AutobalanceLpReceiptObject[] {\n return responses\n .map((response, index) => {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n return {\n id: this.getStringField(fields, 'id'),\n imageUrl: this.getStringField(fields, 'image_url'),\n lastAccRewardPerXtoken: this.parseVecMap(fields.last_acc_reward_per_xtoken || {}),\n owner: this.getStringField(fields, 'owner'),\n name: this.getStringField(fields, 'name'),\n pendingRewards: this.parseVecMap(fields.pending_rewards || {}),\n poolId: this.getStringField(fields, 'pool_id'),\n xTokenBalance: this.getStringField(fields, 'xTokenBalance'),\n };\n }, `Failed to parse AutobalanceLp receipt object at index ${index}`);\n })\n .filter((receipt) => receipt.poolId === this.poolLabel.poolId);\n }\n\n async deposit(tx: Transaction, options: DepositOptions) {\n if (options.isAmountA === undefined) {\n throw new Error('isAmountA is required for AutobalanceLp strategy');\n }\n const [amountA, amountB] = this.getOtherAmount(options.amount.toString(), options.isAmountA);\n\n // get Coin Objects\n const depositCoinA = await this.context.blockchain.getCoinObject(\n tx,\n this.poolLabel.assetA.type,\n options.address,\n BigInt(amountA),\n );\n const depositCoinB = await this.context.blockchain.getCoinObject(\n tx,\n this.poolLabel.assetB.type,\n options.address,\n BigInt(amountB),\n );\n\n const receiptOption = this.context.blockchain.getOptionReceipt(\n tx,\n this.poolLabel.receipt.type,\n this.receiptObjects.length > 0 ? this.receiptObjects[0].id : undefined,\n );\n\n this.collectReward(tx);\n\n let target = `${this.poolLabel.packageId}::alphafi_bluefin_type_1_pool::user_deposit_v3`;\n if (this.poolLabel.assetA.name === 'SUI') {\n target = `${this.poolLabel.packageId}::alphafi_bluefin_sui_first_pool::user_deposit_v4`;\n } else if (this.poolLabel.assetB.name === 'SUI') {\n target = `${this.poolLabel.packageId}::alphafi_bluefin_sui_second_pool::user_deposit_v3`;\n }\n tx.moveCall({\n target,\n typeArguments: [this.poolLabel.assetA.type, this.poolLabel.assetB.type],\n arguments: [\n tx.object(VERSIONS.AUTOBALANCE_LP),\n receiptOption,\n tx.object(this.poolLabel.poolId),\n depositCoinA,\n depositCoinB,\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(this.poolLabel.investorId),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(this.poolLabel.parentPoolId),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n async withdraw(tx: Transaction, options: WithdrawOptions) {\n if (options.isAmountA === undefined) {\n throw new Error('isAmountA is required for AutobalanceLp strategy');\n }\n if (this.receiptObjects.length === 0) {\n throw new Error('No receipt found!');\n }\n let xTokenAmount = '0';\n if (options.withdrawMax) {\n xTokenAmount = this.receiptObjects[0].xTokenBalance;\n } else {\n xTokenAmount = this.coinAmountToXToken(options.amount.toString(), options.isAmountA);\n }\n\n if (xTokenAmount === this.receiptObjects[0].xTokenBalance) {\n this.getUserRewards(tx);\n } else this.collectReward(tx);\n\n let target = `${this.poolLabel.packageId}::alphafi_bluefin_type_1_pool::user_withdraw_v3`;\n if (this.poolLabel.assetA.name === 'SUI') {\n target = `${this.poolLabel.packageId}::alphafi_bluefin_sui_first_pool::user_withdraw_v4`;\n } else if (this.poolLabel.assetB.name === 'SUI') {\n target = `${this.poolLabel.packageId}::alphafi_bluefin_sui_second_pool::user_withdraw_v3`;\n }\n tx.moveCall({\n target,\n typeArguments: [this.poolLabel.assetA.type, this.poolLabel.assetB.type],\n arguments: [\n tx.object(VERSIONS.AUTOBALANCE_LP),\n tx.object(this.receiptObjects[0].id),\n tx.object(this.poolLabel.poolId),\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(this.poolLabel.investorId),\n tx.pure.u128(xTokenAmount),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(this.poolLabel.parentPoolId),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n async claimRewards(_tx: Transaction, _alphaReceipt: TransactionResult) {\n return;\n }\n\n private collectReward(tx: Transaction) {\n if (this.poolLabel.assetA.name === 'SUI') {\n for (const reward of this.parentPoolObject.rewardInfos) {\n const rewardType = '0x' + reward.rewardCoinType;\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_bluefin_sui_first_pool::collect_reward`,\n typeArguments: [this.poolLabel.assetA.type, this.poolLabel.assetB.type, rewardType],\n arguments: [\n tx.object(VERSIONS.AUTOBALANCE_LP),\n tx.object(this.poolLabel.poolId),\n tx.object(this.poolLabel.investorId),\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(this.poolLabel.parentPoolId),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n }\n } else if (this.poolLabel.assetB.name === 'SUI') {\n for (const reward of this.parentPoolObject.rewardInfos) {\n const rewardType = '0x' + reward.rewardCoinType;\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_bluefin_sui_second_pool::collect_reward`,\n typeArguments: [this.poolLabel.assetA.type, this.poolLabel.assetB.type, rewardType],\n arguments: [\n tx.object(VERSIONS.AUTOBALANCE_LP),\n tx.object(this.poolLabel.poolId),\n tx.object(this.poolLabel.investorId),\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(this.poolLabel.parentPoolId),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n }\n } else {\n for (const reward of this.parentPoolObject.rewardInfos) {\n const rewardType = '0x' + reward.rewardCoinType;\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_bluefin_type_1_pool::collect_reward`,\n typeArguments: [this.poolLabel.assetA.type, this.poolLabel.assetB.type, rewardType],\n arguments: [\n tx.object(VERSIONS.AUTOBALANCE_LP),\n tx.object(this.poolLabel.poolId),\n tx.object(this.poolLabel.investorId),\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(this.poolLabel.parentPoolId),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n }\n }\n }\n\n private getUserRewards(tx: Transaction): TransactionResult[] {\n this.collectReward(tx);\n const rewardsList = this.parentPoolObject.rewardInfos.map((ele) => {\n return '0x' + ele.rewardCoinType;\n });\n rewardsList.push(this.poolLabel.assetA.type);\n rewardsList.push(this.poolLabel.assetB.type);\n\n const rewards: TransactionResult[] = [];\n if (this.poolLabel.assetA.name === 'SUI') {\n for (const rewardType of [...new Set(rewardsList)]) {\n const balance = tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_bluefin_sui_first_pool::get_user_rewards_v4`,\n typeArguments: [this.poolLabel.assetA.type, this.poolLabel.assetB.type, rewardType],\n arguments: [\n tx.object(this.receiptObjects[0].id),\n tx.object(VERSIONS.AUTOBALANCE_LP),\n tx.object(this.poolLabel.poolId),\n tx.object(this.poolLabel.investorId),\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(this.poolLabel.parentPoolId),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n const coin = tx.moveCall({\n target: '0x2::coin::from_balance',\n typeArguments: [rewardType],\n arguments: [balance!],\n });\n rewards.push(coin);\n }\n } else if (this.poolLabel.assetB.name === 'SUI') {\n for (const rewardType of [...new Set(rewardsList)]) {\n const balance = tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_bluefin_sui_second_pool::get_user_rewards_v3`,\n typeArguments: [this.poolLabel.assetA.type, this.poolLabel.assetB.type, rewardType],\n arguments: [\n tx.object(this.receiptObjects[0].id),\n tx.object(VERSIONS.AUTOBALANCE_LP),\n tx.object(this.poolLabel.poolId),\n tx.object(this.poolLabel.investorId),\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(this.poolLabel.parentPoolId),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n const coin = tx.moveCall({\n target: '0x2::coin::from_balance',\n typeArguments: [rewardType],\n arguments: [balance!],\n });\n rewards.push(coin);\n }\n } else {\n for (const rewardType of [...new Set(rewardsList)]) {\n const balance = tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_bluefin_type_1_pool::get_user_rewards_v3`,\n typeArguments: [this.poolLabel.assetA.type, this.poolLabel.assetB.type, rewardType],\n arguments: [\n tx.object(this.receiptObjects[0].id),\n tx.object(VERSIONS.AUTOBALANCE_LP),\n tx.object(this.poolLabel.poolId),\n tx.object(this.poolLabel.investorId),\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(this.poolLabel.parentPoolId),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n const coin = tx.moveCall({\n target: '0x2::coin::from_balance',\n typeArguments: [rewardType],\n arguments: [balance!],\n });\n rewards.push(coin);\n }\n }\n return rewards;\n }\n}\n\n/**\n * AutobalanceLp Pool object data structure\n */\nexport interface AutobalanceLpPoolObject {\n accRewardsPerXtoken: StringMap[];\n depositFee: string;\n depositFeeMaxCap: string;\n id: string;\n imageUrl: string;\n name: string;\n paused: boolean;\n rewards: {\n id: string;\n size: string;\n };\n tokensInvested: string;\n withdrawFeeMaxCap: string;\n withdrawalFee: string;\n xTokenSupply: string;\n}\n\n/**\n * AutobalanceLp Investor object data structure\n */\nexport interface AutobalanceLpInvestorObject {\n emergencyBalanceA: string;\n emergencyBalanceB: string;\n freeBalanceA: string;\n freeBalanceB: string;\n freeRewards: {\n id: string;\n size: string;\n };\n id: string;\n isEmergency: boolean;\n lowerTick: number;\n minimumSwapAmount: string;\n performanceFee: string;\n performanceFeeMaxCap: string;\n upperTick: number;\n}\n\n/**\n * AutobalanceLp Parent Pool object data structure\n */\nexport interface AutobalanceLpParentPoolObject {\n coinA: string;\n coinB: string;\n currentSqrtPrice: string;\n currentTickIndex: number;\n id: string;\n liquidity: string;\n rewardInfos: {\n rewardCoinType: string;\n totalReward: string;\n }[];\n}\n\n/**\n * AutobalanceLp Receipt object data structure\n */\nexport interface AutobalanceLpReceiptObject {\n id: string;\n imageUrl: string;\n lastAccRewardPerXtoken: StringMap[];\n owner: string;\n name: string;\n pendingRewards: StringMap[];\n poolId: string;\n xTokenBalance: string;\n}\n\n/**\n * AutobalanceLp Pool Label configuration\n */\nexport interface AutobalanceLpPoolLabel {\n poolId: string;\n packageId: string;\n packageNumber: number;\n strategyType: 'AutobalanceLp';\n parentProtocol: ProtocolType;\n parentPoolId: string;\n investorId: string;\n receipt: StringMap;\n assetA: StringMap;\n assetB: StringMap;\n events: {\n autocompoundEventType: string;\n rebalanceEventType: string;\n liquidityChangeEventType: string;\n afterTransactionEventType?: string;\n };\n isActive: boolean;\n poolName: string;\n isNative: boolean;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fungibleLending.d.ts","sourceRoot":"","sources":["../../../src/strategies/fungibleLending.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG1E;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,YAAY,CACvD,yBAAyB,EACzB,KAAK,CACN;IACC,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,OAAO,CAAkB;gBAErB,SAAS,EAAE,wBAAwB,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe;IAO1F,YAAY,IAAI,wBAAwB;IAIxC,cAAc,CAAC,aAAa,EAAE,OAAO,GAAG,IAAI;IAI5C;;OAEG;IACH,SAAS,CAAC,kBAAkB,IAAI,eAAe;IAS/C;;;OAGG;IACH,YAAY,IAAI,OAAO;IAavB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;IAiBlC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IASlC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAIxC;;;OAGG;IACG,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiB5D,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAItE,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,yBAAyB;IAezD;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,GAAG,GAAG,KAAK;IAI1C;;OAEG;IACH,qBAAqB,CAAC,SAAS,EAAE,GAAG,GAAG,KAAK;IAI5C;;OAEG;IACH,mBAAmB,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,KAAK;IAIvC,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc;IA0BhD,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe;IAoClD,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB;CAGtE;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,iBAAiB,CAAC;IAChC,cAAc,EAAE,YAAY,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,SAAS,CAAC;IACxB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE;QACN,qBAAqB,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB"}
1
+ {"version":3,"file":"fungibleLending.d.ts","sourceRoot":"","sources":["../../../src/strategies/fungibleLending.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG1E;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,YAAY,CACvD,yBAAyB,EACzB,KAAK,CACN;IACC,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,OAAO,CAAkB;gBAErB,SAAS,EAAE,wBAAwB,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe;IAO1F,YAAY,IAAI,wBAAwB;IAIxC,cAAc,CAAC,aAAa,EAAE,OAAO,GAAG,IAAI;IAI5C;;OAEG;IACH,SAAS,CAAC,kBAAkB,IAAI,eAAe;IAS/C;;;OAGG;IACH,YAAY,IAAI,OAAO;IAavB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;IAmBlC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IASlC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAIxC;;;OAGG;IACG,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiB5D,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAItE,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,yBAAyB;IAezD;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,GAAG,GAAG,KAAK;IAI1C;;OAEG;IACH,qBAAqB,CAAC,SAAS,EAAE,GAAG,GAAG,KAAK;IAI5C;;OAEG;IACH,mBAAmB,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,KAAK;IAIvC,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc;IA0BhD,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe;IAoClD,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB;CAGtE;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,iBAAiB,CAAC;IAChC,cAAc,EAAE,YAAY,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,SAAS,CAAC;IACxB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE;QACN,qBAAqB,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB"}
@@ -61,6 +61,8 @@ class FungibleLendingStrategy extends strategy_js_1.BaseStrategy {
61
61
  ]);
62
62
  return {
63
63
  poolId: this.poolLabel.poolId,
64
+ strategyType: this.poolLabel.strategyType,
65
+ coinType: this.poolLabel.asset.type,
64
66
  poolName: this.poolLabel.poolName,
65
67
  apr,
66
68
  tvl: {
@@ -1 +1 @@
1
- {"version":3,"file":"fungibleLending.js","sourceRoot":"","sources":["../../../src/strategies/fungibleLending.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * FungibleLending Strategy\n */\n\nimport { Decimal } from 'decimal.js';\nimport { AlphaMiningData, BaseStrategy, ProtocolType, StringMap } from './strategy.js';\nimport { PoolData, PoolBalance, SingleTvl } from '../models/types.js';\nimport { StrategyContext } from '../models/strategyContext.js';\nimport { DepositOptions, WithdrawOptions } from '../core/types.js';\nimport { Transaction, TransactionResult } from '@mysten/sui/transactions';\nimport { CLOCK_PACKAGE_ID, DEEPBOOK_CONFIG } from '../utils/constants.js';\n\n/**\n * FungibleLending Strategy for dual-asset liquidity pools with fungible tokens\n */\nexport class FungibleLendingStrategy extends BaseStrategy<\n FungibleLendingPoolObject,\n never // FungibleLending doesn't have receipts\n> {\n private poolLabel: FungibleLendingPoolLabel;\n private poolObject: FungibleLendingPoolObject;\n private xTokenBalance: Decimal = new Decimal(0);\n private context: StrategyContext;\n\n constructor(poolLabel: FungibleLendingPoolLabel, poolObject: any, context: StrategyContext) {\n super();\n this.poolLabel = poolLabel;\n this.poolObject = this.parsePoolObject(poolObject);\n this.context = context;\n }\n\n getPoolLabel(): FungibleLendingPoolLabel {\n return this.poolLabel;\n }\n\n updateReceipts(xTokenBalance: Decimal): void {\n this.xTokenBalance = xTokenBalance;\n }\n\n /**\n * Returns alpha mining data - FungibleLending pools do not support alpha mining\n */\n protected getAlphaMiningData(): AlphaMiningData {\n return {\n poolId: this.poolLabel.poolId,\n accRewardsPerXtoken: [],\n xTokenSupply: '0',\n receipt: null,\n };\n }\n\n /**\n * Get the exchange rate for fungible token to underlying token ratio\n * Calculated as tokens_invested / treasury_cap.total_supply\n */\n exchangeRate(): Decimal {\n const tokensInvested = new Decimal(this.poolObject.totalDeposited).sub(\n new Decimal(this.poolObject.collectedFees),\n );\n const totalSupply = new Decimal(this.poolObject.totalLstSupply);\n\n if (totalSupply.isZero()) {\n return new Decimal(1); // Default exchange rate when no tokens are supplied\n }\n\n return tokensInvested.div(totalSupply);\n }\n\n /**\n * Get comprehensive pool data including TVL, LP breakdown, price, and position range\n */\n async getData(): Promise<PoolData> {\n const [alphafi, parent, apr] = await Promise.all([\n this.getTvl(),\n this.getParentTvl(),\n this.context.getAprData(this.poolLabel.poolId),\n ]);\n return {\n poolId: this.poolLabel.poolId,\n poolName: this.poolLabel.poolName,\n apr,\n tvl: {\n alphafi,\n parent,\n },\n };\n }\n\n /**\n * Calculate total value locked using current asset prices and token amounts\n */\n async getTvl(): Promise<SingleTvl> {\n const coinType = this.poolLabel.asset.type;\n const price = await this.context.getCoinPrice(coinType);\n const decimals = await this.context.getCoinDecimals(coinType);\n const amount = new Decimal(this.poolObject.totalDeposited).div(Math.pow(10, decimals));\n const usdValue = amount.mul(price);\n return { tokenAmount: amount, usdValue };\n }\n\n /**\n * Calculate parent pool TVL from underlying protocol reserves\n */\n async getParentTvl(): Promise<SingleTvl> {\n return { tokenAmount: new Decimal(0), usdValue: new Decimal(0) };\n }\n\n /**\n * Calculate user's current pool balance from fungible xToken balance\n * Uses wallet balance instead of receipts\n */\n async getBalance(_userAddress: string): Promise<PoolBalance> {\n if (this.xTokenBalance.isZero()) {\n return {\n tokenAmount: new Decimal(0),\n usdValue: new Decimal(0),\n };\n }\n\n const exchangeRate = this.exchangeRate();\n const coinType = this.poolLabel.asset.type;\n const decimals = await this.context.getCoinDecimals(coinType);\n const tokens = this.xTokenBalance.mul(exchangeRate).div(Math.pow(10, decimals));\n const price = await this.context.getCoinPrice(coinType);\n const usdValue = tokens.mul(price);\n return { tokenAmount: tokens, usdValue };\n }\n\n getOtherAmount(_amount: string, _isAmountA: boolean): [string, string] {\n throw new Error('not supported');\n }\n\n private coinAmountToXToken(amount: string): string {\n const tokens = new Decimal(amount);\n const exchangeRate = this.exchangeRate();\n return tokens.div(exchangeRate).floor().toString();\n }\n\n /**\n * Parse pool object from blockchain response\n */\n parsePoolObject(response: any): FungibleLendingPoolObject {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n return {\n totalDeposited: this.getStringField(fields, 'total_deposited'),\n totalLstSupply: this.getStringField(fields, 'total_lst_supply'),\n id: this.getStringField(fields, 'id'),\n isPaused: this.getBooleanField(fields, 'is_paused', false),\n collectedFees: this.getStringField(fields, 'collected_fees'),\n depositLimit: this.getStringField(fields, 'deposit_limit'),\n };\n }, 'Failed to parse FungibleLending pool object');\n }\n\n /**\n * Parse investor object from blockchain response\n */\n parseInvestorObject(_response: any): never {\n throw new Error('no investor object');\n }\n\n /**\n * Parse parent pool object from blockchain response\n */\n parseParentPoolObject(_response: any): never {\n throw new Error('No parent pool needed');\n }\n\n /**\n * Parse receipt objects (not applicable for FungibleLending)\n */\n parseReceiptObjects(_responses: any[]): never {\n throw new Error('FungibleLending strategy does not have receipts');\n }\n\n async deposit(tx: Transaction, options: DepositOptions) {\n const amount = options.amount;\n if (amount === 0n) {\n throw new Error('cannot supply 0 amount');\n }\n\n const depositCoin = await this.context.blockchain.getCoinObject(\n tx,\n this.poolLabel.asset.type,\n options.address,\n BigInt(amount),\n );\n const lst = tx.moveCall({\n target: `${this.poolLabel.packageId}::alphalend_deepbook_pool::deposit`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(this.poolLabel.poolId),\n tx.object(DEEPBOOK_CONFIG.MARGIN_POOLS[this.poolLabel.asset.name]),\n tx.object(DEEPBOOK_CONFIG.MARGIN_REGISTRY),\n depositCoin,\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n tx.transferObjects([lst], options.address);\n }\n\n async withdraw(tx: Transaction, options: WithdrawOptions) {\n if (options.amount === '0') {\n throw new Error('cannot withdraw zero');\n }\n if (this.xTokenBalance.isZero()) {\n throw new Error('No xToken balance found!');\n }\n\n let xTokenAmount = '0';\n if (options.withdrawMax) {\n xTokenAmount = this.xTokenBalance.toString();\n } else {\n xTokenAmount = this.coinAmountToXToken(options.amount.toString());\n }\n\n const withdrawFungibleCoin = await this.context.blockchain.getCoinObject(\n tx,\n this.poolLabel.fungibleCoin.type,\n options.address,\n BigInt(xTokenAmount),\n );\n\n const coin = tx.moveCall({\n target: `${this.poolLabel.packageId}::alphalend_deepbook_pool::withdraw`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(this.poolLabel.poolId),\n tx.object(DEEPBOOK_CONFIG.MARGIN_POOLS[this.poolLabel.asset.name]),\n tx.object(DEEPBOOK_CONFIG.MARGIN_REGISTRY),\n withdrawFungibleCoin,\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n tx.transferObjects([coin], options.address);\n }\n\n async claimRewards(_tx: Transaction, _alphaReceipt: TransactionResult) {\n return;\n }\n}\n\n/**\n * FungibleLending Pool object data structure\n */\nexport interface FungibleLendingPoolObject {\n totalDeposited: string;\n collectedFees: string;\n id: string;\n isPaused: boolean;\n totalLstSupply: string;\n depositLimit: string;\n}\n\n/**\n * FungibleLending Pool Label configuration\n */\nexport interface FungibleLendingPoolLabel {\n poolId: string;\n packageId: string;\n strategyType: 'FungibleLending';\n parentProtocol: ProtocolType;\n parentPoolId: string;\n fungibleCoin: StringMap;\n asset: StringMap;\n events: {\n autocompoundEventType: string;\n };\n isActive: boolean;\n poolName: string;\n isNative: boolean;\n}\n"]}
1
+ {"version":3,"file":"fungibleLending.js","sourceRoot":"","sources":["../../../src/strategies/fungibleLending.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * FungibleLending Strategy\n */\n\nimport { Decimal } from 'decimal.js';\nimport { AlphaMiningData, BaseStrategy, ProtocolType, StringMap } from './strategy.js';\nimport { PoolData, PoolBalance, SingleTvl } from '../models/types.js';\nimport { StrategyContext } from '../models/strategyContext.js';\nimport { DepositOptions, WithdrawOptions } from '../core/types.js';\nimport { Transaction, TransactionResult } from '@mysten/sui/transactions';\nimport { CLOCK_PACKAGE_ID, DEEPBOOK_CONFIG } from '../utils/constants.js';\n\n/**\n * FungibleLending Strategy for dual-asset liquidity pools with fungible tokens\n */\nexport class FungibleLendingStrategy extends BaseStrategy<\n FungibleLendingPoolObject,\n never // FungibleLending doesn't have receipts\n> {\n private poolLabel: FungibleLendingPoolLabel;\n private poolObject: FungibleLendingPoolObject;\n private xTokenBalance: Decimal = new Decimal(0);\n private context: StrategyContext;\n\n constructor(poolLabel: FungibleLendingPoolLabel, poolObject: any, context: StrategyContext) {\n super();\n this.poolLabel = poolLabel;\n this.poolObject = this.parsePoolObject(poolObject);\n this.context = context;\n }\n\n getPoolLabel(): FungibleLendingPoolLabel {\n return this.poolLabel;\n }\n\n updateReceipts(xTokenBalance: Decimal): void {\n this.xTokenBalance = xTokenBalance;\n }\n\n /**\n * Returns alpha mining data - FungibleLending pools do not support alpha mining\n */\n protected getAlphaMiningData(): AlphaMiningData {\n return {\n poolId: this.poolLabel.poolId,\n accRewardsPerXtoken: [],\n xTokenSupply: '0',\n receipt: null,\n };\n }\n\n /**\n * Get the exchange rate for fungible token to underlying token ratio\n * Calculated as tokens_invested / treasury_cap.total_supply\n */\n exchangeRate(): Decimal {\n const tokensInvested = new Decimal(this.poolObject.totalDeposited).sub(\n new Decimal(this.poolObject.collectedFees),\n );\n const totalSupply = new Decimal(this.poolObject.totalLstSupply);\n\n if (totalSupply.isZero()) {\n return new Decimal(1); // Default exchange rate when no tokens are supplied\n }\n\n return tokensInvested.div(totalSupply);\n }\n\n /**\n * Get comprehensive pool data including TVL, LP breakdown, price, and position range\n */\n async getData(): Promise<PoolData> {\n const [alphafi, parent, apr] = await Promise.all([\n this.getTvl(),\n this.getParentTvl(),\n this.context.getAprData(this.poolLabel.poolId),\n ]);\n return {\n poolId: this.poolLabel.poolId,\n strategyType: this.poolLabel.strategyType,\n coinType: this.poolLabel.asset.type,\n poolName: this.poolLabel.poolName,\n apr,\n tvl: {\n alphafi,\n parent,\n },\n };\n }\n\n /**\n * Calculate total value locked using current asset prices and token amounts\n */\n async getTvl(): Promise<SingleTvl> {\n const coinType = this.poolLabel.asset.type;\n const price = await this.context.getCoinPrice(coinType);\n const decimals = await this.context.getCoinDecimals(coinType);\n const amount = new Decimal(this.poolObject.totalDeposited).div(Math.pow(10, decimals));\n const usdValue = amount.mul(price);\n return { tokenAmount: amount, usdValue };\n }\n\n /**\n * Calculate parent pool TVL from underlying protocol reserves\n */\n async getParentTvl(): Promise<SingleTvl> {\n return { tokenAmount: new Decimal(0), usdValue: new Decimal(0) };\n }\n\n /**\n * Calculate user's current pool balance from fungible xToken balance\n * Uses wallet balance instead of receipts\n */\n async getBalance(_userAddress: string): Promise<PoolBalance> {\n if (this.xTokenBalance.isZero()) {\n return {\n tokenAmount: new Decimal(0),\n usdValue: new Decimal(0),\n };\n }\n\n const exchangeRate = this.exchangeRate();\n const coinType = this.poolLabel.asset.type;\n const decimals = await this.context.getCoinDecimals(coinType);\n const tokens = this.xTokenBalance.mul(exchangeRate).div(Math.pow(10, decimals));\n const price = await this.context.getCoinPrice(coinType);\n const usdValue = tokens.mul(price);\n return { tokenAmount: tokens, usdValue };\n }\n\n getOtherAmount(_amount: string, _isAmountA: boolean): [string, string] {\n throw new Error('not supported');\n }\n\n private coinAmountToXToken(amount: string): string {\n const tokens = new Decimal(amount);\n const exchangeRate = this.exchangeRate();\n return tokens.div(exchangeRate).floor().toString();\n }\n\n /**\n * Parse pool object from blockchain response\n */\n parsePoolObject(response: any): FungibleLendingPoolObject {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n return {\n totalDeposited: this.getStringField(fields, 'total_deposited'),\n totalLstSupply: this.getStringField(fields, 'total_lst_supply'),\n id: this.getStringField(fields, 'id'),\n isPaused: this.getBooleanField(fields, 'is_paused', false),\n collectedFees: this.getStringField(fields, 'collected_fees'),\n depositLimit: this.getStringField(fields, 'deposit_limit'),\n };\n }, 'Failed to parse FungibleLending pool object');\n }\n\n /**\n * Parse investor object from blockchain response\n */\n parseInvestorObject(_response: any): never {\n throw new Error('no investor object');\n }\n\n /**\n * Parse parent pool object from blockchain response\n */\n parseParentPoolObject(_response: any): never {\n throw new Error('No parent pool needed');\n }\n\n /**\n * Parse receipt objects (not applicable for FungibleLending)\n */\n parseReceiptObjects(_responses: any[]): never {\n throw new Error('FungibleLending strategy does not have receipts');\n }\n\n async deposit(tx: Transaction, options: DepositOptions) {\n const amount = options.amount;\n if (amount === 0n) {\n throw new Error('cannot supply 0 amount');\n }\n\n const depositCoin = await this.context.blockchain.getCoinObject(\n tx,\n this.poolLabel.asset.type,\n options.address,\n BigInt(amount),\n );\n const lst = tx.moveCall({\n target: `${this.poolLabel.packageId}::alphalend_deepbook_pool::deposit`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(this.poolLabel.poolId),\n tx.object(DEEPBOOK_CONFIG.MARGIN_POOLS[this.poolLabel.asset.name]),\n tx.object(DEEPBOOK_CONFIG.MARGIN_REGISTRY),\n depositCoin,\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n tx.transferObjects([lst], options.address);\n }\n\n async withdraw(tx: Transaction, options: WithdrawOptions) {\n if (options.amount === '0') {\n throw new Error('cannot withdraw zero');\n }\n if (this.xTokenBalance.isZero()) {\n throw new Error('No xToken balance found!');\n }\n\n let xTokenAmount = '0';\n if (options.withdrawMax) {\n xTokenAmount = this.xTokenBalance.toString();\n } else {\n xTokenAmount = this.coinAmountToXToken(options.amount.toString());\n }\n\n const withdrawFungibleCoin = await this.context.blockchain.getCoinObject(\n tx,\n this.poolLabel.fungibleCoin.type,\n options.address,\n BigInt(xTokenAmount),\n );\n\n const coin = tx.moveCall({\n target: `${this.poolLabel.packageId}::alphalend_deepbook_pool::withdraw`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(this.poolLabel.poolId),\n tx.object(DEEPBOOK_CONFIG.MARGIN_POOLS[this.poolLabel.asset.name]),\n tx.object(DEEPBOOK_CONFIG.MARGIN_REGISTRY),\n withdrawFungibleCoin,\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n tx.transferObjects([coin], options.address);\n }\n\n async claimRewards(_tx: Transaction, _alphaReceipt: TransactionResult) {\n return;\n }\n}\n\n/**\n * FungibleLending Pool object data structure\n */\nexport interface FungibleLendingPoolObject {\n totalDeposited: string;\n collectedFees: string;\n id: string;\n isPaused: boolean;\n totalLstSupply: string;\n depositLimit: string;\n}\n\n/**\n * FungibleLending Pool Label configuration\n */\nexport interface FungibleLendingPoolLabel {\n poolId: string;\n packageId: string;\n strategyType: 'FungibleLending';\n parentProtocol: ProtocolType;\n parentPoolId: string;\n fungibleCoin: StringMap;\n asset: StringMap;\n events: {\n autocompoundEventType: string;\n };\n isActive: boolean;\n poolName: string;\n isNative: boolean;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fungibleLp.d.ts","sourceRoot":"","sources":["../../../src/strategies/fungibleLp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fungibleLp.d.ts","sourceRoot":"","sources":["../../../src/strategies/fungibleLp.ts"],"names":[],"mappings":"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"}
@@ -72,6 +72,9 @@ class FungibleLpStrategy extends strategy_js_1.BaseStrategy {
72
72
  ]);
73
73
  return {
74
74
  poolId: this.poolLabel.poolId,
75
+ strategyType: this.poolLabel.strategyType,
76
+ coinAType: this.poolLabel.assetA.type,
77
+ coinBType: this.poolLabel.assetB.type,
75
78
  poolName: this.poolLabel.poolName,
76
79
  apr,
77
80
  tvl: {
@@ -340,7 +343,7 @@ class FungibleLpStrategy extends strategy_js_1.BaseStrategy {
340
343
  tx.object(constants_js_1.DISTRIBUTOR_OBJECT_ID),
341
344
  tx.object(this.poolLabel.investorId),
342
345
  tx.object(constants_js_1.GLOBAL_CONFIGS.BLUEFIN),
343
- tx.object(await this.context.getPoolIdBySymbolsAndProtocol('stSUI', 'SUI', 'bluefin')),
346
+ tx.object(this.poolLabel.parentPoolId),
344
347
  tx.object(await this.context.getPoolIdBySymbolsAndProtocol('BLUE', 'SUI', 'bluefin')),
345
348
  tx.object(constants_js_1.STSUI.LST_INFO),
346
349
  tx.object(constants_js_1.SUI_SYSTEM_STATE),
@@ -379,7 +382,7 @@ class FungibleLpStrategy extends strategy_js_1.BaseStrategy {
379
382
  tx.object(constants_js_1.DISTRIBUTOR_OBJECT_ID),
380
383
  tx.object(this.poolLabel.investorId),
381
384
  tx.object(constants_js_1.GLOBAL_CONFIGS.BLUEFIN),
382
- tx.object(await this.context.getPoolIdBySymbolsAndProtocol('stSUI', 'SUI', 'bluefin')),
385
+ tx.object(this.poolLabel.parentPoolId),
383
386
  tx.object(await this.context.getPoolIdBySymbolsAndProtocol('BLUE', 'SUI', 'bluefin')),
384
387
  tx.object(constants_js_1.STSUI.LST_INFO),
385
388
  tx.object(constants_js_1.SUI_SYSTEM_STATE),
@@ -1 +1 @@
1
- {"version":3,"file":"fungibleLp.js","sourceRoot":"","sources":["../../../src/strategies/fungibleLp.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * FungibleLp Strategy\n */\n\nimport { Decimal } from 'decimal.js';\nimport { AlphaMiningData, BaseStrategy, ProtocolType, StringMap } from './strategy.js';\nimport { PoolData, DoubleTvl, PoolBalance } from '../models/types.js';\nimport { StrategyContext } from '../models/strategyContext.js';\nimport BN from 'bn.js';\nimport { ClmmPoolUtil, LiquidityInput, TickMath } from '@cetusprotocol/cetus-sui-clmm-sdk';\nimport { DepositOptions, WithdrawOptions } from '../core/types.js';\nimport { Transaction, TransactionResult } from '@mysten/sui/transactions';\nimport {\n CLOCK_PACKAGE_ID,\n DISTRIBUTOR_OBJECT_ID,\n GLOBAL_CONFIGS,\n STSUI,\n SUI_SYSTEM_STATE,\n VERSIONS,\n} from '../utils/constants.js';\n\n/**\n * FungibleLp Strategy for dual-asset liquidity pools with fungible tokens\n */\nexport class FungibleLpStrategy extends BaseStrategy<\n FungibleLpPoolObject,\n FungibleLpInvestorObject,\n FungibleLpParentPoolObject,\n never // FungibleLp doesn't have receipts\n> {\n private poolLabel: FungibleLpPoolLabel;\n private poolObject: FungibleLpPoolObject;\n private investorObject: FungibleLpInvestorObject;\n private parentPoolObject: FungibleLpParentPoolObject;\n private xTokenBalance: Decimal = new Decimal(0);\n private context: StrategyContext;\n\n constructor(\n poolLabel: FungibleLpPoolLabel,\n poolObject: any,\n investorObject: any,\n parentPoolObject: any,\n context: StrategyContext,\n ) {\n super();\n this.poolLabel = poolLabel;\n this.poolObject = this.parsePoolObject(poolObject);\n this.investorObject = this.parseInvestorObject(investorObject);\n this.parentPoolObject = this.parseParentPoolObject(parentPoolObject);\n this.context = context;\n }\n\n getPoolLabel(): FungibleLpPoolLabel {\n return this.poolLabel;\n }\n\n updateReceipts(xTokenBalance: Decimal): void {\n this.xTokenBalance = xTokenBalance;\n }\n\n /**\n * Returns alpha mining data - FungibleLp pools do not support alpha mining\n */\n protected getAlphaMiningData(): AlphaMiningData {\n return {\n poolId: this.poolLabel.poolId,\n accRewardsPerXtoken: [],\n xTokenSupply: '0',\n receipt: null,\n };\n }\n\n /**\n * Get the exchange rate for fungible token to underlying token ratio\n * Calculated as tokens_invested / treasury_cap.total_supply\n */\n exchangeRate(): Decimal {\n const tokensInvested = new Decimal(this.poolObject.tokensInvested);\n const totalSupply = new Decimal(this.poolObject.treasuryCap.totalSupply);\n\n if (totalSupply.isZero()) {\n return new Decimal(1); // Default exchange rate when no tokens are supplied\n }\n\n return tokensInvested.div(totalSupply);\n }\n\n /**\n * Get comprehensive pool data including TVL, LP breakdown, price, and position range\n */\n async getData(): Promise<PoolData> {\n const [\n alphafi,\n parent,\n lpBreakdown,\n parentLpBreakdown,\n currentLPPoolPrice,\n positionRange,\n apr,\n ] = await Promise.all([\n this.getTvl(),\n this.getParentTvl(),\n this.getLpBreakdown(),\n this.getParentLpBreakdown(),\n this.getCurrentLPPoolPrice(),\n this.getPositionRange(),\n this.context.getAprData(this.poolLabel.poolId),\n ]);\n return {\n poolId: this.poolLabel.poolId,\n poolName: this.poolLabel.poolName,\n apr,\n tvl: {\n alphafi,\n parent,\n },\n lpBreakdown,\n parentLpBreakdown,\n currentLPPoolPrice,\n positionRange,\n };\n }\n\n /**\n * Calculate total value locked using current asset prices and token amounts\n */\n async getTvl(): Promise<DoubleTvl> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const priceA = await this.context.getCoinPrice(coinTypeA);\n const priceB = await this.context.getCoinPrice(coinTypeB);\n const { amountA, amountB } = await this.getTokenAmounts(this.poolObject.tokensInvested);\n const usdValue = amountA.mul(priceA).add(amountB.mul(priceB));\n return { tokenAmountA: amountA, tokenAmountB: amountB, usdValue };\n }\n\n /**\n * Calculate parent pool TVL from underlying protocol reserves\n */\n async getParentTvl(): Promise<DoubleTvl> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const decimalsA = await this.context.getCoinDecimals(coinTypeA);\n const decimalsB = await this.context.getCoinDecimals(coinTypeB);\n const priceA = await this.context.getCoinPrice(coinTypeA);\n const priceB = await this.context.getCoinPrice(coinTypeB);\n const tokenAmountA = new Decimal(this.parentPoolObject.coinA).div(\n new Decimal(10).pow(decimalsA),\n );\n const tokenAmountB = new Decimal(this.parentPoolObject.coinB).div(\n new Decimal(10).pow(decimalsB),\n );\n const usdValue = tokenAmountA.mul(priceA).add(tokenAmountB.mul(priceB));\n return { tokenAmountA, tokenAmountB, usdValue };\n }\n\n /**\n * Calculate token A and B amounts from liquidity using Cetus CLMM SDK\n */\n private async getTokenAmounts(\n liquidity: string,\n ): Promise<{ amountA: Decimal; amountB: Decimal }> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const scalingA = new Decimal(10).pow(await this.context.getCoinDecimals(coinTypeA));\n const scalingB = new Decimal(10).pow(await this.context.getCoinDecimals(coinTypeB));\n\n const liquidityBN = new BN(new Decimal(liquidity).toFixed(0));\n const currentSqrtPriceBN = new BN(this.parentPoolObject.currentSqrtPrice);\n\n const upperBound = 443636;\n let lowerTick = this.investorObject.lowerTick;\n let upperTick = this.investorObject.upperTick;\n if (lowerTick > upperBound) {\n lowerTick = -~(lowerTick - 1);\n }\n if (upperTick > upperBound) {\n upperTick = -~(upperTick - 1);\n }\n const lowerSqrtPriceBN = TickMath.tickIndexToSqrtPriceX64(lowerTick as number);\n const upperSqrtPriceBN = TickMath.tickIndexToSqrtPriceX64(upperTick as number);\n const amounts = ClmmPoolUtil.getCoinAmountFromLiquidity(\n liquidityBN,\n currentSqrtPriceBN,\n lowerSqrtPriceBN,\n upperSqrtPriceBN,\n false,\n );\n\n const amountA = new Decimal(amounts.coinA.toString()).div(scalingA);\n const amountB = new Decimal(amounts.coinB.toString()).div(scalingB);\n return { amountA, amountB };\n }\n\n /**\n * Get LP token breakdown showing individual asset amounts and total liquidity\n */\n private async getLpBreakdown(): Promise<{\n token1Amount: Decimal;\n token2Amount: Decimal;\n totalLiquidity: Decimal;\n }> {\n const liquidity = this.poolObject.tokensInvested;\n const { amountA, amountB } = await this.getTokenAmounts(liquidity);\n const totalLiquidity = new Decimal(liquidity).div(new Decimal(1e9));\n return {\n token1Amount: amountA,\n token2Amount: amountB,\n totalLiquidity,\n };\n }\n\n /**\n * Get parent pool LP breakdown from underlying protocol\n */\n private async getParentLpBreakdown(): Promise<{\n token1Amount: Decimal;\n token2Amount: Decimal;\n totalLiquidity: Decimal;\n }> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const decimalsA = await this.context.getCoinDecimals(coinTypeA);\n const decimalsB = await this.context.getCoinDecimals(coinTypeB);\n const token1Amount = new Decimal(this.parentPoolObject.coinA).div(\n new Decimal(10).pow(decimalsA),\n );\n const token2Amount = new Decimal(this.parentPoolObject.coinB).div(\n new Decimal(10).pow(decimalsB),\n );\n const totalLiquidity = new Decimal(this.parentPoolObject.liquidity).div(new Decimal(1e9));\n return { token1Amount, token2Amount, totalLiquidity };\n }\n\n /**\n * Get current LP pool price from tick index\n */\n async getCurrentLPPoolPrice(): Promise<Decimal> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const decimalsA = await this.context.getCoinDecimals(coinTypeA);\n const decimalsB = await this.context.getCoinDecimals(coinTypeB);\n let currentTick = this.parentPoolObject.currentTickIndex;\n const upperBound = 443636;\n if (currentTick > upperBound) {\n currentTick = -~(currentTick - 1);\n }\n const price = TickMath.tickIndexToPrice(currentTick, decimalsA, decimalsB);\n return new Decimal(price.toString());\n }\n\n /**\n * Get position price range from lower and upper tick bounds\n */\n async getPositionRange(): Promise<{ lowerPrice: Decimal; upperPrice: Decimal }> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const decimalsA = await this.context.getCoinDecimals(coinTypeA);\n const decimalsB = await this.context.getCoinDecimals(coinTypeB);\n\n const upperBound = 443636;\n let lowerTick = this.investorObject.lowerTick;\n let upperTick = this.investorObject.upperTick;\n if (lowerTick > upperBound) {\n lowerTick = -~(lowerTick - 1);\n }\n if (upperTick > upperBound) {\n upperTick = -~(upperTick - 1);\n }\n const lower = TickMath.tickIndexToPrice(lowerTick, decimalsA, decimalsB);\n const upper = TickMath.tickIndexToPrice(upperTick, decimalsA, decimalsB);\n return { lowerPrice: new Decimal(lower.toString()), upperPrice: new Decimal(upper.toString()) };\n }\n\n /**\n * Calculate user's current pool balance from fungible xToken balance\n * Uses wallet balance instead of receipts\n */\n async getBalance(_userAddress: string): Promise<PoolBalance> {\n if (this.xTokenBalance.isZero()) {\n return {\n tokenAAmount: new Decimal(0),\n tokenBAmount: new Decimal(0),\n usdValue: new Decimal(0),\n };\n }\n\n const exchangeRate = this.exchangeRate();\n const tokens = this.xTokenBalance.mul(exchangeRate);\n\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const [priceA, priceB] = await Promise.all([\n this.context.getCoinPrice(coinTypeA),\n this.context.getCoinPrice(coinTypeB),\n ]);\n\n const { amountA, amountB } = await this.getTokenAmounts(tokens.floor().toString());\n const usdValue = amountA.mul(priceA).add(amountB.mul(priceB));\n return { tokenAAmount: amountA, tokenBAmount: amountB, usdValue };\n }\n\n private getLiquidity(amount: string, isAmountA: boolean): LiquidityInput {\n const upperBound = 443636;\n let lowerTick = this.investorObject.lowerTick;\n let upperTick = this.investorObject.upperTick;\n if (lowerTick > upperBound) {\n lowerTick = -~(lowerTick - 1);\n }\n if (upperTick > upperBound) {\n upperTick = -~(upperTick - 1);\n }\n const currentSqrtPriceBN = new BN(this.parentPoolObject.currentSqrtPrice);\n\n return ClmmPoolUtil.estLiquidityAndcoinAmountFromOneAmounts(\n lowerTick,\n upperTick,\n new BN(`${Math.floor(parseFloat(amount))}`),\n isAmountA,\n false,\n 0.5,\n currentSqrtPriceBN,\n );\n }\n\n getOtherAmount(amount: string, isAmountA: boolean): [string, string] {\n const liquidity = this.getLiquidity(amount, isAmountA);\n return [liquidity.coinAmountA.toString(), liquidity.coinAmountB.toString()];\n }\n\n private coinAmountToXToken(amount: string, isAmountA: boolean): string {\n const liquidity = new Decimal(this.getLiquidity(amount, isAmountA).liquidityAmount.toString());\n const exchangeRate = this.exchangeRate();\n return liquidity.div(exchangeRate).floor().toString();\n }\n\n /**\n * Parse pool object from blockchain response\n */\n parsePoolObject(response: any): FungibleLpPoolObject {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n return {\n depositFee: this.getStringField(fields, 'deposit_fee'),\n depositFeeMaxCap: this.getStringField(fields, 'deposit_fee_max_cap'),\n id: this.getStringField(fields, 'id'),\n paused: this.getBooleanField(fields, 'paused', false),\n treasuryCap: {\n id: this.getNestedField(fields, 'treasury_cap.id'),\n totalSupply: this.getNestedField(fields, 'treasury_cap.total_supply.value'),\n },\n tokensInvested: this.getStringField(fields, 'tokensInvested'),\n withdrawFeeMaxCap: this.getStringField(fields, 'withdraw_fee_max_cap'),\n withdrawalFee: this.getStringField(fields, 'withdrawal_fee'),\n };\n }, 'Failed to parse FungibleLp pool object');\n }\n\n /**\n * Parse investor object from blockchain response\n */\n parseInvestorObject(response: any): FungibleLpInvestorObject {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n return {\n emergencyBalanceA: this.getStringField(fields, 'emergency_balance_a'),\n emergencyBalanceB: this.getStringField(fields, 'emergency_balance_b'),\n freeBalanceA: this.getStringField(fields, 'free_balance_a'),\n freeBalanceB: this.getStringField(fields, 'free_balance_b'),\n freeRewards: (() => {\n const idVal = this.getNestedField(fields, 'free_rewards.id');\n const sizeVal = this.getNestedField(fields, 'free_rewards.size');\n return { id: String(idVal), size: String(sizeVal) };\n })(),\n id: this.getStringField(fields, 'id'),\n isEmergency: this.getBooleanField(fields, 'is_emergency', false),\n lowerTick: this.getNumberField(fields, 'lower_tick'),\n minimumSwapAmount: this.getStringField(fields, 'minimum_swap_amount'),\n performanceFee: this.getStringField(fields, 'performance_fee'),\n performanceFeeMaxCap: this.getStringField(fields, 'performance_fee_max_cap'),\n upperTick: this.getNumberField(fields, 'upper_tick'),\n };\n }, 'Failed to parse FungibleLp investor object');\n }\n\n /**\n * Parse parent pool object from blockchain response\n */\n parseParentPoolObject(response: any): FungibleLpParentPoolObject {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n return {\n coinA: this.getStringField(fields, 'coin_a'),\n coinB: this.getStringField(fields, 'coin_b'),\n currentSqrtPrice: this.getStringField(fields, 'current_sqrt_price'),\n currentTickIndex: this.getNestedField(fields, 'current_tick_index.bits'),\n id: this.getStringField(fields, 'id'),\n liquidity: this.getStringField(fields, 'liquidity'),\n };\n }, 'Failed to parse FungibleLp parent pool object');\n }\n\n /**\n * Parse receipt objects (not applicable for FungibleLp)\n */\n parseReceiptObjects(_responses: any[]): never {\n throw new Error('FungibleLp strategy does not have receipts');\n }\n\n async deposit(tx: Transaction, options: DepositOptions) {\n if (options.isAmountA === undefined) {\n throw new Error('isAmountA is required for AutobalanceLp strategy');\n }\n const [amountA, amountB] = this.getOtherAmount(options.amount.toString(), options.isAmountA);\n\n // get Coin Objects\n const depositCoinA = await this.context.blockchain.getCoinObject(\n tx,\n this.poolLabel.assetA.type,\n options.address,\n BigInt(amountA),\n );\n\n const depositCoinB = await this.context.blockchain.getCoinObject(\n tx,\n this.poolLabel.assetB.type,\n options.address,\n BigInt(amountB),\n );\n\n const [blueCoin] = await this.context.getCoinsBySymbols(['BLUE']);\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_bluefin_stsui_sui_ft_pool::user_deposit`,\n typeArguments: [\n this.poolLabel.assetA.type,\n this.poolLabel.assetB.type,\n this.poolLabel.fungibleCoin.type,\n blueCoin.coinType,\n ],\n arguments: [\n tx.object(VERSIONS.FUNGIBLE_LP),\n tx.object(this.poolLabel.poolId),\n depositCoinA,\n depositCoinB,\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(this.poolLabel.investorId),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(await this.context.getPoolIdBySymbolsAndProtocol('stSUI', 'SUI', 'bluefin')),\n tx.object(await this.context.getPoolIdBySymbolsAndProtocol('BLUE', 'SUI', 'bluefin')),\n tx.object(STSUI.LST_INFO),\n tx.object(SUI_SYSTEM_STATE),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n async withdraw(tx: Transaction, options: WithdrawOptions) {\n if (options.isAmountA === undefined) {\n throw new Error('isAmountA is required for AutobalanceLp strategy');\n }\n if (this.xTokenBalance.isZero()) {\n throw new Error('No xToken balance found!');\n }\n\n let xTokenAmount = '0';\n if (options.withdrawMax) {\n xTokenAmount = this.xTokenBalance.toString();\n } else {\n xTokenAmount = this.coinAmountToXToken(options.amount.toString(), options.isAmountA);\n }\n\n const withdrawFungibleCoin = await this.context.blockchain.getCoinObject(\n tx,\n this.poolLabel.fungibleCoin.type,\n options.address,\n BigInt(xTokenAmount),\n );\n\n const [blueCoin] = await this.context.getCoinsBySymbols(['BLUE']);\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_bluefin_stsui_sui_ft_pool::user_withdraw`,\n typeArguments: [\n this.poolLabel.assetA.type,\n this.poolLabel.assetB.type,\n this.poolLabel.fungibleCoin.type,\n blueCoin.coinType,\n ],\n arguments: [\n tx.object(VERSIONS.FUNGIBLE_LP),\n withdrawFungibleCoin,\n tx.object(this.poolLabel.poolId),\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(this.poolLabel.investorId),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(await this.context.getPoolIdBySymbolsAndProtocol('stSUI', 'SUI', 'bluefin')),\n tx.object(await this.context.getPoolIdBySymbolsAndProtocol('BLUE', 'SUI', 'bluefin')),\n tx.object(STSUI.LST_INFO),\n tx.object(SUI_SYSTEM_STATE),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n async claimRewards(_tx: Transaction, _alphaReceipt: TransactionResult) {\n return;\n }\n}\n\n/**\n * FungibleLp Pool object data structure\n */\nexport interface FungibleLpPoolObject {\n depositFee: string;\n depositFeeMaxCap: string;\n id: string;\n paused: boolean;\n treasuryCap: {\n id: string;\n totalSupply: string;\n };\n tokensInvested: string;\n withdrawFeeMaxCap: string;\n withdrawalFee: string;\n}\n\n/**\n * FungibleLp Investor object data structure\n */\nexport interface FungibleLpInvestorObject {\n emergencyBalanceA: string;\n emergencyBalanceB: string;\n freeBalanceA: string;\n freeBalanceB: string;\n freeRewards: {\n id: string;\n size: string;\n };\n id: string;\n isEmergency: boolean;\n lowerTick: number;\n minimumSwapAmount: string;\n performanceFee: string;\n performanceFeeMaxCap: string;\n upperTick: number;\n}\n\n/**\n * FungibleLp Parent Pool object data structure\n */\nexport interface FungibleLpParentPoolObject {\n coinA: string;\n coinB: string;\n currentSqrtPrice: string;\n currentTickIndex: number;\n id: string;\n liquidity: string;\n}\n\n/**\n * FungibleLp Pool Label configuration\n */\nexport interface FungibleLpPoolLabel {\n poolId: string;\n packageId: string;\n packageNumber: number;\n strategyType: 'FungibleLp';\n parentProtocol: ProtocolType;\n parentPoolId: string;\n investorId: string;\n fungibleCoin: StringMap;\n assetA: StringMap;\n assetB: StringMap;\n events: {\n autocompoundEventType: string;\n rebalanceEventType: string;\n liquidityChangeEventType: string;\n };\n isActive: boolean;\n poolName: string;\n isNative: boolean;\n}\n"]}
1
+ {"version":3,"file":"fungibleLp.js","sourceRoot":"","sources":["../../../src/strategies/fungibleLp.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;AAEH,2CAAqC;AACrC,+CAAuF;AAGvF,0DAAuB;AACvB,0EAA2F;AAG3F,wDAO+B;AAE/B;;GAEG;AACH,MAAa,kBAAmB,SAAQ,0BAKvC;IACS,SAAS,CAAsB;IAC/B,UAAU,CAAuB;IACjC,cAAc,CAA2B;IACzC,gBAAgB,CAA6B;IAC7C,aAAa,GAAY,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,CAAkB;IAEjC,YACE,SAA8B,EAC9B,UAAe,EACf,cAAmB,EACnB,gBAAqB,EACrB,OAAwB;QAExB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;QAC/D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,cAAc,CAAC,aAAsB;QACnC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED;;OAEG;IACO,kBAAkB;QAC1B,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;YAC7B,mBAAmB,EAAE,EAAE;YACvB,YAAY,EAAE,GAAG;YACjB,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,YAAY;QACV,MAAM,cAAc,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAEzE,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC,CAAC,oDAAoD;QAC7E,CAAC;QAED,OAAO,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,CACJ,OAAO,EACP,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,GAAG,EACJ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpB,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;SAC/C,CAAC,CAAC;QACH,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;YAC7B,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY;YACzC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI;YACrC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI;YACrC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;YACjC,GAAG;YACH,GAAG,EAAE;gBACH,OAAO;gBACP,MAAM;aACP;YACD,WAAW;YACX,iBAAiB;YACjB,kBAAkB;YAClB,aAAa;SACd,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACxF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9D,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,GAAG,CAC/D,IAAI,oBAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAC/B,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,GAAG,CAC/D,IAAI,oBAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAC/B,CAAC;QACF,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;IAClD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAC3B,SAAiB;QAEjB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,oBAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QACpF,MAAM,QAAQ,GAAG,IAAI,oBAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QAEpF,MAAM,WAAW,GAAG,IAAI,eAAE,CAAC,IAAI,oBAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,kBAAkB,GAAG,IAAI,eAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAE1E,MAAM,UAAU,GAAG,MAAM,CAAC;QAC1B,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;QAC9C,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;QAC9C,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;YAC3B,SAAS,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;YAC3B,SAAS,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,gBAAgB,GAAG,6BAAQ,CAAC,uBAAuB,CAAC,SAAmB,CAAC,CAAC;QAC/E,MAAM,gBAAgB,GAAG,6BAAQ,CAAC,uBAAuB,CAAC,SAAmB,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG,iCAAY,CAAC,0BAA0B,CACrD,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,CACN,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,oBAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,IAAI,oBAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc;QAK1B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;QACjD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACnE,MAAM,cAAc,GAAG,IAAI,oBAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,oBAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACpE,OAAO;YACL,YAAY,EAAE,OAAO;YACrB,YAAY,EAAE,OAAO;YACrB,cAAc;SACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB;QAKhC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,GAAG,CAC/D,IAAI,oBAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAC/B,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,GAAG,CAC/D,IAAI,oBAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAC/B,CAAC;QACF,MAAM,cAAc,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,oBAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1F,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;QACzD,MAAM,UAAU,GAAG,MAAM,CAAC;QAC1B,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;YAC7B,WAAW,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,KAAK,GAAG,6BAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC3E,OAAO,IAAI,oBAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAEhE,MAAM,UAAU,GAAG,MAAM,CAAC;QAC1B,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;QAC9C,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;QAC9C,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;YAC3B,SAAS,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;YAC3B,SAAS,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,KAAK,GAAG,6BAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,6BAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACzE,OAAO,EAAE,UAAU,EAAE,IAAI,oBAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,oBAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;IAClG,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,YAAoB;QACnC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;YAChC,OAAO;gBACL,YAAY,EAAE,IAAI,oBAAO,CAAC,CAAC,CAAC;gBAC5B,YAAY,EAAE,IAAI,oBAAO,CAAC,CAAC,CAAC;gBAC5B,QAAQ,EAAE,IAAI,oBAAO,CAAC,CAAC,CAAC;aACzB,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC;SACrC,CAAC,CAAC;QAEH,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9D,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpE,CAAC;IAEO,YAAY,CAAC,MAAc,EAAE,SAAkB;QACrD,MAAM,UAAU,GAAG,MAAM,CAAC;QAC1B,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;QAC9C,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;QAC9C,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;YAC3B,SAAS,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;YAC3B,SAAS,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,kBAAkB,GAAG,IAAI,eAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAE1E,OAAO,iCAAY,CAAC,uCAAuC,CACzD,SAAS,EACT,SAAS,EACT,IAAI,eAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAC3C,SAAS,EACT,KAAK,EACL,GAAG,EACH,kBAAkB,CACnB,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,SAAkB;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACvD,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9E,CAAC;IAEO,kBAAkB,CAAC,MAAc,EAAE,SAAkB;QAC3D,MAAM,SAAS,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/F,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,OAAO,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,QAAa;QAC3B,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAE5C,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC;gBACtD,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,qBAAqB,CAAC;gBACpE,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;gBACrC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC;gBACrD,WAAW,EAAE;oBACX,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,CAAC;oBAClD,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iCAAiC,CAAC;iBAC5E;gBACD,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,gBAAgB,CAAC;gBAC7D,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,sBAAsB,CAAC;gBACtE,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,gBAAgB,CAAC;aAC7D,CAAC;QACJ,CAAC,EAAE,wCAAwC,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,QAAa;QAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAE5C,OAAO;gBACL,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,qBAAqB,CAAC;gBACrE,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,qBAAqB,CAAC;gBACrE,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,gBAAgB,CAAC;gBAC3D,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,gBAAgB,CAAC;gBAC3D,WAAW,EAAE,CAAC,GAAG,EAAE;oBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;oBAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;oBACjE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtD,CAAC,CAAC,EAAE;gBACJ,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;gBACrC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC;gBAChE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC;gBACpD,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,qBAAqB,CAAC;gBACrE,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,CAAC;gBAC9D,oBAAoB,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,yBAAyB,CAAC;gBAC5E,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC;aACrD,CAAC;QACJ,CAAC,EAAE,4CAA4C,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,QAAa;QACjC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAE5C,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC;gBAC5C,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC;gBAC5C,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,oBAAoB,CAAC;gBACnE,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,yBAAyB,CAAC;gBACxE,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;gBACrC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC;aACpD,CAAC;QACJ,CAAC,EAAE,+CAA+C,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,UAAiB;QACnC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAe,EAAE,OAAuB;QACpD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAE7F,mBAAmB;QACnB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAC9D,EAAE,EACF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAC1B,OAAO,CAAC,OAAO,EACf,MAAM,CAAC,OAAO,CAAC,CAChB,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAC9D,EAAE,EACF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAC1B,OAAO,CAAC,OAAO,EACf,MAAM,CAAC,OAAO,CAAC,CAChB,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAClE,EAAE,CAAC,QAAQ,CAAC;YACV,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,mDAAmD;YACtF,aAAa,EAAE;gBACb,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI;gBAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI;gBAC1B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI;gBAChC,QAAQ,CAAC,QAAQ;aAClB;YACD,SAAS,EAAE;gBACT,EAAE,CAAC,MAAM,CAAC,uBAAQ,CAAC,WAAW,CAAC;gBAC/B,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBAChC,YAAY;gBACZ,YAAY;gBACZ,EAAE,CAAC,MAAM,CAAC,oCAAqB,CAAC;gBAChC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;gBACpC,EAAE,CAAC,MAAM,CAAC,6BAAc,CAAC,OAAO,CAAC;gBACjC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;gBACtC,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;gBACrF,EAAE,CAAC,MAAM,CAAC,oBAAK,CAAC,QAAQ,CAAC;gBACzB,EAAE,CAAC,MAAM,CAAC,+BAAgB,CAAC;gBAC3B,EAAE,CAAC,MAAM,CAAC,+BAAgB,CAAC;aAC5B;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAe,EAAE,OAAwB;QACtD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,YAAY,GAAG,GAAG,CAAC;QACvB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACvF,CAAC;QAED,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CACtE,EAAE,EACF,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAChC,OAAO,CAAC,OAAO,EACf,MAAM,CAAC,YAAY,CAAC,CACrB,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAClE,EAAE,CAAC,QAAQ,CAAC;YACV,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,oDAAoD;YACvF,aAAa,EAAE;gBACb,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI;gBAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI;gBAC1B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI;gBAChC,QAAQ,CAAC,QAAQ;aAClB;YACD,SAAS,EAAE;gBACT,EAAE,CAAC,MAAM,CAAC,uBAAQ,CAAC,WAAW,CAAC;gBAC/B,oBAAoB;gBACpB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBAChC,EAAE,CAAC,MAAM,CAAC,oCAAqB,CAAC;gBAChC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;gBACpC,EAAE,CAAC,MAAM,CAAC,6BAAc,CAAC,OAAO,CAAC;gBACjC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;gBACtC,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;gBACrF,EAAE,CAAC,MAAM,CAAC,oBAAK,CAAC,QAAQ,CAAC;gBACzB,EAAE,CAAC,MAAM,CAAC,+BAAgB,CAAC;gBAC3B,EAAE,CAAC,MAAM,CAAC,+BAAgB,CAAC;aAC5B;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAgB,EAAE,aAAgC;QACnE,OAAO;IACT,CAAC;CACF;AAxeD,gDAweC","sourcesContent":["/**\n * FungibleLp Strategy\n */\n\nimport { Decimal } from 'decimal.js';\nimport { AlphaMiningData, BaseStrategy, ProtocolType, StringMap } from './strategy.js';\nimport { PoolData, DoubleTvl, PoolBalance } from '../models/types.js';\nimport { StrategyContext } from '../models/strategyContext.js';\nimport BN from 'bn.js';\nimport { ClmmPoolUtil, LiquidityInput, TickMath } from '@cetusprotocol/cetus-sui-clmm-sdk';\nimport { DepositOptions, WithdrawOptions } from '../core/types.js';\nimport { Transaction, TransactionResult } from '@mysten/sui/transactions';\nimport {\n CLOCK_PACKAGE_ID,\n DISTRIBUTOR_OBJECT_ID,\n GLOBAL_CONFIGS,\n STSUI,\n SUI_SYSTEM_STATE,\n VERSIONS,\n} from '../utils/constants.js';\n\n/**\n * FungibleLp Strategy for dual-asset liquidity pools with fungible tokens\n */\nexport class FungibleLpStrategy extends BaseStrategy<\n FungibleLpPoolObject,\n FungibleLpInvestorObject,\n FungibleLpParentPoolObject,\n never // FungibleLp doesn't have receipts\n> {\n private poolLabel: FungibleLpPoolLabel;\n private poolObject: FungibleLpPoolObject;\n private investorObject: FungibleLpInvestorObject;\n private parentPoolObject: FungibleLpParentPoolObject;\n private xTokenBalance: Decimal = new Decimal(0);\n private context: StrategyContext;\n\n constructor(\n poolLabel: FungibleLpPoolLabel,\n poolObject: any,\n investorObject: any,\n parentPoolObject: any,\n context: StrategyContext,\n ) {\n super();\n this.poolLabel = poolLabel;\n this.poolObject = this.parsePoolObject(poolObject);\n this.investorObject = this.parseInvestorObject(investorObject);\n this.parentPoolObject = this.parseParentPoolObject(parentPoolObject);\n this.context = context;\n }\n\n getPoolLabel(): FungibleLpPoolLabel {\n return this.poolLabel;\n }\n\n updateReceipts(xTokenBalance: Decimal): void {\n this.xTokenBalance = xTokenBalance;\n }\n\n /**\n * Returns alpha mining data - FungibleLp pools do not support alpha mining\n */\n protected getAlphaMiningData(): AlphaMiningData {\n return {\n poolId: this.poolLabel.poolId,\n accRewardsPerXtoken: [],\n xTokenSupply: '0',\n receipt: null,\n };\n }\n\n /**\n * Get the exchange rate for fungible token to underlying token ratio\n * Calculated as tokens_invested / treasury_cap.total_supply\n */\n exchangeRate(): Decimal {\n const tokensInvested = new Decimal(this.poolObject.tokensInvested);\n const totalSupply = new Decimal(this.poolObject.treasuryCap.totalSupply);\n\n if (totalSupply.isZero()) {\n return new Decimal(1); // Default exchange rate when no tokens are supplied\n }\n\n return tokensInvested.div(totalSupply);\n }\n\n /**\n * Get comprehensive pool data including TVL, LP breakdown, price, and position range\n */\n async getData(): Promise<PoolData> {\n const [\n alphafi,\n parent,\n lpBreakdown,\n parentLpBreakdown,\n currentLPPoolPrice,\n positionRange,\n apr,\n ] = await Promise.all([\n this.getTvl(),\n this.getParentTvl(),\n this.getLpBreakdown(),\n this.getParentLpBreakdown(),\n this.getCurrentLPPoolPrice(),\n this.getPositionRange(),\n this.context.getAprData(this.poolLabel.poolId),\n ]);\n return {\n poolId: this.poolLabel.poolId,\n strategyType: this.poolLabel.strategyType,\n coinAType: this.poolLabel.assetA.type,\n coinBType: this.poolLabel.assetB.type,\n poolName: this.poolLabel.poolName,\n apr,\n tvl: {\n alphafi,\n parent,\n },\n lpBreakdown,\n parentLpBreakdown,\n currentLPPoolPrice,\n positionRange,\n };\n }\n\n /**\n * Calculate total value locked using current asset prices and token amounts\n */\n async getTvl(): Promise<DoubleTvl> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const priceA = await this.context.getCoinPrice(coinTypeA);\n const priceB = await this.context.getCoinPrice(coinTypeB);\n const { amountA, amountB } = await this.getTokenAmounts(this.poolObject.tokensInvested);\n const usdValue = amountA.mul(priceA).add(amountB.mul(priceB));\n return { tokenAmountA: amountA, tokenAmountB: amountB, usdValue };\n }\n\n /**\n * Calculate parent pool TVL from underlying protocol reserves\n */\n async getParentTvl(): Promise<DoubleTvl> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const decimalsA = await this.context.getCoinDecimals(coinTypeA);\n const decimalsB = await this.context.getCoinDecimals(coinTypeB);\n const priceA = await this.context.getCoinPrice(coinTypeA);\n const priceB = await this.context.getCoinPrice(coinTypeB);\n const tokenAmountA = new Decimal(this.parentPoolObject.coinA).div(\n new Decimal(10).pow(decimalsA),\n );\n const tokenAmountB = new Decimal(this.parentPoolObject.coinB).div(\n new Decimal(10).pow(decimalsB),\n );\n const usdValue = tokenAmountA.mul(priceA).add(tokenAmountB.mul(priceB));\n return { tokenAmountA, tokenAmountB, usdValue };\n }\n\n /**\n * Calculate token A and B amounts from liquidity using Cetus CLMM SDK\n */\n private async getTokenAmounts(\n liquidity: string,\n ): Promise<{ amountA: Decimal; amountB: Decimal }> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const scalingA = new Decimal(10).pow(await this.context.getCoinDecimals(coinTypeA));\n const scalingB = new Decimal(10).pow(await this.context.getCoinDecimals(coinTypeB));\n\n const liquidityBN = new BN(new Decimal(liquidity).toFixed(0));\n const currentSqrtPriceBN = new BN(this.parentPoolObject.currentSqrtPrice);\n\n const upperBound = 443636;\n let lowerTick = this.investorObject.lowerTick;\n let upperTick = this.investorObject.upperTick;\n if (lowerTick > upperBound) {\n lowerTick = -~(lowerTick - 1);\n }\n if (upperTick > upperBound) {\n upperTick = -~(upperTick - 1);\n }\n const lowerSqrtPriceBN = TickMath.tickIndexToSqrtPriceX64(lowerTick as number);\n const upperSqrtPriceBN = TickMath.tickIndexToSqrtPriceX64(upperTick as number);\n const amounts = ClmmPoolUtil.getCoinAmountFromLiquidity(\n liquidityBN,\n currentSqrtPriceBN,\n lowerSqrtPriceBN,\n upperSqrtPriceBN,\n false,\n );\n\n const amountA = new Decimal(amounts.coinA.toString()).div(scalingA);\n const amountB = new Decimal(amounts.coinB.toString()).div(scalingB);\n return { amountA, amountB };\n }\n\n /**\n * Get LP token breakdown showing individual asset amounts and total liquidity\n */\n private async getLpBreakdown(): Promise<{\n token1Amount: Decimal;\n token2Amount: Decimal;\n totalLiquidity: Decimal;\n }> {\n const liquidity = this.poolObject.tokensInvested;\n const { amountA, amountB } = await this.getTokenAmounts(liquidity);\n const totalLiquidity = new Decimal(liquidity).div(new Decimal(1e9));\n return {\n token1Amount: amountA,\n token2Amount: amountB,\n totalLiquidity,\n };\n }\n\n /**\n * Get parent pool LP breakdown from underlying protocol\n */\n private async getParentLpBreakdown(): Promise<{\n token1Amount: Decimal;\n token2Amount: Decimal;\n totalLiquidity: Decimal;\n }> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const decimalsA = await this.context.getCoinDecimals(coinTypeA);\n const decimalsB = await this.context.getCoinDecimals(coinTypeB);\n const token1Amount = new Decimal(this.parentPoolObject.coinA).div(\n new Decimal(10).pow(decimalsA),\n );\n const token2Amount = new Decimal(this.parentPoolObject.coinB).div(\n new Decimal(10).pow(decimalsB),\n );\n const totalLiquidity = new Decimal(this.parentPoolObject.liquidity).div(new Decimal(1e9));\n return { token1Amount, token2Amount, totalLiquidity };\n }\n\n /**\n * Get current LP pool price from tick index\n */\n async getCurrentLPPoolPrice(): Promise<Decimal> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const decimalsA = await this.context.getCoinDecimals(coinTypeA);\n const decimalsB = await this.context.getCoinDecimals(coinTypeB);\n let currentTick = this.parentPoolObject.currentTickIndex;\n const upperBound = 443636;\n if (currentTick > upperBound) {\n currentTick = -~(currentTick - 1);\n }\n const price = TickMath.tickIndexToPrice(currentTick, decimalsA, decimalsB);\n return new Decimal(price.toString());\n }\n\n /**\n * Get position price range from lower and upper tick bounds\n */\n async getPositionRange(): Promise<{ lowerPrice: Decimal; upperPrice: Decimal }> {\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const decimalsA = await this.context.getCoinDecimals(coinTypeA);\n const decimalsB = await this.context.getCoinDecimals(coinTypeB);\n\n const upperBound = 443636;\n let lowerTick = this.investorObject.lowerTick;\n let upperTick = this.investorObject.upperTick;\n if (lowerTick > upperBound) {\n lowerTick = -~(lowerTick - 1);\n }\n if (upperTick > upperBound) {\n upperTick = -~(upperTick - 1);\n }\n const lower = TickMath.tickIndexToPrice(lowerTick, decimalsA, decimalsB);\n const upper = TickMath.tickIndexToPrice(upperTick, decimalsA, decimalsB);\n return { lowerPrice: new Decimal(lower.toString()), upperPrice: new Decimal(upper.toString()) };\n }\n\n /**\n * Calculate user's current pool balance from fungible xToken balance\n * Uses wallet balance instead of receipts\n */\n async getBalance(_userAddress: string): Promise<PoolBalance> {\n if (this.xTokenBalance.isZero()) {\n return {\n tokenAAmount: new Decimal(0),\n tokenBAmount: new Decimal(0),\n usdValue: new Decimal(0),\n };\n }\n\n const exchangeRate = this.exchangeRate();\n const tokens = this.xTokenBalance.mul(exchangeRate);\n\n const coinTypeA = this.poolLabel.assetA.type;\n const coinTypeB = this.poolLabel.assetB.type;\n const [priceA, priceB] = await Promise.all([\n this.context.getCoinPrice(coinTypeA),\n this.context.getCoinPrice(coinTypeB),\n ]);\n\n const { amountA, amountB } = await this.getTokenAmounts(tokens.floor().toString());\n const usdValue = amountA.mul(priceA).add(amountB.mul(priceB));\n return { tokenAAmount: amountA, tokenBAmount: amountB, usdValue };\n }\n\n private getLiquidity(amount: string, isAmountA: boolean): LiquidityInput {\n const upperBound = 443636;\n let lowerTick = this.investorObject.lowerTick;\n let upperTick = this.investorObject.upperTick;\n if (lowerTick > upperBound) {\n lowerTick = -~(lowerTick - 1);\n }\n if (upperTick > upperBound) {\n upperTick = -~(upperTick - 1);\n }\n const currentSqrtPriceBN = new BN(this.parentPoolObject.currentSqrtPrice);\n\n return ClmmPoolUtil.estLiquidityAndcoinAmountFromOneAmounts(\n lowerTick,\n upperTick,\n new BN(`${Math.floor(parseFloat(amount))}`),\n isAmountA,\n false,\n 0.5,\n currentSqrtPriceBN,\n );\n }\n\n getOtherAmount(amount: string, isAmountA: boolean): [string, string] {\n const liquidity = this.getLiquidity(amount, isAmountA);\n return [liquidity.coinAmountA.toString(), liquidity.coinAmountB.toString()];\n }\n\n private coinAmountToXToken(amount: string, isAmountA: boolean): string {\n const liquidity = new Decimal(this.getLiquidity(amount, isAmountA).liquidityAmount.toString());\n const exchangeRate = this.exchangeRate();\n return liquidity.div(exchangeRate).floor().toString();\n }\n\n /**\n * Parse pool object from blockchain response\n */\n parsePoolObject(response: any): FungibleLpPoolObject {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n return {\n depositFee: this.getStringField(fields, 'deposit_fee'),\n depositFeeMaxCap: this.getStringField(fields, 'deposit_fee_max_cap'),\n id: this.getStringField(fields, 'id'),\n paused: this.getBooleanField(fields, 'paused', false),\n treasuryCap: {\n id: this.getNestedField(fields, 'treasury_cap.id'),\n totalSupply: this.getNestedField(fields, 'treasury_cap.total_supply.value'),\n },\n tokensInvested: this.getStringField(fields, 'tokensInvested'),\n withdrawFeeMaxCap: this.getStringField(fields, 'withdraw_fee_max_cap'),\n withdrawalFee: this.getStringField(fields, 'withdrawal_fee'),\n };\n }, 'Failed to parse FungibleLp pool object');\n }\n\n /**\n * Parse investor object from blockchain response\n */\n parseInvestorObject(response: any): FungibleLpInvestorObject {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n return {\n emergencyBalanceA: this.getStringField(fields, 'emergency_balance_a'),\n emergencyBalanceB: this.getStringField(fields, 'emergency_balance_b'),\n freeBalanceA: this.getStringField(fields, 'free_balance_a'),\n freeBalanceB: this.getStringField(fields, 'free_balance_b'),\n freeRewards: (() => {\n const idVal = this.getNestedField(fields, 'free_rewards.id');\n const sizeVal = this.getNestedField(fields, 'free_rewards.size');\n return { id: String(idVal), size: String(sizeVal) };\n })(),\n id: this.getStringField(fields, 'id'),\n isEmergency: this.getBooleanField(fields, 'is_emergency', false),\n lowerTick: this.getNumberField(fields, 'lower_tick'),\n minimumSwapAmount: this.getStringField(fields, 'minimum_swap_amount'),\n performanceFee: this.getStringField(fields, 'performance_fee'),\n performanceFeeMaxCap: this.getStringField(fields, 'performance_fee_max_cap'),\n upperTick: this.getNumberField(fields, 'upper_tick'),\n };\n }, 'Failed to parse FungibleLp investor object');\n }\n\n /**\n * Parse parent pool object from blockchain response\n */\n parseParentPoolObject(response: any): FungibleLpParentPoolObject {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n return {\n coinA: this.getStringField(fields, 'coin_a'),\n coinB: this.getStringField(fields, 'coin_b'),\n currentSqrtPrice: this.getStringField(fields, 'current_sqrt_price'),\n currentTickIndex: this.getNestedField(fields, 'current_tick_index.bits'),\n id: this.getStringField(fields, 'id'),\n liquidity: this.getStringField(fields, 'liquidity'),\n };\n }, 'Failed to parse FungibleLp parent pool object');\n }\n\n /**\n * Parse receipt objects (not applicable for FungibleLp)\n */\n parseReceiptObjects(_responses: any[]): never {\n throw new Error('FungibleLp strategy does not have receipts');\n }\n\n async deposit(tx: Transaction, options: DepositOptions) {\n if (options.isAmountA === undefined) {\n throw new Error('isAmountA is required for AutobalanceLp strategy');\n }\n const [amountA, amountB] = this.getOtherAmount(options.amount.toString(), options.isAmountA);\n\n // get Coin Objects\n const depositCoinA = await this.context.blockchain.getCoinObject(\n tx,\n this.poolLabel.assetA.type,\n options.address,\n BigInt(amountA),\n );\n\n const depositCoinB = await this.context.blockchain.getCoinObject(\n tx,\n this.poolLabel.assetB.type,\n options.address,\n BigInt(amountB),\n );\n\n const [blueCoin] = await this.context.getCoinsBySymbols(['BLUE']);\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_bluefin_stsui_sui_ft_pool::user_deposit`,\n typeArguments: [\n this.poolLabel.assetA.type,\n this.poolLabel.assetB.type,\n this.poolLabel.fungibleCoin.type,\n blueCoin.coinType,\n ],\n arguments: [\n tx.object(VERSIONS.FUNGIBLE_LP),\n tx.object(this.poolLabel.poolId),\n depositCoinA,\n depositCoinB,\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(this.poolLabel.investorId),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(this.poolLabel.parentPoolId),\n tx.object(await this.context.getPoolIdBySymbolsAndProtocol('BLUE', 'SUI', 'bluefin')),\n tx.object(STSUI.LST_INFO),\n tx.object(SUI_SYSTEM_STATE),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n async withdraw(tx: Transaction, options: WithdrawOptions) {\n if (options.isAmountA === undefined) {\n throw new Error('isAmountA is required for AutobalanceLp strategy');\n }\n if (this.xTokenBalance.isZero()) {\n throw new Error('No xToken balance found!');\n }\n\n let xTokenAmount = '0';\n if (options.withdrawMax) {\n xTokenAmount = this.xTokenBalance.toString();\n } else {\n xTokenAmount = this.coinAmountToXToken(options.amount.toString(), options.isAmountA);\n }\n\n const withdrawFungibleCoin = await this.context.blockchain.getCoinObject(\n tx,\n this.poolLabel.fungibleCoin.type,\n options.address,\n BigInt(xTokenAmount),\n );\n\n const [blueCoin] = await this.context.getCoinsBySymbols(['BLUE']);\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_bluefin_stsui_sui_ft_pool::user_withdraw`,\n typeArguments: [\n this.poolLabel.assetA.type,\n this.poolLabel.assetB.type,\n this.poolLabel.fungibleCoin.type,\n blueCoin.coinType,\n ],\n arguments: [\n tx.object(VERSIONS.FUNGIBLE_LP),\n withdrawFungibleCoin,\n tx.object(this.poolLabel.poolId),\n tx.object(DISTRIBUTOR_OBJECT_ID),\n tx.object(this.poolLabel.investorId),\n tx.object(GLOBAL_CONFIGS.BLUEFIN),\n tx.object(this.poolLabel.parentPoolId),\n tx.object(await this.context.getPoolIdBySymbolsAndProtocol('BLUE', 'SUI', 'bluefin')),\n tx.object(STSUI.LST_INFO),\n tx.object(SUI_SYSTEM_STATE),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n }\n\n async claimRewards(_tx: Transaction, _alphaReceipt: TransactionResult) {\n return;\n }\n}\n\n/**\n * FungibleLp Pool object data structure\n */\nexport interface FungibleLpPoolObject {\n depositFee: string;\n depositFeeMaxCap: string;\n id: string;\n paused: boolean;\n treasuryCap: {\n id: string;\n totalSupply: string;\n };\n tokensInvested: string;\n withdrawFeeMaxCap: string;\n withdrawalFee: string;\n}\n\n/**\n * FungibleLp Investor object data structure\n */\nexport interface FungibleLpInvestorObject {\n emergencyBalanceA: string;\n emergencyBalanceB: string;\n freeBalanceA: string;\n freeBalanceB: string;\n freeRewards: {\n id: string;\n size: string;\n };\n id: string;\n isEmergency: boolean;\n lowerTick: number;\n minimumSwapAmount: string;\n performanceFee: string;\n performanceFeeMaxCap: string;\n upperTick: number;\n}\n\n/**\n * FungibleLp Parent Pool object data structure\n */\nexport interface FungibleLpParentPoolObject {\n coinA: string;\n coinB: string;\n currentSqrtPrice: string;\n currentTickIndex: number;\n id: string;\n liquidity: string;\n}\n\n/**\n * FungibleLp Pool Label configuration\n */\nexport interface FungibleLpPoolLabel {\n poolId: string;\n packageId: string;\n packageNumber: number;\n strategyType: 'FungibleLp';\n parentProtocol: ProtocolType;\n parentPoolId: string;\n investorId: string;\n fungibleCoin: StringMap;\n assetA: StringMap;\n assetB: StringMap;\n events: {\n autocompoundEventType: string;\n rebalanceEventType: string;\n liquidityChangeEventType: string;\n };\n isActive: boolean;\n poolName: string;\n isNative: boolean;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"lending.d.ts","sourceRoot":"","sources":["../../../src/strategies/lending.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lending.d.ts","sourceRoot":"","sources":["../../../src/strategies/lending.ts"],"names":[],"mappings":"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"}