From bf59ac351abecd5d0836967cfeaa9f7d86281693 Mon Sep 17 00:00:00 2001 From: Sairam kola Date: Mon, 15 Apr 2024 18:27:44 +0530 Subject: [PATCH] fix ambient token estimates --- components/nav_bar/navBar.tsx | 12 +++++++++- provider/analytics.tsx | 7 ++++-- transactions/pairs/ambient/ambientTx.ts | 16 ++++++------- utils/ambient/liquidity.utils.ts | 30 ++++++++++++++----------- utils/analytics/analytics.utils.ts | 1 + 5 files changed, 42 insertions(+), 24 deletions(-) diff --git a/components/nav_bar/navBar.tsx b/components/nav_bar/navBar.tsx index 298a59de..d2e25940 100644 --- a/components/nav_bar/navBar.tsx +++ b/components/nav_bar/navBar.tsx @@ -28,12 +28,22 @@ const NavBar = () => { const [isMoreModalOpen, setIsMoreModalOpen] = useState(false); useEffect(() => { + const connectWalletEvent = async () => { + try { + const chainId = await signer?.getChainId(); + Analytics.actions.events.connections.walletConnect(true, chainId); + } catch (error) { + Analytics.actions.events.connections.walletConnect(true); + console.error(error); + } + }; + if (signer?.account.address) { Analytics.actions.people.registerWallet(signer.account.address); Analytics.actions.identify(signer.account.address, { account: signer.account.address, }); - Analytics.actions.events.connections.walletConnect(true); + connectWalletEvent(); } }, [signer]); diff --git a/provider/analytics.tsx b/provider/analytics.tsx index dba0c0ae..a1b62fbe 100644 --- a/provider/analytics.tsx +++ b/provider/analytics.tsx @@ -61,6 +61,7 @@ export type AnalyticsAmbientLPData = { ambientLp?: string; ambientLpBaseToken?: string; ambientLpQuoteToken?: string; + ambientIsAmountBase?: boolean; ambientLpBaseAmount?: string; ambientLpQuoteAmount?: string; ambientLpBaseBalance?: string; @@ -162,9 +163,11 @@ class AnalyticsWrapper { }); }, connections: { - walletConnect: (connected: boolean) => { + walletConnect: (connected: boolean, chainId?: number) => { if (connected) { - posthog.capture("Wallet Connected"); + posthog.capture("Wallet Connected", { + chainId, + }); } else { posthog.capture("Wallet Disconnected"); } diff --git a/transactions/pairs/ambient/ambientTx.ts b/transactions/pairs/ambient/ambientTx.ts index b4d9df29..e9b2e422 100644 --- a/transactions/pairs/ambient/ambientTx.ts +++ b/transactions/pairs/ambient/ambientTx.ts @@ -101,16 +101,16 @@ async function addConLiquidity( quoteAmount = getConcQuoteTokensFromBaseTokens( txParams.amount, txParams.pool.stats.lastPriceSwap, - getPriceFromTick(txParams.lowerTick), - getPriceFromTick(txParams.upperTick) + txParams.lowerTick, + txParams.upperTick ); } else { quoteAmount = txParams.amount; baseAmount = getConcBaseTokensFromQuoteTokens( txParams.amount, txParams.pool.stats.lastPriceSwap, - getPriceFromTick(txParams.lowerTick), - getPriceFromTick(txParams.upperTick) + txParams.lowerTick, + txParams.upperTick ); } @@ -207,8 +207,8 @@ export function validateAmbientLiquidityTxParams( : getConcBaseTokensFromQuoteTokens( txParams.amount, currentPrice, - getPriceFromTick(txParams.lowerTick), - getPriceFromTick(txParams.upperTick) + txParams.lowerTick, + txParams.upperTick ); if(Number(currentPrice) <= Number(getPriceFromTick(txParams.lowerTick)) && Number(baseAmount) !== 0){ @@ -229,8 +229,8 @@ export function validateAmbientLiquidityTxParams( ? getConcQuoteTokensFromBaseTokens( txParams.amount, currentPrice, - getPriceFromTick(txParams.lowerTick), - getPriceFromTick(txParams.upperTick) + txParams.lowerTick, + txParams.upperTick ) : txParams.amount; diff --git a/utils/ambient/liquidity.utils.ts b/utils/ambient/liquidity.utils.ts index aa8f9b6f..d11dd422 100644 --- a/utils/ambient/liquidity.utils.ts +++ b/utils/ambient/liquidity.utils.ts @@ -11,7 +11,7 @@ import { convertTokenAmountToNote, percentOfAmount, } from "../math"; -import { getPriceFromTick } from "./ambientMath.utils"; +import { getPriceFromTick, getTickFromPrice } from "./ambientMath.utils"; import { AmbientPool } from "@/hooks/pairs/newAmbient/interfaces/ambientPools"; import { convertToBigNumber, formatBalance } from "../formatting"; @@ -27,9 +27,11 @@ import { convertToBigNumber, formatBalance } from "../formatting"; export function getConcQuoteTokensFromBaseTokens( amount: string, currentPrice: string, - minPrice: string, - maxPrice: string + lowerTick: number, + upperTick: number ): string { + const minPrice = getPriceFromTick(lowerTick) + const maxPrice = getPriceFromTick(upperTick) // check if zero or current price is below min price if ( !amount || @@ -51,8 +53,8 @@ export function getConcQuoteTokensFromBaseTokens( Number(minPrice), Number(maxPrice) ); - // overestimate amount by 1% - const quoteEstimate = percentOfAmount(quoteTokens.toString(), 101); + // overestimate amount by 3% + const quoteEstimate = percentOfAmount(quoteTokens.toString(), 103); if (quoteEstimate.error) { return "0"; } @@ -71,9 +73,11 @@ export function getConcQuoteTokensFromBaseTokens( export function getConcBaseTokensFromQuoteTokens( amount: string, currentPrice: string, - minPrice: string, - maxPrice: string + lowerTick: number, + upperTick: number ): string { + const minPrice = getPriceFromTick(lowerTick) + const maxPrice = getPriceFromTick(upperTick) // check if zero or over max price if ( !amount || @@ -95,8 +99,8 @@ export function getConcBaseTokensFromQuoteTokens( Number(minPrice), Number(maxPrice) ); - // overestimate amount by 1% - const baseEstimate = percentOfAmount(baseTokens.toString(), 101); + // overestimate amount by 3% + const baseEstimate = percentOfAmount(baseTokens.toString(), 103); if (baseEstimate.error) { return "0"; } @@ -250,8 +254,8 @@ export function getDisplayTokenAmountFromRange( const quoteEstimateWei = getConcQuoteTokensFromBaseTokens( weiAmount, pool.stats.lastPriceSwap, - minPriceWei, - maxPriceWei + getTickFromPrice(minPriceWei), + getTickFromPrice(maxPriceWei) ); return formatBalance(quoteEstimateWei, pool.quote.decimals, { precision: pool.quote.decimals, @@ -261,8 +265,8 @@ export function getDisplayTokenAmountFromRange( const baseEstimateWei = getConcBaseTokensFromQuoteTokens( weiAmount, pool.stats.lastPriceSwap, - minPriceWei, - maxPriceWei + getTickFromPrice(minPriceWei), + getTickFromPrice(maxPriceWei) ); return formatBalance(baseEstimateWei, pool.base.decimals, { precision: pool.base.decimals, diff --git a/utils/analytics/analytics.utils.ts b/utils/analytics/analytics.utils.ts index a6846cdd..db721f83 100644 --- a/utils/analytics/analytics.utils.ts +++ b/utils/analytics/analytics.utils.ts @@ -189,6 +189,7 @@ function getAmbientLiquidityTransactionFlowData( return { ...poolData, ambientLpIsAdvanced: ambientLiquidityTxParams.isAdvanced ?? false, + ambientIsAmountBase: ambientLiquidityTxParams.isAmountBase, ambientLpBaseAmount: baseAmount, ambientLpQuoteAmount: quoteAmount, ambientLpBaseBalance: baseBalance,