@alphafi/alphafi-sdk 0.0.19 → 0.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -5
- package/dist/cjs/common/alphaTypes.d.ts.map +1 -0
- package/dist/cjs/common/alphaTypes.js +3 -0
- package/dist/cjs/common/alphaTypes.js.map +1 -0
- package/dist/cjs/common/cetus_mainnet_config.d.ts.map +1 -0
- package/dist/cjs/common/cetus_mainnet_config.js +50 -0
- package/dist/cjs/common/cetus_mainnet_config.js.map +1 -0
- package/dist/cjs/common/coins.d.ts.map +1 -0
- package/dist/cjs/common/coins.js +135 -0
- package/dist/cjs/common/coins.js.map +1 -0
- package/dist/cjs/common/constants.d.ts.map +1 -0
- package/dist/cjs/common/constants.js +465 -0
- package/dist/cjs/common/constants.js.map +1 -0
- package/dist/cjs/common/maps.d.ts.map +1 -0
- package/dist/cjs/common/maps.js +535 -0
- package/dist/cjs/common/maps.js.map +1 -0
- package/dist/cjs/common/pyth.d.ts.map +1 -0
- package/dist/cjs/common/pyth.js +3 -0
- package/dist/cjs/common/pyth.js.map +1 -0
- package/dist/cjs/common/types.d.ts.map +1 -0
- package/dist/cjs/common/types.js +18 -0
- package/dist/cjs/common/types.js.map +1 -0
- package/dist/cjs/example.d.ts.map +1 -0
- package/dist/cjs/example.js +42 -0
- package/dist/cjs/example.js.map +1 -0
- package/dist/cjs/getAirdropShare.d.ts.map +1 -0
- package/dist/cjs/getAirdropShare.js +9 -0
- package/dist/cjs/getAirdropShare.js.map +1 -0
- package/dist/cjs/getAllVaults.d.ts.map +1 -0
- package/dist/cjs/getAllVaults.js +32 -0
- package/dist/cjs/getAllVaults.js.map +1 -0
- package/dist/cjs/getAlphaUnlocks.d.ts.map +1 -0
- package/dist/cjs/getAlphaUnlocks.js +20 -0
- package/dist/cjs/getAlphaUnlocks.js.map +1 -0
- package/dist/cjs/getAprs.d.ts.map +1 -0
- package/dist/cjs/getAprs.js +56 -0
- package/dist/cjs/getAprs.js.map +1 -0
- package/dist/cjs/getHoldersFromTransactions.d.ts.map +1 -0
- package/dist/cjs/getHoldersFromTransactions.js +87 -0
- package/dist/cjs/getHoldersFromTransactions.js.map +1 -0
- package/dist/cjs/getLastAutoCompoundTime.d.ts.map +1 -0
- package/dist/cjs/getLastAutoCompoundTime.js +17 -0
- package/dist/cjs/getLastAutoCompoundTime.js.map +1 -0
- package/dist/cjs/getRebalanceHistory.d.ts.map +1 -0
- package/dist/cjs/getRebalanceHistory.js +24 -0
- package/dist/cjs/getRebalanceHistory.js.map +1 -0
- package/dist/cjs/getVaultBalances.d.ts.map +1 -0
- package/dist/cjs/getVaultBalances.js +132 -0
- package/dist/cjs/getVaultBalances.js.map +1 -0
- package/dist/cjs/getVaults.d.ts.map +1 -0
- package/dist/cjs/getVaults.js +31 -0
- package/dist/cjs/getVaults.js.map +1 -0
- package/dist/cjs/graphql/client.d.ts.map +1 -0
- package/dist/cjs/graphql/client.js +14 -0
- package/dist/cjs/graphql/client.js.map +1 -0
- package/dist/cjs/graphql/executeMutations.d.ts.map +1 -0
- package/dist/cjs/graphql/executeMutations.js +31 -0
- package/dist/cjs/graphql/executeMutations.js.map +1 -0
- package/dist/cjs/graphql/fetchAutoCompoundingEventsGql.d.ts.map +1 -0
- package/dist/cjs/graphql/fetchAutoCompoundingEventsGql.js +119 -0
- package/dist/cjs/graphql/fetchAutoCompoundingEventsGql.js.map +1 -0
- package/dist/cjs/graphql/fetchData.d.ts.map +1 -0
- package/dist/cjs/graphql/fetchData.js +95 -0
- package/dist/cjs/graphql/fetchData.js.map +1 -0
- package/dist/cjs/graphql/fetchNftHolders.d.ts.map +1 -0
- package/dist/cjs/graphql/fetchNftHolders.js +34 -0
- package/dist/cjs/graphql/fetchNftHolders.js.map +1 -0
- package/dist/cjs/graphql/fetchReceipts.d.ts.map +1 -0
- package/dist/cjs/graphql/fetchReceipts.js +35 -0
- package/dist/cjs/graphql/fetchReceipts.js.map +1 -0
- package/dist/cjs/graphql/mutations.d.ts.map +1 -0
- package/dist/cjs/graphql/mutations.js +33 -0
- package/dist/cjs/graphql/mutations.js.map +1 -0
- package/dist/cjs/graphql/parseData.d.ts.map +1 -0
- package/dist/cjs/graphql/parseData.js +9 -0
- package/dist/cjs/graphql/parseData.js.map +1 -0
- package/dist/cjs/graphql/parseLockedTableId.d.ts.map +1 -0
- package/dist/cjs/graphql/parseLockedTableId.js +15 -0
- package/dist/cjs/graphql/parseLockedTableId.js.map +1 -0
- package/dist/cjs/graphql/queries/autoCompoundEvents.d.ts.map +1 -0
- package/dist/cjs/graphql/queries/autoCompoundEvents.js +19 -0
- package/dist/cjs/graphql/queries/autoCompoundEvents.js.map +1 -0
- package/dist/cjs/graphql/queries/cetusPools.d.ts.map +1 -0
- package/dist/cjs/graphql/queries/cetusPools.js +39 -0
- package/dist/cjs/graphql/queries/cetusPools.js.map +1 -0
- package/dist/cjs/graphql/queries/investors.d.ts.map +1 -0
- package/dist/cjs/graphql/queries/investors.js +39 -0
- package/dist/cjs/graphql/queries/investors.js.map +1 -0
- package/dist/cjs/graphql/queries/lockedTableData.d.ts.map +1 -0
- package/dist/cjs/graphql/queries/lockedTableData.js +30 -0
- package/dist/cjs/graphql/queries/lockedTableData.js.map +1 -0
- package/dist/cjs/graphql/queries/lockedTableDataFragment.d.ts.map +1 -0
- package/dist/cjs/graphql/queries/lockedTableDataFragment.js +24 -0
- package/dist/cjs/graphql/queries/lockedTableDataFragment.js.map +1 -0
- package/dist/cjs/graphql/queries/nftHolders.d.ts.map +1 -0
- package/dist/cjs/graphql/queries/nftHolders.js +23 -0
- package/dist/cjs/graphql/queries/nftHolders.js.map +1 -0
- package/dist/cjs/graphql/queries/pools.d.ts.map +1 -0
- package/dist/cjs/graphql/queries/pools.js +57 -0
- package/dist/cjs/graphql/queries/pools.js.map +1 -0
- package/dist/cjs/graphql/queries/receiptData.d.ts.map +1 -0
- package/dist/cjs/graphql/queries/receiptData.js +21 -0
- package/dist/cjs/graphql/queries/receiptData.js.map +1 -0
- package/dist/cjs/graphql/queries/userVaultBalances.d.ts.map +1 -0
- package/dist/cjs/graphql/queries/userVaultBalances.js +62 -0
- package/dist/cjs/graphql/queries/userVaultBalances.js.map +1 -0
- package/dist/cjs/graphql/queries/userVaults.d.ts.map +1 -0
- package/dist/cjs/graphql/queries/userVaults.js +62 -0
- package/dist/cjs/graphql/queries/userVaults.js.map +1 -0
- package/dist/cjs/graphql/queries.d.ts.map +1 -0
- package/dist/cjs/graphql/queries.js +86 -0
- package/dist/cjs/graphql/queries.js.map +1 -0
- package/dist/cjs/graphql/types.d.ts.map +1 -0
- package/dist/cjs/graphql/types.js +3 -0
- package/dist/cjs/graphql/types.js.map +1 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +70 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/sui-sdk/client.d.ts.map +1 -0
- package/dist/cjs/sui-sdk/client.js +69 -0
- package/dist/cjs/sui-sdk/client.js.map +1 -0
- package/dist/cjs/sui-sdk/events/fetchAutoCompoundingEvents.d.ts.map +1 -0
- package/dist/cjs/sui-sdk/events/fetchAutoCompoundingEvents.js +201 -0
- package/dist/cjs/sui-sdk/events/fetchAutoCompoundingEvents.js.map +1 -0
- package/dist/cjs/sui-sdk/events/fetchEvents.d.ts.map +1 -0
- package/dist/cjs/sui-sdk/events/fetchEvents.js +184 -0
- package/dist/cjs/sui-sdk/events/fetchEvents.js.map +1 -0
- package/dist/cjs/sui-sdk/events/fetchLiquidityChangeEvents.d.ts.map +1 -0
- package/dist/cjs/sui-sdk/events/fetchLiquidityChangeEvents.js +44 -0
- package/dist/cjs/sui-sdk/events/fetchLiquidityChangeEvents.js.map +1 -0
- package/dist/cjs/sui-sdk/events/fetchRebalanceEvents.d.ts.map +1 -0
- package/dist/cjs/sui-sdk/events/fetchRebalanceEvents.js +90 -0
- package/dist/cjs/sui-sdk/events/fetchRebalanceEvents.js.map +1 -0
- package/dist/cjs/sui-sdk/events/parseData.d.ts.map +1 -0
- package/dist/cjs/sui-sdk/events/parseData.js +31 -0
- package/dist/cjs/sui-sdk/events/parseData.js.map +1 -0
- package/dist/cjs/sui-sdk/events/types.d.ts.map +1 -0
- package/dist/cjs/sui-sdk/events/types.js +3 -0
- package/dist/cjs/sui-sdk/events/types.js.map +1 -0
- package/dist/cjs/sui-sdk/functions/fetchTableData.d.ts.map +1 -0
- package/dist/cjs/sui-sdk/functions/fetchTableData.js +77 -0
- package/dist/cjs/sui-sdk/functions/fetchTableData.js.map +1 -0
- package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.d.ts.map +1 -0
- package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.js +82 -0
- package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.js.map +1 -0
- package/dist/cjs/sui-sdk/functions/fetchUserVaults.d.ts.map +1 -0
- package/dist/cjs/sui-sdk/functions/fetchUserVaults.js +45 -0
- package/dist/cjs/sui-sdk/functions/fetchUserVaults.js.map +1 -0
- package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.d.ts.map +1 -0
- package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.js +246 -0
- package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.js.map +1 -0
- package/dist/cjs/sui-sdk/functions/getReceipts.d.ts.map +1 -0
- package/dist/cjs/sui-sdk/functions/getReceipts.js +375 -0
- package/dist/cjs/sui-sdk/functions/getReceipts.js.map +1 -0
- package/dist/cjs/sui-sdk/transactions/constants.d.ts.map +1 -0
- package/dist/cjs/sui-sdk/transactions/constants.js +90 -0
- package/dist/cjs/sui-sdk/transactions/constants.js.map +1 -0
- package/dist/cjs/sui-sdk/transactions/fetchTransactions.d.ts.map +1 -0
- package/dist/cjs/sui-sdk/transactions/fetchTransactions.js +88 -0
- package/dist/cjs/sui-sdk/transactions/fetchTransactions.js.map +1 -0
- package/dist/cjs/sui-sdk/transactions/types.d.ts.map +1 -0
- package/dist/cjs/sui-sdk/transactions/types.js +3 -0
- package/dist/cjs/sui-sdk/transactions/types.js.map +1 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils/clmm/prices.d.ts.map +1 -0
- package/dist/cjs/utils/clmm/prices.js +317 -0
- package/dist/cjs/utils/clmm/prices.js.map +1 -0
- package/dist/cjs/utils/clmm/tokenAmountFromLiquidity.d.ts.map +1 -0
- package/dist/cjs/utils/clmm/tokenAmountFromLiquidity.js +196 -0
- package/dist/cjs/utils/clmm/tokenAmountFromLiquidity.js.map +1 -0
- package/dist/cjs/utils/clmm/types.d.ts.map +1 -0
- package/dist/cjs/utils/clmm/types.js +3 -0
- package/dist/cjs/utils/clmm/types.js.map +1 -0
- package/dist/cjs/utils/constants.d.ts.map +1 -0
- package/dist/cjs/utils/constants.js +104 -0
- package/dist/cjs/utils/constants.js.map +1 -0
- package/dist/cjs/utils/getHoldersFromTransactionsUtils.d.ts.map +1 -0
- package/dist/cjs/utils/getHoldersFromTransactionsUtils.js +132 -0
- package/dist/cjs/utils/getHoldersFromTransactionsUtils.js.map +1 -0
- package/dist/cjs/utils/getReceipts.d.ts.map +1 -0
- package/dist/cjs/utils/getReceipts.js +45 -0
- package/dist/cjs/utils/getReceipts.js.map +1 -0
- package/dist/cjs/utils/hop.d.ts.map +1 -0
- package/dist/cjs/utils/hop.js +125 -0
- package/dist/cjs/utils/hop.js.map +1 -0
- package/dist/cjs/utils/prices.d.ts.map +1 -0
- package/dist/cjs/utils/prices.js +231 -0
- package/dist/cjs/utils/prices.js.map +1 -0
- package/dist/cjs/utils/simpleCache.d.ts.map +1 -0
- package/dist/cjs/utils/simpleCache.js +43 -0
- package/dist/cjs/utils/simpleCache.js.map +1 -0
- package/dist/cjs/utils/types.d.ts.map +1 -0
- package/dist/cjs/utils/types.js +3 -0
- package/dist/cjs/utils/types.js.map +1 -0
- package/dist/cjs/utils/userHoldings.d.ts.map +1 -0
- package/dist/cjs/utils/userHoldings.js +202 -0
- package/dist/cjs/utils/userHoldings.js.map +1 -0
- package/dist/cjs/vaultFunctions.d.ts.map +1 -0
- package/dist/cjs/vaultFunctions.js +32 -0
- package/dist/cjs/vaultFunctions.js.map +1 -0
- package/dist/esm/common/alphaTypes.d.ts.map +1 -0
- package/dist/esm/common/alphaTypes.js +2 -0
- package/dist/esm/common/alphaTypes.js.map +1 -0
- package/dist/esm/common/cetus_mainnet_config.d.ts.map +1 -0
- package/dist/esm/common/cetus_mainnet_config.js +47 -0
- package/dist/esm/common/cetus_mainnet_config.js.map +1 -0
- package/dist/esm/common/coins.d.ts.map +1 -0
- package/dist/esm/common/coins.js +132 -0
- package/dist/esm/common/coins.js.map +1 -0
- package/dist/esm/common/constants.d.ts.map +1 -0
- package/dist/esm/common/constants.js +462 -0
- package/dist/esm/common/constants.js.map +1 -0
- package/dist/esm/common/maps.d.ts.map +1 -0
- package/dist/esm/common/maps.js +527 -0
- package/dist/esm/common/maps.js.map +1 -0
- package/dist/esm/common/pyth.d.ts.map +1 -0
- package/dist/esm/common/pyth.js +2 -0
- package/dist/esm/common/pyth.js.map +1 -0
- package/dist/esm/common/types.d.ts.map +1 -0
- package/dist/esm/common/types.js +16 -0
- package/dist/esm/common/types.js.map +1 -0
- package/dist/esm/example.d.ts.map +1 -0
- package/dist/esm/example.js +38 -0
- package/dist/esm/example.js.map +1 -0
- package/dist/esm/getAirdropShare.d.ts.map +1 -0
- package/dist/esm/getAirdropShare.js +6 -0
- package/dist/esm/getAirdropShare.js.map +1 -0
- package/dist/esm/getAllVaults.d.ts.map +1 -0
- package/dist/esm/getAllVaults.js +27 -0
- package/dist/esm/getAllVaults.js.map +1 -0
- package/dist/esm/getAlphaUnlocks.d.ts.map +1 -0
- package/dist/esm/getAlphaUnlocks.js +17 -0
- package/dist/esm/getAlphaUnlocks.js.map +1 -0
- package/dist/esm/getAprs.d.ts.map +1 -0
- package/dist/esm/getAprs.js +50 -0
- package/dist/esm/getAprs.js.map +1 -0
- package/dist/esm/getHoldersFromTransactions.d.ts.map +1 -0
- package/dist/esm/getHoldersFromTransactions.js +82 -0
- package/dist/esm/getHoldersFromTransactions.js.map +1 -0
- package/dist/esm/getLastAutoCompoundTime.d.ts.map +1 -0
- package/dist/esm/getLastAutoCompoundTime.js +14 -0
- package/dist/esm/getLastAutoCompoundTime.js.map +1 -0
- package/dist/esm/getRebalanceHistory.d.ts.map +1 -0
- package/dist/esm/getRebalanceHistory.js +20 -0
- package/dist/esm/getRebalanceHistory.js.map +1 -0
- package/dist/esm/getVaultBalances.d.ts.map +1 -0
- package/dist/esm/getVaultBalances.js +124 -0
- package/dist/esm/getVaultBalances.js.map +1 -0
- package/dist/esm/getVaults.d.ts.map +1 -0
- package/dist/esm/getVaults.js +26 -0
- package/dist/esm/getVaults.js.map +1 -0
- package/dist/esm/graphql/client.d.ts.map +1 -0
- package/dist/esm/graphql/client.js +12 -0
- package/dist/esm/graphql/client.js.map +1 -0
- package/dist/esm/graphql/executeMutations.d.ts.map +1 -0
- package/dist/esm/graphql/executeMutations.js +25 -0
- package/dist/esm/graphql/executeMutations.js.map +1 -0
- package/dist/esm/graphql/fetchAutoCompoundingEventsGql.d.ts.map +1 -0
- package/dist/esm/graphql/fetchAutoCompoundingEventsGql.js +116 -0
- package/dist/esm/graphql/fetchAutoCompoundingEventsGql.js.map +1 -0
- package/dist/esm/graphql/fetchData.d.ts.map +1 -0
- package/dist/esm/graphql/fetchData.js +81 -0
- package/dist/esm/graphql/fetchData.js.map +1 -0
- package/dist/esm/graphql/fetchNftHolders.d.ts.map +1 -0
- package/dist/esm/graphql/fetchNftHolders.js +30 -0
- package/dist/esm/graphql/fetchNftHolders.js.map +1 -0
- package/dist/esm/graphql/fetchReceipts.d.ts.map +1 -0
- package/dist/esm/graphql/fetchReceipts.js +31 -0
- package/dist/esm/graphql/fetchReceipts.js.map +1 -0
- package/dist/esm/graphql/mutations.d.ts.map +1 -0
- package/dist/esm/graphql/mutations.js +30 -0
- package/dist/esm/graphql/mutations.js.map +1 -0
- package/dist/esm/graphql/parseData.d.ts.map +1 -0
- package/dist/esm/graphql/parseData.js +6 -0
- package/dist/esm/graphql/parseData.js.map +1 -0
- package/dist/esm/graphql/parseLockedTableId.d.ts.map +1 -0
- package/dist/esm/graphql/parseLockedTableId.js +12 -0
- package/dist/esm/graphql/parseLockedTableId.js.map +1 -0
- package/dist/esm/graphql/queries/autoCompoundEvents.d.ts.map +1 -0
- package/dist/esm/graphql/queries/autoCompoundEvents.js +16 -0
- package/dist/esm/graphql/queries/autoCompoundEvents.js.map +1 -0
- package/dist/esm/graphql/queries/cetusPools.d.ts.map +1 -0
- package/dist/esm/graphql/queries/cetusPools.js +36 -0
- package/dist/esm/graphql/queries/cetusPools.js.map +1 -0
- package/dist/esm/graphql/queries/investors.d.ts.map +1 -0
- package/dist/esm/graphql/queries/investors.js +36 -0
- package/dist/esm/graphql/queries/investors.js.map +1 -0
- package/dist/esm/graphql/queries/lockedTableData.d.ts.map +1 -0
- package/dist/esm/graphql/queries/lockedTableData.js +27 -0
- package/dist/esm/graphql/queries/lockedTableData.js.map +1 -0
- package/dist/esm/graphql/queries/lockedTableDataFragment.d.ts.map +1 -0
- package/dist/esm/graphql/queries/lockedTableDataFragment.js +21 -0
- package/dist/esm/graphql/queries/lockedTableDataFragment.js.map +1 -0
- package/dist/esm/graphql/queries/nftHolders.d.ts.map +1 -0
- package/dist/esm/graphql/queries/nftHolders.js +20 -0
- package/dist/esm/graphql/queries/nftHolders.js.map +1 -0
- package/dist/esm/graphql/queries/pools.d.ts.map +1 -0
- package/dist/esm/graphql/queries/pools.js +54 -0
- package/dist/esm/graphql/queries/pools.js.map +1 -0
- package/dist/esm/graphql/queries/receiptData.d.ts.map +1 -0
- package/dist/esm/graphql/queries/receiptData.js +18 -0
- package/dist/esm/graphql/queries/receiptData.js.map +1 -0
- package/dist/esm/graphql/queries/userVaultBalances.d.ts.map +1 -0
- package/dist/esm/graphql/queries/userVaultBalances.js +59 -0
- package/dist/esm/graphql/queries/userVaultBalances.js.map +1 -0
- package/dist/esm/graphql/queries/userVaults.d.ts.map +1 -0
- package/dist/esm/graphql/queries/userVaults.js +59 -0
- package/dist/esm/graphql/queries/userVaults.js.map +1 -0
- package/dist/esm/graphql/queries.d.ts.map +1 -0
- package/dist/esm/graphql/queries.js +83 -0
- package/dist/esm/graphql/queries.js.map +1 -0
- package/dist/esm/graphql/types.d.ts.map +1 -0
- package/dist/esm/graphql/types.js +2 -0
- package/dist/esm/graphql/types.js.map +1 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/{index.d.ts → esm/index.js} +23 -19
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/sui-sdk/client.d.ts.map +1 -0
- package/dist/esm/sui-sdk/client.js +63 -0
- package/dist/esm/sui-sdk/client.js.map +1 -0
- package/dist/esm/sui-sdk/events/fetchAutoCompoundingEvents.d.ts.map +1 -0
- package/dist/esm/sui-sdk/events/fetchAutoCompoundingEvents.js +196 -0
- package/dist/esm/sui-sdk/events/fetchAutoCompoundingEvents.js.map +1 -0
- package/dist/esm/sui-sdk/events/fetchEvents.d.ts.map +1 -0
- package/dist/esm/sui-sdk/events/fetchEvents.js +181 -0
- package/dist/esm/sui-sdk/events/fetchEvents.js.map +1 -0
- package/dist/esm/sui-sdk/events/fetchLiquidityChangeEvents.d.ts.map +1 -0
- package/dist/esm/sui-sdk/events/fetchLiquidityChangeEvents.js +41 -0
- package/dist/esm/sui-sdk/events/fetchLiquidityChangeEvents.js.map +1 -0
- package/dist/esm/sui-sdk/events/fetchRebalanceEvents.d.ts.map +1 -0
- package/dist/esm/sui-sdk/events/fetchRebalanceEvents.js +85 -0
- package/dist/esm/sui-sdk/events/fetchRebalanceEvents.js.map +1 -0
- package/dist/esm/sui-sdk/events/parseData.d.ts.map +1 -0
- package/dist/esm/sui-sdk/events/parseData.js +27 -0
- package/dist/esm/sui-sdk/events/parseData.js.map +1 -0
- package/dist/esm/sui-sdk/events/types.d.ts.map +1 -0
- package/dist/esm/sui-sdk/events/types.js +2 -0
- package/dist/esm/sui-sdk/events/types.js.map +1 -0
- package/dist/esm/sui-sdk/functions/fetchTableData.d.ts.map +1 -0
- package/dist/esm/sui-sdk/functions/fetchTableData.js +73 -0
- package/dist/esm/sui-sdk/functions/fetchTableData.js.map +1 -0
- package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.d.ts.map +1 -0
- package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.js +79 -0
- package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.js.map +1 -0
- package/dist/esm/sui-sdk/functions/fetchUserVaults.d.ts.map +1 -0
- package/dist/esm/sui-sdk/functions/fetchUserVaults.js +42 -0
- package/dist/esm/sui-sdk/functions/fetchUserVaults.js.map +1 -0
- package/dist/esm/sui-sdk/functions/getPortfolioAmounts.d.ts.map +1 -0
- package/dist/esm/sui-sdk/functions/getPortfolioAmounts.js +238 -0
- package/dist/esm/sui-sdk/functions/getPortfolioAmounts.js.map +1 -0
- package/dist/esm/sui-sdk/functions/getReceipts.d.ts.map +1 -0
- package/dist/esm/sui-sdk/functions/getReceipts.js +364 -0
- package/dist/esm/sui-sdk/functions/getReceipts.js.map +1 -0
- package/dist/esm/sui-sdk/transactions/constants.d.ts.map +1 -0
- package/dist/esm/sui-sdk/transactions/constants.js +87 -0
- package/dist/esm/sui-sdk/transactions/constants.js.map +1 -0
- package/dist/esm/sui-sdk/transactions/fetchTransactions.d.ts.map +1 -0
- package/dist/esm/sui-sdk/transactions/fetchTransactions.js +85 -0
- package/dist/esm/sui-sdk/transactions/fetchTransactions.js.map +1 -0
- package/dist/esm/sui-sdk/transactions/types.d.ts.map +1 -0
- package/dist/esm/sui-sdk/transactions/types.js +2 -0
- package/dist/esm/sui-sdk/transactions/types.js.map +1 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils/clmm/prices.d.ts.map +1 -0
- package/dist/esm/utils/clmm/prices.js +309 -0
- package/dist/esm/utils/clmm/prices.js.map +1 -0
- package/dist/esm/utils/clmm/tokenAmountFromLiquidity.d.ts.map +1 -0
- package/dist/esm/utils/clmm/tokenAmountFromLiquidity.js +188 -0
- package/dist/esm/utils/clmm/tokenAmountFromLiquidity.js.map +1 -0
- package/dist/esm/utils/clmm/types.d.ts.map +1 -0
- package/dist/esm/utils/clmm/types.js +2 -0
- package/dist/esm/utils/clmm/types.js.map +1 -0
- package/dist/esm/utils/constants.d.ts.map +1 -0
- package/dist/esm/utils/constants.js +101 -0
- package/dist/esm/utils/constants.js.map +1 -0
- package/dist/esm/utils/getHoldersFromTransactionsUtils.d.ts.map +1 -0
- package/dist/esm/utils/getHoldersFromTransactionsUtils.js +127 -0
- package/dist/esm/utils/getHoldersFromTransactionsUtils.js.map +1 -0
- package/dist/esm/utils/getReceipts.d.ts.map +1 -0
- package/dist/esm/utils/getReceipts.js +42 -0
- package/dist/esm/utils/getReceipts.js.map +1 -0
- package/dist/esm/utils/hop.d.ts.map +1 -0
- package/dist/esm/utils/hop.js +118 -0
- package/dist/esm/utils/hop.js.map +1 -0
- package/dist/esm/utils/prices.d.ts.map +1 -0
- package/dist/esm/utils/prices.js +226 -0
- package/dist/esm/utils/prices.js.map +1 -0
- package/dist/esm/utils/simpleCache.d.ts.map +1 -0
- package/dist/esm/utils/simpleCache.js +40 -0
- package/dist/esm/utils/simpleCache.js.map +1 -0
- package/dist/esm/utils/types.d.ts.map +1 -0
- package/dist/esm/utils/types.js +2 -0
- package/dist/esm/utils/types.js.map +1 -0
- package/dist/esm/utils/userHoldings.d.ts.map +1 -0
- package/dist/esm/utils/userHoldings.js +195 -0
- package/dist/esm/utils/userHoldings.js.map +1 -0
- package/dist/esm/vaultFunctions.d.ts.map +1 -0
- package/dist/esm/vaultFunctions.js +27 -0
- package/dist/esm/vaultFunctions.js.map +1 -0
- package/package.json +29 -13
- package/dist/common/alphaTypes.d.ts +0 -109
- package/dist/common/cetus_mainnet_config.d.ts +0 -2
- package/dist/common/coins.d.ts +0 -4
- package/dist/common/constants.d.ts +0 -401
- package/dist/common/maps.d.ts +0 -56
- package/dist/common/pyth.d.ts +0 -6
- package/dist/common/types.d.ts +0 -459
- package/dist/example.d.ts +0 -2
- package/dist/getAirdropShare.d.ts +0 -1
- package/dist/getAllVaults.d.ts +0 -3
- package/dist/getAlphaUnlocks.d.ts +0 -13
- package/dist/getAprs.d.ts +0 -5
- package/dist/getHoldersFromTransactions.d.ts +0 -8
- package/dist/getLastAutoCompoundTime.d.ts +0 -2
- package/dist/getRebalanceHistory.d.ts +0 -3
- package/dist/getVaultBalances.d.ts +0 -8
- package/dist/getVaults.d.ts +0 -4
- package/dist/graphql/client.d.ts +0 -3
- package/dist/graphql/executeMutations.d.ts +0 -3
- package/dist/graphql/fetchAutoCompoundingEventsGql.d.ts +0 -26
- package/dist/graphql/fetchData.d.ts +0 -10
- package/dist/graphql/fetchNftHolders.d.ts +0 -2
- package/dist/graphql/fetchReceipts.d.ts +0 -2
- package/dist/graphql/mutations.d.ts +0 -3
- package/dist/graphql/parseData.d.ts +0 -1
- package/dist/graphql/parseLockedTableId.d.ts +0 -6
- package/dist/graphql/queries.d.ts +0 -14
- package/dist/graphql/types.d.ts +0 -69
- package/dist/index.js +0 -3
- package/dist/index.js.LICENSE.txt +0 -48
- package/dist/index.js.map +0 -1
- package/dist/sui-sdk/client.d.ts +0 -30
- package/dist/sui-sdk/events/fetchAutoCompoundingEvents.d.ts +0 -5
- package/dist/sui-sdk/events/fetchEvents.d.ts +0 -2
- package/dist/sui-sdk/events/fetchLiquidityChangeEvents.d.ts +0 -2
- package/dist/sui-sdk/events/fetchRebalanceEvents.d.ts +0 -4
- package/dist/sui-sdk/events/parseData.d.ts +0 -3
- package/dist/sui-sdk/events/types.d.ts +0 -93
- package/dist/sui-sdk/functions/fetchTableData.d.ts +0 -49
- package/dist/sui-sdk/functions/fetchUserVaultBalances.d.ts +0 -2
- package/dist/sui-sdk/functions/fetchUserVaults.d.ts +0 -2
- package/dist/sui-sdk/functions/getPortfolioAmounts.d.ts +0 -32
- package/dist/sui-sdk/functions/getReceipts.d.ts +0 -10
- package/dist/sui-sdk/transactions/constants.d.ts +0 -3
- package/dist/sui-sdk/transactions/fetchTransactions.d.ts +0 -3
- package/dist/sui-sdk/transactions/types.d.ts +0 -7
- package/dist/types.d.ts +0 -212
- package/dist/utils/clmm/prices.d.ts +0 -19
- package/dist/utils/clmm/tokenAmountFromLiquidity.d.ts +0 -10
- package/dist/utils/clmm/types.d.ts +0 -24
- package/dist/utils/constants.d.ts +0 -2
- package/dist/utils/getHoldersFromTransactionsUtils.d.ts +0 -5
- package/dist/utils/getReceipts.d.ts +0 -3
- package/dist/utils/hop.d.ts +0 -15
- package/dist/utils/prices.d.ts +0 -6
- package/dist/utils/simpleCache.d.ts +0 -9
- package/dist/utils/types.d.ts +0 -4
- package/dist/utils/userHoldings.d.ts +0 -5
- package/dist/vaultFunctions.d.ts +0 -4
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { coins } from "../../common/coins.js";
|
|
2
|
+
import { getInvestorPoolMap, poolCoinMap, poolInfo, } from "../../common/maps.js";
|
|
3
|
+
import { fetchEvents } from "./fetchEvents.js";
|
|
4
|
+
export async function fetchAutoCompoundingEvents(params) {
|
|
5
|
+
const eventTypesSet = new Set();
|
|
6
|
+
const rebalanceEventTypesSet = new Set();
|
|
7
|
+
if (params.poolNames) {
|
|
8
|
+
params.poolNames.forEach((poolName) => {
|
|
9
|
+
const eventType = poolInfo[poolName].autoCompoundingEventType;
|
|
10
|
+
if (eventType !== undefined && eventType !== null && eventType !== "") {
|
|
11
|
+
eventTypesSet.add(eventType);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
// Iterate over all the values in poolInfo and add each autoCompoundingEventType to the Set
|
|
17
|
+
Object.values(poolInfo).forEach((info) => {
|
|
18
|
+
const eventType = info.autoCompoundingEventType;
|
|
19
|
+
if (eventType !== undefined && eventType !== null && eventType !== "") {
|
|
20
|
+
eventTypesSet.add(eventType);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
// for rebalance
|
|
25
|
+
if (params.poolNames) {
|
|
26
|
+
params.poolNames.forEach((poolName) => {
|
|
27
|
+
const eventType = poolInfo[poolName].rebalanceEventType;
|
|
28
|
+
if (eventType !== undefined && eventType !== null && eventType !== "") {
|
|
29
|
+
rebalanceEventTypesSet.add(eventType);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
// Iterate over all the values in poolInfo and add each autoCompoundingEventType to the Set
|
|
35
|
+
Object.values(poolInfo).forEach((info) => {
|
|
36
|
+
const eventType = info.rebalanceEventType;
|
|
37
|
+
if (eventType !== undefined && eventType !== null && eventType !== "") {
|
|
38
|
+
rebalanceEventTypesSet.add(eventType);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
const eventTypes = Array.from(eventTypesSet);
|
|
43
|
+
const rebalanceEventTypes = Array.from(rebalanceEventTypesSet);
|
|
44
|
+
const eventsPromises = eventTypes.map(async (eventType) => {
|
|
45
|
+
const events = (await fetchEvents({
|
|
46
|
+
startTime: params.startTime,
|
|
47
|
+
endTime: params.endTime,
|
|
48
|
+
eventTypes: [eventType],
|
|
49
|
+
})).filter((e) => {
|
|
50
|
+
if (params.poolNames) {
|
|
51
|
+
return params.poolNames
|
|
52
|
+
.map((poolName) => poolInfo[poolName].investorId)
|
|
53
|
+
.includes(e.investor_id);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
return events;
|
|
60
|
+
});
|
|
61
|
+
const rebalanceEventsPromises = rebalanceEventTypes.map(async (eventType) => {
|
|
62
|
+
const events = (await fetchEvents({
|
|
63
|
+
startTime: params.startTime,
|
|
64
|
+
endTime: params.endTime,
|
|
65
|
+
eventTypes: [eventType],
|
|
66
|
+
})).filter((e) => {
|
|
67
|
+
if (params.poolNames) {
|
|
68
|
+
return params.poolNames
|
|
69
|
+
.map((poolName) => poolInfo[poolName].investorId)
|
|
70
|
+
.includes(e.investor_id);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
return events;
|
|
77
|
+
});
|
|
78
|
+
const events = (await Promise.all(eventsPromises)).flat();
|
|
79
|
+
const autoCompoundingEvents = events.map((e) => {
|
|
80
|
+
return e;
|
|
81
|
+
});
|
|
82
|
+
const rebalanceEvents = (await Promise.all(rebalanceEventsPromises)).flat();
|
|
83
|
+
const rebalancingEvents = rebalanceEvents.map((e) => {
|
|
84
|
+
return e;
|
|
85
|
+
});
|
|
86
|
+
const investorPoolMap = await getInvestorPoolMap();
|
|
87
|
+
for (const x of autoCompoundingEvents) {
|
|
88
|
+
if (poolInfo[investorPoolMap.get(x.investor_id)].parentProtocolName ==
|
|
89
|
+
"CETUS") {
|
|
90
|
+
if ("total_amount_a" in x &&
|
|
91
|
+
x.total_amount_a == 0n &&
|
|
92
|
+
x.total_amount_b == 0n) {
|
|
93
|
+
for (const y of rebalancingEvents) {
|
|
94
|
+
if (y.investor_id == x.investor_id && y.timestamp == x.timestamp) {
|
|
95
|
+
// works if its guaranteed that for one timestamp there is only one rebalance for one pool
|
|
96
|
+
x.total_amount_a = BigInt(y.amount_a_before);
|
|
97
|
+
x.total_amount_b = BigInt(y.amount_b_before);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return autoCompoundingEvents;
|
|
104
|
+
}
|
|
105
|
+
export async function calculateAprForInvestor(events) {
|
|
106
|
+
// Sort events by timestamp to process them in order
|
|
107
|
+
events.sort((a, b) => a.timestamp - b.timestamp);
|
|
108
|
+
let totalGrowth = 0;
|
|
109
|
+
let totalTimeSpan = 0;
|
|
110
|
+
let previousTimestamp = events[0].timestamp; // Start with the timestamp of the first event
|
|
111
|
+
const investorPoolMap = await getInvestorPoolMap();
|
|
112
|
+
for (const event of events) {
|
|
113
|
+
// Calculate the time difference from the previous event
|
|
114
|
+
const timeDiff = event.timestamp - previousTimestamp; // / (1000 * 60 * 60 * 24);
|
|
115
|
+
// Calculate growth rate
|
|
116
|
+
let growthRate = 0;
|
|
117
|
+
if ("total_amount_a" in event && "total_amount_b" in event) {
|
|
118
|
+
let growthA = 0;
|
|
119
|
+
let growthB = 0;
|
|
120
|
+
growthA =
|
|
121
|
+
Number(event.total_amount_a) === 0
|
|
122
|
+
? 0
|
|
123
|
+
: Number(event.compound_amount_a) / Number(event.total_amount_a);
|
|
124
|
+
growthB =
|
|
125
|
+
Number(event.total_amount_b) == 0
|
|
126
|
+
? 0
|
|
127
|
+
: Number(event.compound_amount_b) / Number(event.total_amount_b);
|
|
128
|
+
growthRate = (growthA + growthB) / 2; // Averaging growth rates for token A and B
|
|
129
|
+
}
|
|
130
|
+
else if ("total_amount" in event) {
|
|
131
|
+
let compoundAmount = Number(event.compound_amount);
|
|
132
|
+
let totalAmount = Number(event.total_amount);
|
|
133
|
+
if ("cur_total_debt" in event && "accrued_interest" in event) {
|
|
134
|
+
compoundAmount = Number(event.compound_amount - event.accrued_interest);
|
|
135
|
+
totalAmount = Number(event.total_amount - event.cur_total_debt);
|
|
136
|
+
}
|
|
137
|
+
// NaviAutoCompoundingEvent
|
|
138
|
+
growthRate = isNaN(compoundAmount / totalAmount)
|
|
139
|
+
? 0
|
|
140
|
+
: compoundAmount / totalAmount;
|
|
141
|
+
const poolName = investorPoolMap.get(event.investor_id);
|
|
142
|
+
const coinName = poolCoinMap[poolName];
|
|
143
|
+
growthRate = growthRate * Math.pow(10, 9 - coins[coinName].expo);
|
|
144
|
+
}
|
|
145
|
+
// Accumulate the time-weighted growth
|
|
146
|
+
totalGrowth += growthRate;
|
|
147
|
+
// Accumulate the total time span
|
|
148
|
+
totalTimeSpan += timeDiff;
|
|
149
|
+
// Update the previous timestamp to the current event's timestamp
|
|
150
|
+
previousTimestamp = event.timestamp;
|
|
151
|
+
}
|
|
152
|
+
const apr = (totalGrowth / totalTimeSpan) * (1000 * 60 * 60 * 24 * 365) * 100;
|
|
153
|
+
return apr;
|
|
154
|
+
}
|
|
155
|
+
async function calculateAprForInvestors(events) {
|
|
156
|
+
const investorEvents = {};
|
|
157
|
+
// Step 1: Segregate events by investor_id
|
|
158
|
+
for (const event of events) {
|
|
159
|
+
const investorId = event.investor_id;
|
|
160
|
+
if (!investorEvents[investorId]) {
|
|
161
|
+
investorEvents[investorId] = [];
|
|
162
|
+
}
|
|
163
|
+
investorEvents[investorId].push(event);
|
|
164
|
+
}
|
|
165
|
+
// Step 2: Calculate APR for each event and aggregate for each investor
|
|
166
|
+
const aprPromises = [];
|
|
167
|
+
for (const investorId in investorEvents) {
|
|
168
|
+
const investorEventList = investorEvents[investorId];
|
|
169
|
+
// Push a promise that resolves to an object containing the investorId and the corresponding APR
|
|
170
|
+
aprPromises.push(calculateAprForInvestor(investorEventList).then((apr) => ({
|
|
171
|
+
investorId,
|
|
172
|
+
apr,
|
|
173
|
+
})));
|
|
174
|
+
}
|
|
175
|
+
// Resolve all promises and map them to the corresponding APR
|
|
176
|
+
const aprs = await Promise.all(aprPromises);
|
|
177
|
+
// Convert the array of results into an object mapping investorId to APR
|
|
178
|
+
const aprMap = aprs.reduce((map, result) => {
|
|
179
|
+
map[result.investorId] = result.apr;
|
|
180
|
+
return map;
|
|
181
|
+
}, {});
|
|
182
|
+
return aprMap;
|
|
183
|
+
}
|
|
184
|
+
export async function calculateAprForPools(events) {
|
|
185
|
+
const aprMap = {};
|
|
186
|
+
const investorPoolNameMap = await getInvestorPoolMap();
|
|
187
|
+
const investorAprMap = await calculateAprForInvestors(events);
|
|
188
|
+
for (const investorId in investorAprMap) {
|
|
189
|
+
const poolName = investorPoolNameMap.get(investorId);
|
|
190
|
+
if (poolName) {
|
|
191
|
+
aprMap[poolName] = investorAprMap[investorId];
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return aprMap;
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=fetchAutoCompoundingEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchAutoCompoundingEvents.js","sourceRoot":"","sources":["../../../../src/sui-sdk/events/fetchAutoCompoundingEvents.ts"],"names":[],"mappings":"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","sourcesContent":["import { coins } from \"../../common/coins.js\";\nimport {\n getInvestorPoolMap,\n poolCoinMap,\n poolInfo,\n} from \"../../common/maps.js\";\nimport { PoolName, SingleAssetPoolNames } from \"../../common/types.js\";\nimport { fetchEvents } from \"./fetchEvents.js\";\nimport {\n AutoCompoundingEventNode,\n FetchAutoCompoundingEventsParams,\n RebalanceEventNode,\n} from \"./types.js\";\n\nexport async function fetchAutoCompoundingEvents(\n params: FetchAutoCompoundingEventsParams,\n): Promise<AutoCompoundingEventNode[]> {\n const eventTypesSet = new Set<string>();\n const rebalanceEventTypesSet = new Set<string>();\n if (params.poolNames) {\n params.poolNames.forEach((poolName) => {\n const eventType = poolInfo[poolName].autoCompoundingEventType;\n if (eventType !== undefined && eventType !== null && eventType !== \"\") {\n eventTypesSet.add(eventType);\n }\n });\n } else {\n // Iterate over all the values in poolInfo and add each autoCompoundingEventType to the Set\n Object.values(poolInfo).forEach((info) => {\n const eventType = info.autoCompoundingEventType;\n if (eventType !== undefined && eventType !== null && eventType !== \"\") {\n eventTypesSet.add(eventType);\n }\n });\n }\n // for rebalance\n if (params.poolNames) {\n params.poolNames.forEach((poolName) => {\n const eventType = poolInfo[poolName].rebalanceEventType;\n if (eventType !== undefined && eventType !== null && eventType !== \"\") {\n rebalanceEventTypesSet.add(eventType);\n }\n });\n } else {\n // Iterate over all the values in poolInfo and add each autoCompoundingEventType to the Set\n Object.values(poolInfo).forEach((info) => {\n const eventType = info.rebalanceEventType;\n if (eventType !== undefined && eventType !== null && eventType !== \"\") {\n rebalanceEventTypesSet.add(eventType);\n }\n });\n }\n\n const eventTypes = Array.from(eventTypesSet);\n const rebalanceEventTypes = Array.from(rebalanceEventTypesSet);\n\n const eventsPromises = eventTypes.map(async (eventType) => {\n const events = (\n await fetchEvents({\n startTime: params.startTime,\n endTime: params.endTime,\n eventTypes: [eventType],\n })\n ).filter((e) => {\n if (params.poolNames) {\n return params.poolNames\n .map((poolName) => poolInfo[poolName].investorId)\n .includes((e as AutoCompoundingEventNode).investor_id);\n } else {\n return true;\n }\n });\n return events;\n });\n const rebalanceEventsPromises = rebalanceEventTypes.map(async (eventType) => {\n const events = (\n await fetchEvents({\n startTime: params.startTime,\n endTime: params.endTime,\n eventTypes: [eventType],\n })\n ).filter((e) => {\n if (params.poolNames) {\n return params.poolNames\n .map((poolName) => poolInfo[poolName].investorId)\n .includes((e as AutoCompoundingEventNode).investor_id);\n } else {\n return true;\n }\n });\n return events;\n });\n\n const events = (await Promise.all(eventsPromises)).flat();\n\n const autoCompoundingEvents = events.map((e) => {\n return e as AutoCompoundingEventNode;\n });\n\n const rebalanceEvents = (await Promise.all(rebalanceEventsPromises)).flat();\n\n const rebalancingEvents = rebalanceEvents.map((e) => {\n return e as RebalanceEventNode;\n });\n\n const investorPoolMap = await getInvestorPoolMap();\n\n for (const x of autoCompoundingEvents) {\n if (\n poolInfo[investorPoolMap.get(x.investor_id)!].parentProtocolName ==\n \"CETUS\"\n ) {\n if (\n \"total_amount_a\" in x &&\n x.total_amount_a == 0n &&\n x.total_amount_b == 0n\n ) {\n for (const y of rebalancingEvents) {\n if (y.investor_id == x.investor_id && y.timestamp == x.timestamp) {\n // works if its guaranteed that for one timestamp there is only one rebalance for one pool\n x.total_amount_a = BigInt(y.amount_a_before);\n x.total_amount_b = BigInt(y.amount_b_before);\n }\n }\n }\n }\n }\n\n return autoCompoundingEvents;\n}\n\nexport async function calculateAprForInvestor(\n events: AutoCompoundingEventNode[],\n): Promise<number> {\n // Sort events by timestamp to process them in order\n events.sort((a, b) => a.timestamp - b.timestamp);\n\n let totalGrowth = 0;\n let totalTimeSpan = 0;\n let previousTimestamp = events[0].timestamp; // Start with the timestamp of the first event\n\n const investorPoolMap = await getInvestorPoolMap();\n\n for (const event of events) {\n // Calculate the time difference from the previous event\n const timeDiff = event.timestamp - previousTimestamp; // / (1000 * 60 * 60 * 24);\n\n // Calculate growth rate\n let growthRate = 0;\n if (\"total_amount_a\" in event && \"total_amount_b\" in event) {\n let growthA = 0;\n let growthB = 0;\n growthA =\n Number(event.total_amount_a) === 0\n ? 0\n : Number(event.compound_amount_a) / Number(event.total_amount_a);\n\n growthB =\n Number(event.total_amount_b) == 0\n ? 0\n : Number(event.compound_amount_b) / Number(event.total_amount_b);\n\n growthRate = (growthA + growthB) / 2; // Averaging growth rates for token A and B\n } else if (\"total_amount\" in event) {\n let compoundAmount: number = Number(event.compound_amount);\n let totalAmount: number = Number(event.total_amount);\n if (\"cur_total_debt\" in event && \"accrued_interest\" in event) {\n compoundAmount = Number(event.compound_amount - event.accrued_interest);\n totalAmount = Number(event.total_amount - event.cur_total_debt);\n }\n // NaviAutoCompoundingEvent\n growthRate = isNaN(compoundAmount / totalAmount)\n ? 0\n : compoundAmount / totalAmount;\n const poolName = investorPoolMap.get(\n event.investor_id,\n ) as SingleAssetPoolNames;\n const coinName = poolCoinMap[poolName];\n\n growthRate = growthRate * Math.pow(10, 9 - coins[coinName].expo);\n }\n\n // Accumulate the time-weighted growth\n totalGrowth += growthRate;\n\n // Accumulate the total time span\n totalTimeSpan += timeDiff;\n\n // Update the previous timestamp to the current event's timestamp\n previousTimestamp = event.timestamp;\n }\n\n const apr = (totalGrowth / totalTimeSpan) * (1000 * 60 * 60 * 24 * 365) * 100;\n\n return apr;\n}\n\nasync function calculateAprForInvestors(\n events: AutoCompoundingEventNode[],\n): Promise<Record<string, number>> {\n const investorEvents: Record<string, AutoCompoundingEventNode[]> = {};\n\n // Step 1: Segregate events by investor_id\n for (const event of events) {\n const investorId = event.investor_id;\n if (!investorEvents[investorId]) {\n investorEvents[investorId] = [];\n }\n investorEvents[investorId].push(event);\n }\n\n // Step 2: Calculate APR for each event and aggregate for each investor\n const aprPromises: Promise<{ investorId: string; apr: number }>[] = [];\n\n for (const investorId in investorEvents) {\n const investorEventList = investorEvents[investorId];\n\n // Push a promise that resolves to an object containing the investorId and the corresponding APR\n aprPromises.push(\n calculateAprForInvestor(investorEventList).then((apr) => ({\n investorId,\n apr,\n })),\n );\n }\n\n // Resolve all promises and map them to the corresponding APR\n const aprs = await Promise.all(aprPromises);\n\n // Convert the array of results into an object mapping investorId to APR\n const aprMap = aprs.reduce(\n (map, result) => {\n map[result.investorId] = result.apr;\n return map;\n },\n {} as Record<string, number>,\n );\n\n return aprMap;\n}\n\nexport async function calculateAprForPools(\n events: AutoCompoundingEventNode[],\n): Promise<Record<PoolName, number>> {\n const aprMap: Record<string, number> = {};\n const investorPoolNameMap = await getInvestorPoolMap();\n const investorAprMap = await calculateAprForInvestors(events);\n for (const investorId in investorAprMap) {\n const poolName = investorPoolNameMap.get(investorId);\n if (poolName) {\n aprMap[poolName] = investorAprMap[investorId];\n }\n }\n return aprMap;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchEvents.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/events/fetchEvents.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,SAAS,EACT,iBAAiB,EAOlB,MAAM,YAAY,CAAC;AAIpB,wBAAsB,WAAW,CAC/B,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,SAAS,EAAE,CAAC,CA4LtB"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { getSuiClient } from "../client.js";
|
|
2
|
+
import { poolInfo } from "../../common/maps.js";
|
|
3
|
+
import { conf, CONF_ENV } from "../../common/constants.js";
|
|
4
|
+
export async function fetchEvents(params) {
|
|
5
|
+
const allEvents = [];
|
|
6
|
+
let hasNextPage = true;
|
|
7
|
+
let startCursor = null;
|
|
8
|
+
if (params.eventTypes.length > 1) {
|
|
9
|
+
console.warn("Multiple eventTypes not supported right now, pass only one element in the array.");
|
|
10
|
+
}
|
|
11
|
+
if (params.eventTypes.length < 1) {
|
|
12
|
+
hasNextPage = false;
|
|
13
|
+
}
|
|
14
|
+
const now = Date.now();
|
|
15
|
+
const twentyFourHoursAgo = now - 24 * 60 * 60 * 1000; // timestamp for 24 hours ago
|
|
16
|
+
const startTime = params.startTime ? params.startTime : twentyFourHoursAgo;
|
|
17
|
+
const endTime = params.endTime ? params.endTime : now;
|
|
18
|
+
if (startTime >= endTime) {
|
|
19
|
+
throw new Error("startTime must be less than endTime");
|
|
20
|
+
}
|
|
21
|
+
const suiClient = getSuiClient();
|
|
22
|
+
while (hasNextPage) {
|
|
23
|
+
const result = await suiClient.queryEvents({
|
|
24
|
+
cursor: startCursor,
|
|
25
|
+
order: "descending",
|
|
26
|
+
query: {
|
|
27
|
+
MoveEventType: params.eventTypes[0],
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
const se = result.data;
|
|
31
|
+
for (let i = 0; i < se.length; i++) {
|
|
32
|
+
const suiEvent = se[i];
|
|
33
|
+
if (Number(suiEvent.timestampMs) > endTime) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (Number(suiEvent.timestampMs) < startTime) {
|
|
37
|
+
hasNextPage = false; // Stop further pagination
|
|
38
|
+
break; // Exit the loop
|
|
39
|
+
}
|
|
40
|
+
const suiEventJson = suiEvent.parsedJson;
|
|
41
|
+
let eventNode;
|
|
42
|
+
if (isAutoCompoundingEvent(suiEvent.type) &&
|
|
43
|
+
"compound_amount_a" in suiEventJson &&
|
|
44
|
+
"compound_amount_b" in suiEventJson) {
|
|
45
|
+
// Handling CetusAutoCompoundingEvent
|
|
46
|
+
eventNode = {
|
|
47
|
+
type: suiEvent.type,
|
|
48
|
+
timestamp: Number(suiEvent.timestampMs),
|
|
49
|
+
compound_amount_a: BigInt(suiEventJson.compound_amount_a.toString()),
|
|
50
|
+
compound_amount_b: BigInt(suiEventJson.compound_amount_b.toString()),
|
|
51
|
+
current_liquidity: BigInt(suiEventJson.current_liquidity.toString()),
|
|
52
|
+
fee_collected_a: BigInt(suiEventJson.fee_collected_a.toString()),
|
|
53
|
+
fee_collected_b: BigInt(suiEventJson.fee_collected_b.toString()),
|
|
54
|
+
free_balance_a: BigInt(suiEventJson.free_balance_a.toString()),
|
|
55
|
+
free_balance_b: BigInt(suiEventJson.free_balance_b.toString()),
|
|
56
|
+
investor_id: suiEventJson.investor_id,
|
|
57
|
+
total_amount_a: BigInt(suiEventJson.total_amount_a.toString()),
|
|
58
|
+
total_amount_b: BigInt(suiEventJson.total_amount_b.toString()),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
else if (isAutoCompoundingEvent(suiEvent.type) &&
|
|
62
|
+
"compound_amount" in suiEventJson) {
|
|
63
|
+
// Handling NaviAutoCompoundingEvent
|
|
64
|
+
eventNode = {
|
|
65
|
+
type: suiEvent.type,
|
|
66
|
+
timestamp: Number(suiEvent.timestampMs),
|
|
67
|
+
compound_amount: BigInt(suiEventJson.compound_amount.toString()),
|
|
68
|
+
fee_collected: BigInt(suiEventJson.fee_collected.toString()),
|
|
69
|
+
investor_id: suiEventJson.investor_id,
|
|
70
|
+
location: suiEventJson.location,
|
|
71
|
+
total_amount: BigInt(suiEventJson.total_amount.toString()),
|
|
72
|
+
};
|
|
73
|
+
if ("cur_total_debt" in suiEventJson &&
|
|
74
|
+
"accrued_interest" in suiEventJson) {
|
|
75
|
+
const loopEvent = {
|
|
76
|
+
...eventNode,
|
|
77
|
+
cur_total_debt: BigInt(suiEventJson.cur_total_debt.toString()),
|
|
78
|
+
accrued_interest: BigInt(suiEventJson.accrued_interest.toString()),
|
|
79
|
+
};
|
|
80
|
+
eventNode = loopEvent;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else if (isAutoCompoundingEvent(suiEvent.type) &&
|
|
84
|
+
"amount" in suiEventJson) {
|
|
85
|
+
eventNode = {
|
|
86
|
+
type: suiEvent.type,
|
|
87
|
+
timestamp: Number(suiEvent.timestampMs),
|
|
88
|
+
amount: suiEventJson.amount,
|
|
89
|
+
investor_id: conf[CONF_ENV].ALPHA_POOL,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
else if (isRebalanceEvent(suiEvent.type) &&
|
|
93
|
+
"lower_tick_after" in suiEventJson) {
|
|
94
|
+
// Handling RebalanceEvent
|
|
95
|
+
eventNode = {
|
|
96
|
+
type: suiEvent.type,
|
|
97
|
+
timestamp: Number(suiEvent.timestampMs),
|
|
98
|
+
investor_id: suiEventJson.investor_id.toString(),
|
|
99
|
+
lower_tick_after: suiEventJson.lower_tick_after.toString(),
|
|
100
|
+
upper_tick_after: suiEventJson.upper_tick_after.toString(),
|
|
101
|
+
sqrt_price_after: suiEventJson.sqrt_price_after.toString(),
|
|
102
|
+
amount_a_before: suiEventJson.amount_a_before.toString(),
|
|
103
|
+
amount_b_before: suiEventJson.amount_b_before.toString(),
|
|
104
|
+
amount_a_after: suiEventJson.amount_a_after.toString(),
|
|
105
|
+
amount_b_after: suiEventJson.amount_b_after.toString(),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
else if (isLiquidityChangeEvent(suiEvent.type) &&
|
|
109
|
+
"amount_a" in suiEventJson) {
|
|
110
|
+
// Handling CetusLiquidityChangeEvent
|
|
111
|
+
eventNode = {
|
|
112
|
+
type: suiEvent.type,
|
|
113
|
+
timestamp: Number(suiEvent.timestampMs),
|
|
114
|
+
amount_a: suiEventJson.amount_a,
|
|
115
|
+
amount_b: suiEventJson.amount_b,
|
|
116
|
+
event_type: suiEventJson.event_type,
|
|
117
|
+
fee_collected_a: suiEventJson.fee_collected_a,
|
|
118
|
+
fee_collected_b: suiEventJson.fee_collected_b,
|
|
119
|
+
pool_id: suiEventJson.pool_id,
|
|
120
|
+
sender: suiEventJson.sender,
|
|
121
|
+
tokens_invested: suiEventJson.tokens_invested,
|
|
122
|
+
total_amount_a: suiEventJson.total_amount_a,
|
|
123
|
+
total_amount_b: suiEventJson.total_amount_b,
|
|
124
|
+
user_total_x_token_balance: suiEventJson.user_total_x_token_balance,
|
|
125
|
+
x_token_supply: suiEventJson.x_token_supply,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
else if (isLiquidityChangeEvent(suiEvent.type) &&
|
|
129
|
+
"amount" in suiEventJson &&
|
|
130
|
+
!("investor_id" in suiEventJson)) {
|
|
131
|
+
// Handling NaviLiquidityChangeEvent and AlphaLiquidityChangeEvent
|
|
132
|
+
eventNode = {
|
|
133
|
+
type: suiEvent.type,
|
|
134
|
+
timestamp: Number(suiEvent.timestampMs),
|
|
135
|
+
amount: suiEventJson.amount,
|
|
136
|
+
event_type: suiEventJson.event_type,
|
|
137
|
+
fee_collected: suiEventJson.fee_collected,
|
|
138
|
+
pool_id: suiEventJson.pool_id,
|
|
139
|
+
sender: suiEventJson.sender,
|
|
140
|
+
tokens_invested: suiEventJson.tokens_invested,
|
|
141
|
+
user_total_x_token_balance: suiEventJson.user_total_x_token_balance,
|
|
142
|
+
x_token_supply: suiEventJson.x_token_supply,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
throw new Error("Unknown event type");
|
|
147
|
+
}
|
|
148
|
+
allEvents.push(eventNode);
|
|
149
|
+
}
|
|
150
|
+
// If we set hasPreviousPage to false, exit the outer loop as well
|
|
151
|
+
if (!hasNextPage) {
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
hasNextPage = result.hasNextPage;
|
|
155
|
+
startCursor = result.nextCursor;
|
|
156
|
+
}
|
|
157
|
+
return allEvents;
|
|
158
|
+
}
|
|
159
|
+
const isAutoCompoundingEvent = (eventType) => {
|
|
160
|
+
const eventTypes = Object.values(poolInfo).map((info) => {
|
|
161
|
+
return info.autoCompoundingEventType;
|
|
162
|
+
});
|
|
163
|
+
return eventTypes.includes(eventType);
|
|
164
|
+
};
|
|
165
|
+
const isRebalanceEvent = (eventType) => {
|
|
166
|
+
const eventTypes = Object.values(poolInfo)
|
|
167
|
+
.filter((info) => {
|
|
168
|
+
return info.rebalanceEventType ? true : false;
|
|
169
|
+
})
|
|
170
|
+
.map((info) => {
|
|
171
|
+
return info.rebalanceEventType;
|
|
172
|
+
});
|
|
173
|
+
return eventTypes.includes(eventType);
|
|
174
|
+
};
|
|
175
|
+
const isLiquidityChangeEvent = (eventType) => {
|
|
176
|
+
const eventTypes = Object.values(poolInfo).map((info) => {
|
|
177
|
+
return info.liquidityChangeEventType;
|
|
178
|
+
});
|
|
179
|
+
return eventTypes.includes(eventType);
|
|
180
|
+
};
|
|
181
|
+
//# sourceMappingURL=fetchEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchEvents.js","sourceRoot":"","sources":["../../../../src/sui-sdk/events/fetchEvents.ts"],"names":[],"mappings":"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","sourcesContent":["import { getSuiClient } from \"../client.js\";\nimport { EventId, PaginatedEvents } from \"@mysten/sui/client\";\nimport {\n AlphaLiquidityChangeEvent,\n AlphaAutoCompoundingEvent,\n CetusAutoCompoundingEvent,\n CetusLiquidityChangeEvent,\n EventNode,\n FetchEventsParams,\n LiquidityChangeEventNode,\n NaviAutoCompoundingEvent,\n NaviLoopAutoCompoundingEvent,\n NaviLiquidityChangeEvent,\n RebalanceEvent,\n AutoCompoundingEventNode,\n} from \"./types.js\";\nimport { poolInfo } from \"../../common/maps.js\";\nimport { conf, CONF_ENV } from \"../../common/constants.js\";\n\nexport async function fetchEvents(\n params: FetchEventsParams,\n): Promise<EventNode[]> {\n const allEvents: EventNode[] = [];\n let hasNextPage = true;\n let startCursor: EventId | null | undefined = null;\n\n if (params.eventTypes.length > 1) {\n console.warn(\n \"Multiple eventTypes not supported right now, pass only one element in the array.\",\n );\n }\n\n if (params.eventTypes.length < 1) {\n hasNextPage = false;\n }\n\n const now = Date.now();\n const twentyFourHoursAgo = now - 24 * 60 * 60 * 1000; // timestamp for 24 hours ago\n const startTime = params.startTime ? params.startTime : twentyFourHoursAgo;\n const endTime = params.endTime ? params.endTime : now;\n\n if (startTime >= endTime) {\n throw new Error(\"startTime must be less than endTime\");\n }\n\n const suiClient = getSuiClient();\n\n while (hasNextPage) {\n const result: PaginatedEvents = await suiClient.queryEvents({\n cursor: startCursor,\n order: \"descending\",\n query: {\n MoveEventType: params.eventTypes[0],\n },\n });\n\n const se = result.data;\n for (let i = 0; i < se.length; i++) {\n const suiEvent = se[i];\n\n if (Number(suiEvent.timestampMs) > endTime) {\n continue;\n }\n\n if (Number(suiEvent.timestampMs) < startTime) {\n hasNextPage = false; // Stop further pagination\n break; // Exit the loop\n }\n\n const suiEventJson = suiEvent.parsedJson as\n | CetusAutoCompoundingEvent\n | NaviAutoCompoundingEvent\n | NaviLoopAutoCompoundingEvent\n | RebalanceEvent\n | CetusLiquidityChangeEvent\n | AlphaLiquidityChangeEvent\n | NaviLiquidityChangeEvent\n | AlphaAutoCompoundingEvent;\n\n let eventNode: EventNode;\n\n if (\n isAutoCompoundingEvent(suiEvent.type) &&\n \"compound_amount_a\" in suiEventJson &&\n \"compound_amount_b\" in suiEventJson\n ) {\n // Handling CetusAutoCompoundingEvent\n eventNode = {\n type: suiEvent.type,\n timestamp: Number(suiEvent.timestampMs),\n compound_amount_a: BigInt(suiEventJson.compound_amount_a.toString()),\n compound_amount_b: BigInt(suiEventJson.compound_amount_b.toString()),\n current_liquidity: BigInt(suiEventJson.current_liquidity.toString()),\n fee_collected_a: BigInt(suiEventJson.fee_collected_a.toString()),\n fee_collected_b: BigInt(suiEventJson.fee_collected_b.toString()),\n free_balance_a: BigInt(suiEventJson.free_balance_a.toString()),\n free_balance_b: BigInt(suiEventJson.free_balance_b.toString()),\n investor_id: suiEventJson.investor_id,\n total_amount_a: BigInt(suiEventJson.total_amount_a.toString()),\n total_amount_b: BigInt(suiEventJson.total_amount_b.toString()),\n };\n } else if (\n isAutoCompoundingEvent(suiEvent.type) &&\n \"compound_amount\" in suiEventJson\n ) {\n // Handling NaviAutoCompoundingEvent\n eventNode = {\n type: suiEvent.type,\n timestamp: Number(suiEvent.timestampMs),\n compound_amount: BigInt(suiEventJson.compound_amount.toString()),\n fee_collected: BigInt(suiEventJson.fee_collected.toString()),\n investor_id: suiEventJson.investor_id,\n location: suiEventJson.location,\n total_amount: BigInt(suiEventJson.total_amount.toString()),\n };\n if (\n \"cur_total_debt\" in suiEventJson &&\n \"accrued_interest\" in suiEventJson\n ) {\n const loopEvent: AutoCompoundingEventNode = {\n ...eventNode,\n cur_total_debt: BigInt(suiEventJson.cur_total_debt.toString()),\n accrued_interest: BigInt(suiEventJson.accrued_interest.toString()),\n };\n eventNode = loopEvent;\n }\n } else if (\n isAutoCompoundingEvent(suiEvent.type) &&\n \"amount\" in suiEventJson\n ) {\n eventNode = {\n type: suiEvent.type,\n timestamp: Number(suiEvent.timestampMs),\n amount: suiEventJson.amount,\n investor_id: conf[CONF_ENV].ALPHA_POOL,\n };\n } else if (\n isRebalanceEvent(suiEvent.type) &&\n \"lower_tick_after\" in suiEventJson\n ) {\n // Handling RebalanceEvent\n eventNode = {\n type: suiEvent.type,\n timestamp: Number(suiEvent.timestampMs),\n investor_id: suiEventJson.investor_id.toString(),\n lower_tick_after: suiEventJson.lower_tick_after.toString(),\n upper_tick_after: suiEventJson.upper_tick_after.toString(),\n sqrt_price_after: suiEventJson.sqrt_price_after.toString(),\n amount_a_before: suiEventJson.amount_a_before.toString(),\n amount_b_before: suiEventJson.amount_b_before.toString(),\n amount_a_after: suiEventJson.amount_a_after.toString(),\n amount_b_after: suiEventJson.amount_b_after.toString(),\n };\n } else if (\n isLiquidityChangeEvent(suiEvent.type) &&\n \"amount_a\" in suiEventJson\n ) {\n // Handling CetusLiquidityChangeEvent\n eventNode = {\n type: suiEvent.type,\n timestamp: Number(suiEvent.timestampMs),\n amount_a: suiEventJson.amount_a,\n amount_b: suiEventJson.amount_b,\n event_type: suiEventJson.event_type,\n fee_collected_a: suiEventJson.fee_collected_a,\n fee_collected_b: suiEventJson.fee_collected_b,\n pool_id: suiEventJson.pool_id,\n sender: suiEventJson.sender,\n tokens_invested: suiEventJson.tokens_invested,\n total_amount_a: suiEventJson.total_amount_a,\n total_amount_b: suiEventJson.total_amount_b,\n user_total_x_token_balance: suiEventJson.user_total_x_token_balance,\n x_token_supply: suiEventJson.x_token_supply,\n } as LiquidityChangeEventNode;\n } else if (\n isLiquidityChangeEvent(suiEvent.type) &&\n \"amount\" in suiEventJson &&\n !(\"investor_id\" in suiEventJson)\n ) {\n // Handling NaviLiquidityChangeEvent and AlphaLiquidityChangeEvent\n eventNode = {\n type: suiEvent.type,\n timestamp: Number(suiEvent.timestampMs),\n amount: suiEventJson.amount,\n event_type: suiEventJson.event_type,\n fee_collected: suiEventJson.fee_collected,\n pool_id: suiEventJson.pool_id,\n sender: suiEventJson.sender,\n tokens_invested: suiEventJson.tokens_invested,\n user_total_x_token_balance: suiEventJson.user_total_x_token_balance,\n x_token_supply: suiEventJson.x_token_supply,\n } as LiquidityChangeEventNode;\n } else {\n throw new Error(\"Unknown event type\");\n }\n\n allEvents.push(eventNode);\n }\n\n // If we set hasPreviousPage to false, exit the outer loop as well\n if (!hasNextPage) {\n break;\n }\n\n hasNextPage = result.hasNextPage;\n startCursor = result.nextCursor;\n }\n\n return allEvents;\n}\n\nconst isAutoCompoundingEvent = (eventType: string) => {\n const eventTypes: string[] = Object.values(poolInfo).map((info) => {\n return info.autoCompoundingEventType;\n });\n return eventTypes.includes(eventType);\n};\n\nconst isRebalanceEvent = (eventType: string) => {\n const eventTypes: string[] = Object.values(poolInfo)\n .filter((info) => {\n return info.rebalanceEventType ? true : false;\n })\n .map((info) => {\n return info.rebalanceEventType as string;\n });\n return eventTypes.includes(eventType);\n};\n\nconst isLiquidityChangeEvent = (eventType: string) => {\n const eventTypes: string[] = Object.values(poolInfo).map((info) => {\n return info.liquidityChangeEventType;\n });\n return eventTypes.includes(eventType);\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchLiquidityChangeEvents.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/events/fetchLiquidityChangeEvents.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gCAAgC,EAChC,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAEpB,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,gCAAgC,uCA4CzC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { poolInfo, poolIdPoolNameMap } from "../../common/maps.js";
|
|
2
|
+
import { fetchEvents } from "./fetchEvents.js";
|
|
3
|
+
export async function fetchLiquidityChangeEvents(params) {
|
|
4
|
+
// : Promise<LiquidityChangeEventNode[]>
|
|
5
|
+
const eventTypesSet = new Set();
|
|
6
|
+
if (params.poolNames) {
|
|
7
|
+
params.poolNames.forEach((poolName) => {
|
|
8
|
+
const eventType = poolInfo[poolName].liquidityChangeEventType;
|
|
9
|
+
if (eventType !== undefined && eventType !== null && eventType !== "") {
|
|
10
|
+
eventTypesSet.add(eventType);
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
// Iterate over all the values in poolInfo and add each autoCompoundingEventType to the Set
|
|
16
|
+
Object.values(poolInfo).forEach((info) => {
|
|
17
|
+
const eventType = info.liquidityChangeEventType;
|
|
18
|
+
if (eventType !== undefined && eventType !== null && eventType !== "") {
|
|
19
|
+
eventTypesSet.add(eventType);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
const eventTypes = Array.from(eventTypesSet);
|
|
24
|
+
const eventsPromises = eventTypes.map(async (eventType) => {
|
|
25
|
+
const events = await fetchEvents({
|
|
26
|
+
startTime: params.startTime,
|
|
27
|
+
endTime: params.endTime,
|
|
28
|
+
eventTypes: [eventType],
|
|
29
|
+
});
|
|
30
|
+
return events;
|
|
31
|
+
});
|
|
32
|
+
const events = (await Promise.all(eventsPromises)).flat();
|
|
33
|
+
let liquidityChangeEvents = events.map((e) => {
|
|
34
|
+
return e;
|
|
35
|
+
});
|
|
36
|
+
if (params.poolNames) {
|
|
37
|
+
liquidityChangeEvents = liquidityChangeEvents.filter((e) => params.poolNames.includes(poolIdPoolNameMap[e.pool_id]));
|
|
38
|
+
}
|
|
39
|
+
return liquidityChangeEvents;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=fetchLiquidityChangeEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchLiquidityChangeEvents.js","sourceRoot":"","sources":["../../../../src/sui-sdk/events/fetchLiquidityChangeEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAM/C,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAwC;IAExC,wCAAwC;IACxC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAExC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACpC,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC;YAC9D,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;gBACtE,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,2FAA2F;QAC3F,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC;YAChD,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;gBACtE,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAE7C,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QACxD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;YAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,UAAU,EAAE,CAAC,SAAS,CAAC;SACxB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,IAAI,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3C,OAAO,CAA6B,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,qBAAqB,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACzD,MAAM,CAAC,SAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CACzD,CAAC;IACJ,CAAC;IAED,OAAO,qBAAqB,CAAC;AAC/B,CAAC","sourcesContent":["import { poolInfo, poolIdPoolNameMap } from \"../../common/maps.js\";\nimport { fetchEvents } from \"./fetchEvents.js\";\nimport {\n FetchLiquidityChangeEventsParams,\n LiquidityChangeEventNode,\n} from \"./types.js\";\n\nexport async function fetchLiquidityChangeEvents(\n params: FetchLiquidityChangeEventsParams,\n) {\n // : Promise<LiquidityChangeEventNode[]>\n const eventTypesSet = new Set<string>();\n\n if (params.poolNames) {\n params.poolNames.forEach((poolName) => {\n const eventType = poolInfo[poolName].liquidityChangeEventType;\n if (eventType !== undefined && eventType !== null && eventType !== \"\") {\n eventTypesSet.add(eventType);\n }\n });\n } else {\n // Iterate over all the values in poolInfo and add each autoCompoundingEventType to the Set\n Object.values(poolInfo).forEach((info) => {\n const eventType = info.liquidityChangeEventType;\n if (eventType !== undefined && eventType !== null && eventType !== \"\") {\n eventTypesSet.add(eventType);\n }\n });\n }\n\n const eventTypes = Array.from(eventTypesSet);\n\n const eventsPromises = eventTypes.map(async (eventType) => {\n const events = await fetchEvents({\n startTime: params.startTime,\n endTime: params.endTime,\n eventTypes: [eventType],\n });\n return events;\n });\n const events = (await Promise.all(eventsPromises)).flat();\n let liquidityChangeEvents = events.map((e) => {\n return e as LiquidityChangeEventNode;\n });\n\n if (params.poolNames) {\n liquidityChangeEvents = liquidityChangeEvents.filter((e) =>\n params.poolNames!.includes(poolIdPoolNameMap[e.pool_id]),\n );\n }\n\n return liquidityChangeEvents;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchRebalanceEvents.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/events/fetchRebalanceEvents.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,QAAQ,EACR,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,0BAA0B,EAE1B,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAIpB,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA6C/B;AAED,wBAAsB,mCAAmC,CACvD,MAAM,EAAE,kBAAkB,EAAE,GAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAkDnD"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { TickMath } from "@cetusprotocol/cetus-sui-clmm-sdk";
|
|
2
|
+
import { getInvestorPoolMap, poolCoinPairMap, poolInfo, } from "../../common/maps.js";
|
|
3
|
+
import { fetchEvents } from "./fetchEvents.js";
|
|
4
|
+
import { coins } from "../../common/coins.js";
|
|
5
|
+
import BN from "bn.js";
|
|
6
|
+
export async function fetchRebalanceEvents(params) {
|
|
7
|
+
const eventTypesSet = new Set();
|
|
8
|
+
if (params.poolNames) {
|
|
9
|
+
params.poolNames.forEach((poolName) => {
|
|
10
|
+
const eventType = poolInfo[poolName].rebalanceEventType;
|
|
11
|
+
if (eventType !== undefined && eventType !== null && eventType !== "") {
|
|
12
|
+
eventTypesSet.add(eventType);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
// Iterate over all the values in poolInfo and add each rebalanceEventType to the Set
|
|
18
|
+
Object.values(poolInfo).forEach((info) => {
|
|
19
|
+
const eventType = info.rebalanceEventType;
|
|
20
|
+
if (eventType !== undefined && eventType !== null && eventType !== "") {
|
|
21
|
+
eventTypesSet.add(eventType);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
const eventTypes = Array.from(eventTypesSet);
|
|
26
|
+
const eventsPromises = eventTypes.map(async (eventType) => {
|
|
27
|
+
const events = (await fetchEvents({
|
|
28
|
+
startTime: params.startTime,
|
|
29
|
+
endTime: params.endTime,
|
|
30
|
+
eventTypes: [eventType],
|
|
31
|
+
})).filter((e) => {
|
|
32
|
+
if (params.poolNames) {
|
|
33
|
+
return params.poolNames
|
|
34
|
+
.map((poolName) => poolInfo[poolName].investorId)
|
|
35
|
+
.includes(e.investor_id);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
return events;
|
|
42
|
+
});
|
|
43
|
+
const events = (await Promise.all(eventsPromises)).flat();
|
|
44
|
+
const rebalanceEvents = events.map((e) => {
|
|
45
|
+
return e;
|
|
46
|
+
});
|
|
47
|
+
return rebalanceEvents;
|
|
48
|
+
}
|
|
49
|
+
export async function calculateRebalanceHistoryFromEvents(events) {
|
|
50
|
+
const rebalanceHistoryMap = {};
|
|
51
|
+
const investorPoolNameMap = await getInvestorPoolMap();
|
|
52
|
+
for (const e of events) {
|
|
53
|
+
const event = e;
|
|
54
|
+
const poolName = investorPoolNameMap.get(event.investor_id);
|
|
55
|
+
if (poolName) {
|
|
56
|
+
if (!rebalanceHistoryMap[poolName]) {
|
|
57
|
+
rebalanceHistoryMap[poolName] = [];
|
|
58
|
+
}
|
|
59
|
+
const pool1 = poolCoinPairMap[poolName]
|
|
60
|
+
.coinA;
|
|
61
|
+
const pool2 = poolCoinPairMap[poolName]
|
|
62
|
+
.coinB;
|
|
63
|
+
const after_price = TickMath.sqrtPriceX64ToPrice(new BN(event.sqrt_price_after), coins[pool1].expo, coins[pool2].expo);
|
|
64
|
+
const lower_tick = TickMath.tickIndexToPrice(Number(event.lower_tick_after) > Math.pow(2, 31)
|
|
65
|
+
? Number(event.lower_tick_after) - Math.pow(2, 32)
|
|
66
|
+
: Number(event.lower_tick_after), coins[pool1].expo, coins[pool2].expo);
|
|
67
|
+
const upper_tick = TickMath.tickIndexToPrice(Number(event.upper_tick_after) > Math.pow(2, 31)
|
|
68
|
+
? Number(event.upper_tick_after) - Math.pow(2, 32)
|
|
69
|
+
: Number(event.upper_tick_after), coins[pool1].expo, coins[pool2].expo);
|
|
70
|
+
const history = {
|
|
71
|
+
timestamp: e.timestamp.toString(),
|
|
72
|
+
lower_tick: lower_tick.toString(),
|
|
73
|
+
upper_tick: upper_tick.toString(),
|
|
74
|
+
after_price: after_price.toString(),
|
|
75
|
+
amount_a_before: e.amount_a_before,
|
|
76
|
+
amount_b_before: e.amount_b_before,
|
|
77
|
+
amount_a_after: e.amount_a_after,
|
|
78
|
+
amount_b_after: e.amount_b_after,
|
|
79
|
+
};
|
|
80
|
+
rebalanceHistoryMap[poolName].push(history);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return rebalanceHistoryMap;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=fetchRebalanceEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchRebalanceEvents.js","sourceRoot":"","sources":["../../../../src/sui-sdk/events/fetchRebalanceEvents.ts"],"names":[],"mappings":"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","sourcesContent":["import { TickMath } from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport {\n getInvestorPoolMap,\n poolCoinPairMap,\n poolInfo,\n} from \"../../common/maps.js\";\nimport {\n CoinName,\n PoolName,\n RebalanceHistoryType,\n} from \"../../common/types.js\";\nimport { fetchEvents } from \"./fetchEvents.js\";\nimport {\n FetchRebalanceEventsParams,\n RebalanceEvent,\n RebalanceEventNode,\n} from \"./types.js\";\nimport { coins } from \"../../common/coins.js\";\nimport BN from \"bn.js\";\n\nexport async function fetchRebalanceEvents(\n params: FetchRebalanceEventsParams,\n): Promise<RebalanceEventNode[]> {\n const eventTypesSet = new Set<string>();\n if (params.poolNames) {\n params.poolNames.forEach((poolName) => {\n const eventType = poolInfo[poolName].rebalanceEventType;\n if (eventType !== undefined && eventType !== null && eventType !== \"\") {\n eventTypesSet.add(eventType);\n }\n });\n } else {\n // Iterate over all the values in poolInfo and add each rebalanceEventType to the Set\n Object.values(poolInfo).forEach((info) => {\n const eventType = info.rebalanceEventType;\n if (eventType !== undefined && eventType !== null && eventType !== \"\") {\n eventTypesSet.add(eventType);\n }\n });\n }\n const eventTypes = Array.from(eventTypesSet);\n const eventsPromises = eventTypes.map(async (eventType) => {\n const events = (\n await fetchEvents({\n startTime: params.startTime,\n endTime: params.endTime,\n eventTypes: [eventType],\n })\n ).filter((e) => {\n if (params.poolNames) {\n return params.poolNames\n .map((poolName) => poolInfo[poolName].investorId)\n .includes((e as RebalanceEventNode).investor_id);\n } else {\n return true;\n }\n });\n return events;\n });\n\n const events = (await Promise.all(eventsPromises)).flat();\n\n const rebalanceEvents = events.map((e) => {\n return e as RebalanceEventNode;\n });\n\n return rebalanceEvents;\n}\n\nexport async function calculateRebalanceHistoryFromEvents(\n events: RebalanceEventNode[],\n): Promise<Record<PoolName, RebalanceHistoryType[]>> {\n const rebalanceHistoryMap: Record<string, RebalanceHistoryType[]> = {};\n const investorPoolNameMap = await getInvestorPoolMap();\n\n for (const e of events) {\n const event = e as RebalanceEvent;\n const poolName = investorPoolNameMap.get(event.investor_id);\n if (poolName) {\n if (!rebalanceHistoryMap[poolName]) {\n rebalanceHistoryMap[poolName] = [];\n }\n\n const pool1 = poolCoinPairMap[poolName as keyof typeof poolCoinPairMap]\n .coinA as CoinName;\n const pool2 = poolCoinPairMap[poolName as keyof typeof poolCoinPairMap]\n .coinB as CoinName;\n const after_price = TickMath.sqrtPriceX64ToPrice(\n new BN(event.sqrt_price_after),\n coins[pool1].expo,\n coins[pool2].expo,\n );\n const lower_tick = TickMath.tickIndexToPrice(\n Number(event.lower_tick_after) > Math.pow(2, 31)\n ? Number(event.lower_tick_after) - Math.pow(2, 32)\n : Number(event.lower_tick_after),\n coins[pool1].expo,\n coins[pool2].expo,\n );\n const upper_tick = TickMath.tickIndexToPrice(\n Number(event.upper_tick_after) > Math.pow(2, 31)\n ? Number(event.upper_tick_after) - Math.pow(2, 32)\n : Number(event.upper_tick_after),\n coins[pool1].expo,\n coins[pool2].expo,\n );\n const history: RebalanceHistoryType = {\n timestamp: e.timestamp.toString(),\n lower_tick: lower_tick.toString(),\n upper_tick: upper_tick.toString(),\n after_price: after_price.toString(),\n amount_a_before: e.amount_a_before,\n amount_b_before: e.amount_b_before,\n amount_a_after: e.amount_a_after,\n amount_b_after: e.amount_b_after,\n };\n rebalanceHistoryMap[poolName].push(history);\n }\n }\n\n return rebalanceHistoryMap;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseData.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/events/parseData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAGtD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,wBAAwB,EAAE,YAM1E;AAGD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,wBAAwB,EAAE,8BAkBzE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { poolIdPoolNameMap } from "../../common/maps.js";
|
|
2
|
+
export function parseHoldersFromLCEvents(events) {
|
|
3
|
+
const holders = new Set();
|
|
4
|
+
for (const event of events) {
|
|
5
|
+
holders.add(event.sender);
|
|
6
|
+
}
|
|
7
|
+
return Array.from(holders);
|
|
8
|
+
}
|
|
9
|
+
// From descending order events
|
|
10
|
+
export function parseXTokensFromLCEvent(events) {
|
|
11
|
+
let userXTokens = [];
|
|
12
|
+
const ownerPoolTokensMap = {};
|
|
13
|
+
for (const event of events) {
|
|
14
|
+
const sender = event.sender;
|
|
15
|
+
const xTokens = event.user_total_x_token_balance;
|
|
16
|
+
const pool = poolIdPoolNameMap[event.pool_id];
|
|
17
|
+
const key = `${sender}_${pool}`;
|
|
18
|
+
if (!ownerPoolTokensMap[key]) {
|
|
19
|
+
ownerPoolTokensMap[key] = xTokens;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
userXTokens = Object.entries(ownerPoolTokensMap).map(([owner_pool, xToken]) => {
|
|
23
|
+
return [owner_pool.split("_")[0], owner_pool.split("_")[1], xToken];
|
|
24
|
+
});
|
|
25
|
+
return userXTokens;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=parseData.js.map
|