@alphafi/alphafi-sdk 0.0.76 → 0.0.78
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/dist/cjs/common/constants.d.ts +26 -0
- package/dist/cjs/common/constants.d.ts.map +1 -1
- package/dist/cjs/common/constants.js +32 -9
- package/dist/cjs/common/constants.js.map +1 -1
- package/dist/cjs/common/maps.d.ts.map +1 -1
- package/dist/cjs/common/maps.js +36 -57
- package/dist/cjs/common/maps.js.map +1 -1
- package/dist/cjs/common/types.d.ts +1 -1
- package/dist/cjs/common/types.d.ts.map +1 -1
- package/dist/cjs/common/types.js.map +1 -1
- package/dist/cjs/getVaultBalances.d.ts +1 -3
- package/dist/cjs/getVaultBalances.d.ts.map +1 -1
- package/dist/cjs/getVaultBalances.js +1 -57
- package/dist/cjs/getVaultBalances.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -3
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +4 -8
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/sui-sdk/events/fetchAirdropClaimEvent.d.ts +3 -0
- package/dist/cjs/sui-sdk/events/fetchAirdropClaimEvent.d.ts.map +1 -0
- package/dist/cjs/sui-sdk/events/fetchAirdropClaimEvent.js +19 -0
- package/dist/cjs/sui-sdk/events/fetchAirdropClaimEvent.js.map +1 -0
- package/dist/cjs/sui-sdk/events/fetchEvents.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/events/fetchEvents.js +15 -0
- package/dist/cjs/sui-sdk/events/fetchEvents.js.map +1 -1
- package/dist/cjs/sui-sdk/events/types.d.ts +11 -1
- package/dist/cjs/sui-sdk/events/types.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/events/types.js.map +1 -1
- package/dist/cjs/transactions/blueRewards.d.ts.map +1 -1
- package/dist/cjs/transactions/blueRewards.js +27 -0
- package/dist/cjs/transactions/blueRewards.js.map +1 -1
- package/dist/cjs/transactions/bluefin.d.ts.map +1 -1
- package/dist/cjs/transactions/bluefin.js +57 -0
- package/dist/cjs/transactions/bluefin.js.map +1 -1
- package/dist/cjs/transactions/navi-looping.d.ts.map +1 -1
- package/dist/cjs/transactions/navi-looping.js +38 -12
- package/dist/cjs/transactions/navi-looping.js.map +1 -1
- package/dist/cjs/transactions/navi.d.ts.map +1 -1
- package/dist/cjs/transactions/navi.js +30 -0
- package/dist/cjs/transactions/navi.js.map +1 -1
- package/dist/cjs/types.d.ts +0 -12
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utils/userHoldings.d.ts +1 -1
- package/dist/cjs/utils/userHoldings.d.ts.map +1 -1
- package/dist/cjs/utils/userHoldings.js +22 -42
- package/dist/cjs/utils/userHoldings.js.map +1 -1
- package/dist/esm/common/constants.d.ts +26 -0
- package/dist/esm/common/constants.d.ts.map +1 -1
- package/dist/esm/common/constants.js +32 -9
- package/dist/esm/common/constants.js.map +1 -1
- package/dist/esm/common/maps.d.ts.map +1 -1
- package/dist/esm/common/maps.js +36 -57
- package/dist/esm/common/maps.js.map +1 -1
- package/dist/esm/common/types.d.ts +1 -1
- package/dist/esm/common/types.d.ts.map +1 -1
- package/dist/esm/common/types.js.map +1 -1
- package/dist/esm/getVaultBalances.d.ts +1 -3
- package/dist/esm/getVaultBalances.d.ts.map +1 -1
- package/dist/esm/getVaultBalances.js +1 -55
- package/dist/esm/getVaultBalances.js.map +1 -1
- package/dist/esm/index.d.ts +3 -3
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/sui-sdk/events/fetchAirdropClaimEvent.d.ts +3 -0
- package/dist/esm/sui-sdk/events/fetchAirdropClaimEvent.d.ts.map +1 -0
- package/dist/esm/sui-sdk/events/fetchAirdropClaimEvent.js +16 -0
- package/dist/esm/sui-sdk/events/fetchAirdropClaimEvent.js.map +1 -0
- package/dist/esm/sui-sdk/events/fetchEvents.d.ts.map +1 -1
- package/dist/esm/sui-sdk/events/fetchEvents.js +15 -0
- package/dist/esm/sui-sdk/events/fetchEvents.js.map +1 -1
- package/dist/esm/sui-sdk/events/types.d.ts +11 -1
- package/dist/esm/sui-sdk/events/types.d.ts.map +1 -1
- package/dist/esm/sui-sdk/events/types.js.map +1 -1
- package/dist/esm/transactions/blueRewards.d.ts.map +1 -1
- package/dist/esm/transactions/blueRewards.js +27 -0
- package/dist/esm/transactions/blueRewards.js.map +1 -1
- package/dist/esm/transactions/bluefin.d.ts.map +1 -1
- package/dist/esm/transactions/bluefin.js +57 -0
- package/dist/esm/transactions/bluefin.js.map +1 -1
- package/dist/esm/transactions/navi-looping.d.ts.map +1 -1
- package/dist/esm/transactions/navi-looping.js +38 -12
- package/dist/esm/transactions/navi-looping.js.map +1 -1
- package/dist/esm/transactions/navi.d.ts.map +1 -1
- package/dist/esm/transactions/navi.js +30 -0
- package/dist/esm/transactions/navi.js.map +1 -1
- package/dist/esm/types.d.ts +0 -12
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils/userHoldings.d.ts +1 -1
- package/dist/esm/utils/userHoldings.d.ts.map +1 -1
- package/dist/esm/utils/userHoldings.js +23 -42
- package/dist/esm/utils/userHoldings.js.map +1 -1
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/functions/alphaLpBreakdown.html +1 -1
- package/docs/functions/cetusLpBreakdown.html +1 -1
- package/docs/functions/claimBlueRewardTxb.html +1 -1
- package/docs/functions/claimRewardTxb.html +1 -1
- package/docs/functions/coinAmountToXTokensDoubleAsset.html +1 -1
- package/docs/functions/coinAmountToXTokensSingleAsset.html +1 -1
- package/docs/functions/coinsInPool.html +1 -1
- package/docs/functions/collectRewards.html +1 -1
- package/docs/functions/deposit.html +1 -1
- package/docs/functions/depositDoubleAssetTxb.html +1 -1
- package/docs/functions/depositSingleAssetTxb.html +1 -1
- package/docs/functions/fetchAfterTransactionEvents.html +1 -1
- package/docs/functions/fetchAirdropClaimEvents.html +1 -0
- package/docs/functions/fetchAutoCompoundingEvents.html +1 -1
- package/docs/functions/fetchAutoCompoundingEventsGql.html +1 -1
- package/docs/functions/fetchCetusPools.html +1 -1
- package/docs/functions/fetchChainIdentifier.html +1 -1
- package/docs/functions/fetchCheckRatioEvents.html +1 -1
- package/docs/functions/fetchEvents.html +1 -1
- package/docs/functions/fetchLiquidityChangeEvents.html +1 -1
- package/docs/functions/fetchMultiCategoryEvents.html +1 -1
- package/docs/functions/fetchMultiReceipts.html +1 -1
- package/docs/functions/fetchNftHolders.html +1 -1
- package/docs/functions/fetchPools.html +1 -1
- package/docs/functions/fetchPortfolioData.html +1 -1
- package/docs/functions/fetchProtocolData.html +1 -1
- package/docs/functions/fetchTVL.html +1 -1
- package/docs/functions/fetchTransactions.html +1 -1
- package/docs/functions/fetchUserVaultBalances.html +1 -1
- package/docs/functions/fetchUserVaults.html +1 -1
- package/docs/functions/fetchUserWalletData.html +1 -1
- package/docs/functions/fetchVoloExchangeRate.html +1 -1
- package/docs/functions/fetchWithdrawV2Events.html +1 -1
- package/docs/functions/getAirdropShare.html +1 -1
- package/docs/functions/getAllDoubleAssetVaults.html +1 -1
- package/docs/functions/getAllSingleAssetVaults.html +1 -1
- package/docs/functions/getAllVaultBalances.html +1 -1
- package/docs/functions/getAllVaults.html +1 -1
- package/docs/functions/getAlphaUnlocks.html +1 -1
- package/docs/functions/getAlphaVaultBalance.html +1 -1
- package/docs/functions/getAmounts.html +1 -1
- package/docs/functions/getApr.html +1 -1
- package/docs/functions/getAprs.html +1 -1
- package/docs/functions/getApy.html +1 -1
- package/docs/functions/getApys.html +1 -1
- package/docs/functions/getCetusInvestorTicksMap.html +1 -1
- package/docs/functions/getCetusPool.html +1 -1
- package/docs/functions/getCetusSqrtPriceMap.html +1 -1
- package/docs/functions/getCoinAmountsFromLiquidity.html +1 -1
- package/docs/functions/getConf.html +1 -1
- package/docs/functions/getCurrentTick.html +1 -1
- package/docs/functions/getDistributor.html +1 -1
- package/docs/functions/getDoubleAssetVaultBalance.html +1 -1
- package/docs/functions/getDoubleAssetVaults.html +1 -1
- package/docs/functions/getInvestor.html +1 -1
- package/docs/functions/getInvestorPoolMap.html +1 -1
- package/docs/functions/getLastAutoCompoundTime.html +1 -1
- package/docs/functions/getLatestPrices.html +1 -1
- package/docs/functions/getLiquidity.html +1 -1
- package/docs/functions/getMultiCetusPool.html +1 -1
- package/docs/functions/getMultiInvestor.html +1 -1
- package/docs/functions/getMultiLatestPrices.html +1 -1
- package/docs/functions/getMultiParentPool.html +1 -1
- package/docs/functions/getMultiPool.html +1 -1
- package/docs/functions/getMultiReceipts.html +1 -1
- package/docs/functions/getParentPool.html +1 -1
- package/docs/functions/getPool.html +1 -1
- package/docs/functions/getPoolExchangeRate.html +1 -1
- package/docs/functions/getPoolExchangeRateMap.html +1 -1
- package/docs/functions/getPoolsWeightDistribution.html +1 -1
- package/docs/functions/getPositionRange.html +1 -1
- package/docs/functions/getPositionRanges.html +1 -1
- package/docs/functions/getPositionTicks.html +1 -1
- package/docs/functions/getPriceToTick.html +1 -1
- package/docs/functions/getRebalanceHistories.html +1 -1
- package/docs/functions/getRebalanceHistory.html +1 -1
- package/docs/functions/getReceipts.html +1 -1
- package/docs/functions/getSingleAssetVaultBalance.html +1 -1
- package/docs/functions/getSingleAssetVaults.html +1 -1
- package/docs/functions/getSuiClient.html +2 -2
- package/docs/functions/getSuiNodeUrl.html +2 -2
- package/docs/functions/getTVLs-1.html +1 -1
- package/docs/functions/getTickSpacing.html +1 -1
- package/docs/functions/getTickToPrice.html +1 -1
- package/docs/functions/getTvls.html +1 -1
- package/docs/functions/getVaultBalance.html +1 -1
- package/docs/functions/getVaults.html +1 -1
- package/docs/functions/getZapAmounts.html +1 -1
- package/docs/functions/lastAutocompoundTime.html +1 -1
- package/docs/functions/liquidityToTokens.html +1 -1
- package/docs/functions/multiLiquidityToTokens.html +1 -1
- package/docs/functions/multiTokensToUsd.html +1 -1
- package/docs/functions/multiXTokensToLiquidity.html +1 -1
- package/docs/functions/parseUserWalletData.html +1 -1
- package/docs/functions/pendingBlueRewardAmount.html +1 -1
- package/docs/functions/setCustomSuiClient.html +2 -2
- package/docs/functions/setSuiClient.html +2 -2
- package/docs/functions/setSuiNodeUrl.html +2 -2
- package/docs/functions/setWeights.html +1 -1
- package/docs/functions/withdraw.html +1 -1
- package/docs/functions/withdrawAlphaTxb.html +1 -1
- package/docs/functions/withdrawTxb.html +1 -1
- package/docs/functions/zapDepositTxb.html +1 -1
- package/docs/index.html +2 -2
- package/docs/interfaces/Coin.html +6 -6
- package/docs/interfaces/CoinPair.html +2 -2
- package/docs/interfaces/CommonEventAttributes.html +2 -2
- package/docs/interfaces/NaviVoloData.html +2 -2
- package/docs/interfaces/PoolData.html +2 -2
- package/docs/interfaces/PoolWeightDistribution.html +2 -2
- package/docs/interfaces/RebalanceHistoryType.html +2 -2
- package/docs/modules.html +4 -8
- package/docs/types/AfterTransactionEventNode.html +1 -1
- package/docs/types/AirdropClaimEventNode.html +1 -0
- package/docs/types/Allocator.html +1 -1
- package/docs/types/AlphaFiDoubleAssetVault.html +1 -1
- package/docs/types/AlphaFiMultiVaultBalance.html +1 -1
- package/docs/types/AlphaFiSingleAssetVault.html +1 -1
- package/docs/types/AlphaFiVault.html +1 -1
- package/docs/types/AlphaFiVaultBalance.html +1 -1
- package/docs/types/AlphaPoolType.html +1 -1
- package/docs/types/AlphaReceipt.html +1 -1
- package/docs/types/AlphaReceiptFields.html +1 -1
- package/docs/types/AlphaVaultBalance.html +1 -1
- package/docs/types/AutoBalancePoolNames.html +1 -1
- package/docs/types/AutoCompoundingEventNode.html +1 -1
- package/docs/types/BluefinInvestor.html +1 -1
- package/docs/types/BluefinPoolType.html +1 -1
- package/docs/types/BucketInvestor.html +1 -1
- package/docs/types/CetusInvestor.html +1 -1
- package/docs/types/CetusPoolType.html +1 -1
- package/docs/types/CetusSwapOptions.html +1 -1
- package/docs/types/CoinAmounts.html +1 -1
- package/docs/types/CoinName.html +1 -1
- package/docs/types/CoinType.html +1 -1
- package/docs/types/CommonInvestorFields.html +1 -1
- package/docs/types/CreatePoolOptions.html +1 -1
- package/docs/types/Distributor.html +1 -1
- package/docs/types/DoubleAssetMultiVaultBalance.html +1 -1
- package/docs/types/DoubleAssetPoolNames.html +1 -1
- package/docs/types/DoubleAssetTokenHoldings.html +1 -1
- package/docs/types/DoubleAssetVaultBalance.html +1 -1
- package/docs/types/EventCategory.html +1 -1
- package/docs/types/EventNode.html +1 -1
- package/docs/types/GetHoldersParams.html +1 -1
- package/docs/types/GetTokenHoldingsParams.html +1 -1
- package/docs/types/GetUserTokensFromTransactionsParams.html +1 -1
- package/docs/types/GetUserTokensInUsdFromTransactionsParams.html +1 -1
- package/docs/types/GetVaultBalanceParams.html +1 -1
- package/docs/types/HoldingsObj.html +1 -1
- package/docs/types/Icon.html +1 -1
- package/docs/types/Investor.html +1 -1
- package/docs/types/LiquidityChangeEventNode.html +1 -1
- package/docs/types/LiquidityToTokensParams.html +1 -1
- package/docs/types/LiquidityToUsdParams.html +1 -1
- package/docs/types/LoopingDebt.html +1 -1
- package/docs/types/LoopingPoolNames.html +1 -1
- package/docs/types/LpBreakdownType.html +1 -1
- package/docs/types/MemberPoolDataType.html +1 -1
- package/docs/types/MemberType.html +1 -1
- package/docs/types/MultiGetVaultBalancesParams.html +1 -1
- package/docs/types/NaviInvestor.html +1 -1
- package/docs/types/OtherReceiptFields.html +1 -1
- package/docs/types/PoolName.html +1 -1
- package/docs/types/PoolReceipt.html +1 -1
- package/docs/types/PoolType.html +1 -1
- package/docs/types/Receipt.html +1 -1
- package/docs/types/ReceiptGQL.html +1 -1
- package/docs/types/SingleAssetMultiVaultBalance.html +1 -1
- package/docs/types/SingleAssetPoolNames.html +1 -1
- package/docs/types/SingleAssetTokenHoldings.html +1 -1
- package/docs/types/SingleAssetVaultBalance.html +1 -1
- package/docs/types/SingleGetVaultBalancesParams.html +1 -1
- package/docs/types/StrategyType.html +1 -1
- package/docs/types/SuiNetwork.html +1 -1
- package/docs/types/SwapOptions.html +1 -1
- package/docs/types/TickSpacing.html +1 -1
- package/docs/types/TotalWeightType.html +1 -1
- package/docs/types/TransactionBlockType.html +1 -1
- package/docs/types/UserPoolLiquidity.html +1 -1
- package/docs/types/UserPoolTokenHoldings.html +1 -1
- package/docs/types/UserUsdHoldings.html +1 -1
- package/docs/types/VaultBalance.html +1 -1
- package/docs/types/VoteCastEvent.html +1 -1
- package/docs/types/WithdrawV2EventNode.html +1 -1
- package/docs/variables/bluefinPoolMap.html +1 -1
- package/docs/variables/cetusPoolMap.html +1 -1
- package/docs/variables/coinsList.html +1 -1
- package/docs/variables/defunctPoolsSet.html +1 -1
- package/docs/variables/doubleAssetPoolCoinMap.html +1 -1
- package/docs/variables/eventCategories.html +1 -1
- package/docs/variables/ignoredWalletsForDailyRevenue.html +1 -1
- package/docs/variables/loopingAccountAddresses.html +1 -1
- package/docs/variables/loopingPoolCoinMap.html +1 -1
- package/docs/variables/naviAssetMap.html +1 -1
- package/docs/variables/poolIdPoolNameMap.html +1 -1
- package/docs/variables/poolInfo.html +1 -1
- package/docs/variables/singleAssetPoolCoinMap.html +1 -1
- package/docs/variables/stableCoins.html +1 -1
- package/package.json +1 -1
- package/docs/functions/getHoldersFromTransactions.html +0 -1
- package/docs/functions/getUserTokensFromTransactions.html +0 -1
- package/docs/functions/getUserTokensInUsdFromTransactions.html +0 -1
- package/docs/functions/getVaultBalanceForActiveUsers.html +0 -1
- package/docs/functions/getXTokenVaultBalanceForActiveUsers.html +0 -1
- package/docs/types/GetVaultBalanceForActiveUsersParams.html +0 -1
package/dist/esm/types.d.ts
CHANGED
|
@@ -145,13 +145,6 @@ export type LiquidityToUsdParams = {
|
|
|
145
145
|
export type LiquidityToTokensParams = {
|
|
146
146
|
liquidity: string;
|
|
147
147
|
poolName: string;
|
|
148
|
-
ticksCetusMap: {
|
|
149
|
-
[pool: string]: {
|
|
150
|
-
lower: string;
|
|
151
|
-
upper: string;
|
|
152
|
-
};
|
|
153
|
-
};
|
|
154
|
-
sqrtPriceCetusMap: Map<PoolName, string>;
|
|
155
148
|
};
|
|
156
149
|
export type UserUsdHoldings = {
|
|
157
150
|
user: string;
|
|
@@ -205,9 +198,4 @@ export type DoubleAssetMultiVaultBalance = {
|
|
|
205
198
|
tokenB: string;
|
|
206
199
|
tokensInUsd: string;
|
|
207
200
|
};
|
|
208
|
-
export type GetVaultBalanceForActiveUsersParams = {
|
|
209
|
-
poolNames?: PoolName[];
|
|
210
|
-
startTime?: number;
|
|
211
|
-
endTime?: number;
|
|
212
|
-
};
|
|
213
201
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/esm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import {\n CoinName,\n DoubleAssetPoolNames,\n PoolName,\n SingleAssetPoolNames,\n AlphaFiVaultBalance,\n} from \"./common/types.js\";\n\nexport type GetUserTokensFromTransactionsParams = {\n poolNames?: string[];\n startTime?: number;\n endTime?: number;\n owners?: string[];\n};\n\nexport type GetUserTokensInUsdFromTransactionsParams = {\n poolNames?: string[];\n startTime?: number;\n endTime?: number;\n owners?: string[];\n userTokensHoldings?: [string, string, string][];\n};\n\nexport type AlphaReceiptFields = {\n id: { id: string };\n image_url: string;\n last_acc_reward_per_xtoken: {\n type: string;\n fields: {\n contents: [\n {\n type: string;\n fields: {\n key: {\n type: string;\n fields: {\n name: string;\n };\n };\n value: string;\n };\n },\n ];\n };\n };\n locked_balance: {\n type: string;\n fields: {\n head: string;\n id: {\n id: string;\n };\n size: string;\n tail: string;\n };\n };\n name: string;\n owner: string;\n pending_rewards: {\n type: string;\n fields: {\n contents: [\n {\n type: string;\n fields: {\n key: {\n type: string;\n fields: {\n name: string;\n };\n };\n value: string;\n };\n },\n ];\n };\n };\n pool_id: string;\n unlocked_xtokens: string;\n xTokenBalance: string;\n};\n\nexport type OtherReceiptFields = {\n id: { id: string };\n image_url: string;\n last_acc_reward_per_xtoken: {\n fields: {\n contents: [\n {\n fields: {\n key: {\n fields: {\n name: string;\n };\n type: string;\n };\n value: string;\n };\n type: string;\n },\n ];\n };\n type: string;\n };\n name: string;\n owner: string;\n pending_rewards: {\n fields: {\n contents: [\n {\n fields: {\n key: {\n fields: {\n name: string;\n };\n type: string;\n };\n value: string;\n };\n type: string;\n },\n ];\n };\n type: string;\n };\n pool_id: string;\n xTokenBalance: string;\n};\n\nexport type GetHoldersParams = {\n poolNames?: string[];\n startTime?: number;\n endTime?: number;\n};\n\nexport type GetTokenHoldingsParams = {\n poolNames?: PoolName[];\n startTime?: number;\n endTime?: number;\n};\n\nexport type LiquidityToUsdParams = {\n liquidity: string;\n poolName: string;\n ticksCetusMap: { [pool: string]: { lower: string; upper: string } };\n sqrtPriceCetusMap: Map<PoolName, string>;\n tokenPriceMap: Map<CoinName, string>;\n};\n\nexport type LiquidityToTokensParams = {\n liquidity: string;\n poolName: string;\n
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import {\n CoinName,\n DoubleAssetPoolNames,\n PoolName,\n SingleAssetPoolNames,\n AlphaFiVaultBalance,\n} from \"./common/types.js\";\n\nexport type GetUserTokensFromTransactionsParams = {\n poolNames?: string[];\n startTime?: number;\n endTime?: number;\n owners?: string[];\n};\n\nexport type GetUserTokensInUsdFromTransactionsParams = {\n poolNames?: string[];\n startTime?: number;\n endTime?: number;\n owners?: string[];\n userTokensHoldings?: [string, string, string][];\n};\n\nexport type AlphaReceiptFields = {\n id: { id: string };\n image_url: string;\n last_acc_reward_per_xtoken: {\n type: string;\n fields: {\n contents: [\n {\n type: string;\n fields: {\n key: {\n type: string;\n fields: {\n name: string;\n };\n };\n value: string;\n };\n },\n ];\n };\n };\n locked_balance: {\n type: string;\n fields: {\n head: string;\n id: {\n id: string;\n };\n size: string;\n tail: string;\n };\n };\n name: string;\n owner: string;\n pending_rewards: {\n type: string;\n fields: {\n contents: [\n {\n type: string;\n fields: {\n key: {\n type: string;\n fields: {\n name: string;\n };\n };\n value: string;\n };\n },\n ];\n };\n };\n pool_id: string;\n unlocked_xtokens: string;\n xTokenBalance: string;\n};\n\nexport type OtherReceiptFields = {\n id: { id: string };\n image_url: string;\n last_acc_reward_per_xtoken: {\n fields: {\n contents: [\n {\n fields: {\n key: {\n fields: {\n name: string;\n };\n type: string;\n };\n value: string;\n };\n type: string;\n },\n ];\n };\n type: string;\n };\n name: string;\n owner: string;\n pending_rewards: {\n fields: {\n contents: [\n {\n fields: {\n key: {\n fields: {\n name: string;\n };\n type: string;\n };\n value: string;\n };\n type: string;\n },\n ];\n };\n type: string;\n };\n pool_id: string;\n xTokenBalance: string;\n};\n\nexport type GetHoldersParams = {\n poolNames?: string[];\n startTime?: number;\n endTime?: number;\n};\n\nexport type GetTokenHoldingsParams = {\n poolNames?: PoolName[];\n startTime?: number;\n endTime?: number;\n};\n\nexport type LiquidityToUsdParams = {\n liquidity: string;\n poolName: string;\n ticksCetusMap: { [pool: string]: { lower: string; upper: string } };\n sqrtPriceCetusMap: Map<PoolName, string>;\n tokenPriceMap: Map<CoinName, string>;\n};\n\nexport type LiquidityToTokensParams = {\n liquidity: string;\n poolName: string;\n};\n\nexport type UserUsdHoldings = {\n user: string;\n poolName: PoolName;\n usdHoldings: string;\n};\n\nexport type UserPoolLiquidity = {\n user: string;\n poolName: string;\n liquidity: string;\n};\n\nexport type UserPoolTokenHoldings =\n | SingleAssetTokenHoldings\n | DoubleAssetTokenHoldings;\n\nexport type SingleAssetTokenHoldings = {\n user: string;\n poolName: SingleAssetPoolNames;\n tokens: string;\n};\n\nexport type DoubleAssetTokenHoldings = {\n user: string;\n poolName: DoubleAssetPoolNames;\n tokenAmountA: string;\n tokenAmountB: string;\n};\n\nexport type MultiGetVaultBalancesParams = {\n poolNames?: PoolName[];\n startTime?: number;\n endTime?: number;\n};\nexport type SingleGetVaultBalancesParams = {\n address?: string;\n poolName?: PoolName;\n};\nexport type GetVaultBalanceParams =\n | SingleGetVaultBalancesParams\n | MultiGetVaultBalancesParams;\n\nexport type HoldingsObj = {\n owner: string;\n poolName: PoolName;\n holding: string;\n};\n\nexport type VaultBalance =\n | AlphaFiVaultBalance\n | undefined\n | AlphaFiMultiVaultBalance[];\n\nexport type AlphaFiMultiVaultBalance =\n | SingleAssetMultiVaultBalance\n | DoubleAssetMultiVaultBalance;\n\nexport type SingleAssetMultiVaultBalance = {\n owner: string;\n poolName: PoolName;\n tokens: string;\n tokensInUsd: string;\n};\nexport type DoubleAssetMultiVaultBalance = {\n owner: string;\n poolName: PoolName;\n tokenA: string;\n tokenB: string;\n tokensInUsd: string;\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DoubleAssetTokenHoldings, HoldingsObj, SingleAssetTokenHoldings, LiquidityToTokensParams } from "../types.js";
|
|
2
2
|
export declare function multiXTokensToLiquidity(xTokensHoldings: HoldingsObj[]): Promise<HoldingsObj[]>;
|
|
3
3
|
export declare function multiLiquidityToTokens(holdings: HoldingsObj[]): Promise<(SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[]>;
|
|
4
|
-
export declare function liquidityToTokens(params: LiquidityToTokensParams): string | [string, string]
|
|
4
|
+
export declare function liquidityToTokens(params: LiquidityToTokensParams): Promise<string | [string, string]>;
|
|
5
5
|
export declare function multiTokensToUsd(tokensHoldings: (SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[]): Promise<HoldingsObj[]>;
|
|
6
6
|
//# sourceMappingURL=userHoldings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userHoldings.d.ts","sourceRoot":"","sources":["../../../src/utils/userHoldings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"userHoldings.d.ts","sourceRoot":"","sources":["../../../src/utils/userHoldings.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,wBAAwB,EACxB,WAAW,EACX,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAYrB,wBAAsB,uBAAuB,CAAC,eAAe,EAAE,WAAW,EAAE,0BAmB3E;AAED,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,WAAW,EAAE,oEA0BnE;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA4BpC;AAgID,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,CAAC,wBAAwB,GAAG,wBAAwB,CAAC,EAAE,GACtE,OAAO,CAAC,WAAW,EAAE,CAAC,CAoDxB"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { getPoolExchangeRateMap, doubleAssetPoolCoinMap, singleAssetPoolCoinMap, poolInfo, coinsInPool,
|
|
1
|
+
import { getPoolExchangeRateMap, doubleAssetPoolCoinMap, singleAssetPoolCoinMap, poolInfo, coinsInPool, } from "../common/maps.js";
|
|
2
2
|
import { Decimal } from "decimal.js";
|
|
3
|
-
import { ClmmPoolUtil, TickMath, } from "@cetusprotocol/cetus-sui-clmm-sdk";
|
|
4
|
-
import BN from "bn.js";
|
|
5
3
|
import { coinsList } from "../common/coins.js";
|
|
6
4
|
import { getLatestTokenPricePairs } from "./prices.js";
|
|
5
|
+
import { getCoinAmountsFromLiquidity } from "../index.js";
|
|
7
6
|
export async function multiXTokensToLiquidity(xTokensHoldings) {
|
|
8
7
|
let holdings = [];
|
|
9
8
|
const exchangeRateMap = await getPoolExchangeRateMap();
|
|
@@ -21,35 +20,32 @@ export async function multiXTokensToLiquidity(xTokensHoldings) {
|
|
|
21
20
|
return holdings;
|
|
22
21
|
}
|
|
23
22
|
export async function multiLiquidityToTokens(holdings) {
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
const tokens = liquidityToTokens({
|
|
23
|
+
let tokenHoldings = [];
|
|
24
|
+
for (const holdingsObj of holdings) {
|
|
25
|
+
const tokens = await liquidityToTokens({
|
|
28
26
|
liquidity: holdingsObj.holding,
|
|
29
27
|
poolName: holdingsObj.poolName,
|
|
30
|
-
ticksCetusMap: ticksCetusMap,
|
|
31
|
-
sqrtPriceCetusMap: sqrtPriceCetusMap,
|
|
32
28
|
});
|
|
33
29
|
if (typeof tokens === "string") {
|
|
34
|
-
|
|
30
|
+
tokenHoldings.push({
|
|
35
31
|
user: holdingsObj.owner,
|
|
36
32
|
poolName: holdingsObj.poolName,
|
|
37
33
|
tokens: tokens,
|
|
38
|
-
};
|
|
34
|
+
});
|
|
39
35
|
}
|
|
40
36
|
else {
|
|
41
|
-
|
|
37
|
+
tokenHoldings.push({
|
|
42
38
|
user: holdingsObj.owner,
|
|
43
39
|
poolName: holdingsObj.poolName,
|
|
44
40
|
tokenAmountA: tokens[0],
|
|
45
41
|
tokenAmountB: tokens[1],
|
|
46
|
-
};
|
|
42
|
+
});
|
|
47
43
|
}
|
|
48
|
-
}
|
|
44
|
+
}
|
|
49
45
|
tokenHoldings = mergeDuplicateTokenHoldings(tokenHoldings);
|
|
50
46
|
return tokenHoldings;
|
|
51
47
|
}
|
|
52
|
-
export function liquidityToTokens(params) {
|
|
48
|
+
export async function liquidityToTokens(params) {
|
|
53
49
|
let holdingUSD;
|
|
54
50
|
if (params.poolName.slice(0, 4) === "NAVI") {
|
|
55
51
|
holdingUSD = singleAssetLiquidityToTokens(params.liquidity, params.poolName);
|
|
@@ -58,7 +54,7 @@ export function liquidityToTokens(params) {
|
|
|
58
54
|
holdingUSD = alphaLiquidityToTokens(params.liquidity);
|
|
59
55
|
}
|
|
60
56
|
else if (["CETUS", "BLUEFIN"].includes(poolInfo[params.poolName].parentProtocolName)) {
|
|
61
|
-
const [holdingA, holdingB] = doubleAssetliquidityToTokens(params);
|
|
57
|
+
const [holdingA, holdingB] = await doubleAssetliquidityToTokens(params);
|
|
62
58
|
return [holdingA, holdingB];
|
|
63
59
|
}
|
|
64
60
|
else if (poolInfo[params.poolName].parentProtocolName === "BUCKET") {
|
|
@@ -74,33 +70,18 @@ export function liquidityToTokens(params) {
|
|
|
74
70
|
throw new Error(`holdingsUsd undefined for poolName: ${params.poolName}`);
|
|
75
71
|
return holdingUSD;
|
|
76
72
|
}
|
|
77
|
-
function doubleAssetliquidityToTokens(params) {
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
if (upper_tick > upper_bound) {
|
|
89
|
-
upper_tick = -~(upper_tick - 1);
|
|
90
|
-
}
|
|
91
|
-
const liquidityInt = Math.floor(Number(liquidity));
|
|
92
|
-
const sqrtPrice = sqrtPriceCetusMap.get(pool);
|
|
93
|
-
const coin_amounts = ClmmPoolUtil.getCoinAmountFromLiquidity(new BN(`${liquidityInt}`), new BN(sqrtPrice), TickMath.tickIndexToSqrtPriceX64(lower_tick), TickMath.tickIndexToSqrtPriceX64(upper_tick), true);
|
|
94
|
-
const coinAmounts = [
|
|
95
|
-
coin_amounts.coinA.toNumber(),
|
|
96
|
-
coin_amounts.coinB.toNumber(),
|
|
73
|
+
async function doubleAssetliquidityToTokens(params) {
|
|
74
|
+
const scaled_coin_amounts = await getCoinAmountsFromLiquidity(params.poolName, params.liquidity, false);
|
|
75
|
+
const coins = coinsInPool(params.poolName);
|
|
76
|
+
const coin_amounts = [
|
|
77
|
+
new Decimal(scaled_coin_amounts[0])
|
|
78
|
+
.div(new Decimal(Math.pow(10, coinsList[coins.coinA].expo)))
|
|
79
|
+
.toFixed(5),
|
|
80
|
+
new Decimal(scaled_coin_amounts[1])
|
|
81
|
+
.div(new Decimal(Math.pow(10, coinsList[coins.coinB].expo)))
|
|
82
|
+
.toFixed(5),
|
|
97
83
|
];
|
|
98
|
-
|
|
99
|
-
const coin1 = doubleAssetPoolCoinMap[pool].coin1;
|
|
100
|
-
const coin2 = doubleAssetPoolCoinMap[pool].coin2;
|
|
101
|
-
const amount1 = new Decimal(coinAmounts[0]).div(ten.pow(coinsList[coin1].expo));
|
|
102
|
-
const amount2 = new Decimal(coinAmounts[1]).div(ten.pow(coinsList[coin2].expo));
|
|
103
|
-
return [amount1.toFixed(5).toString(), amount2.toFixed(5).toString()];
|
|
84
|
+
return coin_amounts;
|
|
104
85
|
}
|
|
105
86
|
function alphaLiquidityToTokens(liquidity) {
|
|
106
87
|
const amount = new Decimal(liquidity).div(1e9);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userHoldings.js","sourceRoot":"","sources":["../../../src/utils/userHoldings.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n getPoolExchangeRateMap,\n doubleAssetPoolCoinMap,\n singleAssetPoolCoinMap,\n poolInfo,\n coinsInPool,\n getLiquidityPoolSqrtPriceMap,\n getLiquidityPoolInvestorTicksMap,\n} from \"../common/maps.js\";\nimport {\n DoubleAssetTokenHoldings,\n HoldingsObj,\n SingleAssetTokenHoldings,\n LiquidityToTokensParams,\n} from \"../types.js\";\nimport { Decimal } from \"decimal.js\";\nimport { PoolName, SingleAssetPoolNames } from \"../common/types.js\";\nimport {\n CoinAmounts,\n ClmmPoolUtil,\n TickMath,\n} from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport BN from \"bn.js\";\nimport { coinsList } from \"../common/coins.js\";\nimport { getLatestTokenPricePairs } from \"./prices.js\";\nimport { PythPriceIdPair } from \"../common/pyth.js\";\n\nexport async function multiXTokensToLiquidity(xTokensHoldings: HoldingsObj[]) {\n let holdings: HoldingsObj[] = [];\n\n const exchangeRateMap = await getPoolExchangeRateMap();\n holdings = xTokensHoldings.map((holdingsObj) => {\n const conversion = new Decimal(\n exchangeRateMap.get(holdingsObj.poolName) as string,\n );\n const liquidity = new Decimal(holdingsObj.holding)\n .mul(conversion)\n .toString();\n return {\n owner: holdingsObj.owner,\n poolName: holdingsObj.poolName,\n holding: liquidity,\n };\n });\n\n return holdings;\n}\n\nexport async function multiLiquidityToTokens(holdings: HoldingsObj[]) {\n const sqrtPriceCetusMap = await getLiquidityPoolSqrtPriceMap();\n const ticksCetusMap = await getLiquidityPoolInvestorTicksMap();\n let tokenHoldings: (SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[] =\n holdings.map((holdingsObj) => {\n const tokens = liquidityToTokens({\n liquidity: holdingsObj.holding,\n poolName: holdingsObj.poolName,\n ticksCetusMap: ticksCetusMap,\n sqrtPriceCetusMap: sqrtPriceCetusMap,\n });\n if (typeof tokens === \"string\") {\n return {\n user: holdingsObj.owner,\n poolName: holdingsObj.poolName,\n tokens: tokens,\n } as SingleAssetTokenHoldings;\n } else {\n return {\n user: holdingsObj.owner,\n poolName: holdingsObj.poolName,\n tokenAmountA: tokens[0],\n tokenAmountB: tokens[1],\n } as DoubleAssetTokenHoldings;\n }\n });\n tokenHoldings = mergeDuplicateTokenHoldings(tokenHoldings);\n return tokenHoldings;\n}\n\nexport function liquidityToTokens(\n params: LiquidityToTokensParams,\n): string | [string, string] {\n let holdingUSD: string | undefined;\n if (params.poolName.slice(0, 4) === \"NAVI\") {\n holdingUSD = singleAssetLiquidityToTokens(\n params.liquidity,\n params.poolName,\n );\n } else if (params.poolName === \"ALPHA\") {\n holdingUSD = alphaLiquidityToTokens(params.liquidity);\n } else if (\n [\"CETUS\", \"BLUEFIN\"].includes(poolInfo[params.poolName].parentProtocolName)\n ) {\n const [holdingA, holdingB] = doubleAssetliquidityToTokens(params);\n return [holdingA, holdingB];\n } else if (poolInfo[params.poolName].parentProtocolName === \"BUCKET\") {\n if (params.poolName in singleAssetPoolCoinMap) {\n holdingUSD = singleAssetLiquidityToTokens(\n params.liquidity,\n params.poolName,\n );\n }\n } else {\n console.error(params.poolName);\n throw new Error(\"Unexpected Parent Protocol\");\n }\n if (!holdingUSD)\n throw new Error(`holdingsUsd undefined for poolName: ${params.poolName}`);\n return holdingUSD;\n}\n\nfunction doubleAssetliquidityToTokens(params: {\n liquidity: string;\n poolName: string;\n ticksCetusMap: { [pool: string]: { lower: string; upper: string } };\n sqrtPriceCetusMap: Map<PoolName, string>;\n}): [string, string] {\n const pool = params.poolName;\n const liquidity = params.liquidity;\n const ticksCetusMap = params.ticksCetusMap;\n const sqrtPriceCetusMap = params.sqrtPriceCetusMap;\n\n const upper_bound = 443636;\n let lower_tick = Number(ticksCetusMap[pool].lower);\n let upper_tick = Number(ticksCetusMap[pool].upper);\n\n if (lower_tick > upper_bound) {\n lower_tick = -~(lower_tick - 1);\n }\n if (upper_tick > upper_bound) {\n upper_tick = -~(upper_tick - 1);\n }\n const liquidityInt = Math.floor(Number(liquidity));\n const sqrtPrice = sqrtPriceCetusMap.get(pool as PoolName) as string;\n const coin_amounts: CoinAmounts = ClmmPoolUtil.getCoinAmountFromLiquidity(\n new BN(`${liquidityInt}`),\n new BN(sqrtPrice),\n TickMath.tickIndexToSqrtPriceX64(lower_tick),\n TickMath.tickIndexToSqrtPriceX64(upper_tick),\n true,\n );\n const coinAmounts = [\n coin_amounts.coinA.toNumber(),\n coin_amounts.coinB.toNumber(),\n ];\n const ten = new Decimal(10);\n const coin1 = doubleAssetPoolCoinMap[pool].coin1;\n const coin2 = doubleAssetPoolCoinMap[pool].coin2;\n\n const amount1 = new Decimal(coinAmounts[0]).div(\n ten.pow(coinsList[coin1].expo),\n );\n const amount2 = new Decimal(coinAmounts[1]).div(\n ten.pow(coinsList[coin2].expo),\n );\n return [amount1.toFixed(5).toString(), amount2.toFixed(5).toString()];\n}\n\nfunction alphaLiquidityToTokens(liquidity: string) {\n const amount = new Decimal(liquidity).div(1e9);\n return amount.toFixed(5);\n}\n\nfunction singleAssetLiquidityToTokens(liquidity: string, pool: string) {\n const singlePool = pool;\n if (\n poolInfo[pool].parentProtocolName === \"NAVI\" &&\n poolInfo[pool].strategyType !== \"LOOPING\"\n ) {\n const coin = singleAssetPoolCoinMap[singlePool].coin;\n let amount = new Decimal(liquidity).div(\n Math.pow(10, 9 - coinsList[coin].expo),\n );\n amount = amount.div(new Decimal(Math.pow(10, coinsList[coin].expo)));\n return amount.toFixed(5);\n } else if (\n poolInfo[pool].parentProtocolName === \"NAVI\" &&\n poolInfo[pool].strategyType === \"LOOPING\"\n ) {\n const coin = coinsInPool(pool as SingleAssetPoolNames);\n const amount = new Decimal(liquidity).div(\n Math.pow(10, coinsList[coin].expo),\n );\n return amount.toFixed(5);\n } else if (\n poolInfo[pool].parentProtocolName === \"BUCKET\" &&\n pool in singleAssetPoolCoinMap\n ) {\n const coin = singleAssetPoolCoinMap[singlePool].coin;\n const amount = new Decimal(liquidity).div(\n new Decimal(Math.pow(10, coinsList[coin].expo)),\n );\n return amount.toFixed(5);\n } else {\n throw new Error(\"Incorrect pool in argument\");\n }\n}\n\nfunction mergeDuplicateTokenHoldings(\n tokenHoldings: (SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[],\n) {\n const uniqueOwnerPoolMap = new Map<\n string,\n { tokens: string } | { tokenAmountA: string; tokenAmountB: string }\n >();\n\n for (const holding of tokenHoldings) {\n const owner = holding.user;\n const poolName = holding.poolName;\n const key = `${owner}_${poolName}`;\n if (uniqueOwnerPoolMap.has(key)) {\n const existingTokens = uniqueOwnerPoolMap.get(key);\n if (\"tokens\" in existingTokens!) {\n const thisHolding = holding as SingleAssetTokenHoldings;\n uniqueOwnerPoolMap.set(key, {\n tokens: (\n parseFloat(thisHolding.tokens) + parseFloat(existingTokens.tokens)\n )\n .toFixed(5)\n .toString(),\n });\n } else {\n const thisHolding = holding as DoubleAssetTokenHoldings;\n const tokensObj = {\n tokenAmountA: (\n parseFloat(thisHolding.tokenAmountA) +\n parseFloat(existingTokens!.tokenAmountA)\n )\n .toFixed(5)\n .toString(),\n tokenAmountB: (\n parseFloat(thisHolding.tokenAmountB) +\n parseFloat(existingTokens!.tokenAmountB)\n )\n .toFixed(5)\n .toString(),\n };\n uniqueOwnerPoolMap.set(key, tokensObj);\n }\n } else {\n if (\"tokens\" in holding) {\n uniqueOwnerPoolMap.set(key, { tokens: holding.tokens });\n } else {\n uniqueOwnerPoolMap.set(key, {\n tokenAmountA: holding.tokenAmountA,\n tokenAmountB: holding.tokenAmountB,\n });\n }\n }\n }\n\n const uniqueOwnerPoolMapArr = Array.from(uniqueOwnerPoolMap);\n const result: (SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[] =\n uniqueOwnerPoolMapArr.map(([owner_pool, holding]) => {\n const owner = owner_pool.split(\"_\")[0];\n const poolName = owner_pool.split(\"_\")[1];\n return { user: owner, poolName: poolName, ...holding } as\n | SingleAssetTokenHoldings\n | DoubleAssetTokenHoldings;\n });\n return result;\n}\n\nexport async function multiTokensToUsd(\n tokensHoldings: (SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[],\n): Promise<HoldingsObj[]> {\n const pricePairs = new Set<PythPriceIdPair>();\n tokensHoldings.map((o) => {\n if (\"tokens\" in o) {\n const thisCoins = coinsInPool(o.poolName);\n pricePairs.add(`${thisCoins}/USD` as PythPriceIdPair);\n } else if (\"tokenAmountA\" in o) {\n const thisCoins = coinsInPool(o.poolName);\n pricePairs.add(`${thisCoins.coinA}/USD` as PythPriceIdPair);\n pricePairs.add(`${thisCoins.coinB}/USD` as PythPriceIdPair);\n }\n });\n\n const usdHoldings: HoldingsObj[] = [];\n const prices = await getLatestTokenPricePairs(Array.from(pricePairs), false);\n\n for (const tokenHolding of tokensHoldings) {\n if (\"tokens\" in tokenHolding) {\n // SingleAssetTokenHoldings\n const singlePool = tokenHolding.poolName;\n const coin = coinsInPool(singlePool);\n const priceOfCoin = prices[`${coin}/USD`];\n if (priceOfCoin) {\n const amountInUSD = new Decimal(tokenHolding.tokens).mul(priceOfCoin);\n usdHoldings.push({\n owner: tokenHolding.user,\n poolName: tokenHolding.poolName,\n holding: amountInUSD.toFixed(2).toString(),\n });\n }\n } else {\n // DoubleAssetTokenHoldings\n const poolName = tokenHolding.poolName;\n const coin1 = doubleAssetPoolCoinMap[poolName].coin1;\n const coin2 = doubleAssetPoolCoinMap[poolName].coin2;\n const priceOfCoin1 = prices[`${coin1}/USD`];\n const priceOfCoin2 = prices[`${coin2}/USD`];\n\n if (priceOfCoin1 && priceOfCoin2) {\n const amount = new Decimal(tokenHolding.tokenAmountA)\n .mul(priceOfCoin1)\n .add(new Decimal(tokenHolding.tokenAmountB).mul(priceOfCoin2));\n usdHoldings.push({\n owner: tokenHolding.user,\n poolName: tokenHolding.poolName,\n holding: amount.toFixed(2).toString(),\n });\n }\n }\n }\n\n return usdHoldings;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"userHoldings.js","sourceRoot":"","sources":["../../../src/utils/userHoldings.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n getPoolExchangeRateMap,\n doubleAssetPoolCoinMap,\n singleAssetPoolCoinMap,\n poolInfo,\n coinsInPool,\n} from \"../common/maps.js\";\nimport {\n DoubleAssetTokenHoldings,\n HoldingsObj,\n SingleAssetTokenHoldings,\n LiquidityToTokensParams,\n} from \"../types.js\";\nimport { Decimal } from \"decimal.js\";\nimport {\n DoubleAssetPoolNames,\n PoolName,\n SingleAssetPoolNames,\n} from \"../common/types.js\";\nimport { coinsList } from \"../common/coins.js\";\nimport { getLatestTokenPricePairs } from \"./prices.js\";\nimport { PythPriceIdPair } from \"../common/pyth.js\";\nimport { getCoinAmountsFromLiquidity } from \"../index.js\";\n\nexport async function multiXTokensToLiquidity(xTokensHoldings: HoldingsObj[]) {\n let holdings: HoldingsObj[] = [];\n\n const exchangeRateMap = await getPoolExchangeRateMap();\n holdings = xTokensHoldings.map((holdingsObj) => {\n const conversion = new Decimal(\n exchangeRateMap.get(holdingsObj.poolName) as string,\n );\n const liquidity = new Decimal(holdingsObj.holding)\n .mul(conversion)\n .toString();\n return {\n owner: holdingsObj.owner,\n poolName: holdingsObj.poolName,\n holding: liquidity,\n };\n });\n\n return holdings;\n}\n\nexport async function multiLiquidityToTokens(holdings: HoldingsObj[]) {\n let tokenHoldings: (SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[] =\n [];\n for (const holdingsObj of holdings) {\n const tokens = await liquidityToTokens({\n liquidity: holdingsObj.holding,\n poolName: holdingsObj.poolName,\n });\n if (typeof tokens === \"string\") {\n tokenHoldings.push({\n user: holdingsObj.owner,\n poolName: holdingsObj.poolName,\n tokens: tokens,\n } as SingleAssetTokenHoldings);\n } else {\n tokenHoldings.push({\n user: holdingsObj.owner,\n poolName: holdingsObj.poolName,\n tokenAmountA: tokens[0],\n tokenAmountB: tokens[1],\n } as DoubleAssetTokenHoldings);\n }\n }\n\n tokenHoldings = mergeDuplicateTokenHoldings(tokenHoldings);\n return tokenHoldings;\n}\n\nexport async function liquidityToTokens(\n params: LiquidityToTokensParams,\n): Promise<string | [string, string]> {\n let holdingUSD: string | undefined;\n if (params.poolName.slice(0, 4) === \"NAVI\") {\n holdingUSD = singleAssetLiquidityToTokens(\n params.liquidity,\n params.poolName,\n );\n } else if (params.poolName === \"ALPHA\") {\n holdingUSD = alphaLiquidityToTokens(params.liquidity);\n } else if (\n [\"CETUS\", \"BLUEFIN\"].includes(poolInfo[params.poolName].parentProtocolName)\n ) {\n const [holdingA, holdingB] = await doubleAssetliquidityToTokens(params);\n return [holdingA, holdingB];\n } else if (poolInfo[params.poolName].parentProtocolName === \"BUCKET\") {\n if (params.poolName in singleAssetPoolCoinMap) {\n holdingUSD = singleAssetLiquidityToTokens(\n params.liquidity,\n params.poolName,\n );\n }\n } else {\n console.error(params.poolName);\n throw new Error(\"Unexpected Parent Protocol\");\n }\n if (!holdingUSD)\n throw new Error(`holdingsUsd undefined for poolName: ${params.poolName}`);\n return holdingUSD;\n}\n\nasync function doubleAssetliquidityToTokens(params: {\n liquidity: string;\n poolName: string;\n}): Promise<[string, string]> {\n const scaled_coin_amounts = await getCoinAmountsFromLiquidity(\n params.poolName as PoolName,\n params.liquidity,\n false,\n );\n const coins = coinsInPool(params.poolName as DoubleAssetPoolNames);\n const coin_amounts = [\n new Decimal(scaled_coin_amounts[0])\n .div(new Decimal(Math.pow(10, coinsList[coins.coinA].expo)))\n .toFixed(5),\n new Decimal(scaled_coin_amounts[1])\n .div(new Decimal(Math.pow(10, coinsList[coins.coinB].expo)))\n .toFixed(5),\n ];\n return coin_amounts as [string, string];\n}\n\nfunction alphaLiquidityToTokens(liquidity: string) {\n const amount = new Decimal(liquidity).div(1e9);\n return amount.toFixed(5);\n}\n\nfunction singleAssetLiquidityToTokens(liquidity: string, pool: string) {\n const singlePool = pool;\n if (\n poolInfo[pool].parentProtocolName === \"NAVI\" &&\n poolInfo[pool].strategyType !== \"LOOPING\"\n ) {\n const coin = singleAssetPoolCoinMap[singlePool].coin;\n let amount = new Decimal(liquidity).div(\n Math.pow(10, 9 - coinsList[coin].expo),\n );\n amount = amount.div(new Decimal(Math.pow(10, coinsList[coin].expo)));\n return amount.toFixed(5);\n } else if (\n poolInfo[pool].parentProtocolName === \"NAVI\" &&\n poolInfo[pool].strategyType === \"LOOPING\"\n ) {\n const coin = coinsInPool(pool as SingleAssetPoolNames);\n const amount = new Decimal(liquidity).div(\n Math.pow(10, coinsList[coin].expo),\n );\n return amount.toFixed(5);\n } else if (\n poolInfo[pool].parentProtocolName === \"BUCKET\" &&\n pool in singleAssetPoolCoinMap\n ) {\n const coin = singleAssetPoolCoinMap[singlePool].coin;\n const amount = new Decimal(liquidity).div(\n new Decimal(Math.pow(10, coinsList[coin].expo)),\n );\n return amount.toFixed(5);\n } else {\n throw new Error(\"Incorrect pool in argument\");\n }\n}\n\nfunction mergeDuplicateTokenHoldings(\n tokenHoldings: (SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[],\n) {\n const uniqueOwnerPoolMap = new Map<\n string,\n { tokens: string } | { tokenAmountA: string; tokenAmountB: string }\n >();\n\n for (const holding of tokenHoldings) {\n const owner = holding.user;\n const poolName = holding.poolName;\n const key = `${owner}_${poolName}`;\n if (uniqueOwnerPoolMap.has(key)) {\n const existingTokens = uniqueOwnerPoolMap.get(key);\n if (\"tokens\" in existingTokens!) {\n const thisHolding = holding as SingleAssetTokenHoldings;\n uniqueOwnerPoolMap.set(key, {\n tokens: (\n parseFloat(thisHolding.tokens) + parseFloat(existingTokens.tokens)\n )\n .toFixed(5)\n .toString(),\n });\n } else {\n const thisHolding = holding as DoubleAssetTokenHoldings;\n const tokensObj = {\n tokenAmountA: (\n parseFloat(thisHolding.tokenAmountA) +\n parseFloat(existingTokens!.tokenAmountA)\n )\n .toFixed(5)\n .toString(),\n tokenAmountB: (\n parseFloat(thisHolding.tokenAmountB) +\n parseFloat(existingTokens!.tokenAmountB)\n )\n .toFixed(5)\n .toString(),\n };\n uniqueOwnerPoolMap.set(key, tokensObj);\n }\n } else {\n if (\"tokens\" in holding) {\n uniqueOwnerPoolMap.set(key, { tokens: holding.tokens });\n } else {\n uniqueOwnerPoolMap.set(key, {\n tokenAmountA: holding.tokenAmountA,\n tokenAmountB: holding.tokenAmountB,\n });\n }\n }\n }\n\n const uniqueOwnerPoolMapArr = Array.from(uniqueOwnerPoolMap);\n const result: (SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[] =\n uniqueOwnerPoolMapArr.map(([owner_pool, holding]) => {\n const owner = owner_pool.split(\"_\")[0];\n const poolName = owner_pool.split(\"_\")[1];\n return { user: owner, poolName: poolName, ...holding } as\n | SingleAssetTokenHoldings\n | DoubleAssetTokenHoldings;\n });\n return result;\n}\n\nexport async function multiTokensToUsd(\n tokensHoldings: (SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[],\n): Promise<HoldingsObj[]> {\n const pricePairs = new Set<PythPriceIdPair>();\n tokensHoldings.map((o) => {\n if (\"tokens\" in o) {\n const thisCoins = coinsInPool(o.poolName);\n pricePairs.add(`${thisCoins}/USD` as PythPriceIdPair);\n } else if (\"tokenAmountA\" in o) {\n const thisCoins = coinsInPool(o.poolName);\n pricePairs.add(`${thisCoins.coinA}/USD` as PythPriceIdPair);\n pricePairs.add(`${thisCoins.coinB}/USD` as PythPriceIdPair);\n }\n });\n\n const usdHoldings: HoldingsObj[] = [];\n const prices = await getLatestTokenPricePairs(Array.from(pricePairs), false);\n\n for (const tokenHolding of tokensHoldings) {\n if (\"tokens\" in tokenHolding) {\n // SingleAssetTokenHoldings\n const singlePool = tokenHolding.poolName;\n const coin = coinsInPool(singlePool);\n const priceOfCoin = prices[`${coin}/USD`];\n if (priceOfCoin) {\n const amountInUSD = new Decimal(tokenHolding.tokens).mul(priceOfCoin);\n usdHoldings.push({\n owner: tokenHolding.user,\n poolName: tokenHolding.poolName,\n holding: amountInUSD.toFixed(2).toString(),\n });\n }\n } else {\n // DoubleAssetTokenHoldings\n const poolName = tokenHolding.poolName;\n const coin1 = doubleAssetPoolCoinMap[poolName].coin1;\n const coin2 = doubleAssetPoolCoinMap[poolName].coin2;\n const priceOfCoin1 = prices[`${coin1}/USD`];\n const priceOfCoin2 = prices[`${coin2}/USD`];\n\n if (priceOfCoin1 && priceOfCoin2) {\n const amount = new Decimal(tokenHolding.tokenAmountA)\n .mul(priceOfCoin1)\n .add(new Decimal(tokenHolding.tokenAmountB).mul(priceOfCoin2));\n usdHoldings.push({\n owner: tokenHolding.user,\n poolName: tokenHolding.poolName,\n holding: amount.toFixed(2).toString(),\n });\n }\n }\n }\n\n return usdHoldings;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.navigationData = "data:application/octet-stream;base64,
|
|
1
|
+
window.navigationData = "data:application/octet-stream;base64,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"
|