@alphafi/alphafi-sdk 0.0.35 → 0.0.36
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/coins.d.ts +1 -1
- package/dist/cjs/common/coins.d.ts.map +1 -1
- package/dist/cjs/common/coins.js +15 -11
- package/dist/cjs/common/coins.js.map +1 -1
- package/dist/cjs/common/constants.d.ts +436 -32
- package/dist/cjs/common/constants.d.ts.map +1 -1
- package/dist/cjs/common/constants.js +488 -56
- package/dist/cjs/common/constants.js.map +1 -1
- package/dist/cjs/common/maps.d.ts +46 -28
- package/dist/cjs/common/maps.d.ts.map +1 -1
- package/dist/cjs/common/maps.js +358 -227
- package/dist/cjs/common/maps.js.map +1 -1
- package/dist/cjs/common/types.d.ts +59 -47
- 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 +2 -1
- package/dist/cjs/getVaultBalances.d.ts.map +1 -1
- package/dist/cjs/getVaultBalances.js +16 -1
- package/dist/cjs/getVaultBalances.js.map +1 -1
- package/dist/cjs/graphql/getMultiReceipts.d.ts.map +1 -1
- package/dist/cjs/graphql/getMultiReceipts.js +4 -0
- package/dist/cjs/graphql/getMultiReceipts.js.map +1 -1
- package/dist/cjs/index.d.ts +4 -4
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +13 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/sui-sdk/events/fetchAfterTransactionEvents.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/events/fetchAfterTransactionEvents.js +2 -2
- package/dist/cjs/sui-sdk/events/fetchAfterTransactionEvents.js.map +1 -1
- package/dist/cjs/sui-sdk/events/fetchAutoCompoundingEvents.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/events/fetchAutoCompoundingEvents.js +2 -2
- package/dist/cjs/sui-sdk/events/fetchAutoCompoundingEvents.js.map +1 -1
- package/dist/cjs/sui-sdk/events/fetchRebalanceEvents.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/events/fetchRebalanceEvents.js +5 -7
- package/dist/cjs/sui-sdk/events/fetchRebalanceEvents.js.map +1 -1
- package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.d.ts +1 -1
- package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.js +11 -20
- package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.js.map +1 -1
- package/dist/cjs/sui-sdk/functions/fetchUserVaults.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/functions/fetchUserVaults.js +8 -7
- package/dist/cjs/sui-sdk/functions/fetchUserVaults.js.map +1 -1
- package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.d.ts +8 -23
- package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.js +157 -141
- package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.js.map +1 -1
- package/dist/cjs/sui-sdk/functions/getReceipts.d.ts +15 -10
- package/dist/cjs/sui-sdk/functions/getReceipts.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/functions/getReceipts.js +274 -190
- package/dist/cjs/sui-sdk/functions/getReceipts.js.map +1 -1
- package/dist/cjs/utils/clmm/prices.js +9 -9
- package/dist/cjs/utils/clmm/prices.js.map +1 -1
- package/dist/cjs/utils/getHoldersFromTransactionsUtils.d.ts.map +1 -1
- package/dist/cjs/utils/getHoldersFromTransactionsUtils.js +7 -7
- package/dist/cjs/utils/getHoldersFromTransactionsUtils.js.map +1 -1
- package/dist/cjs/utils/hop.js +3 -3
- package/dist/cjs/utils/hop.js.map +1 -1
- package/dist/cjs/utils/prices.d.ts +2 -0
- package/dist/cjs/utils/prices.d.ts.map +1 -1
- package/dist/cjs/utils/prices.js +39 -0
- package/dist/cjs/utils/prices.js.map +1 -1
- package/dist/cjs/utils/userHoldings.d.ts.map +1 -1
- package/dist/cjs/utils/userHoldings.js +18 -18
- package/dist/cjs/utils/userHoldings.js.map +1 -1
- package/dist/esm/common/coins.d.ts +1 -1
- package/dist/esm/common/coins.d.ts.map +1 -1
- package/dist/esm/common/coins.js +14 -10
- package/dist/esm/common/coins.js.map +1 -1
- package/dist/esm/common/constants.d.ts +436 -32
- package/dist/esm/common/constants.d.ts.map +1 -1
- package/dist/esm/common/constants.js +488 -56
- package/dist/esm/common/constants.js.map +1 -1
- package/dist/esm/common/maps.d.ts +46 -28
- package/dist/esm/common/maps.d.ts.map +1 -1
- package/dist/esm/common/maps.js +355 -226
- package/dist/esm/common/maps.js.map +1 -1
- package/dist/esm/common/types.d.ts +59 -47
- 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 +2 -1
- package/dist/esm/getVaultBalances.d.ts.map +1 -1
- package/dist/esm/getVaultBalances.js +15 -1
- package/dist/esm/getVaultBalances.js.map +1 -1
- package/dist/esm/graphql/getMultiReceipts.d.ts.map +1 -1
- package/dist/esm/graphql/getMultiReceipts.js +4 -0
- package/dist/esm/graphql/getMultiReceipts.js.map +1 -1
- package/dist/esm/index.d.ts +4 -4
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +4 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/sui-sdk/events/fetchAfterTransactionEvents.d.ts.map +1 -1
- package/dist/esm/sui-sdk/events/fetchAfterTransactionEvents.js +4 -4
- package/dist/esm/sui-sdk/events/fetchAfterTransactionEvents.js.map +1 -1
- package/dist/esm/sui-sdk/events/fetchAutoCompoundingEvents.d.ts.map +1 -1
- package/dist/esm/sui-sdk/events/fetchAutoCompoundingEvents.js +4 -4
- package/dist/esm/sui-sdk/events/fetchAutoCompoundingEvents.js.map +1 -1
- package/dist/esm/sui-sdk/events/fetchRebalanceEvents.d.ts.map +1 -1
- package/dist/esm/sui-sdk/events/fetchRebalanceEvents.js +7 -9
- package/dist/esm/sui-sdk/events/fetchRebalanceEvents.js.map +1 -1
- package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.d.ts +1 -1
- package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.d.ts.map +1 -1
- package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.js +11 -20
- package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.js.map +1 -1
- package/dist/esm/sui-sdk/functions/fetchUserVaults.d.ts.map +1 -1
- package/dist/esm/sui-sdk/functions/fetchUserVaults.js +9 -8
- package/dist/esm/sui-sdk/functions/fetchUserVaults.js.map +1 -1
- package/dist/esm/sui-sdk/functions/getPortfolioAmounts.d.ts +8 -23
- package/dist/esm/sui-sdk/functions/getPortfolioAmounts.d.ts.map +1 -1
- package/dist/esm/sui-sdk/functions/getPortfolioAmounts.js +158 -144
- package/dist/esm/sui-sdk/functions/getPortfolioAmounts.js.map +1 -1
- package/dist/esm/sui-sdk/functions/getReceipts.d.ts +15 -10
- package/dist/esm/sui-sdk/functions/getReceipts.d.ts.map +1 -1
- package/dist/esm/sui-sdk/functions/getReceipts.js +266 -186
- package/dist/esm/sui-sdk/functions/getReceipts.js.map +1 -1
- package/dist/esm/utils/clmm/prices.js +10 -10
- package/dist/esm/utils/clmm/prices.js.map +1 -1
- package/dist/esm/utils/getHoldersFromTransactionsUtils.d.ts.map +1 -1
- package/dist/esm/utils/getHoldersFromTransactionsUtils.js +9 -9
- package/dist/esm/utils/getHoldersFromTransactionsUtils.js.map +1 -1
- package/dist/esm/utils/hop.js +4 -4
- package/dist/esm/utils/hop.js.map +1 -1
- package/dist/esm/utils/prices.d.ts +2 -0
- package/dist/esm/utils/prices.d.ts.map +1 -1
- package/dist/esm/utils/prices.js +37 -0
- package/dist/esm/utils/prices.js.map +1 -1
- package/dist/esm/utils/userHoldings.d.ts.map +1 -1
- package/dist/esm/utils/userHoldings.js +20 -20
- package/dist/esm/utils/userHoldings.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getReceipts.js","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getReceipts.ts"],"names":[],"mappings":"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","sourcesContent":["import { PaginatedObjectsResponse } from \"@mysten/sui/client\";\nimport {\n AlphaPoolType,\n CetusInvestor,\n NaviInvestor,\n CommonInvestorFields,\n CetusPoolType,\n CoinAmounts,\n PoolName,\n PoolType,\n Receipt,\n SingleAssetPoolNames,\n NaviVoloData,\n} from \"../../index.js\";\nimport { cetusPoolMap, poolInfo } from \"../../common/maps.js\";\nimport { SimpleCache } from \"../../utils/simpleCache.js\";\nimport { ClmmPoolUtil, TickMath } from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport BN from \"bn.js\";\nimport { Decimal } from \"decimal.js\";\nimport { getSuiClient } from \"../client.js\";\n\nconst receiptsCache = new SimpleCache<Receipt[]>();\nconst receiptsPromiseCache = new SimpleCache<Promise<Receipt[]>>();\nexport async function getReceipts(\n poolName: string,\n address: string,\n ignoreCache: boolean = false,\n): Promise<Receipt[]> {\n const suiClient = getSuiClient();\n const receiptsCacheKey = `getReceipts-${poolName}-${address}`;\n if (ignoreCache) {\n receiptsCache.delete(receiptsCacheKey);\n receiptsPromiseCache.delete(receiptsCacheKey);\n }\n const cachedResponse = receiptsCache.get(receiptsCacheKey);\n if (cachedResponse) {\n return cachedResponse;\n }\n\n const nfts: Receipt[] = [];\n if (poolInfo[poolName].receiptType === \"\") {\n return nfts;\n }\n let cachedPromise = receiptsPromiseCache.get(receiptsCacheKey);\n if (!cachedPromise) {\n cachedPromise = (async (): Promise<Receipt[]> => {\n // const first_package = conf[CONF_ENV].ALPHA_FIRST_PACKAGE_ID;\n let currentCursor: string | null | undefined = null;\n /* eslint-disable-next-line no-constant-condition */\n while (true) {\n const paginatedObjects: PaginatedObjectsResponse =\n await suiClient.getOwnedObjects({\n owner: address,\n cursor: currentCursor,\n filter: {\n // StructType: `${first_package}::${module}::Receipt`,\n StructType: poolInfo[poolName].receiptType,\n },\n options: {\n showType: true,\n showContent: true,\n },\n });\n // Traverse the current page data and push to coins array\n\n paginatedObjects.data.forEach((obj) => {\n const o = obj.data as Receipt;\n if (o) {\n if (poolInfo[poolName].receiptName === o.content.fields.name) {\n nfts.push(o);\n }\n }\n });\n\n // Check if there's a next page\n if (paginatedObjects.hasNextPage && paginatedObjects.nextCursor) {\n currentCursor = paginatedObjects.nextCursor;\n } else {\n // No more pages available\n break;\n }\n }\n receiptsCache.set(receiptsCacheKey, nfts);\n receiptsPromiseCache.delete(receiptsCacheKey);\n return nfts;\n })().catch((error) => {\n // TODO: Jugaad\n if (poolInfo[poolName].parentProtocolName === \"NAVI\") {\n return nfts;\n } else {\n receiptsPromiseCache.delete(receiptsCacheKey); // Remove the promise from cache\n throw error;\n }\n });\n receiptsPromiseCache.set(receiptsCacheKey, cachedPromise);\n }\n return cachedPromise;\n}\n\nconst poolExchangeRateCache = new SimpleCache<Decimal>();\n\nexport async function getPoolExchangeRate(\n poolName: PoolName,\n ignoreCache: boolean = false,\n): Promise<Decimal | undefined> {\n const poolExchangeRateCacheKey = `getPoolExchangeRate-${poolName}`;\n if (ignoreCache) {\n poolExchangeRateCache.delete(poolExchangeRateCacheKey);\n }\n const cachedResponse = poolExchangeRateCache.get(poolExchangeRateCacheKey);\n if (cachedResponse) {\n return cachedResponse;\n }\n\n let pool: PoolType | AlphaPoolType | undefined;\n try {\n if (poolName === \"ALPHA\") {\n pool = await getPool(\"ALPHA\");\n } else if (\n poolName === \"ALPHA-SUI\" ||\n poolName === \"USDT-WUSDC\" ||\n poolName === \"USDY-WUSDC\" ||\n poolName === \"HASUI-SUI\" ||\n poolName === \"WUSDC-SUI\" ||\n poolName === \"WETH-WUSDC\"\n ) {\n pool = await getPool(poolName);\n } else {\n pool = await getPool(poolName);\n }\n if (pool) {\n const xTokenSupply = new Decimal(pool.content.fields.xTokenSupply);\n let tokensInvested = new Decimal(pool.content.fields.tokensInvested);\n if (poolName == \"ALPHA\") {\n tokensInvested = new Decimal(pool.content.fields.alpha_bal);\n }\n\n // Check for division by zero\n if (xTokenSupply.eq(0)) {\n console.error(\"Division by zero error: tokensInvested is zero.\");\n return undefined;\n }\n const poolExchangeRate = tokensInvested.div(xTokenSupply);\n\n poolExchangeRateCache.set(poolExchangeRateCacheKey, poolExchangeRate);\n\n return poolExchangeRate;\n }\n } catch (e) {\n console.error(`getPoolExchangeRate failed for poolName: ${poolName}`);\n }\n\n return undefined;\n}\n\nexport async function getCoinAmountsFromLiquidity(\n poolName: PoolName,\n liquidity: number,\n): Promise<[number, number]> {\n const cetus_pool = await getCetusPool(poolName);\n const cetusInvestor = await getCetusInvestor(poolName);\n\n const upper_bound = 443636;\n let lower_tick = Number(cetusInvestor!.content.fields.lower_tick);\n let upper_tick = Number(cetusInvestor!.content.fields.upper_tick);\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\n if (cetus_pool) {\n const liquidityInt = Math.floor(liquidity);\n const coin_amounts: CoinAmounts = ClmmPoolUtil.getCoinAmountFromLiquidity(\n new BN(`${liquidityInt}`),\n new BN(cetus_pool.content.fields.current_sqrt_price),\n TickMath.tickIndexToSqrtPriceX64(lower_tick),\n TickMath.tickIndexToSqrtPriceX64(upper_tick),\n true,\n );\n\n return [coin_amounts.coinA.toNumber(), coin_amounts.coinB.toNumber()];\n } else {\n return [0, 0];\n }\n}\n\nconst poolCache = new SimpleCache<PoolType | AlphaPoolType>();\nconst poolPromiseCache = new SimpleCache<\n Promise<PoolType | AlphaPoolType | undefined>\n>();\n\nexport async function getPool(\n poolName: string,\n ignoreCache: boolean = false,\n): Promise<PoolType | AlphaPoolType | undefined> {\n const cacheKey = `pool_${poolInfo[poolName.toUpperCase()].poolId}`;\n\n if (ignoreCache) {\n poolCache.delete(cacheKey);\n poolPromiseCache.delete(cacheKey);\n }\n\n // Check if the pool is already in the cache\n const cachedPool = poolCache.get(cacheKey);\n if (cachedPool) {\n return cachedPool;\n }\n\n // Check if there is already a promise in the cache\n let poolPromise = poolPromiseCache.get(cacheKey);\n if (poolPromise) {\n return poolPromise;\n }\n\n // If not, create a new promise and cache it\n poolPromise = (async () => {\n const suiClient = getSuiClient();\n\n try {\n const o = await suiClient.getObject({\n id: poolInfo[poolName].poolId,\n options: {\n showContent: true,\n },\n });\n\n const poolData =\n poolName === \"ALPHA\" ? (o.data as AlphaPoolType) : (o.data as PoolType);\n\n // Cache the pool object\n poolCache.set(cacheKey, poolData);\n return poolData;\n } catch (e) {\n console.error(`Error in getPool; poolName => ${poolName}`);\n return undefined;\n } finally {\n // Remove the promise from the cache after it resolves\n poolPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n poolPromiseCache.set(cacheKey, poolPromise);\n return poolPromise;\n}\n\nconst cetusPoolCache = new SimpleCache<CetusPoolType>();\nconst cetusPoolPromiseCache = new SimpleCache<\n Promise<CetusPoolType | undefined>\n>();\n\nexport async function getCetusPool(\n poolName: string,\n ignoreCache: boolean = false,\n): Promise<CetusPoolType | undefined> {\n const cacheKey = `pool_${cetusPoolMap[poolName.toUpperCase()]}`;\n if (ignoreCache) {\n cetusPoolCache.delete(cacheKey);\n cetusPoolPromiseCache.delete(cacheKey);\n }\n\n // Check if the pool is already in the cache\n const cachedPool = cetusPoolCache.get(cacheKey);\n if (cachedPool) {\n return cachedPool;\n }\n\n // Check if there is already a promise in the cache\n let cetusPoolPromise = cetusPoolPromiseCache.get(cacheKey);\n if (cetusPoolPromise) {\n return cetusPoolPromise;\n }\n\n // If not, create a new promise and cache it\n cetusPoolPromise = (async () => {\n try {\n const suiClient = getSuiClient();\n\n const o = await suiClient.getObject({\n id: cetusPoolMap[poolName.toUpperCase()],\n options: {\n showContent: true,\n },\n });\n const cetusPool = o.data as CetusPoolType;\n\n // Cache the pool object\n cetusPoolCache.set(cacheKey, cetusPool);\n return cetusPool;\n } catch (e) {\n console.error(`getCetusPool failed for poolName: ${poolName}`);\n console.error(e);\n return undefined;\n } finally {\n // Remove the promise from the cache after it resolves\n cetusPoolPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n cetusPoolPromiseCache.set(cacheKey, cetusPoolPromise);\n return cetusPoolPromise;\n}\n\nconst cetusInvestorCache = new SimpleCache<CetusInvestor>();\nconst cetusInvestorPromiseCache = new SimpleCache<\n Promise<CetusInvestor | undefined>\n>();\n\nexport async function getCetusInvestor(\n poolName: PoolName,\n ignoreCache: boolean = false,\n): Promise<CetusInvestor | undefined> {\n const cacheKey = `investor_${poolInfo[poolName.toUpperCase()].investorId}`;\n if (ignoreCache) {\n cetusInvestorCache.delete(cacheKey);\n cetusInvestorPromiseCache.delete(cacheKey);\n }\n // Check if the investor is already in the cache\n const cachedInvestor = cetusInvestorCache.get(cacheKey);\n if (cachedInvestor) {\n return cachedInvestor;\n }\n\n // Check if there is already a promise in the cache\n let cetusInvestorPromise = cetusInvestorPromiseCache.get(cacheKey);\n if (cetusInvestorPromise) {\n return cetusInvestorPromise;\n }\n\n // If not, create a new promise and cache it\n cetusInvestorPromise = (async () => {\n try {\n const suiClient = getSuiClient();\n\n const o = await suiClient.getObject({\n id: poolInfo[poolName.toUpperCase()].investorId,\n options: {\n showContent: true,\n },\n });\n const cetus_investor = o.data as CetusInvestor;\n\n // Cache the investor object\n cetusInvestorCache.set(cacheKey, cetus_investor);\n return cetus_investor;\n } catch (e) {\n console.error(`getCetusInvestor failed for pool: ${poolName}`);\n return undefined;\n } finally {\n // Remove the promise from the cache after it resolves\n cetusInvestorPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n cetusInvestorPromiseCache.set(cacheKey, cetusInvestorPromise);\n return cetusInvestorPromise;\n}\n\nconst naviInvestorCache = new SimpleCache<\n NaviInvestor & CommonInvestorFields\n>();\nconst naviInvestorPromiseCache = new SimpleCache<\n Promise<(NaviInvestor & CommonInvestorFields) | undefined>\n>();\n\nexport async function getNaviInvestor(\n poolName: SingleAssetPoolNames,\n ignoreCache: boolean = false,\n): Promise<(NaviInvestor & CommonInvestorFields) | undefined> {\n const cacheKey = `investor_${poolInfo[poolName.toUpperCase()].investorId}`;\n if (ignoreCache) {\n naviInvestorCache.delete(cacheKey);\n naviInvestorPromiseCache.delete(cacheKey);\n }\n // Check if the investor is already in the cache\n const cachedInvestor = naviInvestorCache.get(cacheKey);\n if (cachedInvestor) {\n return cachedInvestor;\n }\n\n // Check if there is already a promise in the cache\n let naviInvestorPromise = naviInvestorPromiseCache.get(cacheKey);\n if (naviInvestorPromise) {\n return naviInvestorPromise;\n }\n\n // If not, create a new promise and cache it\n naviInvestorPromise = (async () => {\n try {\n const suiClient = getSuiClient();\n\n const o = await suiClient.getObject({\n id: poolInfo[poolName.toUpperCase()].investorId,\n options: {\n showContent: true,\n },\n });\n const navi_investor = o.data as NaviInvestor & CommonInvestorFields;\n\n // Cache the investor object\n naviInvestorCache.set(cacheKey, navi_investor);\n return navi_investor;\n } catch (e) {\n console.error(`getNaviInvestor failed for pool: ${poolName}`);\n return undefined;\n } finally {\n // Remove the promise from the cache after it resolves\n naviInvestorPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n naviInvestorPromiseCache.set(cacheKey, naviInvestorPromise);\n return naviInvestorPromise;\n}\n\nconst naviVoloExchangeRateCache = new SimpleCache<NaviVoloData>();\nconst naviVoloExchangeRatePromiseCache = new SimpleCache<\n Promise<NaviVoloData>\n>();\n\nexport async function fetchVoloExchangeRate(\n ignoreCache: boolean = false,\n): Promise<NaviVoloData> {\n const apiUrl = \"https://open-api.naviprotocol.io/api/volo/stats\";\n let NaviVoloDetails: NaviVoloData;\n if (ignoreCache) {\n naviVoloExchangeRateCache.clear();\n naviVoloExchangeRatePromiseCache.delete(apiUrl);\n }\n\n const cachedResponse = naviVoloExchangeRateCache.get(apiUrl);\n if (cachedResponse) {\n NaviVoloDetails = cachedResponse;\n } else {\n let cachedPromise = naviVoloExchangeRatePromiseCache.get(apiUrl);\n\n if (!cachedPromise) {\n cachedPromise = fetch(apiUrl)\n .then(async (response) => {\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const data = (await response.json()) as NaviVoloData; // Parse the JSON response\n naviVoloExchangeRateCache.set(apiUrl, data); // Cache the response\n naviVoloExchangeRatePromiseCache.delete(apiUrl); // Remove the promise from the cache\n return data;\n })\n .catch((error) => {\n naviVoloExchangeRatePromiseCache.delete(apiUrl); // Ensure the promise is removed on error\n throw error;\n });\n naviVoloExchangeRatePromiseCache.set(apiUrl, cachedPromise);\n NaviVoloDetails = await cachedPromise;\n }\n return cachedPromise;\n }\n\n return NaviVoloDetails;\n}\n\nexport async function multiGetNaviInvestor(\n poolNames: SingleAssetPoolNames[],\n ignoreCache: boolean = false,\n) {\n const results: {\n [poolName in SingleAssetPoolNames]?:\n | (NaviInvestor & CommonInvestorFields)\n | undefined;\n } = {};\n const missingPoolInvestorIds: string[] = [];\n const missingPoolNames: SingleAssetPoolNames[] = [];\n\n for (const poolName of poolNames) {\n const cacheKey = `investor_${poolInfo[poolName.toUpperCase()].investorId}`;\n\n if (ignoreCache) {\n naviInvestorCache.delete(cacheKey);\n naviInvestorPromiseCache.delete(cacheKey);\n }\n\n // Check if the investor is already cached\n const cachedInvestor = naviInvestorCache.get(cacheKey);\n if (cachedInvestor) {\n results[poolName] = cachedInvestor;\n continue;\n } else {\n // Add to missing list if not in cache\n if (poolInfo[poolName.toUpperCase()].investorId) {\n missingPoolNames.push(poolName);\n missingPoolInvestorIds.push(\n poolInfo[poolName.toUpperCase()].investorId,\n );\n }\n }\n }\n\n try {\n const suiClient = getSuiClient();\n const objects = await suiClient.multiGetObjects({\n ids: missingPoolInvestorIds,\n options: { showContent: true },\n });\n for (let i = 0; i < objects.length; i++) {\n const investor = objects[i].data as NaviInvestor & CommonInvestorFields;\n const cacheKey = `investor_${missingPoolInvestorIds[i]}`;\n naviInvestorCache.set(cacheKey, investor);\n results[missingPoolNames[i]] = investor;\n }\n return results;\n } catch (err) {\n //improve\n console.error(\n \"multiGetNaviInvestor failed for poolNames: \",\n missingPoolNames.join(\", \"),\n );\n throw err;\n }\n}\n\n/*\nfor the missing pools, add a promise, each of those promises waits for there respective object from a map, that map is populated all at once, \nproblem with concurrency\n*/\n// ask how to deal with this kind of probem with high concurrency anf throughput\n"]}
|
|
1
|
+
{"version":3,"file":"getReceipts.js","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getReceipts.ts"],"names":[],"mappings":"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","sourcesContent":["import { PaginatedObjectsResponse } from \"@mysten/sui/client\";\nimport {\n AlphaPoolType,\n CetusInvestor,\n NaviInvestor,\n CommonInvestorFields,\n CetusPoolType,\n CoinAmounts,\n PoolName,\n PoolType,\n Receipt,\n NaviVoloData,\n Investor,\n BluefinInvestor,\n BucketInvestor,\n SingleAssetPoolNames,\n fetchMultiReceipts,\n ReceiptGQL,\n cetusPoolMap,\n bluefinPoolMap,\n} from \"../../index.js\";\nimport { poolInfo } from \"../../common/maps.js\";\nimport { ClmmPoolUtil, TickMath } from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport BN from \"bn.js\";\nimport { Decimal } from \"decimal.js\";\nimport { getSuiClient } from \"../client.js\";\nimport { SimpleCache } from \"../../utils/simpleCache.js\";\n\nexport function convertReceiptGQLToReceipt(receipts: ReceiptGQL[]): Receipt[] {\n const res = receipts.map((receipt) => {\n return {\n objectId: receipt.address,\n version: receipt.version,\n digest: receipt.digest,\n content: {\n dataType: \"moveObject\", // Assuming a fixed value as it's not available in ReceiptA\n type: receipt.contents.type.repr,\n hasPublicTransfer: receipt.hasPublicTransfer,\n fields: {\n id: { id: receipt.contents.json.id },\n image_url: receipt.contents.json.image_url,\n last_acc_reward_per_xtoken: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n contents:\n receipt.contents.json.last_acc_reward_per_xtoken.contents.map(\n (item) => ({\n type: \"unknown\", // Assuming fixed value\n fields: {\n value: item.value,\n key: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n name: item.key.name,\n },\n },\n },\n }),\n ),\n },\n },\n locked_balance: receipt.contents.json.locked_balance\n ? {\n type: \"unknown\", // Assuming fixed value\n fields: {\n head: receipt.contents.json.locked_balance.head,\n id: { id: receipt.contents.json.locked_balance.id },\n size: receipt.contents.json.locked_balance.size,\n tail: receipt.contents.json.locked_balance.tail,\n },\n }\n : undefined,\n name: receipt.contents.json.name,\n owner: receipt.contents.json.owner,\n pending_rewards: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n contents: receipt.contents.json.pending_rewards.contents.map(\n (item) => ({\n type: \"unknown\", // Assuming fixed value\n fields: {\n key: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n name: item.key.name,\n },\n },\n value: item.value,\n },\n }),\n ),\n },\n },\n pool_id: receipt.contents.json.pool_id,\n xTokenBalance: receipt.contents.json.xTokenBalance,\n unlocked_xtokens: receipt.contents.json.unlocked_xtokens ?? undefined,\n },\n },\n };\n });\n return res;\n}\n\nconst receiptsCache = new SimpleCache<Receipt[]>(3600000);\nconst receiptsPromiseCache = new SimpleCache<Promise<Receipt[]>>(3600000);\n\nexport async function getMultiReceipts(address: string) {\n try {\n const receiptMap = await fetchMultiReceipts(address);\n for (const pool of Object.keys(poolInfo)) {\n const cacheKey = `getReceipts-${poolInfo[pool].receiptName}-${address}`;\n let receipt: Receipt[] = [];\n if (receiptMap.has(poolInfo[pool].receiptName)) {\n receipt = convertReceiptGQLToReceipt(\n receiptMap.get(poolInfo[pool].receiptName) as ReceiptGQL[],\n );\n }\n receiptsCache.set(cacheKey, receipt);\n }\n } catch (error) {\n console.error(\"Error fetching receipts from graphQL:\", error);\n // get receipts individually\n const pools = Object.keys(poolInfo);\n const receiptPromises = pools.map((pool) => {\n return getReceipts(pool, address, true);\n });\n const receipts = await Promise.all(receiptPromises);\n receipts.forEach((receipt, index) => {\n const cacheKey = `getReceipts-${poolInfo[pools[index]].receiptName}-${address}`;\n receiptsCache.set(cacheKey, receipt);\n });\n }\n}\n\nexport async function getReceipts(\n poolName: string,\n address: string,\n ignoreCache: boolean,\n): Promise<Receipt[]> {\n const suiClient = getSuiClient();\n const receiptsCacheKey = `getReceipts-${poolInfo[poolName].receiptName}-${address}`;\n if (ignoreCache) {\n receiptsCache.delete(receiptsCacheKey);\n receiptsPromiseCache.delete(receiptsCacheKey);\n }\n const cachedResponse = receiptsCache.get(receiptsCacheKey);\n if (cachedResponse) {\n return cachedResponse;\n }\n //\n const nfts: Receipt[] = [];\n if (poolInfo[poolName].receiptType == \"\") {\n return nfts;\n }\n let cachedPromise = receiptsPromiseCache.get(receiptsCacheKey);\n if (!cachedPromise) {\n cachedPromise = (async (): Promise<Receipt[]> => {\n // const first_package = getConf().ALPHA_FIRST_PACKAGE_ID;\n let currentCursor: string | null | undefined = null;\n while (true) {\n const paginatedObjects: PaginatedObjectsResponse =\n await suiClient.getOwnedObjects({\n owner: address,\n cursor: currentCursor,\n filter: {\n // StructType: `${first_package}::${module}::Receipt`,\n StructType: poolInfo[poolName].receiptType,\n },\n options: {\n showContent: true,\n },\n });\n // Traverse the current page data and push to coins array\n paginatedObjects.data.forEach((obj) => {\n const o = obj.data as Receipt;\n if (o) {\n if (poolInfo[poolName].receiptName === o.content.fields.name) {\n nfts.push(o);\n }\n }\n });\n // Check if there's a next page\n if (paginatedObjects.hasNextPage && paginatedObjects.nextCursor) {\n currentCursor = paginatedObjects.nextCursor;\n } else {\n // No more pages available\n // console.log(\"No more receipts available.\");\n break;\n }\n }\n receiptsCache.set(receiptsCacheKey, nfts);\n receiptsPromiseCache.delete(receiptsCacheKey);\n return nfts;\n })().catch((error) => {\n receiptsPromiseCache.delete(receiptsCacheKey); // Remove the promise from cache\n throw error;\n });\n // const data = await cachedPromise;\n // console.log(\"received cached data\", data);\n receiptsPromiseCache.set(receiptsCacheKey, cachedPromise);\n }\n return cachedPromise;\n}\n\nexport async function getPoolExchangeRate(\n poolName: PoolName,\n ignoreCache: boolean,\n): Promise<Decimal | undefined> {\n let pool;\n try {\n pool = await getPool(poolName, ignoreCache);\n if (pool) {\n const xTokenSupply = new Decimal(pool.content.fields.xTokenSupply);\n let tokensInvested = new Decimal(pool.content.fields.tokensInvested);\n if (poolName == \"ALPHA\") {\n tokensInvested = new Decimal(pool.content.fields.alpha_bal);\n } else if (poolInfo[poolName].parentProtocolName == \"CETUS\") {\n const investor = (await getInvestor(\n poolName,\n ignoreCache,\n )) as CetusInvestor & CommonInvestorFields;\n if (!investor) {\n throw new Error(\n `couldnt fetch investor object for pool: ${poolName}`,\n );\n }\n tokensInvested = new Decimal(pool.content.fields.tokensInvested);\n }\n\n // Check for division by zero\n if (xTokenSupply.eq(0)) {\n console.error(\"Division by zero error: tokensInvested is zero.\");\n return undefined;\n }\n const poolExchangeRate = tokensInvested.div(xTokenSupply);\n return poolExchangeRate;\n }\n } catch (e) {\n console.log(\n `getPoolExchangeRate failed for poolName: ${poolName}, with error ${e}`,\n );\n }\n return undefined;\n}\n\nconst poolCache = new SimpleCache<PoolType | AlphaPoolType>();\nconst poolPromiseCache = new SimpleCache<\n Promise<PoolType | AlphaPoolType | undefined>\n>();\n\nexport async function getMultiPool() {\n let pools = Object.keys(poolInfo);\n pools = pools.filter((pool) => {\n return poolInfo[pool].poolId !== \"\";\n });\n const poolIds = pools.map((pool) => {\n return poolInfo[pool].poolId;\n });\n try {\n const o = await getSuiClient().multiGetObjects({\n ids: poolIds,\n options: {\n showContent: true,\n },\n });\n for (let i = 0; i < pools.length; i = i + 1) {\n const poolData = o[i].data as AlphaPoolType | PoolType;\n const cacheKey = `pool_${poolInfo[pools[i]].poolId}`;\n poolCache.set(cacheKey, poolData);\n }\n } catch (e) {\n console.error(`Error getting multiPools`);\n }\n}\n\nexport async function getPool(\n poolName: string,\n ignoreCache: boolean,\n): Promise<PoolType | AlphaPoolType | undefined> {\n const suiClient = getSuiClient();\n const cacheKey = `pool_${poolInfo[poolName.toUpperCase()].poolId}`;\n\n if (ignoreCache) {\n poolCache.delete(cacheKey);\n poolPromiseCache.delete(cacheKey);\n }\n\n // Check if the pool is already in the cache\n const cachedPool = poolCache.get(cacheKey);\n if (cachedPool) {\n return cachedPool;\n }\n\n // Check if there is already a promise in the cache\n let poolPromise = poolPromiseCache.get(cacheKey);\n if (poolPromise) {\n return poolPromise;\n }\n // If not, create a new promise and cache it\n poolPromise = (async () => {\n try {\n const o = await suiClient.getObject({\n id: poolInfo[poolName].poolId,\n options: {\n showContent: true,\n },\n });\n\n const poolData =\n poolName === \"ALPHA\" ? (o.data as AlphaPoolType) : (o.data as PoolType);\n\n // Cache the pool object\n poolCache.set(cacheKey, poolData);\n return poolData;\n } catch (e) {\n console.error(`Error in getPool; poolName => ${poolName}`);\n return undefined;\n } finally {\n // Remove the promise from the cache after it resolves\n poolPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n poolPromiseCache.set(cacheKey, poolPromise);\n return poolPromise;\n}\n\nconst cetusPoolCache = new SimpleCache<CetusPoolType>();\nconst cetusPoolPromiseCache = new SimpleCache<\n Promise<CetusPoolType | undefined>\n>();\n\nexport async function getMultiParentPool() {\n let pools = Object.keys(poolInfo);\n pools = pools.filter((pool) => {\n return poolInfo[pool].poolId !== \"\";\n });\n const poolIds = pools.map((pool) => {\n return poolInfo[pool].parentPoolId;\n });\n try {\n const o = await getSuiClient().multiGetObjects({\n ids: poolIds,\n options: {\n showContent: true,\n },\n });\n for (let i = 0; i < pools.length; i = i + 1) {\n const poolData = o[i].data as CetusPoolType;\n const cacheKey = `pool_${poolInfo[pools[i]].parentPoolId}`;\n cetusPoolCache.set(cacheKey, poolData);\n }\n } catch (e) {\n console.error(`Error getting multiPools`);\n }\n}\n\nexport async function getParentPool(\n poolName: string,\n ignoreCache: boolean,\n): Promise<CetusPoolType | undefined> {\n const suiClient = getSuiClient();\n const cacheKey = `pool_${cetusPoolMap[poolName.toUpperCase()]}`;\n if (ignoreCache) {\n cetusPoolCache.delete(cacheKey);\n cetusPoolPromiseCache.delete(cacheKey);\n }\n\n // Check if the pool is already in the cache\n const cachedPool = cetusPoolCache.get(cacheKey);\n if (cachedPool) {\n return cachedPool;\n }\n\n // Check if there is already a promise in the cache\n let cetusPoolPromise = cetusPoolPromiseCache.get(cacheKey);\n if (cetusPoolPromise) {\n return cetusPoolPromise;\n }\n // If not, create a new promise and cache it\n cetusPoolPromise = (async () => {\n try {\n const id = poolInfo[poolName]\n ? poolInfo[poolName].parentPoolId\n : cetusPoolMap[poolName]\n ? cetusPoolMap[poolName]\n : bluefinPoolMap[poolName];\n const o = await suiClient.getObject({\n id: id,\n options: {\n showContent: true,\n },\n });\n const cetusPool = o.data as CetusPoolType;\n\n // Cache the pool object\n cetusPoolCache.set(cacheKey, cetusPool);\n return cetusPool;\n } catch (e) {\n console.error(`getCetusPool failed for poolName: ${poolName}`);\n return undefined;\n } finally {\n // Remove the promise from the cache after it resolves\n cetusPoolPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n cetusPoolPromiseCache.set(cacheKey, cetusPoolPromise);\n return cetusPoolPromise;\n}\n\nconst investorCache = new SimpleCache<Investor>();\nconst investorPromiseCache = new SimpleCache<Promise<Investor | undefined>>();\n\nexport async function getMultiInvestor() {\n let pools = Object.keys(poolInfo);\n pools = pools.filter((pool) => {\n return poolInfo[pool].investorId !== \"\";\n });\n const investorIds = pools.map((pool) => {\n return poolInfo[pool].investorId;\n });\n try {\n const o = await getSuiClient().multiGetObjects({\n ids: investorIds,\n options: {\n showContent: true,\n },\n });\n for (let i = 0; i < pools.length; i = i + 1) {\n const investorData = o[i].data as Investor;\n const cacheKey = `investor_${poolInfo[pools[i]].investorId}`;\n investorCache.set(cacheKey, investorData);\n }\n } catch (e) {\n console.error(`Error getting multiPools`);\n }\n}\n\nexport async function getInvestor(\n poolName: PoolName,\n ignoreCache: boolean,\n): Promise<Investor | undefined> {\n const suiClient = getSuiClient();\n const cacheKey = `investor_${poolInfo[poolName.toUpperCase()].investorId}`;\n if (ignoreCache) {\n investorCache.delete(cacheKey);\n investorPromiseCache.delete(cacheKey);\n }\n // Check if the investor is already in the cache\n const cachedInvestor = investorCache.get(cacheKey);\n if (cachedInvestor) {\n return cachedInvestor;\n }\n\n // Check if there is already a promise in the cache\n let cetusInvestorPromise = investorPromiseCache.get(cacheKey);\n if (cetusInvestorPromise) {\n return cetusInvestorPromise;\n }\n // If not, create a new promise and cache it\n cetusInvestorPromise = (async () => {\n try {\n const o = await suiClient.getObject({\n id: poolInfo[poolName.toUpperCase()].investorId,\n options: {\n showContent: true,\n },\n });\n let cetusInvestor;\n if (poolInfo[poolName].parentProtocolName == \"NAVI\") {\n cetusInvestor = o.data as NaviInvestor & CommonInvestorFields;\n } else if (poolInfo[poolName].parentProtocolName == \"BUCKET\") {\n cetusInvestor = o.data as BucketInvestor & CommonInvestorFields;\n } else if (poolInfo[poolName].parentProtocolName == \"BLUEFIN\") {\n cetusInvestor = o.data as BluefinInvestor & CommonInvestorFields;\n } else {\n cetusInvestor = o.data as CetusInvestor & CommonInvestorFields;\n }\n\n // Cache the investor object\n investorCache.set(cacheKey, cetusInvestor);\n return cetusInvestor;\n } catch (e) {\n console.error(`getInvestor failed for pool: ${poolName}`);\n return undefined;\n } finally {\n // Remove the promise from the cache after it resolves\n investorPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n investorPromiseCache.set(cacheKey, cetusInvestorPromise);\n return cetusInvestorPromise;\n}\n\nexport async function fetchVoloExchangeRate(): Promise<NaviVoloData> {\n const apiUrl = \"https://open-api.naviprotocol.io/api/volo/stats\";\n const NaviVoloDetails: NaviVoloData = await fetch(apiUrl)\n .then(async (response) => {\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const data = (await response.json()) as NaviVoloData; // Parse the JSON response\n return data;\n })\n .catch((error) => {\n console.log(\"failed to fetch Navi-volo details\", error);\n throw error;\n });\n return NaviVoloDetails;\n}\n\nexport async function getCoinAmountsFromLiquidity(\n poolName: PoolName,\n liquidity: string,\n ignoreCache: boolean,\n): Promise<[string, string]> {\n const clmmPool = await getParentPool(poolName, ignoreCache);\n const investor = (await getInvestor(poolName, ignoreCache)) as CetusInvestor &\n CommonInvestorFields;\n\n const upper_bound = 443636;\n let lower_tick = Number(investor!.content.fields.lower_tick);\n let upper_tick = Number(investor!.content.fields.upper_tick);\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 if (clmmPool) {\n const liquidityInt = Math.floor(parseFloat(liquidity));\n const coin_amounts: CoinAmounts = ClmmPoolUtil.getCoinAmountFromLiquidity(\n new BN(`${liquidityInt}`),\n new BN(clmmPool.content.fields.current_sqrt_price),\n TickMath.tickIndexToSqrtPriceX64(lower_tick),\n TickMath.tickIndexToSqrtPriceX64(upper_tick),\n true,\n );\n return [coin_amounts.coinA.toString(), coin_amounts.coinB.toString()];\n } else {\n return [\"0\", \"0\"];\n }\n}\n\nexport async function multiGetNaviInvestor(poolNames: SingleAssetPoolNames[]) {\n const results: {\n [poolName in SingleAssetPoolNames]?:\n | (NaviInvestor & CommonInvestorFields)\n | undefined;\n } = {};\n const poolInvestorIds: string[] = [];\n\n for (const poolName of poolNames) {\n poolInvestorIds.push(poolInfo[poolName.toUpperCase()].investorId);\n }\n try {\n const suiClient = getSuiClient();\n const objects = await suiClient.multiGetObjects({\n ids: poolInvestorIds,\n options: { showContent: true },\n });\n for (let i = 0; i < objects.length; i++) {\n const investor = objects[i].data as NaviInvestor & CommonInvestorFields;\n results[poolNames[i]] = investor;\n }\n return results;\n } catch (err) {\n //improve\n console.error(\n \"multiGetNaviInvestor failed for poolNames: \",\n poolNames.join(\", \"),\n );\n throw err;\n }\n}\n\n/*\nfor the missing pools, add a promise, each of those promises waits for there respective object from a map, that map is populated all at once, \nproblem with concurrency\n*/\n// ask how to deal with this kind of probem with high concurrency anf throughput\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Percentage, adjustForSlippage, ClmmPoolUtil, TickMath, d, CetusClmmSDK, } from "@cetusprotocol/cetus-sui-clmm-sdk";
|
|
2
2
|
import BN from "bn.js";
|
|
3
|
-
import {
|
|
3
|
+
import { coinsList } from "../../common/coins.js";
|
|
4
4
|
import { cetusMainnetSDKOptions } from "../../common/cetus_mainnet_config.js";
|
|
5
5
|
import { getLatestPrices } from "../prices.js";
|
|
6
6
|
import { SimpleCache } from "../simpleCache.js";
|
|
@@ -104,7 +104,7 @@ export async function getAlphaPrice(ignoreCache = false) {
|
|
|
104
104
|
cachedPromise = (async () => {
|
|
105
105
|
const cetusGateway = new CetusGateway(cetusMainnetSDKOptions);
|
|
106
106
|
const swapOption = {
|
|
107
|
-
pair: { coinA:
|
|
107
|
+
pair: { coinA: coinsList.ALPHA, coinB: coinsList.SUI },
|
|
108
108
|
senderAddress: "0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e",
|
|
109
109
|
slippage: 1,
|
|
110
110
|
inAmount: new BN(1_000_000_000),
|
|
@@ -129,7 +129,7 @@ export async function getAlphaPrice(ignoreCache = false) {
|
|
|
129
129
|
export async function getUSDYPrice() {
|
|
130
130
|
const cetusGateway = new CetusGateway(cetusMainnetSDKOptions);
|
|
131
131
|
const swapOption = {
|
|
132
|
-
pair: { coinA:
|
|
132
|
+
pair: { coinA: coinsList.USDY, coinB: coinsList.USDC },
|
|
133
133
|
senderAddress: "0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e",
|
|
134
134
|
slippage: 1,
|
|
135
135
|
inAmount: new BN(1_000_000),
|
|
@@ -146,7 +146,7 @@ export async function getUSDYPrice() {
|
|
|
146
146
|
export async function getBUCKPrice() {
|
|
147
147
|
const cetusGateway = new CetusGateway(cetusMainnetSDKOptions);
|
|
148
148
|
const swapOption = {
|
|
149
|
-
pair: { coinA:
|
|
149
|
+
pair: { coinA: coinsList.BUCK, coinB: coinsList.USDC },
|
|
150
150
|
senderAddress: "0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e",
|
|
151
151
|
slippage: 1,
|
|
152
152
|
inAmount: new BN(1_000_000_000),
|
|
@@ -261,8 +261,8 @@ export class CetusGateway {
|
|
|
261
261
|
return txb;
|
|
262
262
|
}
|
|
263
263
|
async createPoolTransactionBlock(options) {
|
|
264
|
-
console.log(d(options.initializePrice),
|
|
265
|
-
const initializeSqrtPrice = TickMath.priceToSqrtPriceX64(d(options.initializePrice),
|
|
264
|
+
console.log(d(options.initializePrice), coinsList[options.coinNameA].expo, coinsList[options.coinNameB].expo);
|
|
265
|
+
const initializeSqrtPrice = TickMath.priceToSqrtPriceX64(d(options.initializePrice), coinsList[options.coinNameA].expo, coinsList[options.coinNameB].expo).toString();
|
|
266
266
|
const current_tick_index = TickMath.sqrtPriceX64ToTickIndex(new BN(Math.floor(parseFloat(initializeSqrtPrice)).toString()));
|
|
267
267
|
// build tick range
|
|
268
268
|
const lowerTick = TickMath.getPrevInitializableTickIndex(new BN(Math.floor(current_tick_index).toString()).toNumber(), new BN(options.tickSpacing.toString()).toNumber());
|
|
@@ -279,8 +279,8 @@ export class CetusGateway {
|
|
|
279
279
|
? liquidityInput.tokenMaxB.toNumber()
|
|
280
280
|
: options.amount;
|
|
281
281
|
console.log({
|
|
282
|
-
coinTypeA:
|
|
283
|
-
coinTypeB:
|
|
282
|
+
coinTypeA: coinsList[options.coinNameA].type,
|
|
283
|
+
coinTypeB: coinsList[options.coinNameB].type,
|
|
284
284
|
tick_spacing: options.tickSpacing,
|
|
285
285
|
initialize_sqrt_price: `${initializeSqrtPrice}`,
|
|
286
286
|
uri: options.imageUrl,
|
|
@@ -292,8 +292,8 @@ export class CetusGateway {
|
|
|
292
292
|
});
|
|
293
293
|
// build creatPoolPayload Payload
|
|
294
294
|
const txb = this.cetusSDK.Pool.creatPoolTransactionPayload({
|
|
295
|
-
coinTypeA:
|
|
296
|
-
coinTypeB:
|
|
295
|
+
coinTypeA: coinsList[options.coinNameA].type,
|
|
296
|
+
coinTypeB: coinsList[options.coinNameB].type,
|
|
297
297
|
tick_spacing: options.tickSpacing,
|
|
298
298
|
initialize_sqrt_price: `${initializeSqrtPrice}`,
|
|
299
299
|
uri: options.imageUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prices.js","sourceRoot":"","sources":["../../../../src/utils/clmm/prices.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n SdkOptions,\n Pool,\n Percentage,\n adjustForSlippage,\n CalculateRatesResult,\n ClmmPoolUtil,\n TickMath,\n d,\n CetusClmmSDK,\n} from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport BN from \"bn.js\";\nimport { Transaction } from \"@mysten/sui/transactions\";\nimport { Coin } from \"../../common/types.js\";\nimport { coins } from \"../../common/coins.js\";\nimport { CetusSwapOptions, CreatePoolOptions } from \"./types.js\";\nimport { cetusMainnetSDKOptions } from \"../../common/cetus_mainnet_config.js\";\nimport { getLatestPrices } from \"../prices.js\";\nimport { SimpleCache } from \"../simpleCache.js\";\n\ninterface PoolData {\n pair: string;\n id: string;\n a2b: boolean;\n}\n\nconst poolData: { [key: string]: PoolData } = {\n \"SUI/USDC\": {\n pair: \"SUI/USDC\",\n id: \"0xcf994611fd4c48e277ce3ffd4d4364c914af2c3cbb05f7bf6facd371de688630\",\n a2b: false,\n },\n \"USDC/SUI\": {\n pair: \"USDC/SUI\",\n id: \"0xcf994611fd4c48e277ce3ffd4d4364c914af2c3cbb05f7bf6facd371de688630\",\n a2b: true,\n },\n \"SUI/USDT\": {\n pair: \"SUI/USDT\",\n id: \"0x06d8af9e6afd27262db436f0d37b304a041f710c3ea1fa4c3a9bab36b3569ad3\",\n a2b: false,\n },\n \"USDT/SUI\": {\n pair: \"USDT/SUI\",\n id: \"0x06d8af9e6afd27262db436f0d37b304a041f710c3ea1fa4c3a9bab36b3569ad3\",\n a2b: true,\n },\n \"USDC/USDT\": {\n pair: \"USDC/USDT\",\n id: \"0xc8d7a1503dc2f9f5b05449a87d8733593e2f0f3e7bffd90541252782e4d2ca20\",\n a2b: false,\n },\n \"USDT/USDC\": {\n pair: \"USDT/USDC\",\n id: \"0xc8d7a1503dc2f9f5b05449a87d8733593e2f0f3e7bffd90541252782e4d2ca20\",\n a2b: true,\n },\n \"SUI/VSUI\": {\n pair: \"SUI/VSUI\",\n id: \"0x6c545e78638c8c1db7a48b282bb8ca79da107993fcb185f75cedc1f5adb2f535\",\n a2b: false,\n },\n \"VSUI/SUI\": {\n pair: \"VSUI/SUI\",\n id: \"0x6c545e78638c8c1db7a48b282bb8ca79da107993fcb185f75cedc1f5adb2f535\",\n a2b: true,\n },\n \"SUI/NAVX\": {\n pair: \"SUI/NAVX\",\n id: \"0x0254747f5ca059a1972cd7f6016485d51392a3fde608107b93bbaebea550f703\",\n a2b: false,\n },\n \"NAVX/SUI\": {\n pair: \"NAVX/SUI\",\n id: \"0x0254747f5ca059a1972cd7f6016485d51392a3fde608107b93bbaebea550f703\",\n a2b: true,\n },\n \"ALPHA/SUI\": {\n pair: \"ALPHA/SUI\",\n id: \"0xda7347c3192a27ddac32e659c9d9cbed6f8c9d1344e605c71c8886d7b787d720\",\n a2b: true,\n },\n \"SUI/ALPHA\": {\n pair: \"ALPHA/SUI\",\n id: \"0xda7347c3192a27ddac32e659c9d9cbed6f8c9d1344e605c71c8886d7b787d720\",\n a2b: false,\n },\n \"USDY/USDC\": {\n pair: \"USDY/USDC\",\n id: \"0x0e809689d04d87f4bd4e660cd1b84bf5448c5a7997e3d22fc480e7e5e0b3f58d\",\n a2b: true,\n },\n \"USDC/USDY\": {\n pair: \"USDY/USDC\",\n id: \"0x0e809689d04d87f4bd4e660cd1b84bf5448c5a7997e3d22fc480e7e5e0b3f58d\",\n a2b: false,\n },\n \"BUCK/USDC\": {\n pair: \"BUCK/USDC\",\n id: \"0x81fe26939ed676dd766358a60445341a06cea407ca6f3671ef30f162c84126d5\",\n a2b: true,\n },\n \"USDC/BUCK\": {\n pair: \"USDC/BUCK\",\n id: \"0x81fe26939ed676dd766358a60445341a06cea407ca6f3671ef30f162c84126d5\",\n a2b: false,\n },\n};\n\nconst alphaPricePromiseCache = new SimpleCache<Promise<number>>(60000);\nconst alphaPriceCache = new SimpleCache<number>(60000);\n\nexport async function getAlphaPrice(\n ignoreCache: boolean = false,\n): Promise<number | undefined> {\n const cacheKey = `getAlphaPrice`;\n if (ignoreCache) {\n alphaPriceCache.delete(cacheKey);\n alphaPricePromiseCache.delete(cacheKey);\n }\n const cachedResponse = alphaPriceCache.get(cacheKey);\n\n if (cachedResponse) {\n return cachedResponse;\n }\n let alphaPrice = 0;\n let cachedPromise = alphaPricePromiseCache.get(cacheKey);\n if (!cachedPromise) {\n cachedPromise = (async (): Promise<number> => {\n const cetusGateway = new CetusGateway(cetusMainnetSDKOptions);\n const swapOption: CetusSwapOptions = {\n pair: { coinA: coins.ALPHA, coinB: coins.SUI },\n senderAddress:\n \"0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e\",\n slippage: 1,\n inAmount: new BN(1_000_000_000),\n };\n const res = await cetusGateway.getPrice(swapOption);\n const [latestSuiPrice] = await getLatestPrices([\"SUI/USD\"], false);\n if (latestSuiPrice) {\n alphaPrice =\n res.estimatedAmountOut.toNumber() * Number(latestSuiPrice) * 1e-9;\n alphaPriceCache.set(cacheKey, alphaPrice);\n alphaPricePromiseCache.delete(cacheKey); // Remove the promise from cache\n }\n return alphaPrice;\n })().catch((error) => {\n alphaPricePromiseCache.delete(cacheKey); // Remove the promise from cache\n throw error;\n });\n\n alphaPricePromiseCache.set(cacheKey, cachedPromise);\n }\n\n return cachedPromise;\n}\n\nexport async function getUSDYPrice(): Promise<number | undefined> {\n const cetusGateway = new CetusGateway(cetusMainnetSDKOptions);\n const swapOption: CetusSwapOptions = {\n pair: { coinA: coins.USDY, coinB: coins.USDC },\n senderAddress:\n \"0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e\",\n slippage: 1,\n inAmount: new BN(1_000_000),\n };\n const res = await cetusGateway.getPrice(swapOption);\n const [latestUSDCPrice] = await getLatestPrices([\"USDC/USD\"], false);\n if (latestUSDCPrice) {\n return res.estimatedAmountOut.toNumber() * Number(latestUSDCPrice) * 1e-6;\n } else {\n return undefined;\n }\n}\n\nexport async function getBUCKPrice(): Promise<number | undefined> {\n const cetusGateway = new CetusGateway(cetusMainnetSDKOptions);\n const swapOption: CetusSwapOptions = {\n pair: { coinA: coins.BUCK, coinB: coins.USDC },\n senderAddress:\n \"0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e\",\n slippage: 1,\n inAmount: new BN(1_000_000_000),\n };\n const res = await cetusGateway.getPrice(swapOption);\n const [latestUSDCPrice] = await getLatestPrices([\"USDC/USD\"], false);\n if (latestUSDCPrice) {\n return res.estimatedAmountOut.toNumber() * Number(latestUSDCPrice) * 1e-6;\n } else {\n return undefined;\n }\n}\n\nexport async function getPriceFromCetus(coinType: string): Promise<string> {\n return coinType;\n}\n\nexport class CetusGateway {\n private cetusSDK: CetusClmmSDK;\n\n constructor(sdkOptions: SdkOptions) {\n this.cetusSDK = new CetusClmmSDK(sdkOptions);\n this.cetusSDK.senderAddress = sdkOptions.simulationAccount.address;\n }\n\n async getPools(pairs: { coinA?: Coin; coinB?: Coin }[]) {\n const allPools = await this.cetusSDK.Pool.getPoolsWithPage([]);\n const matchedPools: Pool[] = [];\n\n pairs.forEach((pair) => {\n const filteredPools: Pool[] = allPools.filter((pool: Pool) => {\n if (pair.coinA && pair.coinB) {\n return (\n (pool.coinTypeA === pair.coinA.type &&\n pool.coinTypeB === pair.coinB.type) ||\n (pool.coinTypeA === pair.coinB.type &&\n pool.coinTypeB === pair.coinA.type)\n );\n } else if (pair.coinA && !pair.coinB) {\n return (\n pool.coinTypeA === pair.coinA.type ||\n pool.coinTypeB === pair.coinA.type\n );\n } else if (!pair.coinA && pair.coinB) {\n return (\n pool.coinTypeB === pair.coinB.type ||\n pool.coinTypeB === pair.coinB.type\n );\n } else {\n return undefined;\n }\n });\n matchedPools.push(...filteredPools);\n });\n\n console.log(matchedPools);\n console.log(`Matched pools for specified pairs: ${matchedPools.length}`);\n console.log(`Total pools: ${allPools.length}`);\n return matchedPools;\n }\n\n async getPrice(options: CetusSwapOptions): Promise<CalculateRatesResult> {\n const { pair, inAmount, outAmount } = options;\n const poolDatum = poolData[pair.coinA.name + \"/\" + pair.coinB.name];\n let amount: BN = new BN(0);\n let byAmountIn: boolean = true;\n if (inAmount) {\n byAmountIn = true;\n amount = inAmount;\n } else if (outAmount) {\n byAmountIn = false;\n amount = outAmount;\n }\n\n const pool = await this.cetusSDK.Pool.getPool(poolDatum.id);\n\n const swapTicks = await this.cetusSDK.Pool.fetchTicks({\n pool_id: pool.poolAddress,\n coinTypeA: pool.coinTypeA,\n coinTypeB: pool.coinTypeB,\n });\n\n const res = this.cetusSDK.Swap.calculateRates({\n decimalsA: pair.coinA.expo,\n decimalsB: pair.coinB.expo,\n a2b: poolDatum.a2b,\n byAmountIn,\n amount,\n swapTicks,\n currentPool: pool,\n });\n\n return res;\n }\n\n async getTransaction(options: CetusSwapOptions): Promise<Transaction> {\n const res = await this.getPrice(options);\n\n const { pair, senderAddress, slippage, inAmount, outAmount } = options;\n const poolDatum = poolData[pair.coinA.name + \"/\" + pair.coinB.name];\n const poolID = poolDatum.id;\n const pool = await this.cetusSDK.Pool.getPool(poolID);\n\n let byAmountIn: boolean = true;\n if (inAmount) {\n byAmountIn = true;\n } else if (outAmount) {\n byAmountIn = false;\n }\n\n const slippagePercentage = new Percentage(\n new BN(Math.floor(slippage * 100).toString()),\n new BN(100),\n );\n const toAmount = byAmountIn\n ? res.estimatedAmountOut\n : res.estimatedAmountIn;\n const amountLimit = adjustForSlippage(\n toAmount,\n slippagePercentage,\n !byAmountIn,\n );\n // TransactionBlock\n this.cetusSDK.senderAddress = senderAddress;\n const txb = this.cetusSDK.Swap.createSwapTransactionPayload({\n pool_id: pool.poolAddress,\n coinTypeA: pool.coinTypeA,\n coinTypeB: pool.coinTypeB,\n a2b: poolDatum.a2b,\n by_amount_in: byAmountIn,\n amount: res.amount.toString(),\n amount_limit: amountLimit.toString(),\n });\n\n return txb;\n }\n\n async createPoolTransactionBlock(\n options: CreatePoolOptions,\n ): Promise<Transaction> {\n console.log(\n d(options.initializePrice),\n coins[options.coinNameA].expo,\n coins[options.coinNameB].expo,\n );\n\n const initializeSqrtPrice = TickMath.priceToSqrtPriceX64(\n d(options.initializePrice),\n coins[options.coinNameA].expo,\n coins[options.coinNameB].expo,\n ).toString();\n\n const current_tick_index = TickMath.sqrtPriceX64ToTickIndex(\n new BN(Math.floor(parseFloat(initializeSqrtPrice)).toString()),\n );\n\n // build tick range\n const lowerTick = TickMath.getPrevInitializableTickIndex(\n new BN(Math.floor(current_tick_index).toString()).toNumber(),\n new BN(options.tickSpacing.toString()).toNumber(),\n );\n const upperTick = TickMath.getNextInitializableTickIndex(\n new BN(Math.floor(current_tick_index).toString()).toNumber(),\n new BN(options.tickSpacing.toString()).toNumber(),\n );\n\n // slippage value 0.05 means 5%\n const slippage = 0.01;\n // Estimate liquidity and token amount from one amounts\n const liquidityInput = ClmmPoolUtil.estLiquidityAndcoinAmountFromOneAmounts(\n lowerTick,\n upperTick,\n new BN(options.amount.toString()),\n options.isAmountA,\n true,\n slippage,\n new BN(initializeSqrtPrice.toString()),\n );\n\n // Estimate token a and token b amount\n const amount_a = options.isAmountA\n ? options.amount\n : liquidityInput.tokenMaxA.toNumber();\n const amount_b = options.isAmountA\n ? liquidityInput.tokenMaxB.toNumber()\n : options.amount;\n\n console.log({\n coinTypeA: coins[options.coinNameA].type,\n coinTypeB: coins[options.coinNameB].type,\n tick_spacing: options.tickSpacing,\n initialize_sqrt_price: `${initializeSqrtPrice}`,\n uri: options.imageUrl,\n amount_a: amount_a,\n amount_b: amount_b,\n fix_amount_a: options.isAmountA,\n tick_lower: lowerTick,\n tick_upper: upperTick,\n });\n\n // build creatPoolPayload Payload\n const txb = this.cetusSDK.Pool.creatPoolTransactionPayload({\n coinTypeA: coins[options.coinNameA].type,\n coinTypeB: coins[options.coinNameB].type,\n tick_spacing: options.tickSpacing,\n initialize_sqrt_price: `${initializeSqrtPrice}`,\n uri: options.imageUrl,\n amount_a: amount_a,\n amount_b: amount_b,\n fix_amount_a: options.isAmountA,\n tick_lower: lowerTick,\n tick_upper: upperTick,\n });\n\n return txb;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"prices.js","sourceRoot":"","sources":["../../../../src/utils/clmm/prices.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n SdkOptions,\n Pool,\n Percentage,\n adjustForSlippage,\n CalculateRatesResult,\n ClmmPoolUtil,\n TickMath,\n d,\n CetusClmmSDK,\n} from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport BN from \"bn.js\";\nimport { Transaction } from \"@mysten/sui/transactions\";\nimport { Coin } from \"../../common/types.js\";\nimport { coinsList } from \"../../common/coins.js\";\nimport { CetusSwapOptions, CreatePoolOptions } from \"./types.js\";\nimport { cetusMainnetSDKOptions } from \"../../common/cetus_mainnet_config.js\";\nimport { getLatestPrices } from \"../prices.js\";\nimport { SimpleCache } from \"../simpleCache.js\";\n\ninterface PoolData {\n pair: string;\n id: string;\n a2b: boolean;\n}\n\nconst poolData: { [key: string]: PoolData } = {\n \"SUI/USDC\": {\n pair: \"SUI/USDC\",\n id: \"0xcf994611fd4c48e277ce3ffd4d4364c914af2c3cbb05f7bf6facd371de688630\",\n a2b: false,\n },\n \"USDC/SUI\": {\n pair: \"USDC/SUI\",\n id: \"0xcf994611fd4c48e277ce3ffd4d4364c914af2c3cbb05f7bf6facd371de688630\",\n a2b: true,\n },\n \"SUI/USDT\": {\n pair: \"SUI/USDT\",\n id: \"0x06d8af9e6afd27262db436f0d37b304a041f710c3ea1fa4c3a9bab36b3569ad3\",\n a2b: false,\n },\n \"USDT/SUI\": {\n pair: \"USDT/SUI\",\n id: \"0x06d8af9e6afd27262db436f0d37b304a041f710c3ea1fa4c3a9bab36b3569ad3\",\n a2b: true,\n },\n \"USDC/USDT\": {\n pair: \"USDC/USDT\",\n id: \"0xc8d7a1503dc2f9f5b05449a87d8733593e2f0f3e7bffd90541252782e4d2ca20\",\n a2b: false,\n },\n \"USDT/USDC\": {\n pair: \"USDT/USDC\",\n id: \"0xc8d7a1503dc2f9f5b05449a87d8733593e2f0f3e7bffd90541252782e4d2ca20\",\n a2b: true,\n },\n \"SUI/VSUI\": {\n pair: \"SUI/VSUI\",\n id: \"0x6c545e78638c8c1db7a48b282bb8ca79da107993fcb185f75cedc1f5adb2f535\",\n a2b: false,\n },\n \"VSUI/SUI\": {\n pair: \"VSUI/SUI\",\n id: \"0x6c545e78638c8c1db7a48b282bb8ca79da107993fcb185f75cedc1f5adb2f535\",\n a2b: true,\n },\n \"SUI/NAVX\": {\n pair: \"SUI/NAVX\",\n id: \"0x0254747f5ca059a1972cd7f6016485d51392a3fde608107b93bbaebea550f703\",\n a2b: false,\n },\n \"NAVX/SUI\": {\n pair: \"NAVX/SUI\",\n id: \"0x0254747f5ca059a1972cd7f6016485d51392a3fde608107b93bbaebea550f703\",\n a2b: true,\n },\n \"ALPHA/SUI\": {\n pair: \"ALPHA/SUI\",\n id: \"0xda7347c3192a27ddac32e659c9d9cbed6f8c9d1344e605c71c8886d7b787d720\",\n a2b: true,\n },\n \"SUI/ALPHA\": {\n pair: \"ALPHA/SUI\",\n id: \"0xda7347c3192a27ddac32e659c9d9cbed6f8c9d1344e605c71c8886d7b787d720\",\n a2b: false,\n },\n \"USDY/USDC\": {\n pair: \"USDY/USDC\",\n id: \"0x0e809689d04d87f4bd4e660cd1b84bf5448c5a7997e3d22fc480e7e5e0b3f58d\",\n a2b: true,\n },\n \"USDC/USDY\": {\n pair: \"USDY/USDC\",\n id: \"0x0e809689d04d87f4bd4e660cd1b84bf5448c5a7997e3d22fc480e7e5e0b3f58d\",\n a2b: false,\n },\n \"BUCK/USDC\": {\n pair: \"BUCK/USDC\",\n id: \"0x81fe26939ed676dd766358a60445341a06cea407ca6f3671ef30f162c84126d5\",\n a2b: true,\n },\n \"USDC/BUCK\": {\n pair: \"USDC/BUCK\",\n id: \"0x81fe26939ed676dd766358a60445341a06cea407ca6f3671ef30f162c84126d5\",\n a2b: false,\n },\n};\n\nconst alphaPricePromiseCache = new SimpleCache<Promise<number>>(60000);\nconst alphaPriceCache = new SimpleCache<number>(60000);\n\nexport async function getAlphaPrice(\n ignoreCache: boolean = false,\n): Promise<number | undefined> {\n const cacheKey = `getAlphaPrice`;\n if (ignoreCache) {\n alphaPriceCache.delete(cacheKey);\n alphaPricePromiseCache.delete(cacheKey);\n }\n const cachedResponse = alphaPriceCache.get(cacheKey);\n\n if (cachedResponse) {\n return cachedResponse;\n }\n let alphaPrice = 0;\n let cachedPromise = alphaPricePromiseCache.get(cacheKey);\n if (!cachedPromise) {\n cachedPromise = (async (): Promise<number> => {\n const cetusGateway = new CetusGateway(cetusMainnetSDKOptions);\n const swapOption: CetusSwapOptions = {\n pair: { coinA: coinsList.ALPHA, coinB: coinsList.SUI },\n senderAddress:\n \"0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e\",\n slippage: 1,\n inAmount: new BN(1_000_000_000),\n };\n const res = await cetusGateway.getPrice(swapOption);\n const [latestSuiPrice] = await getLatestPrices([\"SUI/USD\"], false);\n if (latestSuiPrice) {\n alphaPrice =\n res.estimatedAmountOut.toNumber() * Number(latestSuiPrice) * 1e-9;\n alphaPriceCache.set(cacheKey, alphaPrice);\n alphaPricePromiseCache.delete(cacheKey); // Remove the promise from cache\n }\n return alphaPrice;\n })().catch((error) => {\n alphaPricePromiseCache.delete(cacheKey); // Remove the promise from cache\n throw error;\n });\n\n alphaPricePromiseCache.set(cacheKey, cachedPromise);\n }\n\n return cachedPromise;\n}\n\nexport async function getUSDYPrice(): Promise<number | undefined> {\n const cetusGateway = new CetusGateway(cetusMainnetSDKOptions);\n const swapOption: CetusSwapOptions = {\n pair: { coinA: coinsList.USDY, coinB: coinsList.USDC },\n senderAddress:\n \"0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e\",\n slippage: 1,\n inAmount: new BN(1_000_000),\n };\n const res = await cetusGateway.getPrice(swapOption);\n const [latestUSDCPrice] = await getLatestPrices([\"USDC/USD\"], false);\n if (latestUSDCPrice) {\n return res.estimatedAmountOut.toNumber() * Number(latestUSDCPrice) * 1e-6;\n } else {\n return undefined;\n }\n}\n\nexport async function getBUCKPrice(): Promise<number | undefined> {\n const cetusGateway = new CetusGateway(cetusMainnetSDKOptions);\n const swapOption: CetusSwapOptions = {\n pair: { coinA: coinsList.BUCK, coinB: coinsList.USDC },\n senderAddress:\n \"0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e\",\n slippage: 1,\n inAmount: new BN(1_000_000_000),\n };\n const res = await cetusGateway.getPrice(swapOption);\n const [latestUSDCPrice] = await getLatestPrices([\"USDC/USD\"], false);\n if (latestUSDCPrice) {\n return res.estimatedAmountOut.toNumber() * Number(latestUSDCPrice) * 1e-6;\n } else {\n return undefined;\n }\n}\n\nexport async function getPriceFromCetus(coinType: string): Promise<string> {\n return coinType;\n}\n\nexport class CetusGateway {\n private cetusSDK: CetusClmmSDK;\n\n constructor(sdkOptions: SdkOptions) {\n this.cetusSDK = new CetusClmmSDK(sdkOptions);\n this.cetusSDK.senderAddress = sdkOptions.simulationAccount.address;\n }\n\n async getPools(pairs: { coinA?: Coin; coinB?: Coin }[]) {\n const allPools = await this.cetusSDK.Pool.getPoolsWithPage([]);\n const matchedPools: Pool[] = [];\n\n pairs.forEach((pair) => {\n const filteredPools: Pool[] = allPools.filter((pool: Pool) => {\n if (pair.coinA && pair.coinB) {\n return (\n (pool.coinTypeA === pair.coinA.type &&\n pool.coinTypeB === pair.coinB.type) ||\n (pool.coinTypeA === pair.coinB.type &&\n pool.coinTypeB === pair.coinA.type)\n );\n } else if (pair.coinA && !pair.coinB) {\n return (\n pool.coinTypeA === pair.coinA.type ||\n pool.coinTypeB === pair.coinA.type\n );\n } else if (!pair.coinA && pair.coinB) {\n return (\n pool.coinTypeB === pair.coinB.type ||\n pool.coinTypeB === pair.coinB.type\n );\n } else {\n return undefined;\n }\n });\n matchedPools.push(...filteredPools);\n });\n\n console.log(matchedPools);\n console.log(`Matched pools for specified pairs: ${matchedPools.length}`);\n console.log(`Total pools: ${allPools.length}`);\n return matchedPools;\n }\n\n async getPrice(options: CetusSwapOptions): Promise<CalculateRatesResult> {\n const { pair, inAmount, outAmount } = options;\n const poolDatum = poolData[pair.coinA.name + \"/\" + pair.coinB.name];\n let amount: BN = new BN(0);\n let byAmountIn: boolean = true;\n if (inAmount) {\n byAmountIn = true;\n amount = inAmount;\n } else if (outAmount) {\n byAmountIn = false;\n amount = outAmount;\n }\n\n const pool = await this.cetusSDK.Pool.getPool(poolDatum.id);\n\n const swapTicks = await this.cetusSDK.Pool.fetchTicks({\n pool_id: pool.poolAddress,\n coinTypeA: pool.coinTypeA,\n coinTypeB: pool.coinTypeB,\n });\n\n const res = this.cetusSDK.Swap.calculateRates({\n decimalsA: pair.coinA.expo,\n decimalsB: pair.coinB.expo,\n a2b: poolDatum.a2b,\n byAmountIn,\n amount,\n swapTicks,\n currentPool: pool,\n });\n\n return res;\n }\n\n async getTransaction(options: CetusSwapOptions): Promise<Transaction> {\n const res = await this.getPrice(options);\n\n const { pair, senderAddress, slippage, inAmount, outAmount } = options;\n const poolDatum = poolData[pair.coinA.name + \"/\" + pair.coinB.name];\n const poolID = poolDatum.id;\n const pool = await this.cetusSDK.Pool.getPool(poolID);\n\n let byAmountIn: boolean = true;\n if (inAmount) {\n byAmountIn = true;\n } else if (outAmount) {\n byAmountIn = false;\n }\n\n const slippagePercentage = new Percentage(\n new BN(Math.floor(slippage * 100).toString()),\n new BN(100),\n );\n const toAmount = byAmountIn\n ? res.estimatedAmountOut\n : res.estimatedAmountIn;\n const amountLimit = adjustForSlippage(\n toAmount,\n slippagePercentage,\n !byAmountIn,\n );\n // TransactionBlock\n this.cetusSDK.senderAddress = senderAddress;\n const txb = this.cetusSDK.Swap.createSwapTransactionPayload({\n pool_id: pool.poolAddress,\n coinTypeA: pool.coinTypeA,\n coinTypeB: pool.coinTypeB,\n a2b: poolDatum.a2b,\n by_amount_in: byAmountIn,\n amount: res.amount.toString(),\n amount_limit: amountLimit.toString(),\n });\n\n return txb;\n }\n\n async createPoolTransactionBlock(\n options: CreatePoolOptions,\n ): Promise<Transaction> {\n console.log(\n d(options.initializePrice),\n coinsList[options.coinNameA].expo,\n coinsList[options.coinNameB].expo,\n );\n\n const initializeSqrtPrice = TickMath.priceToSqrtPriceX64(\n d(options.initializePrice),\n coinsList[options.coinNameA].expo,\n coinsList[options.coinNameB].expo,\n ).toString();\n\n const current_tick_index = TickMath.sqrtPriceX64ToTickIndex(\n new BN(Math.floor(parseFloat(initializeSqrtPrice)).toString()),\n );\n\n // build tick range\n const lowerTick = TickMath.getPrevInitializableTickIndex(\n new BN(Math.floor(current_tick_index).toString()).toNumber(),\n new BN(options.tickSpacing.toString()).toNumber(),\n );\n const upperTick = TickMath.getNextInitializableTickIndex(\n new BN(Math.floor(current_tick_index).toString()).toNumber(),\n new BN(options.tickSpacing.toString()).toNumber(),\n );\n\n // slippage value 0.05 means 5%\n const slippage = 0.01;\n // Estimate liquidity and token amount from one amounts\n const liquidityInput = ClmmPoolUtil.estLiquidityAndcoinAmountFromOneAmounts(\n lowerTick,\n upperTick,\n new BN(options.amount.toString()),\n options.isAmountA,\n true,\n slippage,\n new BN(initializeSqrtPrice.toString()),\n );\n\n // Estimate token a and token b amount\n const amount_a = options.isAmountA\n ? options.amount\n : liquidityInput.tokenMaxA.toNumber();\n const amount_b = options.isAmountA\n ? liquidityInput.tokenMaxB.toNumber()\n : options.amount;\n\n console.log({\n coinTypeA: coinsList[options.coinNameA].type,\n coinTypeB: coinsList[options.coinNameB].type,\n tick_spacing: options.tickSpacing,\n initialize_sqrt_price: `${initializeSqrtPrice}`,\n uri: options.imageUrl,\n amount_a: amount_a,\n amount_b: amount_b,\n fix_amount_a: options.isAmountA,\n tick_lower: lowerTick,\n tick_upper: upperTick,\n });\n\n // build creatPoolPayload Payload\n const txb = this.cetusSDK.Pool.creatPoolTransactionPayload({\n coinTypeA: coinsList[options.coinNameA].type,\n coinTypeB: coinsList[options.coinNameB].type,\n tick_spacing: options.tickSpacing,\n initialize_sqrt_price: `${initializeSqrtPrice}`,\n uri: options.imageUrl,\n amount_a: amount_a,\n amount_b: amount_b,\n fix_amount_a: options.isAmountA,\n tick_lower: lowerTick,\n tick_upper: upperTick,\n });\n\n return txb;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getHoldersFromTransactionsUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/getHoldersFromTransactionsUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAGL,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAiBrB,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,iBAAiB,EAAE,GAC5B,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAuBrC;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,oBAAoB,GAC3B,MAAM,GAAG,SAAS,CAcpB;
|
|
1
|
+
{"version":3,"file":"getHoldersFromTransactionsUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/getHoldersFromTransactionsUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAGL,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAiBrB,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,iBAAiB,EAAE,GAC5B,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAuBrC;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,oBAAoB,GAC3B,MAAM,GAAG,SAAS,CAcpB;AAqGD,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GACrC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAkB5B"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { poolIdPoolNameMap,
|
|
1
|
+
import { poolIdPoolNameMap, doubleAssetPoolCoinMap, getPoolExchangeRateMap, singleAssetPoolCoinMap, } from "../common/maps.js";
|
|
2
2
|
import { Decimal } from "decimal.js";
|
|
3
3
|
import { BN } from "bn.js";
|
|
4
4
|
import { ClmmPoolUtil, TickMath, } from "@cetusprotocol/cetus-sui-clmm-sdk";
|
|
5
|
-
import {
|
|
5
|
+
import { coinsList } from "../common/coins.js";
|
|
6
6
|
export async function parseTokensFromReceipts(receipts) {
|
|
7
7
|
let userTokens = [];
|
|
8
8
|
for (const receipt of receipts) {
|
|
@@ -60,10 +60,10 @@ function doubleAssetliquidityToUSD(params) {
|
|
|
60
60
|
coin_amounts.coinB.toNumber(),
|
|
61
61
|
];
|
|
62
62
|
const ten = new Decimal(10);
|
|
63
|
-
const coin1 =
|
|
64
|
-
const coin2 =
|
|
65
|
-
const amount1 = new Decimal(coinAmounts[0]).div(ten.pow(
|
|
66
|
-
const amount2 = new Decimal(coinAmounts[1]).div(ten.pow(
|
|
63
|
+
const coin1 = doubleAssetPoolCoinMap[pool].coin1;
|
|
64
|
+
const coin2 = doubleAssetPoolCoinMap[pool].coin2;
|
|
65
|
+
const amount1 = new Decimal(coinAmounts[0]).div(ten.pow(coinsList[coin1].expo));
|
|
66
|
+
const amount2 = new Decimal(coinAmounts[1]).div(ten.pow(coinsList[coin2].expo));
|
|
67
67
|
const priceOfCoin1 = tokenPriceMap.get(coin1);
|
|
68
68
|
const priceOfCoin2 = tokenPriceMap.get(coin2);
|
|
69
69
|
if (priceOfCoin1 && priceOfCoin2) {
|
|
@@ -93,9 +93,9 @@ function alphaLiquidityToUSD(liquidity, tokenPriceMap) {
|
|
|
93
93
|
function singleAssetLiquidityToUSD(liquidity, pool, tokenPriceMap) {
|
|
94
94
|
try {
|
|
95
95
|
const singlePool = pool;
|
|
96
|
-
const coin =
|
|
97
|
-
let amount = new Decimal(liquidity).div(Math.pow(10, 9 -
|
|
98
|
-
amount = amount.div(new Decimal(Math.pow(10,
|
|
96
|
+
const coin = singleAssetPoolCoinMap[singlePool].coin;
|
|
97
|
+
let amount = new Decimal(liquidity).div(Math.pow(10, 9 - coinsList[coin].expo));
|
|
98
|
+
amount = amount.div(new Decimal(Math.pow(10, coinsList[coin].expo)));
|
|
99
99
|
const priceOfCoin = tokenPriceMap.get(coin);
|
|
100
100
|
if (priceOfCoin) {
|
|
101
101
|
const amountInUSD = amount.mul(priceOfCoin);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getHoldersFromTransactionsUtils.js","sourceRoot":"","sources":["../../../src/utils/getHoldersFromTransactionsUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import { SuiObjectResponse } from \"@mysten/sui/client\";\nimport {\n AlphaReceiptFields,\n OtherReceiptFields,\n LiquidityToUsdParams,\n} from \"../types.js\";\nimport {\n poolIdPoolNameMap,\n poolCoinPairMap,\n getPoolExchangeRateMap,\n poolCoinMap,\n} from \"../common/maps.js\";\nimport { Decimal } from \"decimal.js\";\nimport { BN } from \"bn.js\";\nimport { PoolName, CoinName, DoubleAssetPoolNames } from \"../common/types.js\";\nimport {\n ClmmPoolUtil,\n TickMath,\n CoinAmounts,\n} from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport { coins } from \"../common/coins.js\";\n\nexport async function parseTokensFromReceipts(\n receipts: SuiObjectResponse[],\n): Promise<[string, string, string][]> {\n let userTokens: [string, string, string][] = [];\n\n for (const receipt of receipts) {\n const nftData = receipt.data?.content;\n if (nftData?.dataType === \"moveObject\") {\n const fields = nftData.fields as AlphaReceiptFields | OtherReceiptFields;\n const owner = fields.owner;\n const pool = poolIdPoolNameMap[fields.pool_id] as string;\n const xTokens = fields.xTokenBalance;\n userTokens.push([owner, pool, xTokens]);\n }\n }\n const conversionMap = await getPoolExchangeRateMap();\n userTokens = userTokens.map(([owner, pool, xTokens]) => {\n const conversion = new Decimal(\n conversionMap.get(pool as PoolName) as string,\n );\n const tokens = new Decimal(xTokens).mul(conversion).toFixed(4).toString();\n return [owner, pool, tokens];\n });\n\n return userTokens;\n}\n\nexport function liquidityToUsd(\n params: LiquidityToUsdParams,\n): string | undefined {\n let holdingUSD: string | undefined;\n if (params.poolName.slice(0, 4) === \"NAVI\") {\n holdingUSD = singleAssetLiquidityToUSD(\n params.liquidity,\n params.poolName,\n params.tokenPriceMap,\n );\n } else if (params.poolName === \"ALPHA\") {\n holdingUSD = alphaLiquidityToUSD(params.liquidity, params.tokenPriceMap);\n } else {\n holdingUSD = doubleAssetliquidityToUSD(params);\n }\n return holdingUSD;\n}\nfunction doubleAssetliquidityToUSD(params: {\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}): string | undefined {\n const pool = params.poolName;\n const liquidity = params.liquidity;\n const ticksCetusMap = params.ticksCetusMap;\n const sqrtPriceCetusMap = params.sqrtPriceCetusMap;\n const tokenPriceMap = params.tokenPriceMap;\n\n try {\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 = poolCoinPairMap[pool as DoubleAssetPoolNames].coinA;\n const coin2 = poolCoinPairMap[pool as DoubleAssetPoolNames].coinB;\n\n const amount1 = new Decimal(coinAmounts[0]).div(ten.pow(coins[coin1].expo));\n const amount2 = new Decimal(coinAmounts[1]).div(ten.pow(coins[coin2].expo));\n const priceOfCoin1 = tokenPriceMap.get(coin1);\n const priceOfCoin2 = tokenPriceMap.get(coin2);\n if (priceOfCoin1 && priceOfCoin2) {\n const amount = amount1.mul(priceOfCoin1).add(amount2.mul(priceOfCoin2));\n return amount.toFixed(2).toString();\n }\n } catch (error) {\n console.error(`Error fetching price of ${pool}:`, error);\n return undefined;\n }\n}\nfunction alphaLiquidityToUSD(\n liquidity: string,\n tokenPriceMap: Map<CoinName, string>,\n) {\n try {\n const priceOfAlpha = tokenPriceMap.get(\"ALPHA\");\n if (priceOfAlpha) {\n let amount = new Decimal(liquidity).div(1e9);\n amount = amount.mul(priceOfAlpha);\n return amount.toFixed(2).toString();\n }\n } catch (error) {\n console.error(`Error fetching price of ALPHA:`, error);\n return undefined;\n }\n}\nfunction singleAssetLiquidityToUSD(\n liquidity: string,\n pool: string,\n tokenPriceMap: Map<CoinName, string>,\n) {\n try {\n const singlePool = pool as Extract<\n PoolName,\n \"NAVI-VSUI\" | \"NAVI-SUI\" | \"NAVI-WETH\" | \"NAVI-USDC\" | \"NAVI-USDT\"\n >;\n const coin = poolCoinMap[singlePool];\n let amount = new Decimal(liquidity).div(Math.pow(10, 9 - coins[coin].expo));\n amount = amount.div(new Decimal(Math.pow(10, coins[coin].expo)));\n const priceOfCoin = tokenPriceMap.get(coin);\n if (priceOfCoin) {\n const amountInUSD = amount.mul(priceOfCoin);\n return amountInUSD.toFixed(2).toString();\n }\n } catch (error) {\n console.error(`Error fetching price of ${pool}:`, error);\n return undefined;\n }\n}\n\nexport function mergeDuplicateHoldings(\n userTokens: [string, string, string][],\n): [string, string, string][] {\n const address_poolValueMap = new Map<string, number>();\n userTokens.forEach(([address, pool, value]) => {\n const key = `${address}_${pool}`;\n const numericValue = parseFloat(value);\n if (address_poolValueMap.has(key)) {\n address_poolValueMap.set(\n key,\n address_poolValueMap.get(key)! + numericValue,\n );\n } else {\n address_poolValueMap.set(key, numericValue);\n }\n });\n return Array.from(address_poolValueMap.entries()).map(([key, value]) => {\n const [address, pool] = key.split(\"_\");\n return [address, pool, value.toFixed(2).toString()];\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"getHoldersFromTransactionsUtils.js","sourceRoot":"","sources":["../../../src/utils/getHoldersFromTransactionsUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import { SuiObjectResponse } from \"@mysten/sui/client\";\nimport {\n AlphaReceiptFields,\n OtherReceiptFields,\n LiquidityToUsdParams,\n} from \"../types.js\";\nimport {\n poolIdPoolNameMap,\n doubleAssetPoolCoinMap,\n getPoolExchangeRateMap,\n singleAssetPoolCoinMap,\n} from \"../common/maps.js\";\nimport { Decimal } from \"decimal.js\";\nimport { BN } from \"bn.js\";\nimport { PoolName, CoinName } from \"../common/types.js\";\nimport {\n ClmmPoolUtil,\n TickMath,\n CoinAmounts,\n} from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport { coinsList } from \"../common/coins.js\";\n\nexport async function parseTokensFromReceipts(\n receipts: SuiObjectResponse[],\n): Promise<[string, string, string][]> {\n let userTokens: [string, string, string][] = [];\n\n for (const receipt of receipts) {\n const nftData = receipt.data?.content;\n if (nftData?.dataType === \"moveObject\") {\n const fields = nftData.fields as AlphaReceiptFields | OtherReceiptFields;\n const owner = fields.owner;\n const pool = poolIdPoolNameMap[fields.pool_id] as string;\n const xTokens = fields.xTokenBalance;\n userTokens.push([owner, pool, xTokens]);\n }\n }\n const conversionMap = await getPoolExchangeRateMap();\n userTokens = userTokens.map(([owner, pool, xTokens]) => {\n const conversion = new Decimal(\n conversionMap.get(pool as PoolName) as string,\n );\n const tokens = new Decimal(xTokens).mul(conversion).toFixed(4).toString();\n return [owner, pool, tokens];\n });\n\n return userTokens;\n}\n\nexport function liquidityToUsd(\n params: LiquidityToUsdParams,\n): string | undefined {\n let holdingUSD: string | undefined;\n if (params.poolName.slice(0, 4) === \"NAVI\") {\n holdingUSD = singleAssetLiquidityToUSD(\n params.liquidity,\n params.poolName,\n params.tokenPriceMap,\n );\n } else if (params.poolName === \"ALPHA\") {\n holdingUSD = alphaLiquidityToUSD(params.liquidity, params.tokenPriceMap);\n } else {\n holdingUSD = doubleAssetliquidityToUSD(params);\n }\n return holdingUSD;\n}\nfunction doubleAssetliquidityToUSD(params: {\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}): string | undefined {\n const pool = params.poolName;\n const liquidity = params.liquidity;\n const ticksCetusMap = params.ticksCetusMap;\n const sqrtPriceCetusMap = params.sqrtPriceCetusMap;\n const tokenPriceMap = params.tokenPriceMap;\n\n try {\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 const priceOfCoin1 = tokenPriceMap.get(coin1);\n const priceOfCoin2 = tokenPriceMap.get(coin2);\n if (priceOfCoin1 && priceOfCoin2) {\n const amount = amount1.mul(priceOfCoin1).add(amount2.mul(priceOfCoin2));\n return amount.toFixed(2).toString();\n }\n } catch (error) {\n console.error(`Error fetching price of ${pool}:`, error);\n return undefined;\n }\n}\nfunction alphaLiquidityToUSD(\n liquidity: string,\n tokenPriceMap: Map<CoinName, string>,\n) {\n try {\n const priceOfAlpha = tokenPriceMap.get(\"ALPHA\");\n if (priceOfAlpha) {\n let amount = new Decimal(liquidity).div(1e9);\n amount = amount.mul(priceOfAlpha);\n return amount.toFixed(2).toString();\n }\n } catch (error) {\n console.error(`Error fetching price of ALPHA:`, error);\n return undefined;\n }\n}\nfunction singleAssetLiquidityToUSD(\n liquidity: string,\n pool: string,\n tokenPriceMap: Map<CoinName, string>,\n) {\n try {\n const singlePool = pool as Extract<\n PoolName,\n \"NAVI-VSUI\" | \"NAVI-SUI\" | \"NAVI-WETH\" | \"NAVI-USDC\" | \"NAVI-USDT\"\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 const priceOfCoin = tokenPriceMap.get(coin);\n if (priceOfCoin) {\n const amountInUSD = amount.mul(priceOfCoin);\n return amountInUSD.toFixed(2).toString();\n }\n } catch (error) {\n console.error(`Error fetching price of ${pool}:`, error);\n return undefined;\n }\n}\n\nexport function mergeDuplicateHoldings(\n userTokens: [string, string, string][],\n): [string, string, string][] {\n const address_poolValueMap = new Map<string, number>();\n userTokens.forEach(([address, pool, value]) => {\n const key = `${address}_${pool}`;\n const numericValue = parseFloat(value);\n if (address_poolValueMap.has(key)) {\n address_poolValueMap.set(\n key,\n address_poolValueMap.get(key)! + numericValue,\n );\n } else {\n address_poolValueMap.set(key, numericValue);\n }\n });\n return Array.from(address_poolValueMap.entries()).map(([key, value]) => {\n const [address, pool] = key.split(\"_\");\n return [address, pool, value.toFixed(2).toString()];\n });\n}\n"]}
|
package/dist/esm/utils/hop.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { HopApi, } from "@hop.ag/sdk";
|
|
2
2
|
import { conf, CONF_ENV } from "../common/constants.js";
|
|
3
3
|
import { getSuiNodeUrl } from "../sui-sdk/client.js";
|
|
4
|
-
import {
|
|
4
|
+
import { coinsList } from "../common/coins.js";
|
|
5
5
|
import { getLatestPrices } from "./prices.js";
|
|
6
6
|
import BN from "bn.js";
|
|
7
7
|
export const hopSDKOptions = {
|
|
@@ -71,7 +71,7 @@ export async function getBlubPrice() {
|
|
|
71
71
|
// return 1;
|
|
72
72
|
const hopGateway = new HopGateway(hopSDKOptions);
|
|
73
73
|
const swapOptions = {
|
|
74
|
-
pair: { coinA:
|
|
74
|
+
pair: { coinA: coinsList.BLUB, coinB: coinsList.USDC },
|
|
75
75
|
senderAddress: "0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e",
|
|
76
76
|
inAmount: new BN(1_000_000_000),
|
|
77
77
|
slippage: 1,
|
|
@@ -88,7 +88,7 @@ export async function getBlubPrice() {
|
|
|
88
88
|
export async function getFudPrice() {
|
|
89
89
|
const hopGateway = new HopGateway(hopSDKOptions);
|
|
90
90
|
const swapOptions = {
|
|
91
|
-
pair: { coinA:
|
|
91
|
+
pair: { coinA: coinsList.FUD, coinB: coinsList.USDC },
|
|
92
92
|
senderAddress: "0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e",
|
|
93
93
|
inAmount: new BN(1_000_000_000_000),
|
|
94
94
|
slippage: 1,
|
|
@@ -105,7 +105,7 @@ export async function getFudPrice() {
|
|
|
105
105
|
export async function getWsolPrice() {
|
|
106
106
|
const hopGateway = new HopGateway(hopSDKOptions);
|
|
107
107
|
const swapOptions = {
|
|
108
|
-
pair: { coinA:
|
|
108
|
+
pair: { coinA: coinsList.WSOL, coinB: coinsList.USDC },
|
|
109
109
|
senderAddress: "0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e",
|
|
110
110
|
inAmount: new BN(1_000_000_00),
|
|
111
111
|
slippage: 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hop.js","sourceRoot":"","sources":["../../../src/utils/hop.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,GAIP,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"hop.js","sourceRoot":"","sources":["../../../src/utils/hop.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n GetTxParams,\n HopApi,\n HopApiOptions,\n GetQuoteParams,\n GetQuoteResponse,\n} from \"@hop.ag/sdk\";\nimport { SwapOptions } from \"../common/types.js\";\nimport { conf, CONF_ENV } from \"../common/constants.js\";\nimport { Transaction } from \"@mysten/sui/transactions\";\nimport { getSuiNodeUrl } from \"../sui-sdk/client.js\";\nimport { coinsList } from \"../common/coins.js\";\nimport { getLatestPrices } from \"./prices.js\";\nimport BN from \"bn.js\";\n\nexport type HopSwapOptions = SwapOptions;\n\nexport const hopSDKOptions: HopApiOptions = {\n api_key: conf[CONF_ENV].HOP_API_KEY,\n fee_bps: conf[CONF_ENV].HOP_FEE_BPS,\n fee_wallet: conf[CONF_ENV].HOP_QUERY_WALLET,\n};\n\nexport class HopGateway {\n private hopAPI: HopApi;\n\n constructor(sdkOptions: HopApiOptions) {\n const rpc_url = getSuiNodeUrl();\n this.hopAPI = new HopApi(rpc_url, sdkOptions);\n }\n\n async getQuote(\n options: HopSwapOptions,\n debug: boolean = false,\n ): Promise<GetQuoteResponse> {\n const { pair, inAmount, outAmount } = options;\n let amount: BN = new BN(0);\n if (inAmount) {\n amount = inAmount;\n } else if (outAmount) {\n amount = outAmount;\n }\n\n const params: GetQuoteParams = {\n token_in: pair.coinA.type,\n token_out: pair.coinB.type,\n amount_in: BigInt(amount.toString()),\n };\n\n if (debug) {\n console.debug(\"fetchQuote Params:\");\n console.debug(params);\n }\n const quote = await this.hopAPI.fetchQuote(params);\n return quote;\n }\n\n async getTransactionBlock(\n options: HopSwapOptions,\n quote: GetQuoteResponse,\n debug: boolean = false,\n transaction: Transaction | undefined = undefined,\n ): Promise<Transaction> {\n const { senderAddress, slippage } = options;\n const splippageBPS = slippage * 100;\n\n let params: GetTxParams;\n if (transaction) {\n params = {\n trade: quote.trade,\n sui_address: senderAddress,\n max_slippage_bps: splippageBPS,\n base_transaction: transaction,\n };\n } else {\n params = {\n trade: quote.trade,\n sui_address: senderAddress,\n max_slippage_bps: splippageBPS,\n };\n }\n\n if (debug) {\n console.debug(\"fetchTx Params:\");\n console.debug(params);\n }\n const trade = await this.hopAPI.fetchTx(params);\n\n return trade.transaction;\n }\n}\nexport async function getWUSDCPrice(): Promise<number | undefined> {\n const [wusdcPrice] = await getLatestPrices([\"USDC/USD\"], false);\n return Number(wusdcPrice);\n}\nexport async function getBlubPrice(): Promise<number | undefined> {\n // return 1;\n const hopGateway = new HopGateway(hopSDKOptions);\n\n const swapOptions: HopSwapOptions = {\n pair: { coinA: coinsList.BLUB, coinB: coinsList.USDC },\n senderAddress:\n \"0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e\",\n inAmount: new BN(1_000_000_000),\n slippage: 1,\n };\n\n const res = await hopGateway.getQuote(swapOptions);\n const [latestUSDCPrice] = await getLatestPrices([\"USDC/USD\"], false);\n if (latestUSDCPrice) {\n return (\n Number(res.amount_out_with_fee) * Number(latestUSDCPrice) * 1e-6 * 1e-7\n );\n } else {\n return undefined;\n }\n}\n\nexport async function getFudPrice(): Promise<number | undefined> {\n const hopGateway = new HopGateway(hopSDKOptions);\n\n const swapOptions: HopSwapOptions = {\n pair: { coinA: coinsList.FUD, coinB: coinsList.USDC },\n senderAddress:\n \"0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e\",\n inAmount: new BN(1_000_000_000_000),\n slippage: 1,\n };\n\n const res = await hopGateway.getQuote(swapOptions);\n const [latestUSDCPrice] = await getLatestPrices([\"USDC/USD\"], false);\n if (latestUSDCPrice) {\n return (\n Number(res.amount_out_with_fee) * Number(latestUSDCPrice) * 1e-6 * 1e-7\n );\n } else {\n return undefined;\n }\n}\nexport async function getWsolPrice(): Promise<number | undefined> {\n const hopGateway = new HopGateway(hopSDKOptions);\n\n const swapOptions: HopSwapOptions = {\n pair: { coinA: coinsList.WSOL, coinB: coinsList.USDC },\n senderAddress:\n \"0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e\",\n inAmount: new BN(1_000_000_00),\n slippage: 1,\n };\n\n const res = await hopGateway.getQuote(swapOptions);\n const [latestUSDCPrice] = await getLatestPrices([\"USDC/USD\"], false);\n if (latestUSDCPrice) {\n return Number(res.amount_out_with_fee) * Number(latestUSDCPrice) * 1e-6;\n } else {\n return undefined;\n }\n}\n"]}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { PythPriceIdPair } from "../common/pyth.js";
|
|
2
|
+
export declare const coinsToGetFromPyth: PythPriceIdPair[];
|
|
3
|
+
export declare function getMultiLatestPrices(): Promise<void>;
|
|
2
4
|
export declare function getLatestPrices(pairs: PythPriceIdPair[], ignoreCache: boolean): Promise<string[]>;
|
|
3
5
|
export declare function getLatestTokenPricePairs(pairs: PythPriceIdPair[], ignoreCache: boolean): Promise<{
|
|
4
6
|
[key: string]: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prices.d.ts","sourceRoot":"","sources":["../../../src/utils/prices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"prices.d.ts","sourceRoot":"","sources":["../../../src/utils/prices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKpD,eAAO,MAAM,kBAAkB,EAAE,eAAe,EA2B/C,CAAC;AAEF,wBAAsB,oBAAoB,kBAQzC;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,eAAe,EAAE,EACxB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CAsCnB;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,eAAe,EAAE,EACxB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,CAWhD"}
|
package/dist/esm/utils/prices.js
CHANGED
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
import { SimpleCache } from "./simpleCache.js";
|
|
2
2
|
const latestPriceCache = new SimpleCache(5000);
|
|
3
|
+
export const coinsToGetFromPyth = [
|
|
4
|
+
"SUI/USD",
|
|
5
|
+
"USDC/USD",
|
|
6
|
+
"USDT/USD",
|
|
7
|
+
"HASUI/USD",
|
|
8
|
+
"CETUS/USD",
|
|
9
|
+
"VSUI/USD",
|
|
10
|
+
"NAVX/USD",
|
|
11
|
+
"SCA/USD",
|
|
12
|
+
"AFSUI/USD",
|
|
13
|
+
"WETH/USD",
|
|
14
|
+
"WBTC/USD",
|
|
15
|
+
"TURBOS/USD",
|
|
16
|
+
"CELO/USD",
|
|
17
|
+
"SLP/USD",
|
|
18
|
+
"SOL/USD",
|
|
19
|
+
"APT/USD",
|
|
20
|
+
"BUCK/USD",
|
|
21
|
+
"WSOL/USD",
|
|
22
|
+
"WUSDC/USD",
|
|
23
|
+
"ALPHA/USD",
|
|
24
|
+
"FUD/USD",
|
|
25
|
+
"BLUB/USD",
|
|
26
|
+
"ETH/USD",
|
|
27
|
+
"DEEP/USD",
|
|
28
|
+
"AUSD/USD",
|
|
29
|
+
"USDY/USD",
|
|
30
|
+
];
|
|
31
|
+
export async function getMultiLatestPrices() {
|
|
32
|
+
const pricesFromPyth = await getLatestPrices(coinsToGetFromPyth, true);
|
|
33
|
+
pricesFromPyth.forEach((price, index) => {
|
|
34
|
+
if (price) {
|
|
35
|
+
const cacheKey = `getLatestPrice-${coinsToGetFromPyth[index]}`;
|
|
36
|
+
latestPriceCache.set(cacheKey, price);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
3
40
|
export async function getLatestPrices(pairs, ignoreCache) {
|
|
4
41
|
const pairsToFetch = [];
|
|
5
42
|
const pairsToFetchIndexes = [];
|