@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":"alphaVault.d.ts","sourceRoot":"","sources":["../../../src/strategies/alphaVault.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"alphaVault.d.ts","sourceRoot":"","sources":["../../../src/strategies/alphaVault.ts"],"names":[],"mappings":"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"}
@@ -84,6 +84,8 @@ class AlphaVaultStrategy extends strategy_js_1.BaseStrategy {
84
84
  ]);
85
85
  return {
86
86
  poolId: this.poolLabel.poolId,
87
+ strategyType: this.poolLabel.strategyType,
88
+ coinType: this.poolLabel.asset.type,
87
89
  poolName: this.poolLabel.poolName,
88
90
  apr,
89
91
  tvl: {
@@ -1 +1 @@
1
- {"version":3,"file":"alphaVault.js","sourceRoot":"","sources":["../../../src/strategies/alphaVault.ts"],"names":[],"mappings":"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","sourcesContent":["import { Decimal } from 'decimal.js';\nimport { AlphaMiningData, BaseStrategy, StringMap, ProtocolType } from './strategy.js';\nimport { AlphaFiReceipt, PoolBalance, PoolData, 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 {\n ALPHAFI_RECEIPT_WHITELISTED_ADDRESSES,\n CLOCK_PACKAGE_ID,\n PACKAGE_IDS,\n POOLS,\n VERSIONS,\n} from '../utils/constants.js';\nimport { AlphalendClient, getConstants, getUserPositionCapId } from '@alphafi/alphalend-sdk';\n\n/**\n * AlphaVault Strategy\n */\nexport class AlphaVaultStrategy extends BaseStrategy<\n AlphaVaultPoolObject,\n AlphaVaultInvestorObject,\n never, // AlphaVault doesn't have parent pool objects\n AlphaVaultReceiptObject\n> {\n private poolLabel: AlphaVaultPoolLabel;\n private poolObject: AlphaVaultPoolObject;\n private investorObject: AlphaVaultInvestorObject;\n private legacyReceiptObjects: AlphaVaultLegacyReceiptObject[] = [];\n private receiptObjects: AlphaVaultReceiptObject[] = [];\n private context: StrategyContext;\n\n constructor(\n poolLabel: AlphaVaultPoolLabel,\n poolObject: any,\n investorObject: 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.context = context;\n }\n\n getPoolLabel(): AlphaVaultPoolLabel {\n return this.poolLabel;\n }\n\n getOtherAmount(_amount: string, _isAmountA: boolean): [string, string] {\n throw new Error('getOtherAmount is not supported for single-asset AlphaVault strategy');\n }\n\n updateReceipts(legacyReceipts: any[], receipts: any[]): void {\n this.legacyReceiptObjects = this.parseLegacyReceiptObjects(legacyReceipts);\n this.receiptObjects = this.parseReceiptObjects(receipts);\n }\n\n /**\n * Get data needed for alpha mining rewards calculation.\n * Uses positions (receiptObjects) or legacy receipts if available.\n */\n protected getAlphaMiningData(): AlphaMiningData {\n // Get receipt data from positions or legacy receipts\n const position = this.receiptObjects.length > 0 ? this.receiptObjects[0] : null;\n const legacyReceipt =\n this.legacyReceiptObjects.length > 0 ? this.legacyReceiptObjects[0] : null;\n\n let receiptData = null;\n if (position) {\n receiptData = {\n lastAccRewardPerXtoken: position.lastAccRewardPerXtoken,\n pendingRewards: position.pendingRewards,\n xTokenBalance: position.xTokens,\n };\n } else if (legacyReceipt) {\n receiptData = {\n lastAccRewardPerXtoken: legacyReceipt.lastAccRewardPerXtoken,\n pendingRewards: legacyReceipt.pendingRewards,\n xTokenBalance: legacyReceipt.xTokenBalance,\n };\n }\n\n return {\n poolId: this.poolLabel.poolId,\n accRewardsPerXtoken: this.poolObject.accRewardsPerXtoken,\n xTokenSupply: this.poolObject.xTokenSupply,\n receipt: receiptData,\n };\n }\n\n /**\n * Calculate exchange rate: tokens_invested / xtoken_supply\n * Returns 1 if no tokens are supplied.\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 pool summary data including APR and TVL\n */\n async getData(): Promise<PoolData> {\n const [alphafi, apr] = await Promise.all([\n this.getTvl(),\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: alphafi,\n },\n };\n }\n\n /**\n * Calculate TVL in USD using token amount and price\n */\n async getTvl(): Promise<SingleTvl> {\n const coinType = this.poolLabel.asset.type;\n const decimals = await this.context.getCoinDecimals(coinType);\n const price = await this.context.getCoinPrice(coinType);\n const tokenAmount = new Decimal(this.poolObject.tokensInvested).div(\n new Decimal(10).pow(decimals),\n );\n const usdValue = tokenAmount.mul(price);\n return { tokenAmount, usdValue };\n }\n\n async getParentTvl(): Promise<SingleTvl> {\n throw new Error('AlphaVault strategy does not have a parent pool');\n }\n\n /**\n * Get user's balance including staked amount, pending deposits, withdrawals, and claimable airdrop\n * @param userAddress - User's wallet address\n */\n async getBalance(userAddress: string): Promise<PoolBalance> {\n // Get all required data concurrently\n const [tokenDecimals, tokenPrice, pendingDepositsOption, withdrawalData, claimableAirdrop] =\n await Promise.all([\n this.getTokenDecimals(),\n this.getTokenPriceUsd(),\n this.getPendingDeposits(userAddress),\n this.getWithdrawals(),\n this.getUserClaimableAirdropAmount(),\n ]);\n\n const totalAirdropClaimed = this.getUserTotalAirdropClaimed();\n const position = this.receiptObjects.length > 0 ? this.receiptObjects[0] : null;\n\n // If no receipts and no position, return zeros\n if (this.legacyReceiptObjects.length === 0 && !position) {\n return {\n stakedAlphaAmount: new Decimal(0),\n stakedAlphaUsdValue: new Decimal(0),\n pendingDeposits: new Decimal(0),\n withdrawals: [],\n claimableAirdrop: new Decimal(0),\n totalAirdropClaimed: new Decimal(0),\n };\n }\n\n // Get staked xtokens from position if available, otherwise from receipts\n let stakedXtokens: Decimal;\n if (position) {\n stakedXtokens = new Decimal(position.xTokens || '0');\n } else {\n stakedXtokens = new Decimal(this.legacyReceiptObjects[0]?.xTokenBalance || '0');\n }\n\n const exchangeRate = this.exchangeRate();\n\n // Calculate staked alpha amount\n let stakedAlphaAmount = stakedXtokens.mul(exchangeRate).div(new Decimal(10).pow(tokenDecimals));\n\n // Add pending deposits\n const pendingDeposits = pendingDepositsOption || new Decimal(0);\n stakedAlphaAmount = stakedAlphaAmount.add(pendingDeposits);\n\n // Subtract pending withdrawals (status == 0)\n for (const withdrawal of withdrawalData) {\n if (withdrawal.status === 0) {\n stakedAlphaAmount = stakedAlphaAmount.sub(new Decimal(withdrawal.alphaAmount || '0'));\n }\n }\n\n return {\n stakedAlphaAmount,\n stakedAlphaUsdValue: stakedAlphaAmount.mul(tokenPrice),\n pendingDeposits,\n withdrawals: withdrawalData,\n claimableAirdrop,\n totalAirdropClaimed,\n };\n }\n\n /**\n * Get token decimals for the pool's asset\n */\n async getTokenDecimals(): Promise<number> {\n return this.context.getCoinDecimals(this.poolLabel.asset.type);\n }\n\n /**\n * Get token price in USD for the pool's asset\n */\n async getTokenPriceUsd(): Promise<Decimal> {\n return this.context.getCoinPrice(this.poolLabel.asset.type);\n }\n\n /**\n * Get pending deposits amount by checking recently_updated_alphafi_receipts\n * @param userAddress - User's wallet address\n */\n async getPendingDeposits(userAddress: string): Promise<Decimal> {\n const alphafiReceipts = await this.context.getAlphaFiReceipts(userAddress);\n if (alphafiReceipts.length === 0) {\n return new Decimal(0);\n }\n\n const receiptId = alphafiReceipts[0].id;\n const entry = this.poolObject.recentlyUpdatedAlphafiReceipts.find(\n (item) => item.key === receiptId,\n );\n\n if (!entry) {\n return new Decimal(0);\n }\n\n // Parse the xtokensToAdd from the entry value\n const xtokensToAdd = entry.value.xtokensToAdd;\n if (xtokensToAdd === '0' || !xtokensToAdd) {\n return new Decimal(0);\n }\n\n const [exchangeRate, decimals] = await Promise.all([\n Promise.resolve(this.exchangeRate()),\n this.getTokenDecimals(),\n ]);\n\n const result = new Decimal(xtokensToAdd).mul(exchangeRate).div(new Decimal(10).pow(decimals));\n\n return result;\n }\n\n /**\n * Get all withdrawal requests with status and ETA timestamps\n * Status: 0 = pending, 1 = accepted, 2 = claimable\n */\n async getWithdrawals(): Promise<\n {\n ticketId: string;\n alphaAmount: string;\n status: number; // 0 for pending, 1 for accepted, 2 for claimable\n withdrawalEtaTimestamp: number;\n }[]\n > {\n const position = this.receiptObjects.length > 0 ? this.receiptObjects[0] : null;\n if (!position) {\n return [];\n }\n\n const decimals = await this.getTokenDecimals();\n const nowMs = Date.now();\n const dayOfWeek = new Date().getDay(); // 0 = Sunday\n const numDaysFromNextSunday = 7 - dayOfWeek;\n\n const results: {\n ticketId: string;\n alphaAmount: string;\n status: number; // 0 for pending, 1 for accepted, 2 for claimable\n withdrawalEtaTimestamp: number;\n }[] = [];\n\n for (const entry of position.withdrawRequests) {\n const timeOfUnlock = parseInt(entry.value.timeOfUnlock || '0', 10);\n const timeOfRequest = parseInt(entry.value.timeOfRequest || '0', 10);\n const lockingPeriod = parseInt(this.poolObject.lockingPeriod || '0', 10);\n\n // Determine status: 2 if claimable (time_of_unlock > 0 and passed), else use stored status\n let status: number;\n if (timeOfUnlock > 0 && nowMs >= timeOfUnlock) {\n status = 2; // claimable\n } else {\n status = parseInt(entry.value.status || '0', 10);\n }\n\n // Calculate ETA\n let eta: number;\n if (timeOfUnlock === 0) {\n eta = timeOfRequest + lockingPeriod + numDaysFromNextSunday * 86400000;\n } else {\n eta = timeOfUnlock;\n }\n\n const tokenAmount = entry.value.tokenAmount || '0';\n const alphaAmount = new Decimal(tokenAmount).div(new Decimal(10).pow(decimals)).toString();\n\n results.push({\n ticketId: entry.key,\n alphaAmount,\n status, // 0 = pending, 1 = accepted, 2 = claimable\n withdrawalEtaTimestamp: eta,\n });\n }\n\n return results;\n }\n\n /**\n * Calculate user's claimable SUI airdrop based on accrued rewards per xtoken and pending rewards\n */\n async getUserClaimableAirdropAmount(): Promise<Decimal> {\n const rewardType =\n '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI';\n\n const rewardDecimals = await this.context.getCoinDecimals(rewardType);\n\n // Get current accumulated rewards per xtoken from pool\n const curAccEntry = this.poolObject.accRewardsPerXtoken.find(\n (item) => item.key === rewardType.slice(2),\n );\n const curAcc = new Decimal(curAccEntry?.value || '0');\n\n // Get user's position\n const position = this.receiptObjects.length > 0 ? this.receiptObjects[0] : null;\n\n // Get user's last accumulated reward per xtoken\n const userLastAccEntry = position?.lastAccRewardPerXtoken.find(\n (item) => item.key === rewardType.slice(2),\n );\n const userLastAcc = new Decimal(userLastAccEntry?.value || '0');\n\n // Get user's xtokens\n let userXtokens: Decimal;\n if (position) {\n userXtokens = new Decimal(position.xTokens || '0');\n } else if (this.legacyReceiptObjects.length > 0) {\n userXtokens = new Decimal(this.legacyReceiptObjects[0].xTokenBalance || '0');\n } else {\n userXtokens = new Decimal(0);\n }\n\n // Get pending rewards\n const pendingRewardsEntry = position?.pendingRewards.find(\n (item) => item.key === rewardType.slice(2),\n );\n const pendingRewards = new Decimal(pendingRewardsEntry?.value || '0');\n\n // Calculate: (((curAcc - userLastAcc) / 1e18) * userXtokens + pendingRewards) / 10^rewardDecimals\n const accDiff = curAcc.sub(userLastAcc).div(new Decimal(10).pow(18));\n const claimable = accDiff.mul(userXtokens).add(pendingRewards);\n return claimable.div(new Decimal(10).pow(rewardDecimals));\n }\n\n /**\n * Get user's total SUI airdrop claimed so far\n */\n getUserTotalAirdropClaimed(): Decimal {\n const rewardType =\n '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI';\n\n const position = this.receiptObjects.length > 0 ? this.receiptObjects[0] : null;\n if (!position) {\n return new Decimal(0);\n }\n\n const totalClaimedEntry = position.totalCollectedRewards.find(\n (item) => item.key === rewardType.slice(2),\n );\n const totalClaimed = new Decimal(totalClaimedEntry?.value || '0');\n\n // SUI has 9 decimals\n return totalClaimed.div(new Decimal(10).pow(9));\n }\n\n /**\n * Get total SUI airdrop distributed from the pool\n */\n getTotalAirdropDistributed(): Decimal {\n const rewardType =\n '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI';\n\n // totalDistributed is stored as a string, but in Rust it's VecMap<TypeName, u64>\n // If it's a single value, use it directly; otherwise search the array\n let totalDistributedValue = '0';\n\n if (typeof this.poolObject.totalDistributed === 'string') {\n // If it's stored as a simple string\n totalDistributedValue = this.poolObject.totalDistributed;\n } else if (Array.isArray(this.poolObject.totalDistributed)) {\n // If it's stored as an array of key-value pairs\n const entry = (this.poolObject.totalDistributed as unknown as StringMap[]).find(\n (item) => item.key === rewardType.slice(2),\n );\n totalDistributedValue = entry?.value || '0';\n }\n\n const totalDistributed = new Decimal(totalDistributedValue);\n // SUI has 9 decimals\n return totalDistributed.div(new Decimal(10).pow(9));\n }\n\n /**\n * Parse VecMap of position updates into structured entries\n */\n private parsePositionUpdateVecMap(vecMapField: any): PositionUpdateEntry[] {\n const contents = vecMapField?.fields?.contents ?? vecMapField?.contents ?? vecMapField;\n if (!Array.isArray(contents)) {\n return [];\n }\n\n return contents\n .map((entry: any) => {\n const ef = entry?.fields ?? entry ?? {};\n const key = this.getStringField(ef, 'key');\n const valueFields = ef.value?.fields ?? ef.value ?? {};\n return {\n key,\n value: {\n xtokensToAdd:\n this.getStringField(valueFields, 'xtokens_to_add') ||\n this.getStringField(valueFields, 'xtokensToAdd') ||\n '0',\n xtokensToRemove:\n this.getStringField(valueFields, 'xtokens_to_remove') ||\n this.getStringField(valueFields, 'xtokensToRemove') ||\n '0',\n },\n };\n })\n .filter((e: PositionUpdateEntry) => e.key);\n }\n\n /**\n * Parse pool object from blockchain response\n */\n parsePoolObject(response: any): AlphaVaultPoolObject {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n return {\n id: this.getStringField(fields, 'id'),\n xTokenSupply: this.getStringField(fields, 'xTokenSupply'),\n tokensInvested: this.getStringField(fields, 'tokensInvested'),\n unsuppliedBalance: this.getStringField(fields, 'unsupplied_balance'),\n claimableBalance: this.getStringField(fields, 'claimable_balance'),\n positions: (() => {\n const idVal = this.getNestedField(fields, 'positions.id');\n const sizeVal = this.getNestedField(fields, 'positions.size');\n return { id: String(idVal), size: String(sizeVal) };\n })(),\n recentlyUpdatedAlphafiReceipts: this.parsePositionUpdateVecMap(\n fields.recently_updated_alphafi_receipts || {},\n ),\n withdrawRequests: fields.withdraw_requests?.contents?.map((entry: any) => ({\n timestamp: entry.key,\n leftoverAmount: this.getNestedField(entry, 'value.leftover_amount'),\n totalAmountToWithdraw: this.getNestedField(entry, 'value.total_amount_to_withdraw'),\n })),\n feeCollected: this.getStringField(fields, 'fee_collected'),\n lastDistributionTime: this.getStringField(fields, 'last_distribution_time'),\n lastAutocompoundTime: this.getStringField(fields, 'last_autocompound_time'),\n lockingPeriod: this.getStringField(fields, 'locking_period'),\n timeFromLockingPeriodForUnstakingToStart: this.getStringField(\n fields,\n 'time_from_locking_period_for_unstaking_to_start',\n ),\n currentExchangeRate: this.getNestedField(fields, 'current_exchange_rate.value'),\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 accRewardsPerXtoken: this.parseVecMap(fields.acc_rewards_per_xtoken).map(\n (item) =>\n ({\n key: item.key,\n value: item.value.value,\n }) as StringMap,\n ),\n totalDistributed: this.parseVecMap(fields.total_distributed || {}),\n depositFee: this.getStringField(fields, 'deposit_fee') || '0',\n depositFeeMaxCap: this.getStringField(fields, 'deposit_fee_max_cap') || '0',\n withdrawalFee: this.getStringField(fields, 'withdrawal_fee') || '0',\n withdrawFeeMaxCap: this.getStringField(fields, 'withdraw_fee_max_cap') || '0',\n feeAddress: this.getStringField(fields, 'fee_address'),\n isDepositPaused: this.getBooleanField(fields, 'is_deposit_paused', false),\n isWithdrawPaused: this.getBooleanField(fields, 'is_withdraw_paused', false),\n alphafiPartnerCap: this.getNestedField(fields, 'alphafi_partner_cap.id'),\n activeInvestorId: this.getStringField(fields, 'active_investor_id'),\n additionalFields: (() => {\n const idVal = this.getNestedField(fields, 'additional_fields.id');\n const sizeVal = this.getNestedField(fields, 'additional_fields.size');\n return { id: String(idVal), size: String(sizeVal) };\n })(),\n };\n }, 'Failed to parse AlphaVault pool object');\n }\n\n /**\n * Parse investor object from blockchain response\n */\n parseInvestorObject(response: any): AlphaVaultInvestorObject {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n const allowedCoinTypesArray = fields.allowed_coin_types_for_swap?.contents;\n const withdrawTicketsArray = fields.withdraw_tickets?.contents;\n\n const parseWithdrawTicketInner = (val: any): WithdrawalRequest | null => {\n const vf = val?.fields ?? val ?? {};\n return {\n owner: this.getStringField(vf, 'owner'),\n receiver: this.getStringField(vf, 'receiver'),\n shares: this.getStringField(vf, 'shares'),\n estimatedWithdrawAmount: this.getStringField(vf, 'estimated_withdraw_amount'),\n timestamp: this.getStringField(vf, 'timestamp'),\n sequenceNumber: this.getStringField(vf, 'sequence_number'),\n };\n };\n\n const withdrawTickets = withdrawTicketsArray\n .map((entry: any) => {\n const key = this.getNestedField(entry, 'key.@variant');\n const innerContents = entry.value?.contents;\n const value: WithdrawalRequest[] = innerContents\n .map((inner: any) => {\n const innerVal = parseWithdrawTicketInner(inner.value);\n return innerVal;\n })\n .filter((v: WithdrawalRequest | null): v is WithdrawalRequest => v !== null);\n return { key, value };\n })\n .filter(\n (\n v: { key: string; value: WithdrawalRequest[] } | null,\n ): v is {\n key: string;\n value: WithdrawalRequest[];\n } => v !== null,\n );\n\n return {\n id: this.getStringField(fields, 'id'),\n unsuppliedBalance: this.getStringField(fields, 'unsupplied_balance'),\n claimableBalance: this.getStringField(fields, 'claimable_balance'),\n alphalendPositionCap: {\n positionId: this.getNestedField(fields, 'alphalend_position_cap.id'),\n },\n curDebt: this.getStringField(fields, 'cur_debt'),\n currentDebtToSupplyRatio: this.getNestedField(fields, 'current_debt_to_supply_ratio.value'),\n borrowTokenToTokenRatio: this.getNestedField(fields, 'borrow_token_to_token_ratio.value'),\n safeBorrowPercentage: this.getStringField(fields, 'safe_borrow_percentage'),\n allowedCoinTypesForSwap: Array.isArray(allowedCoinTypesArray)\n ? allowedCoinTypesArray\n .map((entry: any) => {\n const ef = entry?.fields ?? entry ?? {};\n const value = ef.value;\n if (value !== true) return null;\n const keyName = ef.key?.fields?.name ?? ef.key?.name ?? ef.key;\n return typeof keyName === 'string' ? keyName : null;\n })\n .filter((v: string | null): v is string => Boolean(v))\n : [],\n minimumSwapAmount: this.getStringField(fields, 'minimum_swap_amount'),\n primaryMarketId: this.getStringField(fields, 'primary_market_id'),\n borrowMarketId: this.getStringField(fields, 'borrow_market_id'),\n resupplyMarketId: this.getStringField(fields, 'resupply_market_id'),\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 withdrawReceiversAddress: this.getStringField(fields, 'withdraw_receivers_address'),\n withdrawTickets,\n totalPendingWithdrawals: this.getStringField(fields, 'total_pending_withdrawals'),\n performanceFee: this.getStringField(fields, 'performance_fee'),\n performanceFeeCap: this.getStringField(fields, 'performance_fee_cap'),\n additionalFields: (() => {\n const idVal = this.getNestedField(fields, 'additional_fields.id');\n const sizeVal = this.getNestedField(fields, 'additional_fields.size');\n return { id: String(idVal), size: String(sizeVal) };\n })(),\n };\n }, 'Failed to parse AlphaVault investor object');\n }\n\n /**\n * Parse parent pool object from blockchain response (not applicable for AlphaVault)\n */\n parseParentPoolObject(_response: any): never {\n throw new Error('AlphaVault strategy does not have parent pool objects');\n }\n\n /**\n * Parse legacy receipt objects from blockchain responses\n */\n parseLegacyReceiptObjects(responses: any[]): AlphaVaultLegacyReceiptObject[] {\n return responses.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 lockedBalance: {\n id: this.getNestedField(fields, 'locked_balance.id'),\n size: this.getNestedField(fields, 'locked_balance.size'),\n head: this.getNestedField(fields, 'locked_balance.head'),\n tail: this.getNestedField(fields, 'locked_balance.tail'),\n },\n name: this.getStringField(fields, 'name'),\n owner: this.getStringField(fields, 'owner'),\n pendingRewards: this.parseVecMap(fields.pending_rewards || {}),\n poolId: this.getStringField(fields, 'pool_id'),\n unlockedXtokens: this.getStringField(fields, 'unlocked_xtokens'),\n xTokenBalance: this.getStringField(fields, 'xTokenBalance'),\n };\n }, `Failed to parse AlphaVault receipt object at index ${index}`);\n });\n }\n\n /**\n * Parse AlphaVault receipt objects\n */\n parseReceiptObjects(responses: any[]): AlphaVaultReceiptObject[] {\n return responses.map((response, index) => {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n const parseTableInfo = (tableField: any): TableInfo => {\n return {\n id: this.getStringField(tableField, 'id'),\n size: this.getStringField(tableField, 'size'),\n };\n };\n\n const totalCollectedRewards = this.parseVecMap(fields.total_collected_rewards || {});\n\n // Parse withdraw_requests as VecMap<ID, UserWithdrawRequest> - matches Rust's structure\n const parseWithdrawRequestKV = (\n kv: any,\n ): {\n key: string;\n value: UserWithdrawRequest;\n } | null => {\n const key = this.getStringField(kv, 'key');\n const valFields = kv.value;\n const value: UserWithdrawRequest = {\n id: this.getStringField(valFields, 'id'),\n timeOfRequest: this.getStringField(valFields, 'time_of_request'),\n timeOfAcceptance: this.getStringField(valFields, 'time_of_acceptance'),\n timeOfClaim: this.getStringField(valFields, 'time_of_claim'),\n timeOfUnlock: this.getStringField(valFields, 'time_of_unlock'),\n status: this.getStringField(valFields, 'status'),\n tokenAmount: this.getStringField(valFields, 'token_amount'),\n };\n return { key, value };\n };\n\n const withdrawRequestsKV = fields.withdraw_requests.contents.map(parseWithdrawRequestKV);\n\n return {\n id: this.getStringField(fields, 'id'),\n alphafiReceiptId: this.getStringField(fields, 'alphafi_receipt_id'),\n poolId: this.getStringField(fields, 'pool_id'),\n coinType: this.getNestedField(fields, 'coin_type.name'),\n xTokens: this.getStringField(fields, 'xtokens'),\n withdrawRequests: withdrawRequestsKV as {\n key: string;\n value: UserWithdrawRequest;\n }[],\n allWithdrawals: parseTableInfo(fields.all_withdrawals),\n allDeposits: parseTableInfo(fields.all_deposits),\n lastAccRewardPerXtoken: this.parseVecMap(fields.last_acc_reward_per_xtoken).map(\n (item) =>\n ({\n key: item.key,\n value: item.value.value,\n }) as StringMap,\n ),\n pendingRewards: this.parseVecMap(fields.pending_rewards || {}),\n totalCollectedRewards,\n };\n }, `Failed to parse AlphaVault position object at index ${index}`);\n });\n }\n\n async deposit(tx: Transaction, options: DepositOptions) {\n const depositCoin = await this.context.blockchain.getCoinObject(\n tx,\n this.poolLabel.asset.type,\n options.address,\n options.amount,\n );\n\n const alphafiReceipts = await this.context.getAlphaFiReceipts(options.address);\n const legacyReceipt =\n this.legacyReceiptObjects.length > 0 ? this.legacyReceiptObjects[0] : null;\n\n if (alphafiReceipts.length === 0) {\n const alphafiReceiptObj = this.createAlphaFiReceipt(tx);\n\n // Convert alpha receipt to ember position if alpha receipt exists\n if (legacyReceipt) {\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::migrate_alpha_receipt_to_new_alpha_strategy`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(this.poolLabel.poolId),\n alphafiReceiptObj,\n tx.object(legacyReceipt.id),\n tx.object(POOLS.ALPHA_LEGACY),\n ],\n });\n }\n\n // Deposit to ember pool\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::user_deposit`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n alphafiReceiptObj,\n tx.object(this.poolLabel.poolId),\n depositCoin,\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n\n tx.moveCall({\n target: `${PACKAGE_IDS.ALPHAFI_RECEIPT}::alphafi_receipt::transfer_receipt_to_new_owner`,\n arguments: [\n alphafiReceiptObj,\n tx.pure.address(options.address),\n tx.object(ALPHAFI_RECEIPT_WHITELISTED_ADDRESSES),\n ],\n });\n } else {\n // Convert alpha receipt to ember position if needed\n if (legacyReceipt && this.receiptObjects.length === 0) {\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::migrate_alpha_receipt_to_new_alpha_strategy`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(this.poolLabel.poolId),\n tx.object(alphafiReceipts[0].id),\n tx.object(legacyReceipt.id),\n tx.object(POOLS.ALPHA_LEGACY),\n ],\n });\n }\n // Deposit to ember pool\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::user_deposit`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(alphafiReceipts[0].id),\n tx.object(this.poolLabel.poolId),\n depositCoin,\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n }\n }\n\n private async getAlphaTotalShares(alphafiReceipt: AlphaFiReceipt): Promise<string> {\n const entry = alphafiReceipt.positionPoolMap.find(\n (item) => item.value.poolId === this.poolLabel.poolId,\n );\n if (!entry) {\n console.error('no position for pool id found');\n return '0';\n }\n const position = await this.context.blockchain.getObject(entry.key);\n return (position as any).data?.content.fields.xtokens.toString();\n }\n\n async withdraw(tx: Transaction, options: WithdrawOptions) {\n const { amount, withdrawMax, address } = options;\n const alphafiReceipts = await this.context.getAlphaFiReceipts(address);\n const legacyReceipt =\n this.legacyReceiptObjects.length > 0 ? this.legacyReceiptObjects[0] : undefined;\n if (alphafiReceipts.length === 0 && !legacyReceipt) {\n throw new Error(`No AlphaFi receipts or receit found for address ${address}`);\n }\n\n // Calculate xtokens based on amount or withdrawMax\n let xtokens = new Decimal(amount)\n .div(new Decimal(this.poolObject.currentExchangeRate).div(1e18))\n .ceil()\n .toNumber();\n if (withdrawMax) {\n if (alphafiReceipts.length === 0 && legacyReceipt) {\n xtokens = Number(legacyReceipt.xTokenBalance);\n } else {\n const positionUpdate = this.poolObject.recentlyUpdatedAlphafiReceipts.find(\n (item) => item.key === alphafiReceipts[0].id,\n );\n xtokens =\n Number(await this.getAlphaTotalShares(alphafiReceipts[0])) -\n (positionUpdate\n ? Number(positionUpdate.value.xtokensToRemove) -\n Number(positionUpdate.value.xtokensToAdd)\n : 0);\n }\n }\n\n if (alphafiReceipts.length === 0) {\n // Create new AlphaFi receipt\n const alphafiReceiptObj = this.createAlphaFiReceipt(tx);\n if (!legacyReceipt) {\n throw new Error('No alphafi receipt and no alpha receipt found');\n }\n\n // Convert alpha receipt to ember position\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::migrate_alpha_receipt_to_new_alpha_strategy`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(this.poolLabel.poolId),\n alphafiReceiptObj,\n tx.object(legacyReceipt.id),\n tx.object(POOLS.ALPHA_LEGACY),\n ],\n });\n\n // Initiate withdrawal\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::user_initiate_withdraw`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n alphafiReceiptObj,\n tx.object(this.poolLabel.poolId),\n tx.pure.u64(xtokens),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n\n tx.moveCall({\n target: `${PACKAGE_IDS.ALPHAFI_RECEIPT}::alphafi_receipt::transfer_receipt_to_new_owner`,\n arguments: [\n alphafiReceiptObj,\n tx.pure.address(address),\n tx.object(ALPHAFI_RECEIPT_WHITELISTED_ADDRESSES),\n ],\n });\n } else {\n const existingReceipt = alphafiReceipts[0];\n const isPresent = this.receiptObjects.length > 0;\n\n if (!isPresent && !legacyReceipt) {\n throw new Error('No position or old alpha receipt found');\n }\n\n // Convert alpha receipt to ember position if needed\n if (!isPresent && legacyReceipt) {\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::migrate_alpha_receipt_to_new_alpha_strategy`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(this.poolLabel.poolId),\n tx.object(existingReceipt.id),\n tx.object(legacyReceipt.id),\n tx.object(POOLS.ALPHA_LEGACY),\n ],\n });\n }\n\n // Initiate withdrawal\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::user_initiate_withdraw`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(existingReceipt.id),\n tx.object(this.poolLabel.poolId),\n tx.pure.u64(xtokens),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n }\n }\n\n async claimWithdraw(tx: Transaction, ticketId: string, address: string) {\n const alphafiReceipts = await this.context.getAlphaFiReceipts(address);\n\n if (alphafiReceipts.length === 0) {\n throw new Error('No Alphafi receipt found!');\n }\n\n const coin = tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::user_claim_withdraw`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(alphafiReceipts[0].id),\n tx.object(this.poolLabel.poolId),\n tx.pure.id(ticketId),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n tx.transferObjects([coin], address);\n }\n\n async claimAirdrop(tx: Transaction, address: string, transferToWallet: boolean) {\n const alphalendClient = new AlphalendClient('mainnet', this.context.blockchain.suiClient);\n let airdropCoin;\n const [suiCoin, alphaCoin] = await this.context.getCoinsBySymbols(['SUI', 'ALPHA']);\n const airdropCoinMarketId = '1';\n const airdropCoinType = suiCoin.coinType;\n const legacyReceipt =\n this.legacyReceiptObjects.length > 0 ? this.legacyReceiptObjects[0] : undefined;\n const alphafiReceipts = await this.context.getAlphaFiReceipts(address);\n if (alphafiReceipts.length === 0) {\n // Create new AlphaFi receipt\n const alphafiReceiptObj = this.createAlphaFiReceipt(tx);\n\n if (!legacyReceipt) {\n throw new Error('No alphafi receipt and no alpha receipt found');\n }\n\n // Convert alpha receipt to ember position\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::migrate_alpha_receipt_to_new_alpha_strategy`,\n typeArguments: [alphaCoin.coinType],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(this.poolLabel.poolId),\n alphafiReceiptObj,\n tx.object(legacyReceipt.id),\n tx.object(POOLS.ALPHA_LEGACY),\n ],\n });\n\n // Get user rewards\n airdropCoin = tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::get_user_rewards`,\n typeArguments: [alphaCoin.coinType, airdropCoinType],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n alphafiReceiptObj,\n tx.object(this.poolLabel.poolId),\n ],\n });\n\n tx.moveCall({\n target: `${PACKAGE_IDS.ALPHAFI_RECEIPT}::alphafi_receipt::transfer_receipt_to_new_owner`,\n arguments: [\n alphafiReceiptObj,\n tx.pure.address(address),\n tx.object(ALPHAFI_RECEIPT_WHITELISTED_ADDRESSES),\n ],\n });\n } else {\n const existingReceipt = alphafiReceipts[0];\n const isPresent = this.receiptObjects.length > 0;\n\n if (!isPresent && !legacyReceipt) {\n throw new Error('No position or old alpha receipt found');\n }\n\n // Convert alpha receipt to ember position if needed\n if (!isPresent && legacyReceipt) {\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::migrate_alpha_receipt_to_new_alpha_strategy`,\n typeArguments: [alphaCoin.coinType],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(this.poolLabel.poolId),\n tx.object(existingReceipt.id),\n tx.object(legacyReceipt.id),\n tx.object(POOLS.ALPHA_LEGACY),\n ],\n });\n }\n\n // Get user rewards\n airdropCoin = tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::get_user_rewards`,\n typeArguments: [alphaCoin.coinType, airdropCoinType],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(existingReceipt.id),\n tx.object(this.poolLabel.poolId),\n ],\n });\n }\n\n if (!transferToWallet) {\n await alphalendClient.updatePrices(tx, ['0x2::sui::SUI']);\n const alphalendConstants = getConstants('mainnet');\n const userPositionCapId = await getUserPositionCapId(\n this.context.blockchain.suiClient,\n 'mainnet',\n address,\n );\n if (!userPositionCapId) {\n const positionCap = alphalendClient.createPosition(tx);\n tx.moveCall({\n target: `${alphalendConstants.ALPHALEND_LATEST_PACKAGE_ID}::alpha_lending::add_collateral`,\n typeArguments: [airdropCoinType],\n arguments: [\n tx.object(alphalendConstants.LENDING_PROTOCOL_ID), // Protocol object\n positionCap, // Position capability\n tx.pure.u64(airdropCoinMarketId), // Market ID\n airdropCoin, // Coin to supply as collateral\n tx.object(alphalendConstants.SUI_CLOCK_OBJECT_ID), // Clock object\n ],\n });\n tx.transferObjects([positionCap], address);\n } else {\n const portfolio =\n await alphalendClient.getUserPortfolioFromPositionCapId(userPositionCapId);\n if (portfolio && portfolio.borrowedAmounts.has(Number(airdropCoinMarketId))) {\n airdropCoin = tx.moveCall({\n target: `${alphalendConstants.ALPHALEND_LATEST_PACKAGE_ID}::alpha_lending::repay`,\n typeArguments: [airdropCoinType],\n arguments: [\n tx.object(alphalendConstants.LENDING_PROTOCOL_ID), // Protocol object\n tx.object(userPositionCapId), // Position capability\n tx.pure.u64(airdropCoinMarketId), // Market ID\n airdropCoin, // Coin to repay with\n tx.object(alphalendConstants.SUI_CLOCK_OBJECT_ID), // Clock object\n ],\n });\n tx.transferObjects([airdropCoin], address);\n } else {\n tx.moveCall({\n target: `${alphalendConstants.ALPHALEND_LATEST_PACKAGE_ID}::alpha_lending::add_collateral`,\n typeArguments: [airdropCoinType],\n arguments: [\n tx.object(alphalendConstants.LENDING_PROTOCOL_ID), // Protocol object\n tx.object(userPositionCapId), // Position capability\n tx.pure.u64(airdropCoinMarketId), // Market ID\n airdropCoin, // Coin to supply as collateral\n tx.object(alphalendConstants.SUI_CLOCK_OBJECT_ID), // Clock object\n ],\n });\n }\n }\n } else {\n tx.transferObjects([airdropCoin], address);\n }\n\n return tx;\n }\n\n async claimRewards(_tx: Transaction, _alphaReceipt: TransactionResult) {\n return;\n }\n}\n\n// ===== Types =====\n\n/**\n * AlphaVault Pool object data structure\n */\n\ninterface TableInfo {\n id: string;\n size: string;\n}\n\ninterface PositionUpdateEntry {\n key: string; // Receipt ID\n value: {\n xtokensToAdd: string;\n xtokensToRemove: string;\n };\n}\n\nexport interface AlphaVaultPoolObject {\n id: string;\n xTokenSupply: string;\n tokensInvested: string;\n unsuppliedBalance: string;\n claimableBalance: string;\n positions: TableInfo;\n recentlyUpdatedAlphafiReceipts: PositionUpdateEntry[];\n withdrawRequests: {\n timestamp: string;\n leftoverAmount: string;\n totalAmountToWithdraw: string;\n }[];\n feeCollected: string;\n lastDistributionTime: string;\n lastAutocompoundTime: string;\n lockingPeriod: string;\n timeFromLockingPeriodForUnstakingToStart: string;\n currentExchangeRate: string;\n rewards: {\n id: string;\n size: string;\n };\n accRewardsPerXtoken: StringMap[];\n totalDistributed: StringMap[];\n depositFee: string;\n depositFeeMaxCap: string;\n withdrawalFee: string;\n withdrawFeeMaxCap: string;\n feeAddress: string;\n isDepositPaused: boolean;\n isWithdrawPaused: boolean;\n alphafiPartnerCap: string;\n activeInvestorId: string;\n additionalFields: TableInfo;\n}\n\n/**\n * AlphaVault Investor object data structure\n */\ninterface WithdrawalRequest {\n owner: string;\n receiver: string;\n shares: string;\n estimatedWithdrawAmount: string;\n timestamp: string;\n sequenceNumber: string;\n}\n\nexport interface AlphaVaultInvestorObject {\n id: string;\n unsuppliedBalance: string;\n claimableBalance: string;\n alphalendPositionCap: {\n positionId: string;\n };\n curDebt: string;\n allowedCoinTypesForSwap: string[];\n currentDebtToSupplyRatio: string;\n borrowTokenToTokenRatio: string;\n safeBorrowPercentage: string;\n minimumSwapAmount: string;\n primaryMarketId: string;\n borrowMarketId: string;\n resupplyMarketId: string;\n freeRewards: {\n id: string;\n size: string;\n };\n withdrawReceiversAddress: string;\n withdrawTickets: Array<{\n key: string;\n value: WithdrawalRequest[];\n }>;\n totalPendingWithdrawals: string;\n performanceFee: string;\n performanceFeeCap: string;\n additionalFields: TableInfo;\n}\n\n/**\n * UserWithdrawRequest - Used in AlphaVaultPositionObject's withdraw_requests\n * Matches Rust's UserWithdrawRequest struct\n */\nexport interface UserWithdrawRequest {\n id: string;\n timeOfRequest: string;\n timeOfAcceptance: string;\n timeOfClaim: string;\n timeOfUnlock: string;\n status: string; // 0 for requested, 1 for accepted, 2 for claimed\n tokenAmount: string;\n}\n\n/**\n * AlphaVault Legacy Receipt object data structure\n */\nexport interface AlphaVaultLegacyReceiptObject {\n id: string;\n imageUrl: string;\n lastAccRewardPerXtoken: StringMap[];\n lockedBalance: {\n id: string;\n size: string;\n head: string;\n tail: string;\n };\n name: string;\n owner: string;\n pendingRewards: StringMap[];\n poolId: string;\n unlockedXtokens: string;\n xTokenBalance: string;\n}\n\n/**\n * AlphaVault Receipt object data structure\n */\nexport interface AlphaVaultReceiptObject {\n id: string;\n alphafiReceiptId: string;\n poolId: string;\n coinType: string;\n xTokens: string;\n withdrawRequests: {\n key: string;\n value: UserWithdrawRequest;\n }[];\n allWithdrawals: TableInfo;\n allDeposits: TableInfo;\n lastAccRewardPerXtoken: StringMap[];\n pendingRewards: StringMap[];\n totalCollectedRewards: StringMap[];\n}\n\n// ===== Pool Label =====\n\n/**\n * AlphaVault Pool Label - Configuration for AlphaVault strategy pools\n */\nexport interface AlphaVaultPoolLabel {\n poolId: string;\n investorId: string;\n packageId: string;\n packageNumber: number;\n strategyType: 'AlphaVault';\n parentProtocol: ProtocolType;\n receipt: StringMap;\n asset: StringMap;\n events: {\n autocompoundEventType: string;\n liquidityChangeEventType: string;\n withdrawV2EventType: string;\n afterTransactionEventType: string;\n airdropAddEventType: string;\n };\n isActive: boolean;\n poolName: string;\n isNative: boolean;\n}\n"]}
1
+ {"version":3,"file":"alphaVault.js","sourceRoot":"","sources":["../../../src/strategies/alphaVault.ts"],"names":[],"mappings":"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","sourcesContent":["import { Decimal } from 'decimal.js';\nimport { AlphaMiningData, BaseStrategy, StringMap, ProtocolType } from './strategy.js';\nimport { AlphaFiReceipt, PoolBalance, PoolData, 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 {\n ALPHAFI_RECEIPT_WHITELISTED_ADDRESSES,\n CLOCK_PACKAGE_ID,\n PACKAGE_IDS,\n POOLS,\n VERSIONS,\n} from '../utils/constants.js';\nimport { AlphalendClient, getConstants, getUserPositionCapId } from '@alphafi/alphalend-sdk';\n\n/**\n * AlphaVault Strategy\n */\nexport class AlphaVaultStrategy extends BaseStrategy<\n AlphaVaultPoolObject,\n AlphaVaultInvestorObject,\n never, // AlphaVault doesn't have parent pool objects\n AlphaVaultReceiptObject\n> {\n private poolLabel: AlphaVaultPoolLabel;\n private poolObject: AlphaVaultPoolObject;\n private investorObject: AlphaVaultInvestorObject;\n private legacyReceiptObjects: AlphaVaultLegacyReceiptObject[] = [];\n private receiptObjects: AlphaVaultReceiptObject[] = [];\n private context: StrategyContext;\n\n constructor(\n poolLabel: AlphaVaultPoolLabel,\n poolObject: any,\n investorObject: 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.context = context;\n }\n\n getPoolLabel(): AlphaVaultPoolLabel {\n return this.poolLabel;\n }\n\n getOtherAmount(_amount: string, _isAmountA: boolean): [string, string] {\n throw new Error('getOtherAmount is not supported for single-asset AlphaVault strategy');\n }\n\n updateReceipts(legacyReceipts: any[], receipts: any[]): void {\n this.legacyReceiptObjects = this.parseLegacyReceiptObjects(legacyReceipts);\n this.receiptObjects = this.parseReceiptObjects(receipts);\n }\n\n /**\n * Get data needed for alpha mining rewards calculation.\n * Uses positions (receiptObjects) or legacy receipts if available.\n */\n protected getAlphaMiningData(): AlphaMiningData {\n // Get receipt data from positions or legacy receipts\n const position = this.receiptObjects.length > 0 ? this.receiptObjects[0] : null;\n const legacyReceipt =\n this.legacyReceiptObjects.length > 0 ? this.legacyReceiptObjects[0] : null;\n\n let receiptData = null;\n if (position) {\n receiptData = {\n lastAccRewardPerXtoken: position.lastAccRewardPerXtoken,\n pendingRewards: position.pendingRewards,\n xTokenBalance: position.xTokens,\n };\n } else if (legacyReceipt) {\n receiptData = {\n lastAccRewardPerXtoken: legacyReceipt.lastAccRewardPerXtoken,\n pendingRewards: legacyReceipt.pendingRewards,\n xTokenBalance: legacyReceipt.xTokenBalance,\n };\n }\n\n return {\n poolId: this.poolLabel.poolId,\n accRewardsPerXtoken: this.poolObject.accRewardsPerXtoken,\n xTokenSupply: this.poolObject.xTokenSupply,\n receipt: receiptData,\n };\n }\n\n /**\n * Calculate exchange rate: tokens_invested / xtoken_supply\n * Returns 1 if no tokens are supplied.\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 pool summary data including APR and TVL\n */\n async getData(): Promise<PoolData> {\n const [alphafi, apr] = await Promise.all([\n this.getTvl(),\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: alphafi,\n },\n };\n }\n\n /**\n * Calculate TVL in USD using token amount and price\n */\n async getTvl(): Promise<SingleTvl> {\n const coinType = this.poolLabel.asset.type;\n const decimals = await this.context.getCoinDecimals(coinType);\n const price = await this.context.getCoinPrice(coinType);\n const tokenAmount = new Decimal(this.poolObject.tokensInvested).div(\n new Decimal(10).pow(decimals),\n );\n const usdValue = tokenAmount.mul(price);\n return { tokenAmount, usdValue };\n }\n\n async getParentTvl(): Promise<SingleTvl> {\n throw new Error('AlphaVault strategy does not have a parent pool');\n }\n\n /**\n * Get user's balance including staked amount, pending deposits, withdrawals, and claimable airdrop\n * @param userAddress - User's wallet address\n */\n async getBalance(userAddress: string): Promise<PoolBalance> {\n // Get all required data concurrently\n const [tokenDecimals, tokenPrice, pendingDepositsOption, withdrawalData, claimableAirdrop] =\n await Promise.all([\n this.getTokenDecimals(),\n this.getTokenPriceUsd(),\n this.getPendingDeposits(userAddress),\n this.getWithdrawals(),\n this.getUserClaimableAirdropAmount(),\n ]);\n\n const totalAirdropClaimed = this.getUserTotalAirdropClaimed();\n const position = this.receiptObjects.length > 0 ? this.receiptObjects[0] : null;\n\n // If no receipts and no position, return zeros\n if (this.legacyReceiptObjects.length === 0 && !position) {\n return {\n stakedAlphaAmount: new Decimal(0),\n stakedAlphaUsdValue: new Decimal(0),\n pendingDeposits: new Decimal(0),\n withdrawals: [],\n claimableAirdrop: new Decimal(0),\n totalAirdropClaimed: new Decimal(0),\n };\n }\n\n // Get staked xtokens from position if available, otherwise from receipts\n let stakedXtokens: Decimal;\n if (position) {\n stakedXtokens = new Decimal(position.xTokens || '0');\n } else {\n stakedXtokens = new Decimal(this.legacyReceiptObjects[0]?.xTokenBalance || '0');\n }\n\n const exchangeRate = this.exchangeRate();\n\n // Calculate staked alpha amount\n let stakedAlphaAmount = stakedXtokens.mul(exchangeRate).div(new Decimal(10).pow(tokenDecimals));\n\n // Add pending deposits\n const pendingDeposits = pendingDepositsOption || new Decimal(0);\n stakedAlphaAmount = stakedAlphaAmount.add(pendingDeposits);\n\n // Subtract pending withdrawals (status == 0)\n for (const withdrawal of withdrawalData) {\n if (withdrawal.status === 0) {\n stakedAlphaAmount = stakedAlphaAmount.sub(new Decimal(withdrawal.alphaAmount || '0'));\n }\n }\n\n return {\n stakedAlphaAmount,\n stakedAlphaUsdValue: stakedAlphaAmount.mul(tokenPrice),\n pendingDeposits,\n withdrawals: withdrawalData,\n claimableAirdrop,\n totalAirdropClaimed,\n };\n }\n\n /**\n * Get token decimals for the pool's asset\n */\n async getTokenDecimals(): Promise<number> {\n return this.context.getCoinDecimals(this.poolLabel.asset.type);\n }\n\n /**\n * Get token price in USD for the pool's asset\n */\n async getTokenPriceUsd(): Promise<Decimal> {\n return this.context.getCoinPrice(this.poolLabel.asset.type);\n }\n\n /**\n * Get pending deposits amount by checking recently_updated_alphafi_receipts\n * @param userAddress - User's wallet address\n */\n async getPendingDeposits(userAddress: string): Promise<Decimal> {\n const alphafiReceipts = await this.context.getAlphaFiReceipts(userAddress);\n if (alphafiReceipts.length === 0) {\n return new Decimal(0);\n }\n\n const receiptId = alphafiReceipts[0].id;\n const entry = this.poolObject.recentlyUpdatedAlphafiReceipts.find(\n (item) => item.key === receiptId,\n );\n\n if (!entry) {\n return new Decimal(0);\n }\n\n // Parse the xtokensToAdd from the entry value\n const xtokensToAdd = entry.value.xtokensToAdd;\n if (xtokensToAdd === '0' || !xtokensToAdd) {\n return new Decimal(0);\n }\n\n const [exchangeRate, decimals] = await Promise.all([\n Promise.resolve(this.exchangeRate()),\n this.getTokenDecimals(),\n ]);\n\n const result = new Decimal(xtokensToAdd).mul(exchangeRate).div(new Decimal(10).pow(decimals));\n\n return result;\n }\n\n /**\n * Get all withdrawal requests with status and ETA timestamps\n * Status: 0 = pending, 1 = accepted, 2 = claimable\n */\n async getWithdrawals(): Promise<\n {\n ticketId: string;\n alphaAmount: string;\n status: number; // 0 for pending, 1 for accepted, 2 for claimable\n withdrawalEtaTimestamp: number;\n }[]\n > {\n const position = this.receiptObjects.length > 0 ? this.receiptObjects[0] : null;\n if (!position) {\n return [];\n }\n\n const decimals = await this.getTokenDecimals();\n const nowMs = Date.now();\n const dayOfWeek = new Date().getDay(); // 0 = Sunday\n const numDaysFromNextSunday = 7 - dayOfWeek;\n\n const results: {\n ticketId: string;\n alphaAmount: string;\n status: number; // 0 for pending, 1 for accepted, 2 for claimable\n withdrawalEtaTimestamp: number;\n }[] = [];\n\n for (const entry of position.withdrawRequests) {\n const timeOfUnlock = parseInt(entry.value.timeOfUnlock || '0', 10);\n const timeOfRequest = parseInt(entry.value.timeOfRequest || '0', 10);\n const lockingPeriod = parseInt(this.poolObject.lockingPeriod || '0', 10);\n\n // Determine status: 2 if claimable (time_of_unlock > 0 and passed), else use stored status\n let status: number;\n if (timeOfUnlock > 0 && nowMs >= timeOfUnlock) {\n status = 2; // claimable\n } else {\n status = parseInt(entry.value.status || '0', 10);\n }\n\n // Calculate ETA\n let eta: number;\n if (timeOfUnlock === 0) {\n eta = timeOfRequest + lockingPeriod + numDaysFromNextSunday * 86400000;\n } else {\n eta = timeOfUnlock;\n }\n\n const tokenAmount = entry.value.tokenAmount || '0';\n const alphaAmount = new Decimal(tokenAmount).div(new Decimal(10).pow(decimals)).toString();\n\n results.push({\n ticketId: entry.key,\n alphaAmount,\n status, // 0 = pending, 1 = accepted, 2 = claimable\n withdrawalEtaTimestamp: eta,\n });\n }\n\n return results;\n }\n\n /**\n * Calculate user's claimable SUI airdrop based on accrued rewards per xtoken and pending rewards\n */\n async getUserClaimableAirdropAmount(): Promise<Decimal> {\n const rewardType =\n '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI';\n\n const rewardDecimals = await this.context.getCoinDecimals(rewardType);\n\n // Get current accumulated rewards per xtoken from pool\n const curAccEntry = this.poolObject.accRewardsPerXtoken.find(\n (item) => item.key === rewardType.slice(2),\n );\n const curAcc = new Decimal(curAccEntry?.value || '0');\n\n // Get user's position\n const position = this.receiptObjects.length > 0 ? this.receiptObjects[0] : null;\n\n // Get user's last accumulated reward per xtoken\n const userLastAccEntry = position?.lastAccRewardPerXtoken.find(\n (item) => item.key === rewardType.slice(2),\n );\n const userLastAcc = new Decimal(userLastAccEntry?.value || '0');\n\n // Get user's xtokens\n let userXtokens: Decimal;\n if (position) {\n userXtokens = new Decimal(position.xTokens || '0');\n } else if (this.legacyReceiptObjects.length > 0) {\n userXtokens = new Decimal(this.legacyReceiptObjects[0].xTokenBalance || '0');\n } else {\n userXtokens = new Decimal(0);\n }\n\n // Get pending rewards\n const pendingRewardsEntry = position?.pendingRewards.find(\n (item) => item.key === rewardType.slice(2),\n );\n const pendingRewards = new Decimal(pendingRewardsEntry?.value || '0');\n\n // Calculate: (((curAcc - userLastAcc) / 1e18) * userXtokens + pendingRewards) / 10^rewardDecimals\n const accDiff = curAcc.sub(userLastAcc).div(new Decimal(10).pow(18));\n const claimable = accDiff.mul(userXtokens).add(pendingRewards);\n return claimable.div(new Decimal(10).pow(rewardDecimals));\n }\n\n /**\n * Get user's total SUI airdrop claimed so far\n */\n getUserTotalAirdropClaimed(): Decimal {\n const rewardType =\n '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI';\n\n const position = this.receiptObjects.length > 0 ? this.receiptObjects[0] : null;\n if (!position) {\n return new Decimal(0);\n }\n\n const totalClaimedEntry = position.totalCollectedRewards.find(\n (item) => item.key === rewardType.slice(2),\n );\n const totalClaimed = new Decimal(totalClaimedEntry?.value || '0');\n\n // SUI has 9 decimals\n return totalClaimed.div(new Decimal(10).pow(9));\n }\n\n /**\n * Get total SUI airdrop distributed from the pool\n */\n getTotalAirdropDistributed(): Decimal {\n const rewardType =\n '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI';\n\n // totalDistributed is stored as a string, but in Rust it's VecMap<TypeName, u64>\n // If it's a single value, use it directly; otherwise search the array\n let totalDistributedValue = '0';\n\n if (typeof this.poolObject.totalDistributed === 'string') {\n // If it's stored as a simple string\n totalDistributedValue = this.poolObject.totalDistributed;\n } else if (Array.isArray(this.poolObject.totalDistributed)) {\n // If it's stored as an array of key-value pairs\n const entry = (this.poolObject.totalDistributed as unknown as StringMap[]).find(\n (item) => item.key === rewardType.slice(2),\n );\n totalDistributedValue = entry?.value || '0';\n }\n\n const totalDistributed = new Decimal(totalDistributedValue);\n // SUI has 9 decimals\n return totalDistributed.div(new Decimal(10).pow(9));\n }\n\n /**\n * Parse VecMap of position updates into structured entries\n */\n private parsePositionUpdateVecMap(vecMapField: any): PositionUpdateEntry[] {\n const contents = vecMapField?.fields?.contents ?? vecMapField?.contents ?? vecMapField;\n if (!Array.isArray(contents)) {\n return [];\n }\n\n return contents\n .map((entry: any) => {\n const ef = entry?.fields ?? entry ?? {};\n const key = this.getStringField(ef, 'key');\n const valueFields = ef.value?.fields ?? ef.value ?? {};\n return {\n key,\n value: {\n xtokensToAdd:\n this.getStringField(valueFields, 'xtokens_to_add') ||\n this.getStringField(valueFields, 'xtokensToAdd') ||\n '0',\n xtokensToRemove:\n this.getStringField(valueFields, 'xtokens_to_remove') ||\n this.getStringField(valueFields, 'xtokensToRemove') ||\n '0',\n },\n };\n })\n .filter((e: PositionUpdateEntry) => e.key);\n }\n\n /**\n * Parse pool object from blockchain response\n */\n parsePoolObject(response: any): AlphaVaultPoolObject {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n return {\n id: this.getStringField(fields, 'id'),\n xTokenSupply: this.getStringField(fields, 'xTokenSupply'),\n tokensInvested: this.getStringField(fields, 'tokensInvested'),\n unsuppliedBalance: this.getStringField(fields, 'unsupplied_balance'),\n claimableBalance: this.getStringField(fields, 'claimable_balance'),\n positions: (() => {\n const idVal = this.getNestedField(fields, 'positions.id');\n const sizeVal = this.getNestedField(fields, 'positions.size');\n return { id: String(idVal), size: String(sizeVal) };\n })(),\n recentlyUpdatedAlphafiReceipts: this.parsePositionUpdateVecMap(\n fields.recently_updated_alphafi_receipts || {},\n ),\n withdrawRequests: fields.withdraw_requests?.contents?.map((entry: any) => ({\n timestamp: entry.key,\n leftoverAmount: this.getNestedField(entry, 'value.leftover_amount'),\n totalAmountToWithdraw: this.getNestedField(entry, 'value.total_amount_to_withdraw'),\n })),\n feeCollected: this.getStringField(fields, 'fee_collected'),\n lastDistributionTime: this.getStringField(fields, 'last_distribution_time'),\n lastAutocompoundTime: this.getStringField(fields, 'last_autocompound_time'),\n lockingPeriod: this.getStringField(fields, 'locking_period'),\n timeFromLockingPeriodForUnstakingToStart: this.getStringField(\n fields,\n 'time_from_locking_period_for_unstaking_to_start',\n ),\n currentExchangeRate: this.getNestedField(fields, 'current_exchange_rate.value'),\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 accRewardsPerXtoken: this.parseVecMap(fields.acc_rewards_per_xtoken).map(\n (item) =>\n ({\n key: item.key,\n value: item.value.value,\n }) as StringMap,\n ),\n totalDistributed: this.parseVecMap(fields.total_distributed || {}),\n depositFee: this.getStringField(fields, 'deposit_fee') || '0',\n depositFeeMaxCap: this.getStringField(fields, 'deposit_fee_max_cap') || '0',\n withdrawalFee: this.getStringField(fields, 'withdrawal_fee') || '0',\n withdrawFeeMaxCap: this.getStringField(fields, 'withdraw_fee_max_cap') || '0',\n feeAddress: this.getStringField(fields, 'fee_address'),\n isDepositPaused: this.getBooleanField(fields, 'is_deposit_paused', false),\n isWithdrawPaused: this.getBooleanField(fields, 'is_withdraw_paused', false),\n alphafiPartnerCap: this.getNestedField(fields, 'alphafi_partner_cap.id'),\n activeInvestorId: this.getStringField(fields, 'active_investor_id'),\n additionalFields: (() => {\n const idVal = this.getNestedField(fields, 'additional_fields.id');\n const sizeVal = this.getNestedField(fields, 'additional_fields.size');\n return { id: String(idVal), size: String(sizeVal) };\n })(),\n };\n }, 'Failed to parse AlphaVault pool object');\n }\n\n /**\n * Parse investor object from blockchain response\n */\n parseInvestorObject(response: any): AlphaVaultInvestorObject {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n const allowedCoinTypesArray = fields.allowed_coin_types_for_swap?.contents;\n const withdrawTicketsArray = fields.withdraw_tickets?.contents;\n\n const parseWithdrawTicketInner = (val: any): WithdrawalRequest | null => {\n const vf = val?.fields ?? val ?? {};\n return {\n owner: this.getStringField(vf, 'owner'),\n receiver: this.getStringField(vf, 'receiver'),\n shares: this.getStringField(vf, 'shares'),\n estimatedWithdrawAmount: this.getStringField(vf, 'estimated_withdraw_amount'),\n timestamp: this.getStringField(vf, 'timestamp'),\n sequenceNumber: this.getStringField(vf, 'sequence_number'),\n };\n };\n\n const withdrawTickets = withdrawTicketsArray\n .map((entry: any) => {\n const key = this.getNestedField(entry, 'key.@variant');\n const innerContents = entry.value?.contents;\n const value: WithdrawalRequest[] = innerContents\n .map((inner: any) => {\n const innerVal = parseWithdrawTicketInner(inner.value);\n return innerVal;\n })\n .filter((v: WithdrawalRequest | null): v is WithdrawalRequest => v !== null);\n return { key, value };\n })\n .filter(\n (\n v: { key: string; value: WithdrawalRequest[] } | null,\n ): v is {\n key: string;\n value: WithdrawalRequest[];\n } => v !== null,\n );\n\n return {\n id: this.getStringField(fields, 'id'),\n unsuppliedBalance: this.getStringField(fields, 'unsupplied_balance'),\n claimableBalance: this.getStringField(fields, 'claimable_balance'),\n alphalendPositionCap: {\n positionId: this.getNestedField(fields, 'alphalend_position_cap.id'),\n },\n curDebt: this.getStringField(fields, 'cur_debt'),\n currentDebtToSupplyRatio: this.getNestedField(fields, 'current_debt_to_supply_ratio.value'),\n borrowTokenToTokenRatio: this.getNestedField(fields, 'borrow_token_to_token_ratio.value'),\n safeBorrowPercentage: this.getStringField(fields, 'safe_borrow_percentage'),\n allowedCoinTypesForSwap: Array.isArray(allowedCoinTypesArray)\n ? allowedCoinTypesArray\n .map((entry: any) => {\n const ef = entry?.fields ?? entry ?? {};\n const value = ef.value;\n if (value !== true) return null;\n const keyName = ef.key?.fields?.name ?? ef.key?.name ?? ef.key;\n return typeof keyName === 'string' ? keyName : null;\n })\n .filter((v: string | null): v is string => Boolean(v))\n : [],\n minimumSwapAmount: this.getStringField(fields, 'minimum_swap_amount'),\n primaryMarketId: this.getStringField(fields, 'primary_market_id'),\n borrowMarketId: this.getStringField(fields, 'borrow_market_id'),\n resupplyMarketId: this.getStringField(fields, 'resupply_market_id'),\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 withdrawReceiversAddress: this.getStringField(fields, 'withdraw_receivers_address'),\n withdrawTickets,\n totalPendingWithdrawals: this.getStringField(fields, 'total_pending_withdrawals'),\n performanceFee: this.getStringField(fields, 'performance_fee'),\n performanceFeeCap: this.getStringField(fields, 'performance_fee_cap'),\n additionalFields: (() => {\n const idVal = this.getNestedField(fields, 'additional_fields.id');\n const sizeVal = this.getNestedField(fields, 'additional_fields.size');\n return { id: String(idVal), size: String(sizeVal) };\n })(),\n };\n }, 'Failed to parse AlphaVault investor object');\n }\n\n /**\n * Parse parent pool object from blockchain response (not applicable for AlphaVault)\n */\n parseParentPoolObject(_response: any): never {\n throw new Error('AlphaVault strategy does not have parent pool objects');\n }\n\n /**\n * Parse legacy receipt objects from blockchain responses\n */\n parseLegacyReceiptObjects(responses: any[]): AlphaVaultLegacyReceiptObject[] {\n return responses.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 lockedBalance: {\n id: this.getNestedField(fields, 'locked_balance.id'),\n size: this.getNestedField(fields, 'locked_balance.size'),\n head: this.getNestedField(fields, 'locked_balance.head'),\n tail: this.getNestedField(fields, 'locked_balance.tail'),\n },\n name: this.getStringField(fields, 'name'),\n owner: this.getStringField(fields, 'owner'),\n pendingRewards: this.parseVecMap(fields.pending_rewards || {}),\n poolId: this.getStringField(fields, 'pool_id'),\n unlockedXtokens: this.getStringField(fields, 'unlocked_xtokens'),\n xTokenBalance: this.getStringField(fields, 'xTokenBalance'),\n };\n }, `Failed to parse AlphaVault receipt object at index ${index}`);\n });\n }\n\n /**\n * Parse AlphaVault receipt objects\n */\n parseReceiptObjects(responses: any[]): AlphaVaultReceiptObject[] {\n return responses.map((response, index) => {\n return this.safeParseObject(() => {\n const fields = this.extractFields(response);\n\n const parseTableInfo = (tableField: any): TableInfo => {\n return {\n id: this.getStringField(tableField, 'id'),\n size: this.getStringField(tableField, 'size'),\n };\n };\n\n const totalCollectedRewards = this.parseVecMap(fields.total_collected_rewards || {});\n\n // Parse withdraw_requests as VecMap<ID, UserWithdrawRequest> - matches Rust's structure\n const parseWithdrawRequestKV = (\n kv: any,\n ): {\n key: string;\n value: UserWithdrawRequest;\n } | null => {\n const key = this.getStringField(kv, 'key');\n const valFields = kv.value;\n const value: UserWithdrawRequest = {\n id: this.getStringField(valFields, 'id'),\n timeOfRequest: this.getStringField(valFields, 'time_of_request'),\n timeOfAcceptance: this.getStringField(valFields, 'time_of_acceptance'),\n timeOfClaim: this.getStringField(valFields, 'time_of_claim'),\n timeOfUnlock: this.getStringField(valFields, 'time_of_unlock'),\n status: this.getStringField(valFields, 'status'),\n tokenAmount: this.getStringField(valFields, 'token_amount'),\n };\n return { key, value };\n };\n\n const withdrawRequestsKV = fields.withdraw_requests.contents.map(parseWithdrawRequestKV);\n\n return {\n id: this.getStringField(fields, 'id'),\n alphafiReceiptId: this.getStringField(fields, 'alphafi_receipt_id'),\n poolId: this.getStringField(fields, 'pool_id'),\n coinType: this.getNestedField(fields, 'coin_type.name'),\n xTokens: this.getStringField(fields, 'xtokens'),\n withdrawRequests: withdrawRequestsKV as {\n key: string;\n value: UserWithdrawRequest;\n }[],\n allWithdrawals: parseTableInfo(fields.all_withdrawals),\n allDeposits: parseTableInfo(fields.all_deposits),\n lastAccRewardPerXtoken: this.parseVecMap(fields.last_acc_reward_per_xtoken).map(\n (item) =>\n ({\n key: item.key,\n value: item.value.value,\n }) as StringMap,\n ),\n pendingRewards: this.parseVecMap(fields.pending_rewards || {}),\n totalCollectedRewards,\n };\n }, `Failed to parse AlphaVault position object at index ${index}`);\n });\n }\n\n async deposit(tx: Transaction, options: DepositOptions) {\n const depositCoin = await this.context.blockchain.getCoinObject(\n tx,\n this.poolLabel.asset.type,\n options.address,\n options.amount,\n );\n\n const alphafiReceipts = await this.context.getAlphaFiReceipts(options.address);\n const legacyReceipt =\n this.legacyReceiptObjects.length > 0 ? this.legacyReceiptObjects[0] : null;\n\n if (alphafiReceipts.length === 0) {\n const alphafiReceiptObj = this.createAlphaFiReceipt(tx);\n\n // Convert alpha receipt to ember position if alpha receipt exists\n if (legacyReceipt) {\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::migrate_alpha_receipt_to_new_alpha_strategy`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(this.poolLabel.poolId),\n alphafiReceiptObj,\n tx.object(legacyReceipt.id),\n tx.object(POOLS.ALPHA_LEGACY),\n ],\n });\n }\n\n // Deposit to ember pool\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::user_deposit`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n alphafiReceiptObj,\n tx.object(this.poolLabel.poolId),\n depositCoin,\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n\n tx.moveCall({\n target: `${PACKAGE_IDS.ALPHAFI_RECEIPT}::alphafi_receipt::transfer_receipt_to_new_owner`,\n arguments: [\n alphafiReceiptObj,\n tx.pure.address(options.address),\n tx.object(ALPHAFI_RECEIPT_WHITELISTED_ADDRESSES),\n ],\n });\n } else {\n // Convert alpha receipt to ember position if needed\n if (legacyReceipt && this.receiptObjects.length === 0) {\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::migrate_alpha_receipt_to_new_alpha_strategy`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(this.poolLabel.poolId),\n tx.object(alphafiReceipts[0].id),\n tx.object(legacyReceipt.id),\n tx.object(POOLS.ALPHA_LEGACY),\n ],\n });\n }\n // Deposit to ember pool\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::user_deposit`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(alphafiReceipts[0].id),\n tx.object(this.poolLabel.poolId),\n depositCoin,\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n }\n }\n\n private async getAlphaTotalShares(alphafiReceipt: AlphaFiReceipt): Promise<string> {\n const entry = alphafiReceipt.positionPoolMap.find(\n (item) => item.value.poolId === this.poolLabel.poolId,\n );\n if (!entry) {\n console.error('no position for pool id found');\n return '0';\n }\n const position = await this.context.blockchain.getObject(entry.key);\n return (position as any).data?.content.fields.xtokens.toString();\n }\n\n async withdraw(tx: Transaction, options: WithdrawOptions) {\n const { amount, withdrawMax, address } = options;\n const alphafiReceipts = await this.context.getAlphaFiReceipts(address);\n const legacyReceipt =\n this.legacyReceiptObjects.length > 0 ? this.legacyReceiptObjects[0] : undefined;\n if (alphafiReceipts.length === 0 && !legacyReceipt) {\n throw new Error(`No AlphaFi receipts or receit found for address ${address}`);\n }\n\n // Calculate xtokens based on amount or withdrawMax\n let xtokens = new Decimal(amount)\n .div(new Decimal(this.poolObject.currentExchangeRate).div(1e18))\n .ceil()\n .toNumber();\n if (withdrawMax) {\n if (alphafiReceipts.length === 0 && legacyReceipt) {\n xtokens = Number(legacyReceipt.xTokenBalance);\n } else {\n const positionUpdate = this.poolObject.recentlyUpdatedAlphafiReceipts.find(\n (item) => item.key === alphafiReceipts[0].id,\n );\n xtokens =\n Number(await this.getAlphaTotalShares(alphafiReceipts[0])) -\n (positionUpdate\n ? Number(positionUpdate.value.xtokensToRemove) -\n Number(positionUpdate.value.xtokensToAdd)\n : 0);\n }\n }\n\n if (alphafiReceipts.length === 0) {\n // Create new AlphaFi receipt\n const alphafiReceiptObj = this.createAlphaFiReceipt(tx);\n if (!legacyReceipt) {\n throw new Error('No alphafi receipt and no alpha receipt found');\n }\n\n // Convert alpha receipt to ember position\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::migrate_alpha_receipt_to_new_alpha_strategy`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(this.poolLabel.poolId),\n alphafiReceiptObj,\n tx.object(legacyReceipt.id),\n tx.object(POOLS.ALPHA_LEGACY),\n ],\n });\n\n // Initiate withdrawal\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::user_initiate_withdraw`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n alphafiReceiptObj,\n tx.object(this.poolLabel.poolId),\n tx.pure.u64(xtokens),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n\n tx.moveCall({\n target: `${PACKAGE_IDS.ALPHAFI_RECEIPT}::alphafi_receipt::transfer_receipt_to_new_owner`,\n arguments: [\n alphafiReceiptObj,\n tx.pure.address(address),\n tx.object(ALPHAFI_RECEIPT_WHITELISTED_ADDRESSES),\n ],\n });\n } else {\n const existingReceipt = alphafiReceipts[0];\n const isPresent = this.receiptObjects.length > 0;\n\n if (!isPresent && !legacyReceipt) {\n throw new Error('No position or old alpha receipt found');\n }\n\n // Convert alpha receipt to ember position if needed\n if (!isPresent && legacyReceipt) {\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::migrate_alpha_receipt_to_new_alpha_strategy`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(this.poolLabel.poolId),\n tx.object(existingReceipt.id),\n tx.object(legacyReceipt.id),\n tx.object(POOLS.ALPHA_LEGACY),\n ],\n });\n }\n\n // Initiate withdrawal\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::user_initiate_withdraw`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(existingReceipt.id),\n tx.object(this.poolLabel.poolId),\n tx.pure.u64(xtokens),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n }\n }\n\n async claimWithdraw(tx: Transaction, ticketId: string, address: string) {\n const alphafiReceipts = await this.context.getAlphaFiReceipts(address);\n\n if (alphafiReceipts.length === 0) {\n throw new Error('No Alphafi receipt found!');\n }\n\n const coin = tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::user_claim_withdraw`,\n typeArguments: [this.poolLabel.asset.type],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(alphafiReceipts[0].id),\n tx.object(this.poolLabel.poolId),\n tx.pure.id(ticketId),\n tx.object(CLOCK_PACKAGE_ID),\n ],\n });\n tx.transferObjects([coin], address);\n }\n\n async claimAirdrop(tx: Transaction, address: string, transferToWallet: boolean) {\n const alphalendClient = new AlphalendClient('mainnet', this.context.blockchain.suiClient);\n let airdropCoin;\n const [suiCoin, alphaCoin] = await this.context.getCoinsBySymbols(['SUI', 'ALPHA']);\n const airdropCoinMarketId = '1';\n const airdropCoinType = suiCoin.coinType;\n const legacyReceipt =\n this.legacyReceiptObjects.length > 0 ? this.legacyReceiptObjects[0] : undefined;\n const alphafiReceipts = await this.context.getAlphaFiReceipts(address);\n if (alphafiReceipts.length === 0) {\n // Create new AlphaFi receipt\n const alphafiReceiptObj = this.createAlphaFiReceipt(tx);\n\n if (!legacyReceipt) {\n throw new Error('No alphafi receipt and no alpha receipt found');\n }\n\n // Convert alpha receipt to ember position\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::migrate_alpha_receipt_to_new_alpha_strategy`,\n typeArguments: [alphaCoin.coinType],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(this.poolLabel.poolId),\n alphafiReceiptObj,\n tx.object(legacyReceipt.id),\n tx.object(POOLS.ALPHA_LEGACY),\n ],\n });\n\n // Get user rewards\n airdropCoin = tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::get_user_rewards`,\n typeArguments: [alphaCoin.coinType, airdropCoinType],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n alphafiReceiptObj,\n tx.object(this.poolLabel.poolId),\n ],\n });\n\n tx.moveCall({\n target: `${PACKAGE_IDS.ALPHAFI_RECEIPT}::alphafi_receipt::transfer_receipt_to_new_owner`,\n arguments: [\n alphafiReceiptObj,\n tx.pure.address(address),\n tx.object(ALPHAFI_RECEIPT_WHITELISTED_ADDRESSES),\n ],\n });\n } else {\n const existingReceipt = alphafiReceipts[0];\n const isPresent = this.receiptObjects.length > 0;\n\n if (!isPresent && !legacyReceipt) {\n throw new Error('No position or old alpha receipt found');\n }\n\n // Convert alpha receipt to ember position if needed\n if (!isPresent && legacyReceipt) {\n tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::migrate_alpha_receipt_to_new_alpha_strategy`,\n typeArguments: [alphaCoin.coinType],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(this.poolLabel.poolId),\n tx.object(existingReceipt.id),\n tx.object(legacyReceipt.id),\n tx.object(POOLS.ALPHA_LEGACY),\n ],\n });\n }\n\n // Get user rewards\n airdropCoin = tx.moveCall({\n target: `${this.poolLabel.packageId}::alphafi_ember_pool::get_user_rewards`,\n typeArguments: [alphaCoin.coinType, airdropCoinType],\n arguments: [\n tx.object(VERSIONS.ALPHA_EMBER),\n tx.object(existingReceipt.id),\n tx.object(this.poolLabel.poolId),\n ],\n });\n }\n\n if (!transferToWallet) {\n await alphalendClient.updatePrices(tx, ['0x2::sui::SUI']);\n const alphalendConstants = getConstants('mainnet');\n const userPositionCapId = await getUserPositionCapId(\n this.context.blockchain.suiClient,\n 'mainnet',\n address,\n );\n if (!userPositionCapId) {\n const positionCap = alphalendClient.createPosition(tx);\n tx.moveCall({\n target: `${alphalendConstants.ALPHALEND_LATEST_PACKAGE_ID}::alpha_lending::add_collateral`,\n typeArguments: [airdropCoinType],\n arguments: [\n tx.object(alphalendConstants.LENDING_PROTOCOL_ID), // Protocol object\n positionCap, // Position capability\n tx.pure.u64(airdropCoinMarketId), // Market ID\n airdropCoin, // Coin to supply as collateral\n tx.object(alphalendConstants.SUI_CLOCK_OBJECT_ID), // Clock object\n ],\n });\n tx.transferObjects([positionCap], address);\n } else {\n const portfolio =\n await alphalendClient.getUserPortfolioFromPositionCapId(userPositionCapId);\n if (portfolio && portfolio.borrowedAmounts.has(Number(airdropCoinMarketId))) {\n airdropCoin = tx.moveCall({\n target: `${alphalendConstants.ALPHALEND_LATEST_PACKAGE_ID}::alpha_lending::repay`,\n typeArguments: [airdropCoinType],\n arguments: [\n tx.object(alphalendConstants.LENDING_PROTOCOL_ID), // Protocol object\n tx.object(userPositionCapId), // Position capability\n tx.pure.u64(airdropCoinMarketId), // Market ID\n airdropCoin, // Coin to repay with\n tx.object(alphalendConstants.SUI_CLOCK_OBJECT_ID), // Clock object\n ],\n });\n tx.transferObjects([airdropCoin], address);\n } else {\n tx.moveCall({\n target: `${alphalendConstants.ALPHALEND_LATEST_PACKAGE_ID}::alpha_lending::add_collateral`,\n typeArguments: [airdropCoinType],\n arguments: [\n tx.object(alphalendConstants.LENDING_PROTOCOL_ID), // Protocol object\n tx.object(userPositionCapId), // Position capability\n tx.pure.u64(airdropCoinMarketId), // Market ID\n airdropCoin, // Coin to supply as collateral\n tx.object(alphalendConstants.SUI_CLOCK_OBJECT_ID), // Clock object\n ],\n });\n }\n }\n } else {\n tx.transferObjects([airdropCoin], address);\n }\n\n return tx;\n }\n\n async claimRewards(_tx: Transaction, _alphaReceipt: TransactionResult) {\n return;\n }\n}\n\n// ===== Types =====\n\n/**\n * AlphaVault Pool object data structure\n */\n\ninterface TableInfo {\n id: string;\n size: string;\n}\n\ninterface PositionUpdateEntry {\n key: string; // Receipt ID\n value: {\n xtokensToAdd: string;\n xtokensToRemove: string;\n };\n}\n\nexport interface AlphaVaultPoolObject {\n id: string;\n xTokenSupply: string;\n tokensInvested: string;\n unsuppliedBalance: string;\n claimableBalance: string;\n positions: TableInfo;\n recentlyUpdatedAlphafiReceipts: PositionUpdateEntry[];\n withdrawRequests: {\n timestamp: string;\n leftoverAmount: string;\n totalAmountToWithdraw: string;\n }[];\n feeCollected: string;\n lastDistributionTime: string;\n lastAutocompoundTime: string;\n lockingPeriod: string;\n timeFromLockingPeriodForUnstakingToStart: string;\n currentExchangeRate: string;\n rewards: {\n id: string;\n size: string;\n };\n accRewardsPerXtoken: StringMap[];\n totalDistributed: StringMap[];\n depositFee: string;\n depositFeeMaxCap: string;\n withdrawalFee: string;\n withdrawFeeMaxCap: string;\n feeAddress: string;\n isDepositPaused: boolean;\n isWithdrawPaused: boolean;\n alphafiPartnerCap: string;\n activeInvestorId: string;\n additionalFields: TableInfo;\n}\n\n/**\n * AlphaVault Investor object data structure\n */\ninterface WithdrawalRequest {\n owner: string;\n receiver: string;\n shares: string;\n estimatedWithdrawAmount: string;\n timestamp: string;\n sequenceNumber: string;\n}\n\nexport interface AlphaVaultInvestorObject {\n id: string;\n unsuppliedBalance: string;\n claimableBalance: string;\n alphalendPositionCap: {\n positionId: string;\n };\n curDebt: string;\n allowedCoinTypesForSwap: string[];\n currentDebtToSupplyRatio: string;\n borrowTokenToTokenRatio: string;\n safeBorrowPercentage: string;\n minimumSwapAmount: string;\n primaryMarketId: string;\n borrowMarketId: string;\n resupplyMarketId: string;\n freeRewards: {\n id: string;\n size: string;\n };\n withdrawReceiversAddress: string;\n withdrawTickets: Array<{\n key: string;\n value: WithdrawalRequest[];\n }>;\n totalPendingWithdrawals: string;\n performanceFee: string;\n performanceFeeCap: string;\n additionalFields: TableInfo;\n}\n\n/**\n * UserWithdrawRequest - Used in AlphaVaultPositionObject's withdraw_requests\n * Matches Rust's UserWithdrawRequest struct\n */\nexport interface UserWithdrawRequest {\n id: string;\n timeOfRequest: string;\n timeOfAcceptance: string;\n timeOfClaim: string;\n timeOfUnlock: string;\n status: string; // 0 for requested, 1 for accepted, 2 for claimed\n tokenAmount: string;\n}\n\n/**\n * AlphaVault Legacy Receipt object data structure\n */\nexport interface AlphaVaultLegacyReceiptObject {\n id: string;\n imageUrl: string;\n lastAccRewardPerXtoken: StringMap[];\n lockedBalance: {\n id: string;\n size: string;\n head: string;\n tail: string;\n };\n name: string;\n owner: string;\n pendingRewards: StringMap[];\n poolId: string;\n unlockedXtokens: string;\n xTokenBalance: string;\n}\n\n/**\n * AlphaVault Receipt object data structure\n */\nexport interface AlphaVaultReceiptObject {\n id: string;\n alphafiReceiptId: string;\n poolId: string;\n coinType: string;\n xTokens: string;\n withdrawRequests: {\n key: string;\n value: UserWithdrawRequest;\n }[];\n allWithdrawals: TableInfo;\n allDeposits: TableInfo;\n lastAccRewardPerXtoken: StringMap[];\n pendingRewards: StringMap[];\n totalCollectedRewards: StringMap[];\n}\n\n// ===== Pool Label =====\n\n/**\n * AlphaVault Pool Label - Configuration for AlphaVault strategy pools\n */\nexport interface AlphaVaultPoolLabel {\n poolId: string;\n investorId: string;\n packageId: string;\n packageNumber: number;\n strategyType: 'AlphaVault';\n parentProtocol: ProtocolType;\n receipt: StringMap;\n asset: StringMap;\n events: {\n autocompoundEventType: string;\n liquidityChangeEventType: string;\n withdrawV2EventType: string;\n afterTransactionEventType: string;\n airdropAddEventType: string;\n };\n isActive: boolean;\n poolName: string;\n isNative: boolean;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"autobalanceLp.d.ts","sourceRoot":"","sources":["../../../src/strategies/autobalanceLp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autobalanceLp.d.ts","sourceRoot":"","sources":["../../../src/strategies/autobalanceLp.ts"],"names":[],"mappings":"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"}
@@ -72,6 +72,9 @@ class AutobalanceLpStrategy 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: {