{"version":3,"file":"static/chunks/pages/liquidity-management-52ac2a3c9c52567a.js","mappings":"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","sources":["webpack://_N_E/?8556","webpack://_N_E/./hooks/useFetchUserPosition.ts","webpack://_N_E/./views/Rebalance/Context.tsx","webpack://_N_E/./views/Rebalance/RebalanceEdit/style.ts","webpack://_N_E/./views/Rebalance/RebalanceEdit/index.tsx","webpack://_N_E/./views/Rebalance/RebalanceLayout/AutomatedRebalanceBtn.tsx","webpack://_N_E/./views/Rebalance/RebalanceLayout/ConfirmRebalanceBtn.tsx","webpack://_N_E/./views/Rebalance/RebalanceLayout/RebalanceWrapper.tsx","webpack://_N_E/./views/Rebalance/RebalanceLayout/index.tsx","webpack://_N_E/./views/Rebalance/RebalancePreview/style.ts","webpack://_N_E/./views/Rebalance/RebalancePreview/index.tsx","webpack://_N_E/./views/Rebalance/index.tsx","webpack://_N_E/./views/AddLiquidity/AddLiquidityContextV2.tsx","webpack://_N_E/./components/UseNative/UseNative.tsx","webpack://_N_E/./views/AddLiquidity/AddLiquidityEdit/ZapInSwapPath.tsx","webpack://_N_E/./views/AddLiquidity/AddLiquidityEdit/SwapDetail.tsx","webpack://_N_E/./views/AddLiquidity/AddLiquidityEdit/style.ts","webpack://_N_E/./views/AddLiquidity/AddLiquidityEdit/AddLiquidityEditV2.tsx","webpack://_N_E/./views/AddLiquidity/AddLiquidityLayout/AddLPBtnV2.tsx","webpack://_N_E/./views/AddLiquidity/AddLiquidityLayout/AddLiquidityLayoutV2.tsx","webpack://_N_E/./views/AddLiquidity/AddLiquidityPreview/AddLiquidityPreviewV2.tsx","webpack://_N_E/./views/AddLiquidity/index.tsx","webpack://_N_E/./views/RemoveLiquidity/Context.tsx","webpack://_N_E/./views/RemoveLiquidity/RemoveLiquidityEdit/style.ts","webpack://_N_E/./views/RemoveLiquidity/RemoveLiquidityEdit/index.tsx","webpack://_N_E/./views/RemoveLiquidity/RemoveLiquidityLayout/PrescheduledCloseBtn.tsx","webpack://_N_E/./views/RemoveLiquidity/RemoveLiquidityLayout/RemoveLPBtn.tsx","webpack://_N_E/./views/RemoveLiquidity/RemoveLiquidityLayout/index.tsx","webpack://_N_E/./views/RemoveLiquidity/RemoveLiquidityPreview/index.tsx","webpack://_N_E/./views/RemoveLiquidity/index.tsx","webpack://_N_E/./components/Button/CollectFeeBtn.tsx","webpack://_N_E/./components/Modal/ClaimFeeModal.tsx","webpack://_N_E/./components/Button/ReinvestBtn.tsx","webpack://_N_E/./views/PositionDetails/ReinvestWrapper.tsx","webpack://_N_E/./components/Modal/ReinvestModal.tsx","webpack://_N_E/./components/Modal/StakePositionModal.tsx","webpack://_N_E/./views/PositionDetails/styles.ts","webpack://_N_E/./views/PositionDetails/ReEnablePermit.tsx","webpack://_N_E/./views/PositionDetails/TriggerListWrapper.tsx","webpack://_N_E/./views/PositionDetails/PositionDetails.tsx","webpack://_N_E/./views/PositionDetails/index.tsx","webpack://_N_E/./views/ActivePositions/hook.ts","webpack://_N_E/./views/ActivePositions/index.tsx","webpack://_N_E/./pages/liquidity-management.tsx","webpack://_N_E/<anon>"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/liquidity-management\",\n function () {\n return require(\"private-next-pages/liquidity-management.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/liquidity-management\"])\n });\n }\n ","import { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { viem } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport useSWR from \"swr/immutable\";\nimport { useAccount } from \"wagmi\";\n\n/**\n * Get the state and pool for a position by deploying an ephemeral contract via `eth_call`.\n */\nexport function useFetchUserPosition(positionId: string) {\n const { isConnected } = useAccount();\n const { ammEnum, networkId, publicClient, isChainSupported } = useNetwork();\n const showFetch = isConnected && ammEnum && isChainSupported;\n return useSWR(\n showFetch ? `user-lp-${ammEnum}-${networkId}-${positionId}` : null,\n () =>\n viem.PositionDetails.fromPositionId(\n networkId,\n ammEnum,\n BigInt(positionId),\n publicClient\n )\n );\n}\n","import { useUnstakePositionContext } from \"@/components/Context/UnstakePositionContext\";\nimport {\n useGlobalSlippage,\n useSolverRoutingStore,\n} from \"@/components/GlobalStore\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { IPositionDetails } from \"@/config/position/positionConfig\";\nimport { getTriggerDeadline } from \"@/helper/deadlineHelper\";\nimport {\n offsetTickToPercentage,\n percentageToOffsetTick,\n} from \"@/helper/liquiditySelectorHelper\";\nimport {\n filterTriggers,\n getInitializedPriceTrigger,\n getInitializedRatioTrigger,\n getInitializedTimeTrigger,\n getInitializedTriggerTimeBuffer,\n getTriggerCondition,\n getTriggerType,\n} from \"@/helper/triggerHelper\";\nimport { useCurrentChainToken } from \"@/hooks/globalState/useCurrentChainToken\";\nimport { useOnNetworkAccountChange } from \"@/hooks/globalState/useOnNetworkAccountChange\";\nimport { useSwapInfo } from \"@/hooks/swapInfo/useSwapInfo\";\nimport { useFetchAllChainUserTriggers } from \"@/hooks/useFetchAllChainUserTriggers\";\nimport { useFetchTokenMap } from \"@/hooks/useFetchTokenMap\";\nimport { useFetchUserPosition } from \"@/hooks/useFetchUserPosition\";\nimport {\n DEFAULT_REBALANCE_SLIPPAGE,\n MAX_TRIGGER,\n gasCeilingButtonError,\n getGasCeiling,\n} from \"@/utils/helper\";\nimport {\n ITransactionSettingsForm,\n RebalanceActionTab,\n SwapPathProps,\n convertRelativePriceToHumanValue,\n} from \"@aperture/uikit\";\nimport {\n CreateTriggerPayload,\n PermitInfo,\n RebalanceAction,\n TriggerItem,\n UpdateTriggerPayload,\n viem,\n} from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { tickToPrice } from \"@aperture_finance/uniswap-v3-sdk\";\nimport { useDebounce } from \"ahooks\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { useAccount } from \"wagmi\";\nimport { IRebalanceEditForm } from \"./RebalanceEdit/types\";\n\nexport type IRebalanceTab = \"Rebalance\" | \"Automated Rebalance\";\nexport interface IRebalanceContext {\n tab: IRebalanceTab;\n position: IPositionDetails;\n trigger: TriggerItem | undefined;\n tokenPrice: [string, string];\n positionDetails: viem.PositionDetails;\n form: IRebalanceEditForm;\n projectedAmount: {\n amount0: string;\n amount1: string;\n };\n maxTriggersCreated: boolean;\n txForm: ITransactionSettingsForm;\n error: string;\n isAutoBtnDisabled: boolean;\n isRebalanceChanged: boolean;\n automatedRebalancePayload?: CreateTriggerPayload | UpdateTriggerPayload;\n isSyncing: boolean;\n swapInfo?: SwapPathProps[];\n swapInfoError?: Error;\n suggestedSolver: number;\n selectedSolver: number;\n permitInfo?: PermitInfo;\n gasEstimated?: bigint;\n setTab: React.Dispatch<React.SetStateAction<IRebalanceTab>>;\n setForm: React.Dispatch<React.SetStateAction<IRebalanceEditForm>>;\n setProjectedAmount: React.Dispatch<\n React.SetStateAction<{\n amount0: string;\n amount1: string;\n }>\n >;\n setTxForm: React.Dispatch<React.SetStateAction<ITransactionSettingsForm>>;\n setPermitInfo: React.Dispatch<React.SetStateAction<PermitInfo>>;\n setGasEstimated: React.Dispatch<React.SetStateAction<bigint>>;\n setError: React.Dispatch<React.SetStateAction<string>>;\n setSelectedSolver: (idx: number) => void;\n}\n\nconst RebalanceContext = React.createContext<IRebalanceContext>(null as any);\n\ninterface RebalanceProviderProps {\n position: IPositionDetails;\n trigger: TriggerItem | undefined;\n tabs: 0 | 1;\n}\n\nexport const RebalanceProvider: React.FC<\n React.PropsWithChildren<RebalanceProviderProps>\n> = ({ children, position, trigger, tabs }) => {\n const { address } = useAccount();\n const { ammEnum, networkId } = useNetwork();\n const tokenA = position.tokenA;\n const tokenB = position.tokenB;\n const { data: positionDetails } = useFetchUserPosition(position.positionId);\n const { currentTokenPrice: tokenPrices } = useCurrentChainToken(networkId);\n const { data: allChainsTriggerObj } = useFetchAllChainUserTriggers();\n const { data: tokenMap } = useFetchTokenMap();\n const { globalSlippage } = useGlobalSlippage();\n const [tab, setTab] = useState<IRebalanceTab>(\n tabs === 0 ? \"Rebalance\" : \"Automated Rebalance\"\n );\n const [projectedAmount, setProjectedAmount] = useState({\n amount0: \"0\",\n amount1: \"0\",\n });\n const [txForm, setTxForm] = useState<ITransactionSettingsForm>({\n slippage:\n (trigger?.action.type === \"Rebalance\" && trigger.action.slippage) ||\n (globalSlippage ?? DEFAULT_REBALANCE_SLIPPAGE),\n deadline: \"30\",\n });\n const [error, setError] = useState(\"\");\n const [automatedRebalancePayload, setAutomatedRebalancePayload] = useState<\n CreateTriggerPayload | UpdateTriggerPayload\n >();\n const [permitInfo, setPermitInfo] = useState<PermitInfo>();\n const [gasEstimated, setGasEstimated] = useState<bigint>();\n\n const existingTriggersLen = filterTriggers(\n allChainsTriggerObj?.[networkId],\n \"Rebalance\",\n position.positionId\n ).length;\n const maxTriggersCreated = !trigger && existingTriggersLen >= MAX_TRIGGER;\n const getPrice = (tick: number) =>\n tickToPrice(\n position.positionDataRaw.pool.token0,\n position.positionDataRaw.pool.token1,\n tick\n );\n\n const getPriceRange = () => {\n const newTickLower =\n trigger && !(trigger.action as RebalanceAction).isCurrentTickOffset\n ? (trigger.action as RebalanceAction).tickLower\n : position.tickLower;\n const newTickUpper =\n trigger && !(trigger.action as RebalanceAction).isCurrentTickOffset\n ? (trigger.action as RebalanceAction).tickUpper\n : position.tickUpper;\n const lowerPrice = getPrice(newTickLower);\n const upperPrice = getPrice(newTickUpper);\n return {\n min: lowerPrice.toFixed(18),\n max: upperPrice.toFixed(18),\n swapMin: upperPrice.invert().toFixed(18),\n swapMax: lowerPrice.invert().toFixed(18),\n tickLower: newTickLower,\n tickUpper: newTickUpper,\n };\n };\n\n const getPercentageRange = () => {\n const newTickLower =\n trigger && (trigger.action as RebalanceAction).isCurrentTickOffset\n ? (trigger.action as RebalanceAction).tickLower\n : percentageToOffsetTick(-20, -100, 0);\n const newTickUpper =\n trigger && (trigger.action as RebalanceAction).isCurrentTickOffset\n ? (trigger.action as RebalanceAction).tickUpper\n : percentageToOffsetTick(20, 0);\n return {\n min: offsetTickToPercentage(newTickLower),\n max: offsetTickToPercentage(newTickUpper),\n swapMin: offsetTickToPercentage(newTickUpper * -1),\n swapMax: offsetTickToPercentage(newTickLower * -1),\n tickLower: newTickLower,\n tickUpper: newTickUpper,\n };\n };\n\n const [form, setForm] = useState<IRebalanceEditForm>({\n gasCeiling:\n trigger?.action?.maxGasProportion ||\n getGasCeiling(networkId, position.liquidity),\n trigger: {\n type: getTriggerType(trigger),\n Price: {\n ...getInitializedPriceTrigger(trigger, tokenA, tokenB),\n ...getInitializedTriggerTimeBuffer(trigger),\n },\n Ratio: {\n ...getInitializedRatioTrigger(\n trigger,\n tokenA,\n position.tickLower,\n position.tickUpper\n ),\n ...getInitializedTriggerTimeBuffer(trigger),\n },\n Time: getInitializedTimeTrigger(trigger),\n },\n priceRange: getPriceRange(),\n percentageRange: getPercentageRange(),\n useFutureSpot:\n !!trigger && (trigger.action as RebalanceAction).isCurrentTickOffset,\n // TODO: Get the futureSpotTab from trigger info when supporting token terms\n futureSpotTab: RebalanceActionTab.PERCENTAGES,\n });\n\n const tokenPrice: [string, string] = useMemo(\n () => [\n tokenPrices?.[tokenA.address]?.price ?? \"0\",\n tokenPrices?.[tokenB.address]?.price ?? \"0\",\n ],\n [tokenPrices, tokenA, tokenB]\n );\n\n const isRebalanceChanged = useMemo(\n () =>\n position.tickLower !== form.priceRange.tickLower ||\n position.tickUpper !== form.priceRange.tickUpper,\n [\n form.priceRange.tickLower,\n form.priceRange.tickUpper,\n position.tickLower,\n position.tickUpper,\n ]\n );\n const [isAutoBtnDisabled, setIsAutoBtnDisabled] = useState(!!trigger);\n\n useEffect(() => {\n if (tab === \"Automated Rebalance\") {\n const { trigger } = form;\n if (maxTriggersCreated) {\n setError(\"Maximum number of triggers\");\n } else if (trigger.type === \"Price\" && trigger.Price.amount === \"0\") {\n setError(\"Price Amount Is Required\");\n } else if (trigger.type === \"Time\" && !form.trigger.Time.dateTime) {\n setError(\"Trigger Time Is Required\");\n } else if (\n trigger.type === \"Time\" &&\n moment(form.trigger.Time.dateTime).valueOf() < moment().valueOf()\n ) {\n setError(\"Trigger Time Is Before Current Time\");\n } else {\n setError(\n gasCeilingButtonError(\n networkId,\n form.gasCeiling,\n position.liquidity !== \"-\" ? position.liquidity : \"0\"\n )\n );\n }\n } else {\n setError(\"\");\n }\n }, [tab, form, maxTriggersCreated]);\n\n useEffect(() => {\n if (tab === \"Rebalance\") return;\n const generateData = () => {\n const data = {\n ownerAddr: address!,\n chainId: networkId,\n action: {\n type: \"Rebalance\",\n // TODO: Get the range for token terms when supporting it\n tickLower:\n form.useFutureSpot &&\n form.futureSpotTab === RebalanceActionTab.PERCENTAGES\n ? form.percentageRange.tickLower\n : form.priceRange.tickLower,\n tickUpper:\n form.useFutureSpot &&\n form.futureSpotTab === RebalanceActionTab.PERCENTAGES\n ? form.percentageRange.tickUpper\n : form.priceRange.tickUpper,\n slippage: txForm.slippage,\n maxGasProportion: form.gasCeiling,\n isCurrentTickOffset: form.useFutureSpot,\n },\n condition: getTriggerCondition(\n form.trigger,\n position.tokenA,\n position.tokenB,\n position.tickLower,\n position.tickUpper,\n networkId,\n true\n ),\n expiration: getTriggerDeadline(),\n };\n if (trigger) {\n (data as UpdateTriggerPayload).taskId = trigger?.taskId;\n for (const key in data.condition) {\n if (data.condition[key] === undefined) {\n delete data.condition[key];\n }\n }\n const convertTrigger = _.cloneDeep(data);\n if (\n convertTrigger.condition.type === \"Price\" &&\n convertTrigger.condition.frontendType === \"RELATIVE_PRICE\"\n ) {\n if (convertTrigger.condition.lte) {\n convertTrigger.condition.lte = convertRelativePriceToHumanValue(\n convertTrigger.condition.lte,\n [position.tokenA, position.tokenB]\n );\n } else if (convertTrigger.condition.gte) {\n convertTrigger.condition.gte = convertRelativePriceToHumanValue(\n convertTrigger.condition.gte,\n [position.tokenA, position.tokenB]\n );\n }\n }\n const isActionEqual = _.isEqual(data.action, trigger.action);\n const isConditionEqual = _.isEqual(\n convertTrigger.condition,\n trigger.condition\n );\n setIsAutoBtnDisabled(isActionEqual && isConditionEqual);\n if (isActionEqual) {\n (data as UpdateTriggerPayload).action = undefined;\n }\n if (isConditionEqual) {\n (data as UpdateTriggerPayload).condition = undefined;\n }\n } else {\n (data as CreateTriggerPayload).amm = ammEnum;\n (data as CreateTriggerPayload).nftId = position.positionId;\n }\n setAutomatedRebalancePayload(\n data as CreateTriggerPayload | UpdateTriggerPayload\n );\n };\n generateData();\n }, [form, txForm]);\n const debouncePriceRange = useDebounce(form.priceRange, { wait: 500 });\n const { swapInfo, selectedSolver, suggestedSolver, setSelectedSolver } =\n useSolverRoutingStore();\n const { isSyncing, runSwapInfo, cancelSwapInfo, swapInfoError } =\n useSwapInfo();\n const { staked } = useUnstakePositionContext();\n\n useEffect(() => {\n if (tab === \"Rebalance\") {\n if (!isRebalanceChanged) {\n cancelSwapInfo();\n } else {\n const fetchKey =\n `${ammEnum}-${networkId}-${address}-${position.positionId}` +\n `:[${debouncePriceRange.tickLower},${debouncePriceRange.tickUpper}]_${txForm.slippage}`;\n runSwapInfo({\n type: \"Rebalance\",\n positionId: position.positionId,\n slippage: txForm.slippage,\n tokenMap,\n fetchKey,\n options: {\n tickLower: debouncePriceRange.tickLower,\n tickUpper: debouncePriceRange.tickUpper,\n tokenPrices: tokenPrice,\n },\n });\n }\n }\n }, [\n tab,\n debouncePriceRange,\n txForm,\n isRebalanceChanged,\n staked,\n position.positionId,\n ]);\n\n useOnNetworkAccountChange(() => {\n cancelSwapInfo();\n });\n\n return (\n <RebalanceContext.Provider\n value={{\n tab,\n position,\n trigger,\n tokenPrice,\n positionDetails,\n form,\n projectedAmount,\n maxTriggersCreated,\n txForm,\n error,\n isAutoBtnDisabled,\n isRebalanceChanged,\n automatedRebalancePayload,\n isSyncing,\n swapInfo,\n swapInfoError,\n suggestedSolver,\n selectedSolver,\n permitInfo,\n gasEstimated,\n setTab,\n setForm,\n setTxForm,\n setProjectedAmount,\n setPermitInfo,\n setGasEstimated,\n setError,\n setSelectedSolver,\n }}\n >\n {children}\n </RebalanceContext.Provider>\n );\n};\n\nexport const useRebalanceContext = () => {\n return React.useContext(RebalanceContext);\n};\n","import {\n CommonLgText,\n Flex,\n Headline5,\n SwapPath,\n} from \"@/../../packages/uikit/src\";\nimport { CommonContainer } from \"@/views/style\";\nimport styled from \"styled-components\";\n\nexport const Subtitle = styled(Headline5)`\n color: ${({ theme }) => theme.colors.global.text.T1};\n span:first-child {\n margin-right: 4px;\n }\n`;\n\nexport const PriceRangeHeader = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n gap: ${({ theme }) => theme.spacing.xl};\n`;\n\nexport const FutureSpotContainer = styled(Flex)`\n justify-content: space-between;\n align-items: center;\n gap: ${({ theme }) => theme.spacing.md};\n`;\n\nexport const FutureSpotText = styled(Headline5)`\n color: ${({ theme }) => theme.colors.global.text.T2};\n`;\n\nexport const StyledSwapPath = styled(SwapPath)`\n margin-top: ${({ theme }) => theme.spacing.xl};\n`;\n\nexport const StatusWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: ${({ theme }) => theme.spacing.md};\n`;\n\nexport const StyledCommonContainer = styled(CommonContainer)`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.spacing.xl};\n`;\n\nexport const StyledCommonText = styled(CommonLgText)`\n color: ${({ theme }) => theme.colors.global.text.T1};\n gap: ${({ theme }) => theme.spacing.lg};\n`;\n","import { useUnstakePositionContext } from \"@/components/Context/UnstakePositionContext\";\nimport { OrderRoutingModal } from \"@/components/layout/hooks\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport {\n offsetTickToPercentage,\n percentageToOffsetTick,\n plusOrMinusTick,\n plusOrMinusType,\n} from \"@/helper/liquiditySelectorHelper\";\nimport {\n getProjectedLiquidityPosition,\n priceToTick,\n} from \"@/helper/positionHelper\";\nimport { getTokenPercentages, getTokensFromInfo } from \"@/helper/tokenHelper\";\nimport { useFetchLPDistribution } from \"@/hooks/useFetchLPDistribution\";\nimport { useFetchCurrentChainMarketPrice } from \"@/hooks/useFetchMarketPrice\";\nimport { MAX_TRIGGER, gasCeilingInputError, isProdEnv } from \"@/utils/helper\";\nimport { isManta } from \"@/utils/networkHelper\";\nimport { StyledTokenTab } from \"@/views/NewPosition/styles\";\nimport { Container, EmptyBox, Expires, RowWithGap } from \"@/views/style\";\nimport {\n Flex,\n FutureSpotSelector,\n Headline3,\n Headline5,\n IPriceRangeWithTick,\n LiquiditySelector,\n NoteCard,\n PercentageInputGroup,\n QuestionPopover,\n RebalanceActionTab,\n StatusTab,\n TokenInfo,\n TriggerSetup,\n} from \"@aperture/uikit\";\nimport { E_ModalKey, useModal } from \"@aperture/uikitv2\";\nimport { AUTOMATION_EXPIRATION_IN_DAYS } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { TICK_SPACINGS, tickToPrice } from \"@aperture_finance/uniswap-v3-sdk\";\nimport bigDecimal from \"js-big-decimal\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useTheme } from \"styled-components\";\nimport { formatUnits } from \"viem\";\nimport { useRebalanceContext } from \"../Context\";\nimport {\n FutureSpotContainer,\n FutureSpotText,\n PriceRangeHeader,\n StatusWrapper,\n StyledCommonContainer,\n StyledCommonText,\n StyledSwapPath,\n Subtitle,\n} from \"./style\";\n\nfunction mockValidate(string: string) {\n return string;\n}\n\nconst RebalanceEdit: React.FC = () => {\n const { networkId, ammEnum } = useNetwork();\n const theme = useTheme();\n const {\n tab,\n position,\n positionDetails,\n tokenPrice,\n form,\n setForm: updateForm,\n maxTriggersCreated,\n isSyncing,\n swapInfo,\n swapInfoError,\n suggestedSolver,\n selectedSolver,\n isRebalanceChanged,\n } = useRebalanceContext();\n const { staked } = useUnstakePositionContext();\n const { setModalState } = useModal();\n\n const tokenATicker = position.tokenA.ticker;\n const tokenBTicker = position.tokenB.ticker;\n const [baseToken, setBaseToken] = useState<\"tokenA\" | \"tokenB\">(\"tokenA\");\n const [tickLower, setTickLower] = useState<number>(form.priceRange.tickLower);\n const [tickUpper, setTickUpper] = useState<number>(form.priceRange.tickUpper);\n const [percentageTickLower, setPercentageTickLower] = useState<number>(\n form.percentageRange.tickLower\n );\n const [percentageTickUpper, setPercentageTickUpper] = useState<number>(\n form.percentageRange.tickUpper\n );\n const [enableFutureSpot, setEnableFutureSpot] = useState<boolean>(false);\n const [futureSpotStatus, setFutureSpotStatus] = useState<boolean>(\n form.useFutureSpot\n );\n const [futureSpotTab, setFutureSpotTab] = useState<\n RebalanceActionTab.TOKEN_TERMS | RebalanceActionTab.PERCENTAGES\n >(form.futureSpotTab);\n\n const selectedTokenList = networkId\n ? getTokensFromInfo(position.tokenA, position.tokenB, networkId)\n : null;\n\n const estimate = useMemo(() => {\n if (\n !swapInfoError &&\n swapInfo?.[selectedSolver]?.finalAmount0 !== undefined &&\n swapInfo?.[selectedSolver]?.finalAmount1 !== undefined &&\n positionDetails\n ) {\n const finalAmount0 = formatUnits(\n swapInfo?.[selectedSolver]?.finalAmount0,\n positionDetails.token0.decimals\n );\n const finalAmount1 = formatUnits(\n swapInfo?.[selectedSolver]?.finalAmount1,\n positionDetails.token1.decimals\n );\n return {\n token0Amount: finalAmount0,\n token1Amount: finalAmount1,\n ...getTokenPercentages(\n finalAmount0,\n finalAmount1,\n tokenPrice[0],\n tokenPrice[1]\n ),\n };\n } else if (positionDetails && tickLower < tickUpper) {\n const res = getProjectedLiquidityPosition(\n networkId,\n position,\n positionDetails.position,\n tickLower,\n tickUpper,\n tokenPrice,\n tab === \"Automated Rebalance\" ? form.trigger : undefined\n );\n return {\n token0Amount: res[0].amount,\n token1Amount: res[1].amount,\n token0Percent: res[0].percent,\n token1Percent: res[1].percent,\n };\n } else {\n return {\n token0Amount: position.tokenA.amount,\n token1Amount: position.tokenB.amount,\n ...getTokenPercentages(\n position.tokenA.amount,\n position.tokenB.amount,\n tokenPrice[0],\n tokenPrice[1]\n ),\n };\n }\n }, [\n form.trigger,\n tab,\n tickLower,\n tickUpper,\n swapInfoError,\n swapInfo,\n selectedSolver,\n positionDetails,\n ]);\n\n const useFutureSpot = useMemo(() => {\n return tab === \"Automated Rebalance\" && futureSpotStatus;\n }, [tab, futureSpotStatus]);\n\n const poolKey =\n ammEnum === \"SLIPSTREAM\" ? position.tickSpacing : position.feeTier;\n\n const {\n data: lpDistribution,\n isLoading: lpDistributionLoading,\n error: lpDistributionError,\n } = useFetchLPDistribution(\n position.tokenA.address,\n position.tokenB.address,\n poolKey\n );\n\n const { data: marketPrice } = useFetchCurrentChainMarketPrice(\n position.tokenA.address,\n position.tokenB.address,\n [poolKey]\n );\n const baseTokenPrice = Number(marketPrice?.[poolKey]?.[baseToken] ?? 0);\n\n const updatePrice = (priceForm: IPriceRangeWithTick) => {\n updateForm({\n ...form,\n priceRange: priceForm,\n });\n };\n\n const updatePercentage = (percentageForm: IPriceRangeWithTick) => {\n updateForm({\n ...form,\n percentageRange: percentageForm,\n });\n };\n\n const getPriceRange = useCallback(\n (_tickLower: number, _tickUpper: number) => [\n tickToPrice(\n selectedTokenList!.token0,\n selectedTokenList!.token1,\n _tickLower\n ),\n tickToPrice(\n selectedTokenList!.token0,\n selectedTokenList!.token1,\n _tickUpper\n ),\n ],\n [selectedTokenList]\n );\n\n const updateMinMax = (val: string, type: \"Min\" | \"Max\") => {\n if (selectedTokenList && baseToken) {\n const tick = priceToTick(\n selectedTokenList!.token0,\n selectedTokenList!.token1,\n val,\n position.tickSpacing,\n baseToken === \"tokenA\"\n );\n if (type === \"Min\") {\n baseToken === \"tokenA\" ? setTickLower(tick) : setTickUpper(tick);\n } else {\n baseToken === \"tokenA\" ? setTickUpper(tick) : setTickLower(tick);\n }\n }\n };\n\n const updateMinMaxPercentage = (val: string, type: \"Min\" | \"Max\") => {\n if (selectedTokenList && baseToken) {\n const percentageTick = percentageToOffsetTick(\n Math.abs(parseFloat(val)) * (type === \"Min\" ? -1 : 1),\n type === \"Min\" ? -100 : 0,\n type === \"Min\" ? 0 : undefined\n );\n if (type === \"Min\") {\n baseToken === \"tokenA\"\n ? setPercentageTickLower(percentageTick)\n : setPercentageTickUpper(percentageTick * -1);\n } else {\n baseToken === \"tokenA\"\n ? setPercentageTickUpper(percentageTick)\n : setPercentageTickLower(percentageTick * -1);\n }\n }\n };\n\n const updateTickAfterPlusOrMinus = (actionType: plusOrMinusType) => {\n const tick = plusOrMinusTick(\n actionType,\n tickLower,\n tickUpper,\n baseToken === \"tokenB\",\n position.tickSpacing,\n position.positionDataRaw?.pool\n );\n if (\n actionType === \"getDecrementLower\" ||\n actionType === \"getIncrementLower\"\n ) {\n baseToken === \"tokenA\" ? setTickLower(tick) : setTickUpper(tick);\n } else {\n baseToken === \"tokenA\" ? setTickUpper(tick) : setTickLower(tick);\n }\n };\n\n const updatePercentageTickAfterPlusOrMinus = (\n actionType: plusOrMinusType\n ) => {\n let newPercentage = 0;\n let newTick = 0;\n if (baseToken === \"tokenA\") {\n switch (actionType) {\n case \"getDecrementLower\":\n newPercentage = parseFloat(form.percentageRange.min) - 1;\n newTick = percentageToTick(newPercentage, -100);\n if (\n newTick === percentageTickLower &&\n parseFloat(form.percentageRange.min) !== -100\n )\n newTick -= TICK_SPACINGS[position.feeTier];\n setPercentageTickLower(newTick);\n break;\n case \"getIncrementLower\":\n newPercentage = parseFloat(form.percentageRange.min) + 1;\n newTick = percentageToTick(newPercentage, -100);\n if (\n newTick === percentageTickLower &&\n parseFloat(form.percentageRange.min) !== 0\n )\n newTick += TICK_SPACINGS[position.feeTier];\n setPercentageTickLower(newTick);\n break;\n case \"getDecrementUpper\":\n newPercentage = parseFloat(form.percentageRange.max) - 1;\n newTick = percentageToTick(newPercentage, 0);\n if (\n newTick === percentageTickUpper &&\n parseFloat(form.percentageRange.max) !== 0\n )\n newTick -= TICK_SPACINGS[position.feeTier];\n setPercentageTickUpper(newTick);\n break;\n case \"getIncrementUpper\":\n newPercentage = parseFloat(form.percentageRange.max) + 1;\n newTick = percentageToTick(newPercentage, 0);\n if (newTick === percentageTickUpper)\n newTick += TICK_SPACINGS[position.feeTier];\n setPercentageTickUpper(newTick);\n break;\n }\n } else {\n switch (actionType) {\n case \"getDecrementLower\":\n newPercentage = parseFloat(form.percentageRange.swapMin) - 1;\n newTick = percentageToTick(newPercentage, -100) * -1;\n if (\n newTick === percentageTickUpper &&\n parseFloat(form.percentageRange.swapMin) !== -100\n )\n newTick += TICK_SPACINGS[position.feeTier];\n setPercentageTickUpper(newTick);\n break;\n case \"getIncrementLower\":\n newPercentage = parseFloat(form.percentageRange.swapMin) + 1;\n newTick = percentageToTick(newPercentage, -100) * -1;\n if (\n newTick === percentageTickUpper &&\n parseFloat(form.percentageRange.swapMin) !== 0\n )\n newTick -= TICK_SPACINGS[position.feeTier];\n setPercentageTickUpper(newTick);\n break;\n case \"getDecrementUpper\":\n newPercentage = parseFloat(form.percentageRange.swapMax) - 1;\n newTick = percentageToTick(newPercentage, 0) * -1;\n if (\n newTick === percentageTickLower &&\n parseFloat(form.percentageRange.swapMax) !== 0\n )\n newTick += TICK_SPACINGS[position.feeTier];\n setPercentageTickLower(newTick);\n break;\n case \"getIncrementUpper\":\n newPercentage = parseFloat(form.percentageRange.swapMax) + 1;\n newTick = percentageToTick(newPercentage, 0) * -1;\n if (newTick === percentageTickLower)\n newTick -= TICK_SPACINGS[position.feeTier];\n setPercentageTickLower(newTick);\n break;\n }\n }\n };\n\n const percentageToTick = (percentage: number, minPercentage: number) => {\n let newTick = percentageToOffsetTick(\n percentage,\n minPercentage,\n minPercentage === -100 ? 0 : undefined\n );\n return newTick;\n };\n\n useEffect(() => {\n if (selectedTokenList) {\n const [priceLower, priceUpper] = getPriceRange(tickLower, tickUpper);\n updatePrice({\n min: priceLower.toFixed(18),\n max: priceUpper.toFixed(18),\n swapMin: priceUpper.invert().toFixed(18),\n swapMax: priceLower.invert().toFixed(18),\n tickLower: tickLower,\n tickUpper: tickUpper,\n });\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tickLower, tickUpper]);\n\n useEffect(() => {\n if (selectedTokenList && enableFutureSpot) {\n updatePercentage({\n min: offsetTickToPercentage(percentageTickLower),\n max: offsetTickToPercentage(percentageTickUpper),\n swapMin: offsetTickToPercentage(percentageTickUpper * -1),\n swapMax: offsetTickToPercentage(percentageTickLower * -1),\n tickLower: percentageTickLower,\n tickUpper: percentageTickUpper,\n });\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [percentageTickLower, percentageTickUpper]);\n\n useEffect(() => {\n const timeId = setTimeout(() => {\n setEnableFutureSpot(true);\n }, 1000);\n return () => {\n clearTimeout(timeId);\n };\n }, []);\n\n useEffect(() => {\n if (selectedTokenList) {\n updateForm({\n ...form,\n useFutureSpot: futureSpotStatus,\n });\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [futureSpotStatus]);\n\n useEffect(() => {\n if (selectedTokenList) {\n updateForm({\n ...form,\n futureSpotTab: futureSpotTab,\n });\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [futureSpotTab]);\n\n const priceRange: [number, number] = useMemo(() => {\n if (selectedTokenList && baseToken) {\n const [priceRangeLower, priceRangeUpper] = getPriceRange(\n position.tickLower,\n position.tickUpper\n );\n return baseToken === \"tokenA\"\n ? [\n Number(priceRangeLower.toFixed(18)),\n Number(priceRangeUpper.toFixed(18)),\n ]\n : [\n Number(priceRangeUpper.invert().toFixed(18)),\n Number(priceRangeLower.invert().toFixed(18)),\n ];\n }\n return undefined;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [baseToken]);\n\n return tab === \"Automated Rebalance\" && isManta(networkId) ? (\n <EmptyBox height={\"320px\"}>\n <Headline5>Automation tool on ApertureSwap is coming soon!</Headline5>\n </EmptyBox>\n ) : (\n <Container>\n {tab === \"Automated Rebalance\" && (\n <TriggerSetup\n errorMsg={\n maxTriggersCreated\n ? `You have already set up the maximum number of triggers (${MAX_TRIGGER}).`\n : undefined\n }\n tooltip=\"Use triggers to automatically rebalance your position based on asset prices, pool ratios, or time. Users can set up to 3 triggers for automated rebalancing.\"\n initForm={form.trigger}\n tokens={[position.tokenA, position.tokenB]}\n expireDays={AUTOMATION_EXPIRATION_IN_DAYS}\n onFormChange={(triggerSetupForm) => {\n updateForm({ ...form, trigger: triggerSetupForm });\n }}\n />\n )}\n {!isProdEnv() && (\n <StyledCommonText>\n <div>\n tickLower:{form.priceRange.tickLower} tickUpper:{\" \"}\n {form.priceRange.tickUpper}\n </div>\n <div>\n percentageTickLower: {form.percentageRange.tickLower}{\" \"}\n percentageTickUpper: {form.percentageRange.tickUpper}\n </div>\n </StyledCommonText>\n )}\n <RowWithGap gap={theme.spacing.xl}>\n <StyledCommonContainer width={\"100%\"}>\n <PriceRangeHeader>\n <Subtitle lineHeight={\"20px\"}>Set New Price Range</Subtitle>\n </PriceRangeHeader>\n <FutureSpotContainer>\n <StyledTokenTab\n menu={[tokenATicker, tokenBTicker]}\n defaultSelected={baseToken === \"tokenA\" ? 0 : 1}\n onSelect={(value: string) =>\n setBaseToken(value === tokenATicker ? \"tokenA\" : \"tokenB\")\n }\n width={140}\n />\n {tab === \"Automated Rebalance\" && (\n <StatusWrapper>\n <StatusTab\n noText={true}\n onStatus={futureSpotStatus}\n onChange={(status: boolean) => {\n setFutureSpotStatus(status);\n }}\n />\n <FutureSpotText>\n Price range based on future spot price\n </FutureSpotText>\n </StatusWrapper>\n )}\n </FutureSpotContainer>\n {useFutureSpot ? (\n <FutureSpotSelector\n price={baseTokenPrice}\n priceLower={\n baseToken === \"tokenA\"\n ? form.percentageRange.min\n : form.percentageRange.swapMin\n }\n priceUpper={\n baseToken === \"tokenA\"\n ? form.percentageRange.max\n : form.percentageRange.swapMax\n }\n getDecrementLower={() => {\n updatePercentageTickAfterPlusOrMinus(\"getDecrementLower\");\n }}\n getIncrementLower={() => {\n updatePercentageTickAfterPlusOrMinus(\"getIncrementLower\");\n }}\n getDecrementUpper={() => {\n updatePercentageTickAfterPlusOrMinus(\"getDecrementUpper\");\n }}\n getIncrementUpper={() => {\n updatePercentageTickAfterPlusOrMinus(\"getIncrementUpper\");\n }}\n onLeftRangeInput={(val) => {\n updateMinMaxPercentage(val, \"Min\");\n }}\n onRightRangeInput={(val) => {\n updateMinMaxPercentage(val, \"Max\");\n }}\n feeAmount={position.feeTier}\n currencyA={position[baseToken].ticker}\n currencyB={baseToken === \"tokenB\" ? tokenATicker : tokenBTicker}\n ticksAtLimit={{ LOWER: true, UPPER: true }}\n interactive={true}\n chartHeight={200}\n futureSpotTab={futureSpotTab}\n onSwitchFutureSpotTab={setFutureSpotTab}\n />\n ) : (\n <LiquiditySelector\n price={baseTokenPrice}\n priceLower={\n baseToken === \"tokenA\"\n ? form.priceRange.min\n : form.priceRange.swapMin\n }\n priceUpper={\n baseToken === \"tokenA\"\n ? form.priceRange.max\n : form.priceRange.swapMax\n }\n warningMsg={\n bigDecimal.compareTo(\n baseToken === \"tokenA\"\n ? form.priceRange.min\n : form.priceRange.swapMin,\n baseToken === \"tokenA\"\n ? form.priceRange.max\n : form.priceRange.swapMax\n ) >= 0\n ? \"Invalid range selected. The min price must be lower than the max price.\"\n : tab === \"Rebalance\"\n ? \"Your position will not earn fees or be used in trades until the market price moves into your range.\"\n : undefined\n }\n validate={mockValidate}\n getDecrementLower={() => {\n updateTickAfterPlusOrMinus(\"getDecrementLower\");\n }}\n getIncrementLower={() => {\n updateTickAfterPlusOrMinus(\"getIncrementLower\");\n }}\n getDecrementUpper={() => {\n updateTickAfterPlusOrMinus(\"getDecrementUpper\");\n }}\n getIncrementUpper={() => {\n updateTickAfterPlusOrMinus(\"getIncrementUpper\");\n }}\n onLeftRangeInput={(val) => updateMinMax(val, \"Min\")}\n onRightRangeInput={(val) => updateMinMax(val, \"Max\")}\n feeAmount={position.feeTier}\n currencyA={position[baseToken].ticker}\n currencyB={baseToken === \"tokenB\" ? tokenATicker : tokenBTicker}\n ticksAtLimit={{ LOWER: true, UPPER: true }}\n interactive={true}\n chartHeight={200}\n dataState={{\n isLoading: lpDistributionLoading,\n error: lpDistributionError,\n formattedData: lpDistribution && lpDistribution[baseToken],\n }}\n currentRange={priceRange}\n />\n )}\n {tab === \"Rebalance\" &&\n isRebalanceChanged &&\n (isSyncing ||\n (swapInfoError && !swapInfo) ||\n swapInfo?.[selectedSolver]) && (\n <>\n <StyledSwapPath\n loading={isSyncing}\n priceImpact={swapInfo?.[selectedSolver]?.priceImpact}\n api={swapInfo?.[selectedSolver]?.api}\n fromToken={swapInfo?.[selectedSolver]?.fromToken}\n swapData={swapInfo?.[selectedSolver]?.swapData}\n swapRoutes={swapInfo?.[selectedSolver]?.swapRoutes}\n showSwapRoutes={\n swapInfo?.[selectedSolver]?.swapRoutes?.length > 0\n }\n errorMsg={swapInfoError && !swapInfo}\n maxSwapRouteWidth={562}\n onBtnClick={() =>\n setModalState(E_ModalKey.ORDER_ROUTING_MODAL, true)\n }\n suggested={selectedSolver === suggestedSolver}\n gasFeeUSD={swapInfo?.[selectedSolver]?.gasFeeUSD}\n atStake={staked}\n />\n <OrderRoutingModal />\n </>\n )}\n </StyledCommonContainer>\n </RowWithGap>\n {!useFutureSpot && (\n <Flex justifyContent={\"space-between\"}>\n <StyledCommonContainer\n width={tab === \"Automated Rebalance\" ? \"463px\" : \"100%\"}\n >\n <Subtitle>Projected Liquidity Position</Subtitle>\n <TokenInfo\n key={position.tokenA.address}\n Icon={position.tokenA.Icon}\n ticker={position.tokenA.ticker}\n address={position.tokenA.address}\n native={position.tokenA.native}\n decimals={position.tokenA.decimals}\n amount={estimate.token0Amount}\n price={tokenPrice[0]}\n tag={`${estimate.token0Percent}%`}\n maxWidth={500}\n marginBottom={0}\n />\n <TokenInfo\n key={position.tokenB.address}\n Icon={position.tokenB.Icon}\n ticker={position.tokenB.ticker}\n address={position.tokenB.address}\n native={position.tokenB.native}\n decimals={position.tokenA.decimals}\n amount={estimate.token1Amount}\n price={tokenPrice[1]}\n maxWidth={500}\n marginBottom={0}\n tag={`${estimate.token1Percent}%`}\n />\n <NoteCard text=\"Any uncollected fees will be collected and reinvested into the new position after rebalance.\" />\n </StyledCommonContainer>\n {tab === \"Automated Rebalance\" && (\n <Expires>\n <Subtitle>Expires In</Subtitle>\n <Headline3>{`${AUTOMATION_EXPIRATION_IN_DAYS} Days`}</Headline3>\n </Expires>\n )}\n </Flex>\n )}\n {tab === \"Automated Rebalance\" && (\n <Flex justifyContent={\"space-between\"}>\n <StyledCommonContainer width={useFutureSpot ? \"463px\" : \"100%\"}>\n <Subtitle fontSize={16} lineHeight={\"20px\"}>\n <span>Gas Fee Ceiling Setting</span>\n <QuestionPopover content=\"Input the maximum gas fee in either dollars or percentage of position. However, the actual gas ceiling will be based on the percentage not the dollar amount (e.g. if you choose $50 which is currently 1% of your total liquidity position then we will set a gas ceiling of 1%).\" />\n </Subtitle>\n <PercentageInputGroup\n color=\"primary\"\n width={280}\n amount={position.liquidity}\n percentage={form.gasCeiling}\n onChange={(percentage) => {\n updateForm({ ...form, gasCeiling: percentage });\n }}\n onError={(percentage) =>\n gasCeilingInputError(networkId, percentage, position.liquidity)\n }\n />\n </StyledCommonContainer>\n {useFutureSpot && (\n <Expires>\n <Subtitle>Expires In</Subtitle>\n <Headline3>{`${AUTOMATION_EXPIRATION_IN_DAYS} Days`}</Headline3>\n </Expires>\n )}\n </Flex>\n )}\n </Container>\n );\n};\n\nexport default RebalanceEdit;\n","import ApproveOnChainBtn from \"@/components/Button/ApproveOnChainBtn\";\nimport SignPayloadBtn from \"@/components/Button/SignPayloadBtn\";\nimport SignPositionPermitBtn from \"@/components/Button/SignPositionPermitBtn\";\nimport { useSnackbarV2 } from \"@/components/SnackbarContext/SnackbarContextV2\";\nimport {\n createTrigger,\n getCreateTriggerFailure,\n getTriggerType,\n updateTrigger,\n} from \"@/helper/triggerHelper\";\nimport { useFetchAllChainUserTriggers } from \"@/hooks/useFetchAllChainUserTriggers\";\nimport { useFetchPositionPermission } from \"@/hooks/useFetchPositionPermission\";\nimport { useIfAuthorized } from \"@/hooks/useFetchUserAuthentication\";\nimport { useIsWalletContract } from \"@/hooks/useIsWalletContract\";\nimport {\n CreateTriggerPayload,\n PermitInfo,\n UpdateTriggerPayload,\n} from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { useEffect, useState } from \"react\";\nimport { Address } from \"viem\";\nimport { useRebalanceContext } from \"../Context\";\n\nconst AutomatedRebalanceBtn: React.FC<{\n payload: CreateTriggerPayload | UpdateTriggerPayload | undefined;\n onClose: () => void;\n}> = ({ payload, onClose }) => {\n const { mutate } = useFetchAllChainUserTriggers();\n const { addSnackbar } = useSnackbarV2();\n const { ifAuthorized } = useIfAuthorized();\n const { data: isWalletContract } = useIsWalletContract();\n const { position, trigger: triggerTask } = useRebalanceContext();\n const {\n data: permitStatus,\n isLoading: isPermitLoading,\n mutate: mutatePositionPermit,\n } = useFetchPositionPermission(position.positionId);\n const [permitInfo, setPermitInfo] = useState<PermitInfo>(undefined);\n const [signedPayload, setSignedPayload] = useState<Address>(undefined);\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n if (signedPayload && payload) {\n setIsLoading(true);\n if (!triggerTask) {\n createTrigger(\n payload as CreateTriggerPayload,\n signedPayload,\n permitInfo\n )\n .then((res) => {\n if (res === \"Success\") {\n const type = getTriggerType(payload);\n mutatePositionPermit().then(() => {\n mutate();\n });\n addSnackbar({\n info: `You have successfully set up a ${type.toLowerCase()}-based automated rebalance for your ${\n position.tokenA.ticker\n }-${position.tokenB.ticker} position.`,\n status: \"completed\",\n });\n onClose();\n setIsLoading(false);\n }\n })\n .catch((err) => {\n addSnackbar({\n info:\n \"Your automated rebalance request has failed: \" +\n getCreateTriggerFailure(err),\n status: \"failed\",\n });\n setIsLoading(false);\n });\n } else {\n updateTrigger(payload as UpdateTriggerPayload, signedPayload)\n .then((res) => {\n const type = getTriggerType(triggerTask);\n if (res === \"Success\") {\n mutatePositionPermit().then(() => {\n mutate();\n });\n addSnackbar({\n info: `You have successfully updated the ${type.toLowerCase()} trigger for your ${\n position.tokenA.ticker\n }-${position.tokenB.ticker} position rebalance.`,\n status: \"completed\",\n });\n onClose();\n setIsLoading(false);\n }\n })\n .catch((err) => {\n addSnackbar({\n info:\n \"Your automated rebalance update request has failed: \" + err,\n status: \"failed\",\n });\n setIsLoading(false);\n });\n }\n }\n }, [signedPayload]);\n\n return ifAuthorized || isPermitLoading || permitStatus || permitInfo ? (\n <SignPayloadBtn\n text=\"Confirm Automated Rebalance Intent\"\n color=\"secondary\"\n isLoading={isLoading}\n {...{ payload, setSignedPayload }}\n />\n ) : isWalletContract ? (\n <ApproveOnChainBtn\n text=\"Approve on-chain\"\n color=\"secondary\"\n tokenPair={`${position.tokenA.ticker}-${position.tokenB.ticker}`}\n positionIdBN={position.positionIdBN}\n onApproved={mutatePositionPermit}\n />\n ) : (\n <SignPositionPermitBtn\n color=\"secondary\"\n tokenPair={`${position.tokenA.ticker}-${position.tokenB.ticker}`}\n positionId={position.positionIdBN}\n setPermitInfo={(permitInfo: PermitInfo) =>\n setPermitInfo({\n signature: permitInfo.signature,\n deadline: String(permitInfo.deadline),\n })\n }\n />\n );\n};\n\nexport default AutomatedRebalanceBtn;\n","import { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { useSnackbarV2 } from \"@/components/SnackbarContext/SnackbarContextV2\";\nimport { getRebalanceRequest } from \"@/helper/positionHelper\";\nimport { estimateGas } from \"@/helper/transactionHelper\";\nimport { usePositionSnackBar } from \"@/hooks/snackbar/usePositionSnackbar\";\nimport { useSendTransactionWithGas } from \"@/hooks/wagmi/useSendTransactionWithGas\";\nimport { calculateGasMargin } from \"@/utils/helper\";\nimport { Button, Spinner } from \"@aperture/uikit\";\nimport { getLogger } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { Color } from \"@ui/components/Button/types\";\nimport { useEffect, useState } from \"react\";\nimport { Address, EstimateGasExecutionError } from \"viem\";\nimport { useAccount } from \"wagmi\";\nimport { useRebalanceContext } from \"../Context\";\n\nconst ConfirmRebalanceBtn: React.FC<{\n navBack: () => void;\n onClose: () => void;\n color?: Color;\n}> = ({ navBack, onClose, color = \"primary\" }) => {\n const { address } = useAccount();\n const { ammEnum, networkId, publicClient } = useNetwork();\n const [txRequest, setTxRequest] = useState<any>();\n const {\n position,\n error,\n isSyncing,\n form,\n swapInfo,\n swapInfoError,\n selectedSolver,\n permitInfo,\n txForm,\n tokenPrice,\n setProjectedAmount,\n setGasEstimated,\n setError,\n } = useRebalanceContext();\n const {\n ready,\n data,\n sendTransaction,\n error: txErrorMsg,\n isError,\n isPending,\n isSuccess,\n } = useSendTransactionWithGas(txRequest);\n const { addSnackbar } = useSnackbarV2();\n const { addPositionSnackbar } = usePositionSnackBar();\n\n useEffect(() => {\n if (isError) {\n addSnackbar({\n info: \"Your rebalance request has failed.\",\n status: \"failed\",\n });\n console.log(\"Failed to rebalance\", txErrorMsg);\n }\n }, [isError]);\n\n useEffect(() => {\n setGasEstimated(undefined);\n setTxRequest(undefined);\n if (swapInfo?.[selectedSolver]) {\n getRebalanceRequest(\n ammEnum,\n position,\n address as Address,\n form.priceRange,\n txForm,\n permitInfo,\n swapInfo?.[selectedSolver]?.swapDataHex,\n swapInfo?.[selectedSolver]?.liquidity,\n swapInfo?.[selectedSolver]?.feeBips,\n publicClient\n )\n .then(({ tx }) => {\n setProjectedAmount({\n amount0: swapInfo[selectedSolver]?.finalAmount0?.toString(),\n amount1: swapInfo[selectedSolver]?.finalAmount1?.toString(),\n });\n estimateGas(tx, networkId, publicClient)\n .then(({ totalGasCost, gasCost, l2GasAmount }) => {\n setTxRequest({ ...tx, gas: calculateGasMargin(l2GasAmount) });\n setGasEstimated(totalGasCost ?? gasCost);\n })\n .catch((gasError) => {\n const error = gasError as EstimateGasExecutionError;\n getLogger().error(\"Failed to estimate gas on getRebalanceTx: \", {\n error: JSON.stringify(error.message),\n });\n setError(error.details);\n });\n })\n .catch((error) => {\n getLogger().error(\"Failed to getRebalanceRequest: \", {\n ammEnum,\n networkId: position.chainId,\n address,\n positionId: position.positionId,\n priceRange: form.priceRange,\n txForm,\n swapDataHex: swapInfo?.[selectedSolver]?.swapDataHex,\n liquidity: swapInfo?.[selectedSolver]?.liquidity,\n feeBips: swapInfo?.[selectedSolver]?.feeBips,\n error: JSON.stringify(error),\n });\n setError(error.reason);\n });\n }\n }, [form.priceRange, txForm, permitInfo, swapInfo, selectedSolver]);\n\n useEffect(() => {\n if (isSuccess) {\n addPositionSnackbar({\n info: \"Your rebalance request has been sent.\",\n status: \"completed\",\n url: undefined,\n transaction: {\n hash: data,\n successMsg: `You have successfully rebalanced your ${position.tokenA.ticker}-${position.tokenB.ticker} position.`,\n },\n });\n\n const feePips =\n Math.floor(Number(swapInfo?.[selectedSolver]?.feeBips) / 1e14) / 1e4;\n const context = {\n ammEnum,\n txHash: data,\n feePips,\n feeUSD: swapInfo?.[selectedSolver]?.feeUSD,\n solver: swapInfo?.[selectedSolver]?.api?.solver,\n tokenA: position.tokenA.address,\n tokenB: position.tokenB.address,\n tokenPrice,\n finalAmount0: swapInfo?.[selectedSolver]?.finalAmount0?.toString(),\n finalAmount1: swapInfo?.[selectedSolver]?.finalAmount1?.toString(),\n swapData: swapInfo?.[selectedSolver]?.swapData,\n };\n\n if (feePips > 0.05) {\n getLogger().warn(\"Rebalance Request Sent Success\", context);\n } else {\n getLogger().info(\"Rebalance Request Sent Success\", context);\n }\n\n navBack();\n onClose();\n }\n }, [isSuccess]);\n\n return (\n <Button\n onClick={() => {\n getLogger().info(\"Rebalance.ClickConfirm.Start\", {\n ammEnum,\n });\n sendTransaction?.();\n }}\n disabled={\n !txRequest || !ready || !!error || isPending || isSuccess || isSyncing\n }\n variant=\"contained\"\n color={color}\n size=\"lg\"\n width=\"100%\"\n >\n {error ? (\n error\n ) : isPending || isSyncing ? (\n <Spinner />\n ) : swapInfoError && !swapInfo?.[selectedSolver] ? (\n \"Swap Info Unavailable\"\n ) : (\n \"Confirm Rebalance\"\n )}\n </Button>\n );\n};\n\nexport default ConfirmRebalanceBtn;\n","import ApproveOnChainBtn from \"@/components/Button/ApproveOnChainBtn\";\nimport SignPositionPermitBtn from \"@/components/Button/SignPositionPermitBtn\";\nimport { useFetchPositionPermission } from \"@/hooks/useFetchPositionPermission\";\nimport { useIfAuthorized } from \"@/hooks/useFetchUserAuthentication\";\nimport { useIsWalletContract } from \"@/hooks/useIsWalletContract\";\nimport { useRebalanceContext } from \"../Context\";\nimport ConfirmRebalanceBtn from \"./ConfirmRebalanceBtn\";\n\nexport const RebalanceWrapper: React.FC<{\n navBack: () => void;\n onClose: () => void;\n}> = ({ navBack, onClose }) => {\n const { ifAuthorized } = useIfAuthorized();\n const { data: isWalletContract } = useIsWalletContract();\n const { position, permitInfo, setPermitInfo } = useRebalanceContext();\n const {\n data: permitStatus,\n isLoading: isPermitLoading,\n mutate: mutatePositionPermit,\n } = useFetchPositionPermission(position.positionId);\n\n return (\n <>\n {ifAuthorized ||\n (isWalletContract && (isPermitLoading || permitStatus)) ||\n permitInfo ? (\n <ConfirmRebalanceBtn\n color=\"secondary\"\n {...{\n navBack,\n onClose,\n }}\n />\n ) : isWalletContract ? (\n <ApproveOnChainBtn\n text=\"Approve on-chain\"\n color=\"secondary\"\n tokenPair={`${position.tokenA.ticker}-${position.tokenB.ticker}`}\n positionIdBN={position.positionIdBN}\n onApproved={mutatePositionPermit}\n />\n ) : (\n <SignPositionPermitBtn\n color=\"secondary\"\n tokenPair={`${position.tokenA.ticker}-${position.tokenB.ticker}`}\n positionId={position.positionIdBN}\n setPermitInfo={setPermitInfo}\n />\n )}\n </>\n );\n};\n","import { UnstakePositionBtn } from \"@/components/Button/StakePositionBtn\";\nimport { useUnstakePositionContext } from \"@/components/Context/UnstakePositionContext\";\nimport { useGlobalSlippage } from \"@/components/GlobalStore\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\n\nimport { useFetchStakePositionsIds } from \"@/hooks/useFetchStakePositionsIds\";\nimport { DEFAULT_REBALANCE_SLIPPAGE } from \"@/utils/helper\";\nimport { isManta } from \"@/utils/networkHelper\";\nimport { Title, TitleText } from \"@/views/style\";\nimport {\n Button,\n DRAWER_CONTENT_WIDTH,\n DrawerTitle,\n FlexColumn,\n Headline5,\n SelectMenuTab,\n TransactionSettings,\n} from \"@aperture/uikit\";\nimport bigDecimal from \"js-big-decimal\";\nimport styled from \"styled-components\";\nimport { IMode } from \"..\";\nimport { IRebalanceTab, useRebalanceContext } from \"../Context\";\nimport AutomatedRebalanceBtn from \"./AutomatedRebalanceBtn\";\nimport { RebalanceWrapper } from \"./RebalanceWrapper\";\n\nconst Container = styled(FlexColumn)`\n height: 100%;\n gap: ${({ theme }) => theme.spacing[\"2xl\"]};\n`;\n\nconst StyledSelectMenuTab = styled(SelectMenuTab)<{ maxWidth: number }>`\n height: 40px;\n max-width: ${({ maxWidth }) => maxWidth}px;\n background: ${({ theme }) => theme.colors.global.background.BG3};\n`;\n\nconst Content = styled.div`\n width: ${DRAWER_CONTENT_WIDTH};\n`;\n\nconst Wrapper = styled.div<{ mode: string }>`\n overflow-x: hidden;\n overflow-y: auto;\n &::-webkit-scrollbar {\n width: 0;\n }\n height: ${({ mode }) =>\n mode === \"edit\" ? \"calc(100% - 168px)\" : \"calc(100% - 156px)\"};\n`;\n\nconst ButtonsContainer = styled.div`\n padding-bottom: 24px;\n display: flex;\n align-items: center;\n width: ${DRAWER_CONTENT_WIDTH};\n justify-content: flex-end;\n box-sizing: border-box;\n gap: 18px;\n`;\n\nconst StyledTransactionSettings = styled(TransactionSettings)`\n margin-right: auto;\n`;\n\nconst RebalanceLayout: React.FC<{\n mode: IMode;\n children: React.ReactNode;\n navBack: () => void;\n onClose: () => void;\n onModeChange: (mode: IMode) => void;\n}> = ({ mode, navBack, children, onClose, onModeChange }) => {\n const { networkId } = useNetwork();\n const { globalSlippage, setGlobalSlippage } = useGlobalSlippage();\n const {\n tab,\n position,\n form,\n txForm,\n setTxForm,\n error,\n swapInfo,\n isAutoBtnDisabled,\n isRebalanceChanged,\n isSyncing,\n automatedRebalancePayload,\n setTab: onTabChange,\n setProjectedAmount,\n } = useRebalanceContext();\n const { mutate: mutateStakePositionIds } = useFetchStakePositionsIds();\n const { stakePool, staked, setStaked } = useUnstakePositionContext();\n\n const isModePreview = mode === \"preview\";\n const isModeEdit = mode === \"edit\";\n const isTabRebalance = tab === \"Rebalance\";\n const previewTitle = isTabRebalance\n ? \"Preview Rebalance\"\n : \"Preview Automated Rebalance Intent\";\n\n return (\n <Container>\n <Title>\n <DrawerTitle\n onClick={() => {\n isModeEdit ? onClose() : onModeChange(\"edit\");\n }}\n isDrawer\n >\n {isModePreview && (\n <Headline5 fontSize={16} textAlign={\"end\"}>\n {previewTitle}\n </Headline5>\n )}\n {isModeEdit && (\n <Headline5 fontSize={16} textAlign={\"end\"}>\n Back to dashboard\n </Headline5>\n )}\n </DrawerTitle>\n </Title>\n {isModePreview ? (\n <TitleText>{previewTitle}</TitleText>\n ) : (\n <TitleText>Rebalance</TitleText>\n )}\n {isModeEdit && (\n <StyledSelectMenuTab\n maxWidth={315}\n containerPadding={\"0px\"}\n menu={[\"Rebalance\", \"Automated Rebalance\"]}\n selectWidth={[115, 185]}\n itemsWidth={[115, 188]}\n isPro={[false, true]}\n defaultSelected={[\"Rebalance\", \"Automated Rebalance\"].indexOf(tab)}\n onSelect={(value: IRebalanceTab) => onTabChange(value)}\n />\n )}\n <Wrapper mode={mode}>\n <Content>{children}</Content>\n </Wrapper>\n\n {/* Buttons */}\n {!(!isTabRebalance && isManta(networkId)) && (\n <ButtonsContainer>\n {isModeEdit && (\n <StyledTransactionSettings\n defaultSlippage={DEFAULT_REBALANCE_SLIPPAGE}\n globalSlippage={globalSlippage}\n settingsForm={txForm}\n dropdownPosition=\"topRight\"\n onFormChange={(form) => setTxForm(form)}\n buttonSize={\"small\"}\n setGlobalSlippage={(value) =>\n setGlobalSlippage((prev) => ({ ...prev, [networkId]: value }))\n }\n />\n )}\n <Button\n variant=\"contained\"\n color=\"default\"\n size=\"lg\"\n width=\"100%\"\n onClick={() => {\n mode === \"edit\" ? onClose() : onModeChange(\"edit\");\n isTabRebalance &&\n setProjectedAmount({\n amount0: \"0\",\n amount1: \"0\",\n });\n }}\n >\n Cancel\n </Button>\n {isModeEdit &&\n (stakePool && staked ? (\n <UnstakePositionBtn\n key={position.positionId}\n atStake={staked}\n gaugeAddress={stakePool.gaugeAddress}\n positionId={position.positionIdBN}\n handleTxSuccess={() => {\n setStaked(false);\n mutateStakePositionIds();\n }}\n />\n ) : (\n <Button\n variant=\"contained\"\n color=\"secondary\"\n size=\"lg\"\n width=\"100%\"\n disabled={\n !!error ||\n (!isTabRebalance && isAutoBtnDisabled) ||\n (isTabRebalance &&\n (isSyncing ||\n !isRebalanceChanged ||\n !swapInfo ||\n swapInfo.length === 0)) ||\n bigDecimal.compareTo(\n form.priceRange.min,\n form.priceRange.max\n ) !== -1\n }\n onClick={() => {\n onModeChange(\"preview\");\n }}\n >\n {error\n ? error\n : isTabRebalance\n ? \"Rebalance Now\"\n : \"Set Up Automated Rebalance\"}\n </Button>\n ))}\n {isModePreview &&\n (isTabRebalance ? (\n <RebalanceWrapper\n {...{\n navBack,\n onClose,\n }}\n />\n ) : (\n <AutomatedRebalanceBtn\n {...{\n payload: automatedRebalancePayload,\n onClose,\n }}\n />\n ))}\n </ButtonsContainer>\n )}\n </Container>\n );\n};\n\nexport default RebalanceLayout;\n","import { CommonContainer, Row } from \"@/views/style\";\nimport { FlexColumn } from \"@ui/common\";\nimport { CommonLgText, Headline5 } from \"@ui/components\";\nimport styled from \"styled-components\";\nimport { Subtitle } from \"../RebalanceEdit/style\";\n\nexport const Container = styled.div`\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.spacing[\"xl\"]};\n`;\nexport const PriceRange = styled(CommonContainer)`\n position: relative;\n`;\nexport const PositionContainer = styled(CommonContainer)`\n width: 100%;\n`;\nexport const Wrapper = styled(FlexColumn)`\n gap: ${({ theme }) => theme.spacing.lg};\n margin-bottom: 12px;\n`;\n\nexport const FixedSubtitle = styled(Subtitle)`\n margin-bottom: 12px;\n`;\n\nexport const StyledCommonText = styled(CommonLgText)`\n color: ${({ theme }) => theme.colors.global.text.T1};\n`;\n\nexport const H5 = styled(Headline5)`\n color: ${({ theme }) => theme.colors.global.text.T1};\n`;\n\nexport const StyledRow = styled(Row)`\n color: ${({ theme }) => theme.colors.global.text.T1};\n`;\n","import { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport {\n calculateTotalValue,\n getProjectedLiquidityPosition,\n} from \"@/helper/positionHelper\";\nimport { getTokenPercentages } from \"@/helper/tokenHelper\";\nimport {\n DEFAULT_APERTURE_FLAT_FEE,\n DEFAULT_APERTURE_REBALANCE_FEE,\n DEFAULT_APERTURE_REINVEST_FEE,\n} from \"@/utils/helper\";\nimport { formatPrice } from \"@/utils/numberFormat\";\nimport {\n DividerHorizontal,\n OtherInfo,\n Text1,\n TimeZone,\n RowTitle as Title,\n} from \"@/views/style\";\nimport { IToken } from \"@aperture/types\";\nimport {\n FeeInfoCard,\n Flex,\n FlexColumn,\n Headline5,\n NoteCard,\n PriceRangeKey,\n RebalanceActionTab,\n SwapRoute,\n TokenInfo,\n TokenPriceGroup,\n TriggerSetupPreview,\n formatUSDAmount,\n} from \"@aperture/uikit\";\nimport {\n AUTOMATION_EXPIRATION_IN_DAYS,\n viem,\n} from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport bigDecimal from \"js-big-decimal\";\nimport moment from \"moment\";\nimport momentTimeZone from \"moment-timezone\";\nimport { useMemo } from \"react\";\nimport { useTheme } from \"styled-components\";\nimport { formatUnits } from \"viem\";\nimport { useRebalanceContext } from \"../Context\";\nimport { Subtitle } from \"../RebalanceEdit/style\";\nimport {\n Container,\n FixedSubtitle,\n PositionContainer,\n PriceRange,\n StyledCommonText,\n StyledRow,\n Wrapper,\n} from \"./style\";\n\nconst RebalancePreview: React.FC = () => {\n const { ammEnum, networkId } = useNetwork();\n const theme = useTheme();\n const {\n tab,\n position,\n trigger,\n positionDetails,\n tokenPrice,\n form,\n txForm,\n isSyncing,\n swapInfo,\n selectedSolver,\n suggestedSolver,\n gasEstimated,\n } = useRebalanceContext();\n const isCreatingTrigger = !trigger;\n const tokens: [IToken, IToken] = [position.tokenA, position.tokenB];\n const nativeCurrency = viem.getNativeCurrency(networkId);\n const estimate = useMemo(() => {\n if (\n swapInfo?.[selectedSolver]?.finalAmount0 !== undefined &&\n swapInfo?.[selectedSolver]?.finalAmount1 !== undefined &&\n positionDetails\n ) {\n const finalAmount0 = formatUnits(\n swapInfo?.[selectedSolver]?.finalAmount0,\n positionDetails.token0.decimals\n );\n const finalAmount1 = formatUnits(\n swapInfo?.[selectedSolver]?.finalAmount1,\n positionDetails.token1.decimals\n );\n return {\n token0Amount: finalAmount0,\n token1Amount: finalAmount1,\n ...getTokenPercentages(\n finalAmount0,\n finalAmount1,\n tokenPrice[0],\n tokenPrice[1]\n ),\n };\n } else if (positionDetails) {\n const res = getProjectedLiquidityPosition(\n networkId,\n position,\n positionDetails.position,\n form.priceRange.tickLower,\n form.priceRange.tickUpper,\n tokenPrice,\n tab === \"Automated Rebalance\" ? form.trigger : undefined\n );\n return {\n token0Amount: res[0].amount,\n token1Amount: res[1].amount,\n token0Percent: res[0].percent,\n token1Percent: res[1].percent,\n };\n } else {\n return {\n token0Amount: tokens[0].amount,\n token1Amount: tokens[1].amount,\n ...getTokenPercentages(\n position.tokenA.amount,\n position.tokenB.amount,\n tokenPrice[0],\n tokenPrice[1]\n ),\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n form.trigger,\n tab,\n form.priceRange.tickLower,\n form.priceRange.tickUpper,\n swapInfo,\n selectedSolver,\n tokenPrice,\n ]);\n\n const timeZone = momentTimeZone.tz.guess();\n\n const formatTokenPrice = (type: PriceRangeKey) => {\n switch (type) {\n case PriceRangeKey.MIN:\n return bigDecimal.compareTo(form.priceRange.swapMax, 0) > 0\n ? formatPrice(form.priceRange.min)\n : \"∞\";\n case PriceRangeKey.MAX:\n return bigDecimal.compareTo(form.priceRange.swapMin, 0) > 0\n ? formatPrice(form.priceRange.max)\n : \"∞\";\n case PriceRangeKey.SWAP_MIN:\n return bigDecimal.compareTo(form.priceRange.max, 0) > 0\n ? formatPrice(form.priceRange.swapMin)\n : \"∞\";\n case PriceRangeKey.SWAP_MAX:\n return bigDecimal.compareTo(form.priceRange.min, 0) > 0\n ? formatPrice(form.priceRange.swapMax)\n : \"∞\";\n }\n };\n\n const formatFutureSpotPrice = (type: PriceRangeKey) => {\n if (form.futureSpotTab !== RebalanceActionTab.PERCENTAGES) return \"-\";\n switch (type) {\n case PriceRangeKey.MIN:\n return `${form.percentageRange.min}%`;\n case PriceRangeKey.MAX:\n return `${form.percentageRange.max}%`;\n case PriceRangeKey.SWAP_MIN:\n return `${form.percentageRange.swapMin}%`;\n case PriceRangeKey.SWAP_MAX:\n return `${form.percentageRange.swapMax}%`;\n }\n };\n\n const feeDesc = `$${DEFAULT_APERTURE_FLAT_FEE} + ${bigDecimal.multiply(\n DEFAULT_APERTURE_REBALANCE_FEE,\n 100\n )}% of the swapped amount + ${\n DEFAULT_APERTURE_REINVEST_FEE * 100\n }% of the reinvested amount.`;\n\n return (\n <Container>\n {tab === \"Automated Rebalance\" && (\n <TriggerSetupPreview form={form.trigger} tokens={tokens} />\n )}\n <PriceRange>\n <FixedSubtitle>New Price Range</FixedSubtitle>\n <TokenPriceGroup\n tabPosition=\"left\"\n buyToken={{\n ticker: tokens[0].ticker,\n max: form.useFutureSpot\n ? formatFutureSpotPrice(PriceRangeKey.MAX)\n : formatTokenPrice(PriceRangeKey.MAX),\n min: form.useFutureSpot\n ? formatFutureSpotPrice(PriceRangeKey.MIN)\n : formatTokenPrice(PriceRangeKey.MIN),\n }}\n sellToken={{\n ticker: tokens[1].ticker,\n max: form.useFutureSpot\n ? formatFutureSpotPrice(PriceRangeKey.SWAP_MAX)\n : formatTokenPrice(PriceRangeKey.SWAP_MAX),\n min: form.useFutureSpot\n ? formatFutureSpotPrice(PriceRangeKey.SWAP_MIN)\n : formatTokenPrice(PriceRangeKey.SWAP_MIN),\n }}\n futureSpotTab={form.useFutureSpot ? form.futureSpotTab : undefined}\n style={{ gap: 16 }}\n />\n </PriceRange>\n {(tab === \"Rebalance\" || !form.useFutureSpot) && (\n <PositionContainer>\n <Wrapper>\n <Subtitle>Projected Liquidity Position</Subtitle>\n <div>\n <TokenInfo\n key={tokens[0].address}\n Icon={tokens[0].Icon}\n ticker={tokens[0].ticker}\n address={tokens[0].address}\n native={tokens[0].native}\n decimals={tokens[0].decimals}\n amount={estimate.token0Amount}\n price={tokenPrice[0]}\n maxWidth={999}\n tag={`${estimate.token0Percent}%`}\n />\n <TokenInfo\n key={tokens[1].address}\n Icon={tokens[1].Icon}\n ticker={tokens[1].ticker}\n address={tokens[1].address}\n native={tokens[1].native}\n decimals={tokens[1].decimals}\n amount={estimate.token1Amount}\n price={tokenPrice[1]}\n maxWidth={999}\n tag={`${estimate.token1Percent}%`}\n />\n </div>\n </Wrapper>\n <NoteCard text=\"Any uncollected fees will be collected and reinvested into the new position after rebalance.\" />\n </PositionContainer>\n )}\n <DividerHorizontal />\n {tab === \"Rebalance\" &&\n (isSyncing || swapInfo?.[selectedSolver]?.swapRoutes?.length > 0) && (\n <OtherInfo>\n <Text1>Order Routing</Text1>\n <SwapRoute\n maxWidth={571}\n loading={isSyncing || !swapInfo}\n priceImpact={swapInfo?.[selectedSolver]?.priceImpact}\n api={swapInfo?.[selectedSolver]?.api}\n fromToken={swapInfo?.[selectedSolver]?.fromToken}\n routes={swapInfo?.[selectedSolver]?.swapRoutes ?? []}\n wBorder={true}\n suggested={selectedSolver === suggestedSolver}\n />\n </OtherInfo>\n )}\n <OtherInfo gap={theme.spacing.md}>\n {tab === \"Automated Rebalance\" && (\n <>\n <StyledRow>\n <Title>Gas Ceiling</Title>\n <Headline5>\n {bigDecimal.multiply(form.gasCeiling, 100)}% of the position\n </Headline5>\n </StyledRow>\n <FlexColumn gap={\"md\"}>\n <StyledRow>\n <Title>Trigger Expiration</Title>\n <Headline5>\n {moment()\n .add(AUTOMATION_EXPIRATION_IN_DAYS, \"days\")\n .format(\"MMM Do, YYYY\")}{\" \"}\n {`(${AUTOMATION_EXPIRATION_IN_DAYS} Days)`}\n </Headline5>\n </StyledRow>\n <TimeZone>\n {`${timeZone} (GMT${momentTimeZone.tz(timeZone).format(\"Z\")})`}\n </TimeZone>\n </FlexColumn>\n </>\n )}\n {(tab === \"Rebalance\" || isCreatingTrigger) && (\n <>\n {tab === \"Rebalance\" && (\n <>\n <Flex justifyContent=\"space-between\">\n <Title>Est. Total Gas Fee</Title>\n <StyledCommonText>\n {`${\n (gasEstimated &&\n formatUnits(gasEstimated, nativeCurrency.decimals)) ??\n \"-\"\n } ${nativeCurrency.symbol}`}\n </StyledCommonText>\n </Flex>\n <Flex justifyContent=\"space-between\">\n <Title>Slippage Setting</Title>\n <StyledCommonText>\n {Math.floor(txForm.slippage * 10000) / 100}%\n </StyledCommonText>\n </Flex>\n </>\n )}\n <FeeInfoCard\n styles={{ size: \"lg\" }}\n amm={ammEnum}\n feeInfo={{\n fee: DEFAULT_APERTURE_REBALANCE_FEE,\n amount: calculateTotalValue(\n tokens[0].amount,\n tokens[1].amount,\n tokenPrice[0],\n tokenPrice[1]\n ),\n feeUSD:\n tab === \"Rebalance\"\n ? `${formatUSDAmount(\n swapInfo?.[selectedSolver]?.feeUSD ?? \"-\"\n )}`\n : feeDesc,\n active: true,\n }}\n hint={tab === \"Rebalance\" ? `Aperture charges ${feeDesc}` : \"\"}\n />\n </>\n )}\n </OtherInfo>\n </Container>\n );\n};\n\nexport default RebalancePreview;\n","import { IPositionDetails } from \"@/config/position/positionConfig\";\nimport { TriggerItem } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { GotoType } from \"../types\";\nimport { RebalanceProvider } from \"./Context\";\nimport RebalanceEdit from \"./RebalanceEdit\";\nimport RebalanceLayout from \"./RebalanceLayout\";\nimport RebalancePreview from \"./RebalancePreview\";\n\nexport type IMode = \"edit\" | \"preview\";\n\nexport const Rebalance: React.FC<{\n details: IPositionDetails;\n goto: GotoType;\n tabs: 0 | 1;\n navBack: () => void;\n trigger: TriggerItem | undefined;\n}> = ({ details, goto, tabs, trigger, navBack }) => {\n const [mode, setMode] = useState<IMode>(\"edit\");\n const goToDetails = useCallback(() => goto.details(), [goto]);\n\n return (\n <RebalanceProvider {...{ tabs, position: details, trigger }}>\n <RebalanceLayout\n mode={mode}\n onClose={goToDetails}\n navBack={navBack}\n onModeChange={(mode: IMode) => setMode(mode)}\n >\n {mode === \"edit\" && <RebalanceEdit />}\n {mode === \"preview\" && <RebalancePreview />}\n </RebalanceLayout>\n </RebalanceProvider>\n );\n};\n","import {\n useGlobalSlippage,\n useSolverRoutingStore,\n} from \"@/components/GlobalStore\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { IPositionDetails, SwapCall } from \"@/config/position/positionConfig\";\nimport {\n calculateTotalValue,\n getAddPositionRequest,\n getIncreaseLiquidityOptimalTx,\n} from \"@/helper/positionHelper\";\nimport { isWrappedNative } from \"@/helper/tokenHelper\";\nimport { estimateGas } from \"@/helper/transactionHelper\";\nimport { useCurrentChainToken } from \"@/hooks/globalState/useCurrentChainToken\";\nimport { useOnNetworkAccountChange } from \"@/hooks/globalState/useOnNetworkAccountChange\";\nimport { useSwapInfo } from \"@/hooks/swapInfo/useSwapInfo\";\nimport { usePositionAutoCompound } from \"@/hooks/trigger/usePositionTrigger\";\nimport { useEventCallback } from \"@/hooks/useEventCallback\";\nimport { TokenPriceMap } from \"@/hooks/useFetchAllChainsTokensPrice\";\nimport { useFetchTokenMap } from \"@/hooks/useFetchTokenMap\";\nimport {\n TokenBalanceMap,\n useFetchUserTokensBalance,\n} from \"@/hooks/useFetchUserTokensBalance\";\nimport { DEFAULT_SLIPPAGE, calculateGasMargin } from \"@/utils/helper\";\nimport { ITokenPair } from \"@aperture/types\";\nimport { ITransactionSettingsForm, SwapPathProps } from \"@aperture/uikit\";\nimport { getLogger, viem } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { Pool } from \"@aperture_finance/uniswap-v3-sdk\";\nimport { useDebounce } from \"ahooks\";\nimport bigDecimal from \"js-big-decimal\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useState,\n useTransition,\n} from \"react\";\nimport {\n EstimateGasExecutionError,\n TransactionRequest,\n formatUnits,\n} from \"viem\";\nimport { useAccount } from \"wagmi\";\nimport { IAddLiquidityEditForm } from \"./AddLiquidityEdit/types\";\n\nexport interface IAddLiquidityContextV2 {\n position: IPositionDetails;\n pool: Pool;\n liquidityInUS: string;\n collectableInUS: string;\n tokenPairPrice: [string, string];\n form: IAddLiquidityEditForm;\n txnSetting: ITransactionSettingsForm;\n isTokenNonZero: boolean;\n showSwapPath: boolean;\n error: string | null;\n autoCompoundExists: boolean;\n tokens: ITokenPair;\n isSyncing: boolean;\n setIsSyncing: (isSyncing: boolean) => void;\n isSyncingTx: boolean;\n swapInfo: SwapPathProps[] | undefined;\n swapInfoError?: Error;\n runSwapInfo: (swapCall: SwapCall) => void;\n cancelSwapInfo: () => void;\n suggestedSolver: number;\n selectedSolver: number;\n txErrorMsg: string | undefined;\n txRequest: any;\n minAmounts: {\n amount0Min: string;\n amount1Min: string;\n };\n gasEstimated: bigint | undefined;\n openSettings: boolean;\n setOpenSettings: React.Dispatch<React.SetStateAction<boolean>>;\n setForm: React.Dispatch<React.SetStateAction<IAddLiquidityEditForm>>;\n setTxnSetting: React.Dispatch<React.SetStateAction<ITransactionSettingsForm>>;\n setError: React.Dispatch<React.SetStateAction<string>>;\n setSelectedSolver: (idx: number) => void;\n}\n\nconst AddLiquidityContextV2 = React.createContext<IAddLiquidityContextV2>(\n null as any\n);\n\ninterface AddLiquidityProviderV2Props {\n position: IPositionDetails;\n}\n\nexport const AddLiquidityProviderV2: React.FC<\n React.PropsWithChildren<AddLiquidityProviderV2Props>\n> = ({ children, position, ...props }) => {\n const { ammEnum, networkId, publicClient } = useNetwork();\n const { address } = useAccount();\n const [, startTransition] = useTransition();\n const { currentTokenPrice: tokenPriceList } = useCurrentChainToken(networkId);\n const { data: balanceData } = useFetchUserTokensBalance();\n const { globalSlippage } = useGlobalSlippage();\n const { data: tokenMap } = useFetchTokenMap();\n\n const autoCompound = usePositionAutoCompound(\n position.positionId,\n position.chainId\n );\n const [pool, setPool] = useState<Pool | null>(null);\n const [error, setError] = useState<string | null>(null);\n const [openSettings, setOpenSettings] = useState(false);\n\n const tokenAPrice = tokenPriceList?.[position.tokenA.address]?.price ?? \"0\";\n const tokenBPrice = tokenPriceList?.[position.tokenB.address]?.price ?? \"0\";\n\n const tokenPairPrice = useMemo<[string, string]>(\n () => [tokenAPrice, tokenBPrice],\n [tokenAPrice, tokenBPrice]\n );\n\n const nativeStatus = {\n tokenA: isWrappedNative(position.tokenA.address, position.chainId),\n tokenB: isWrappedNative(position.tokenB.address, position.chainId),\n };\n\n const tokensInfo = useMemo(\n () => ({\n poolTokens: [\n tokenMap?.[`${position.tokenA.address}-false`],\n tokenMap?.[`${position.tokenB.address}-false`],\n ],\n poolTokensToNative: [\n tokenMap?.[`${position.tokenA.address}-${nativeStatus.tokenA}`],\n tokenMap?.[`${position.tokenB.address}-${nativeStatus.tokenB}`],\n ],\n }),\n [tokenMap]\n );\n\n const [form, setForm] = useState<IAddLiquidityEditForm>({\n tokenA: \"\",\n tokenB: \"\",\n useNative: nativeStatus.tokenA || nativeStatus.tokenB,\n });\n\n const debounceForm = useDebounce(form, { wait: 500 });\n const tokens: ITokenPair = useMemo(() => {\n if (tokenMap)\n return (\n form.useNative ? tokensInfo.poolTokensToNative : tokensInfo.poolTokens\n ) as ITokenPair;\n\n return getTokens(position, tokenPriceList, balanceData);\n }, [form.useNative, tokensInfo]);\n\n const isTokenNonZero = useMemo(() => {\n const isTokenANonZero = bigDecimal.compareTo(debounceForm.tokenA, \"0\") > 0;\n const isTokenBNonZero = bigDecimal.compareTo(debounceForm.tokenB, \"0\") > 0;\n return isTokenANonZero || isTokenBNonZero;\n }, [debounceForm]);\n const showSwapPath = error === null && isTokenNonZero;\n\n const liquidityInUS = calculateTotalValue(\n position.tokenA.amount,\n position.tokenB.amount,\n tokenPairPrice[0],\n tokenPairPrice[1]\n );\n const collectableInUS = calculateTotalValue(\n position.tokenA.collectableAmount,\n position.tokenB.collectableAmount,\n tokenPairPrice[0],\n tokenPairPrice[1]\n );\n const [txnSetting, setTxnSetting] = useState<ITransactionSettingsForm>({\n slippage: globalSlippage ?? DEFAULT_SLIPPAGE,\n deadline: \"30\",\n });\n const [txErrorMsg, setTxErrorMsg] = useState(undefined);\n\n const [txRequest, setTxRequest] = useState<any>(undefined);\n const [minAmounts, setMinAmounts] = useState({\n amount0Min: \"0\",\n amount1Min: \"0\",\n });\n const [gasEstimated, setGasEstimated] = useState<bigint>(undefined);\n\n const poolKey =\n ammEnum === \"SLIPSTREAM\" ? position.tickSpacing : position.feeTier;\n\n useEffect(() => {\n if (position.tokenA.address && position.tokenB.address && poolKey) {\n viem\n .getPool(\n position.tokenA.address,\n position.tokenB.address,\n poolKey,\n position.chainId,\n ammEnum,\n publicClient\n )\n .then((pool) => {\n setPool(pool);\n })\n .catch((error) => {\n getLogger().error(\"AddLPV2.getPoolFailed: \", {\n ammEnum,\n networkId: position.chainId,\n tokenA: position.tokenA.address,\n tokenB: position.tokenB.address,\n poolKey,\n error: JSON.stringify(error),\n });\n setError(\"Token pair not supported\");\n setPool(null);\n });\n } else {\n setError(\"Token pair not supported\");\n setPool(null);\n }\n }, []);\n\n useOnNetworkAccountChange(() => {\n cancelSwapInfo();\n });\n\n const {\n swapInfo,\n selectedSolver,\n suggestedSolver,\n setSelectedSolver,\n noNeedSwap,\n } = useSolverRoutingStore();\n const {\n isSyncing,\n setIsSyncing,\n isSyncingTx,\n setIsSyncingTx,\n runSwapInfo,\n cancelSwapInfo,\n swapInfoError,\n } = useSwapInfo();\n\n useEffect(() => {\n setIsSyncing(true);\n const option_amounts = [\n form.tokenA !== \"\" ? form.tokenA : \"0\",\n form.tokenB !== \"\" ? form.tokenB : \"0\",\n ];\n if (\n bigDecimal.compareTo(option_amounts[0], 0) === 0 &&\n bigDecimal.compareTo(option_amounts[1], 0) === 0\n ) {\n cancelSwapInfo();\n } else {\n const fetchKey =\n `${ammEnum}-${networkId}-${address}` +\n `:${position.positionId}` +\n `:${txnSetting.slippage}_${txnSetting.deadline}` +\n `:[${option_amounts[0]},${option_amounts[1]}]`;\n runSwapInfo({\n type: \"IncreaseLiquidity\",\n positionId: position.positionId,\n slippage: txnSetting.slippage,\n tokenMap,\n fetchKey,\n options: {\n pool,\n deadline: Number(txnSetting.deadline),\n amounts: option_amounts as [string, string],\n },\n });\n }\n }, [\n form.tokenA,\n form.tokenB,\n ammEnum,\n networkId,\n address,\n pool,\n position,\n txnSetting,\n tokenMap,\n setIsSyncing,\n runSwapInfo,\n cancelSwapInfo,\n ]);\n\n const getEstimates = useEventCallback((tx: TransactionRequest) => {\n estimateGas(tx, networkId, publicClient)\n .then(({ l2GasAmount, totalGasCost, gasCost }) => {\n setGasEstimated(totalGasCost ?? gasCost);\n setTxRequest({ ...tx, gas: calculateGasMargin(l2GasAmount) });\n setTxErrorMsg(undefined);\n })\n .catch((gasError) => {\n const error = gasError as EstimateGasExecutionError;\n getLogger().error(\n \"AddLPV2.getIncreaseLiquidityV3TxEstimateGasFailed: \",\n {\n ammEnum,\n networkId,\n address,\n positionId: position.positionId,\n pool,\n amounts: [form.tokenA, form.tokenB],\n slippage: txnSetting.slippage,\n deadline: txnSetting.deadline,\n error: error.message,\n }\n );\n cancelSwapInfo();\n setGasEstimated(undefined);\n setTxErrorMsg(error.details);\n })\n .finally(() => setIsSyncingTx(false));\n });\n\n const resetTxStatus = () => {\n setIsSyncingTx(false);\n startTransition(() => {\n setMinAmounts({\n amount0Min: \"0\",\n amount1Min: \"0\",\n });\n setGasEstimated(undefined);\n });\n };\n\n const getTx = useCallback(\n async (formattedSwapInfo?: SwapPathProps) => {\n const deadline = Number(txnSetting.deadline || 30);\n if (noNeedSwap) {\n if (error === null) {\n getAddPositionRequest(\n ammEnum,\n networkId,\n position,\n pool,\n txnSetting.slippage,\n deadline,\n [form.tokenA, form.tokenB],\n address,\n publicClient,\n form.useNative\n )\n .then((tx) => {\n getEstimates(tx);\n setTxErrorMsg(undefined);\n })\n .catch((txErr) => {\n getLogger().error(\"AddLPV2.getAddPositionRequestFailed: \", {\n ammEnum,\n networkId,\n position,\n pool,\n slippage: txnSetting.slippage,\n amounts: [form.tokenA, form.tokenB],\n address,\n useNative: form.useNative,\n error: JSON.stringify(txErr),\n });\n setTxErrorMsg(\"Failed to generate transaction\");\n cancelSwapInfo();\n })\n .finally(() => setIsSyncing(false));\n }\n } else {\n if (!formattedSwapInfo || !showSwapPath) {\n resetTxStatus();\n } else {\n if (formattedSwapInfo) {\n getIncreaseLiquidityOptimalTx(\n ammEnum,\n networkId,\n address,\n position.positionId,\n pool,\n txnSetting.slippage,\n deadline,\n [form.tokenA, form.tokenB],\n formattedSwapInfo?.swapDataHex,\n formattedSwapInfo?.liquidity,\n publicClient,\n formattedSwapInfo?.token0FeeAmount,\n formattedSwapInfo?.token1FeeAmount,\n form.useNative\n )\n .then(({ tx, amounts }) => {\n setMinAmounts({\n amount0Min: formatUnits(\n BigInt(amounts.amount0Min),\n position.tokenA.decimals\n ),\n amount1Min: formatUnits(\n BigInt(amounts.amount1Min),\n position.tokenB.decimals\n ),\n });\n getEstimates(tx);\n })\n .catch((txErr) => {\n getLogger().error(\n \"AddLPV2.getIncreaseLiquidityOptimalV3TxFailed: \",\n {\n ammEnum,\n networkId,\n address,\n positionId: position.positionId,\n pool,\n slippage: txnSetting.slippage,\n amounts: [form.tokenA, form.tokenB],\n swapDataHex: formattedSwapInfo?.swapDataHex,\n liquidity: formattedSwapInfo?.liquidity,\n useNative: form.useNative,\n error: JSON.stringify(txErr),\n }\n );\n setTxErrorMsg(\"Failed to generate transaction\");\n cancelSwapInfo();\n });\n }\n }\n }\n },\n [form, txnSetting, error, showSwapPath]\n );\n\n useEffect(() => {\n if (swapInfo?.length) {\n if (selectedSolver !== -1) getTx(swapInfo[selectedSolver]);\n } else {\n resetTxStatus();\n }\n }, [swapInfo, selectedSolver]);\n\n return (\n <AddLiquidityContextV2.Provider\n value={{\n tokenPairPrice,\n form,\n isTokenNonZero,\n showSwapPath,\n position,\n pool,\n liquidityInUS,\n collectableInUS,\n txnSetting,\n error,\n autoCompoundExists: !!autoCompound,\n isSyncing,\n setIsSyncing,\n isSyncingTx,\n swapInfo,\n swapInfoError,\n runSwapInfo,\n cancelSwapInfo,\n suggestedSolver,\n selectedSolver,\n setSelectedSolver,\n tokens,\n txErrorMsg,\n txRequest,\n minAmounts,\n gasEstimated,\n setForm,\n setTxnSetting,\n setError,\n openSettings,\n setOpenSettings,\n ...props,\n }}\n >\n {children}\n </AddLiquidityContextV2.Provider>\n );\n};\n\nexport const useAddLiquidityContextV2 = () => {\n return React.useContext(AddLiquidityContextV2);\n};\n\nfunction getTokens(\n position: IPositionDetails,\n tokenPriceList: TokenPriceMap,\n tokenBalanceList: TokenBalanceMap\n): ITokenPair {\n return [\n {\n ...position.tokenA,\n price: tokenPriceList?.[position.tokenA.address]?.price || \"0\",\n amount: tokenBalanceList?.[position.tokenA.address]?.balance || \"0\",\n },\n {\n ...position.tokenB,\n price: tokenPriceList?.[position.tokenB.address]?.price || \"0\",\n amount: tokenBalanceList?.[position.tokenB.address]?.balance || \"0\",\n },\n ];\n}\n","import { StatusTab, WhiteCard } from \"@aperture/uikit\";\nimport { viem } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { useState } from \"react\";\nimport styled from \"styled-components\";\nimport { useNetwork } from \"../NetworkContext/NetworkContext\";\n\nconst StyledWC = styled(WhiteCard)`\n padding: 0;\n display: flex;\n align-items: center;\n color: ${({ theme }) => theme.colors.global.text.T1};\n`;\nconst UseNative: React.FC<{\n text: string;\n nativeChange: (useNative: boolean) => void;\n}> = ({ text, nativeChange, ...props }) => {\n const [useNative, setUseNative] = useState(true);\n const { networkId } = useNetwork();\n const native = viem.getNativeCurrency(networkId);\n\n return (\n <StyledWC {...props}>\n <StatusTab\n noText={true}\n onChange={(onStatus: boolean) => {\n setUseNative(onStatus);\n nativeChange(onStatus);\n }}\n onStatus={useNative}\n />\n {text} any {native.wrapped.symbol} as {native.symbol}\n </StyledWC>\n );\n};\n\nexport default UseNative;\n","import { useUnstakePositionContext } from \"@/components/Context/UnstakePositionContext\";\nimport { useSolverRoutingStore } from \"@/components/GlobalStore\";\nimport { OrderRoutingModal } from \"@/components/layout/hooks\";\nimport { getSwapFailureMessage } from \"@/helper/positionHelper\";\nimport { DEFAULT_APERTURE_ZAPIN_FEE } from \"@/utils/helper\";\nimport { ApertureLogos } from \"@aperture/assetkit\";\nimport { SwapPath } from \"@aperture/uikit\";\nimport { E_ModalKey, FlexColumn, T2, useModal } from \"@aperture/uikitv2\";\nimport styled, { useTheme } from \"styled-components\";\nimport { useAddLiquidityContextV2 } from \"../AddLiquidityContextV2\";\n\nconst NoSwapInfoWrapper = styled(FlexColumn)`\n margin: 32px 0;\n align-items: center;\n gap: ${({ theme }) => theme.spacing[\"3xl\"]};\n`;\nconst NoSwapInfoText = styled(T2)`\n color: ${({ theme }) => theme.colors.global.text.T3};\n`;\n\nexport const ZapInSwapPath = (props: {\n hide?: boolean;\n keepDropdown?: boolean;\n}) => {\n const { hide, keepDropdown } = props;\n const theme = useTheme();\n const { staked } = useUnstakePositionContext();\n const { form, isSyncing, isSyncingTx, swapInfoError } =\n useAddLiquidityContextV2();\n const { swapInfo, selectedSolver, suggestedSolver, noNeedSwap } =\n useSolverRoutingStore();\n const { setModalState } = useModal();\n\n const selectedSwapInfo = swapInfo?.[selectedSolver];\n if (\n (!isSyncing && !isSyncingTx && !selectedSwapInfo && !swapInfoError) ||\n hide\n ) {\n return null;\n } else if (!isSyncing && !isSyncingTx && noNeedSwap) {\n return (\n <NoSwapInfoWrapper>\n <ApertureLogos.OutlineLogo fill={theme.colors.global.text.T1} />\n <NoSwapInfoText>No need to swap</NoSwapInfoText>\n </NoSwapInfoWrapper>\n );\n }\n\n return (\n <>\n <SwapPath\n maxSwapRouteWidth={562}\n style={{ marginTop: 8 }}\n loading={isSyncing || isSyncingTx}\n priceImpact={selectedSwapInfo?.priceImpact}\n api={selectedSwapInfo?.api}\n fromToken={selectedSwapInfo?.fromToken}\n swapData={selectedSwapInfo?.swapData}\n swapRoutes={selectedSwapInfo?.swapRoutes}\n showSwapRoutes={selectedSwapInfo?.swapRoutes?.length > 0}\n errorMsg={getSwapFailureMessage(\n swapInfo,\n swapInfoError,\n form.netDepositUSDValue ?? \"0\",\n staked\n )}\n onBtnClick={() => setModalState(E_ModalKey.ORDER_ROUTING_MODAL, true)}\n suggested={selectedSolver === suggestedSolver}\n gasFeeUSD={selectedSwapInfo?.gasFeeUSD}\n keepDropdown={keepDropdown}\n feeUSD={selectedSwapInfo?.feeUSD}\n feePercentage={DEFAULT_APERTURE_ZAPIN_FEE * 100}\n atStake={staked}\n />\n <OrderRoutingModal />\n </>\n );\n};\n","import { useUnstakePositionContext } from \"@/components/Context/UnstakePositionContext\";\nimport { useSolverRoutingStore } from \"@/components/GlobalStore\";\nimport {\n ErrorMsg,\n getOtherTokenAmount,\n getSwapFailureMessage,\n} from \"@/helper/positionHelper\";\nimport { AlignTokenAmounts } from \"@/views/NewPosition/Pool/SwapDetail\";\nimport { ChevronDown } from \"@aperture/uikit\";\nimport { Flex, RaindropSpinner, T3Regular } from \"@aperture/uikitv2\";\nimport bigDecimal from \"js-big-decimal\";\nimport { Dispatch, SetStateAction, useEffect, useMemo, useState } from \"react\";\nimport styled from \"styled-components\";\nimport { useAddLiquidityContextV2 } from \"../AddLiquidityContextV2\";\nimport { ZapInSwapPath } from \"./ZapInSwapPath\";\nimport { IAddLiquidityEditForm } from \"./types\";\n\nconst Title = styled(Flex)<{ disabled: boolean }>`\n cursor: ${({ disabled }) => (disabled ? \"auto\" : \"pointer\")};\n`;\nconst Headline = styled(T3Regular)`\n color: ${({ theme }) => theme.colors.global.text.T1};\n`;\nconst Wrapper = styled.div`\n margin-top: 4px;\n`;\nconst ErrorMessage = styled(T3Regular)`\n padding: 2px 12px;\n border-radius: ${({ theme }) => theme.radii.md};\n color: ${({ theme }) => theme.colors.global.warning};\n background: ${({ theme }) =>\n theme.isDark ? \"rgba(237,156,0,0.1)\" : \"rgba(202,109,0,0.2)\"};\n`;\n\ninterface IProps {\n setTokenAAmount: Dispatch<SetStateAction<string>>;\n setTokenBAmount: Dispatch<SetStateAction<string>>;\n}\n\nexport const SwapDetail = ({ setTokenAAmount, setTokenBAmount }: IProps) => {\n const [hide, setHide] = useState(true);\n\n const { staked } = useUnstakePositionContext();\n const {\n position,\n pool,\n tokenPairPrice: tokenPrices,\n form,\n setForm,\n isSyncing,\n isSyncingTx,\n swapInfoError,\n txErrorMsg,\n setOpenSettings,\n } = useAddLiquidityContextV2();\n const { swapInfo } = useSolverRoutingStore();\n\n const failureMessage = useMemo(() => {\n if (isSyncing || isSyncingTx) return undefined;\n return getSwapFailureMessage(\n swapInfo,\n swapInfoError ?? txErrorMsg,\n form.netDepositUSDValue ?? \"0\",\n staked\n );\n }, [\n form.netDepositUSDValue,\n isSyncing,\n isSyncingTx,\n staked,\n swapInfo,\n swapInfoError,\n txErrorMsg,\n ]);\n\n const showAlignTokens = failureMessage === ErrorMsg.InsufficientPoolToken;\n\n useEffect(() => {\n if (failureMessage === ErrorMsg.InsufficientSlippage) setOpenSettings(true);\n }, [failureMessage, setOpenSettings]);\n\n const updateForm = (form: IAddLiquidityEditForm) => {\n setForm(form);\n };\n\n const fetchTokenPairsAmount = (\n amount: string | undefined,\n ifTokenA: boolean\n ) => {\n let _tokenAAmount: string = \"\";\n let _tokenBAmount: string = \"\";\n if (amount !== \"\" && Number(amount) >= 0)\n if (ifTokenA) {\n _tokenAAmount = amount;\n if (pool?.tickCurrent > position.tickLower)\n _tokenBAmount = getOtherTokenAmount(\n position.tokenA.address,\n amount,\n position.tickLower,\n position.tickUpper,\n pool\n ).toExact();\n } else {\n _tokenBAmount = amount;\n if (pool?.tickCurrent < position.tickUpper) {\n _tokenAAmount = getOtherTokenAmount(\n position.tokenB.address,\n amount,\n position.tickLower,\n position.tickUpper,\n pool\n ).toExact();\n }\n }\n setTokenAAmount(_tokenAAmount);\n setTokenBAmount(_tokenBAmount);\n const netDepositUSDValue = bigDecimal.add(\n bigDecimal.multiply(_tokenAAmount, tokenPrices[0]),\n bigDecimal.multiply(_tokenBAmount, tokenPrices[1])\n );\n updateForm({\n ...form,\n tokenA: _tokenAAmount,\n tokenB: _tokenBAmount,\n netDepositUSDValue,\n });\n };\n\n return (\n <Wrapper>\n <Title\n width=\"100%\"\n justifyContent=\"space-between\"\n disabled={!!failureMessage}\n onClick={() => !failureMessage && setHide(!hide)}\n >\n <Headline>Swap Details</Headline>\n <Flex alignItems=\"center\" gap={8}>\n {hide && (isSyncing || isSyncingTx) && (\n <RaindropSpinner width={16} height={16} />\n )}\n {failureMessage && <ErrorMessage>{failureMessage}</ErrorMessage>}\n {!failureMessage && <ChevronDown isShow={!hide} />}\n </Flex>\n </Title>\n {!failureMessage && <ZapInSwapPath hide={hide} keepDropdown={true} />}\n {showAlignTokens && (\n <AlignTokenAmounts\n tokenA={position.tokenA.ticker}\n tokenB={position.tokenB.ticker}\n disableA={bigDecimal.compareTo(form.tokenB, 0) <= 0}\n disableB={bigDecimal.compareTo(form.tokenA, 0) <= 0}\n onAlignTokenA={() => fetchTokenPairsAmount(form.tokenB, false)}\n onAlignTokenB={() => fetchTokenPairsAmount(form.tokenA, true)}\n isAddLP={true}\n />\n )}\n </Wrapper>\n );\n};\n","import { Slider } from \"@/../../packages/uikit/src/components/Slider\";\nimport { CommonContainer, Row } from \"@/views/style\";\nimport {\n ButtonText,\n CommonLgText,\n Headline3,\n Headline5,\n InputGroupRight,\n TokenInfo,\n WhiteCard,\n} from \"@aperture/uikit\";\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.spacing[\"xl\"]};\n`;\n\nexport const StyledRow = styled(Row)`\n gap: ${({ theme }) => theme.spacing.xl};\n`;\n\nexport const TokenInfoContainer = styled(CommonContainer)<{\n noBorder?: boolean;\n gap?: string;\n padding?: string;\n minWidth?: string;\n}>`\n height: fit-content;\n display: flex;\n flex-direction: column;\n white-space: nowrap;\n color: ${({ theme }) => theme.colors.global.text.T2};\n gap: ${({ gap }) => gap || \"0px\"};\n border: ${({ noBorder, theme }) =>\n noBorder ? \"none\" : `1px solid ${theme.colors.global.line.Line2}`};\n padding: ${({ theme, padding }) => padding || theme.spacing.xl};\n ${({ minWidth }) => minWidth && `min-width: ${minWidth};`}\n border-radius: ${({ theme }) => theme.radii.md};\n`;\n\nexport const InputGroupMaxContainer = styled(CommonContainer)`\n display: flex;\n justify-content: space-between;\n gap: ${({ theme }) => theme.spacing.lg};\n`;\n\nexport const PaddingBox = styled.div`\n padding: 16px;\n height: 116px;\n min-width: 260px;\n border: 1px solid ${({ theme }) => theme.colors.global.line.Line2};\n border-radius: ${({ theme }) => theme.radii.xl};\n`;\n\nexport const Amount = styled(Headline3)`\n font-size: 24px;\n line-height: 28px;\n color: ${({ theme }) => theme.colors.global.text.T1};\n`;\n\nexport const Subtitle = styled(Headline5)`\n color: ${({ theme }) => theme.colors.global.text.T2};\n display: flex;\n align-items: center;\n span:first-child {\n margin-right: 4px;\n white-space: nowrap;\n font-weight: 400;\n line-height: 20px;\n }\n > div {\n margin-left: auto;\n }\n`;\n\nexport const StyledText = styled(CommonLgText)`\n color: ${({ theme }) => theme.colors.global.text.T1};\n`;\n\nexport const H3 = styled(Headline3)`\n overflow: hidden;\n text-overflow: ellipsis;\n color: ${({ theme }) => theme.colors.global.text.T1};\n`;\n\nexport const GasCeiling = styled(CommonContainer)<{ tab: string }>`\n width: ${({ tab }) => (tab === \"Rebalance\" ? \"100%\" : \"463px\")};\n`;\n\nexport const StyledSlider = styled(Slider)`\n margin-bottom: 35px;\n`;\n\nexport const StyledInputGroupRight = styled(InputGroupRight)`\n width: 220px;\n`;\n\nexport const RightNodeWrapper = styled.div`\n display: flex;\n height: 38px;\n justify-content: center;\n align-items: center;\n padding: 0 16px;\n background: ${({ theme }) => theme.colors.primary.purple};\n border-radius: ${({ theme }) => theme.radii.round};\n cursor: pointer;\n`;\n\nexport const RightNodeText = styled(ButtonText)`\n width: 24px;\n height: 24px;\n line-height: 24px;\n align-items: center;\n text-align: center;\n color: ${({ theme }) => theme.colors.grey.white};\n`;\n\nexport const StyledTokenInfo = styled(TokenInfo)`\n width: calc(100% - 24px);\n padding: 8px 12px 0;\n`;\n\nexport const ButtonGroup = styled.div`\n display: flex;\n gap: ${({ theme }) => theme.spacing.xl};\n`;\n\nexport const PreviewAddLiquidity = styled.div<{ zapIn: boolean }>`\n display: flex;\n flex-direction: column;\n padding: ${({ theme }) => theme.spacing.xl};\n\n & > div:first-child {\n padding-bottom: ${({ zapIn }) => (zapIn ? \"12px\" : \"0\")};\n border-bottom: 1px solid ${({ theme }) => theme.colors.global.line.Line2};\n }\n\n & > div:last-child {\n padding-top: ${({ zapIn }) => (zapIn ? \"12px\" : \"0\")};\n border-bottom: none !important;\n }\n`;\n\nexport const CurrentLiquidity = styled.div`\n display: flex;\n justify-content: space-between;\n gap: ${({ theme }) => theme.spacing.xl};\n`;\n\nexport const StyledCommonContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.spacing.xl};\n`;\n\nexport const StyledWhiteCard = styled(WhiteCard)`\n padding: 0;\n border: 1px solid ${({ theme }) => theme.colors.global.line.Line2};\n border-radius: ${({ theme }) => theme.radii.xl};\n`;\n","import { ApproveTokenBtn } from \"@/components/Button/ApprovalBtn\";\nimport { useSolverRoutingStore } from \"@/components/GlobalStore\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport UseNative from \"@/components/UseNative/UseNative\";\nimport { calculateTotalValue } from \"@/helper/positionHelper\";\nimport { isWrappedNative } from \"@/helper/tokenHelper\";\nimport { formatUSDAmount } from \"@/utils/numberFormat\";\nimport { DividerHorizontal } from \"@/views/style\";\nimport {\n AutoCompoundTag,\n FlexColumn,\n InputGroupMax,\n TokenInfo,\n} from \"@aperture/uikit\";\nimport { getChainInfo } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport bigDecimal from \"js-big-decimal\";\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTheme } from \"styled-components\";\nimport { useAddLiquidityContextV2 } from \"../AddLiquidityContextV2\";\nimport { SwapDetail } from \"./SwapDetail\";\nimport {\n Amount,\n ButtonGroup,\n Container,\n H3,\n InputGroupMaxContainer,\n PaddingBox,\n StyledRow,\n StyledText,\n Subtitle,\n TokenInfoContainer,\n} from \"./style\";\nimport { IAddLiquidityEditForm } from \"./types\";\n\nconst AddLiquidityEditV2: React.FC = () => {\n const {\n position,\n autoCompoundExists,\n isTokenNonZero,\n form,\n tokenPairPrice: tokenPrices,\n collectableInUS,\n liquidityInUS,\n tokens,\n txnSetting,\n setForm,\n setError,\n } = useAddLiquidityContextV2();\n const { noNeedSwap } = useSolverRoutingStore();\n\n const theme = useTheme();\n const { ammEnum, networkId } = useNetwork();\n const [tokenAAmount, setTokenAAmount] = React.useState<string>(form.tokenA);\n const [tokenBAmount, setTokenBAmount] = React.useState<string>(form.tokenB);\n const [approvalA, setApprovalA] = useState<boolean>(\n position.tokenA?.native ?? false\n );\n const [approvalB, setApprovalB] = useState<boolean>(\n position.tokenB?.native ?? false\n );\n const buttonGroupRef = useRef<HTMLDivElement>(null);\n\n const insufficientTokenStatus: [boolean, boolean] = useMemo(\n () => [\n bigDecimal.compareTo(tokenAAmount, tokens[0]?.amount) > 0,\n bigDecimal.compareTo(tokenBAmount, tokens[1]?.amount) > 0,\n ],\n [tokenAAmount, tokenBAmount, tokens]\n );\n\n const tokenAmountApproved = useMemo(\n () =>\n (!!form.tokenA || !!form.tokenB) &&\n (!form.tokenA || approvalA) &&\n (!form.tokenB || approvalB),\n [approvalA, approvalB, form.tokenA, form.tokenB]\n );\n\n useEffect(() => {\n if (insufficientTokenStatus[0]) {\n setError(`Insufficient ${tokens[0]?.ticker} Balance`);\n } else if (insufficientTokenStatus[1]) {\n setError(`Insufficient ${tokens[1]?.ticker} Balance`);\n } else if (!tokenAmountApproved) {\n setError(\"\");\n } else {\n setError(null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [form, approvalA, approvalB, insufficientTokenStatus, tokens, txnSetting]);\n\n const updateForm = (form: IAddLiquidityEditForm) => {\n setForm(form);\n };\n\n const fetchTokenAmount = (amount: string | undefined, ifTokenA: boolean) => {\n const _tokenAAmount: string = ifTokenA ? amount : form.tokenA;\n const _tokenBAmount: string = ifTokenA ? form.tokenB : amount;\n setTokenAAmount(_tokenAAmount);\n setTokenBAmount(_tokenBAmount);\n const netDepositUSDValue = bigDecimal.add(\n bigDecimal.multiply(_tokenAAmount, tokenPrices[0]),\n bigDecimal.multiply(_tokenBAmount, tokenPrices[1])\n );\n updateForm({\n ...form,\n tokenA: _tokenAAmount,\n tokenB: _tokenBAmount,\n netDepositUSDValue,\n });\n };\n\n useEffect(() => {\n if (\n buttonGroupRef.current &&\n buttonGroupRef.current.offsetHeight &&\n !(approvalA && approvalB)\n )\n buttonGroupRef.current.scrollIntoView();\n }, [buttonGroupRef?.current?.offsetHeight, approvalA, approvalB]);\n\n const approveContractAddress = noNeedSwap\n ? getChainInfo(networkId).amms[ammEnum]?.nonfungiblePositionManager\n : getChainInfo(networkId).amms[ammEnum]?.apertureAutomanV3;\n\n return (\n <Container>\n <StyledRow>\n <PaddingBox>\n <TokenInfoContainer\n gap={theme.spacing.lg}\n noBorder={true}\n padding=\"0\"\n >\n <FlexColumn gap=\"md\">\n <Subtitle fontWeight={400} fontSize={14}>\n Liquidity\n </Subtitle>\n <Amount>{formatUSDAmount(liquidityInUS)}</Amount>\n </FlexColumn>\n {[position.tokenA, position.tokenB].map((token, index) => (\n <TokenInfo\n key={`liquidity-${index}`}\n Icon={token.Icon}\n ticker={token.ticker}\n address={token.address}\n native={token.native}\n decimals={token.decimals}\n amount={token.amount}\n maxWidth={999}\n marginBottom={0}\n price={tokenPrices[index]}\n tag={\n liquidityInUS === \"-\" ||\n bigDecimal.compareTo(liquidityInUS, 0) === 0\n ? \"-\"\n : `${bigDecimal.multiply(\n bigDecimal.divide(\n bigDecimal.multiply(token.amount, tokenPrices[index]),\n liquidityInUS,\n 2\n ),\n 100\n )}%`\n }\n />\n ))}\n </TokenInfoContainer>\n </PaddingBox>\n <PaddingBox>\n <TokenInfoContainer\n padding=\"0\"\n gap={theme.spacing.lg}\n noBorder={true}\n >\n <FlexColumn gap=\"md\">\n <Subtitle fontWeight={400} fontSize={14}>\n <span>Unclaimed Fees</span>\n {autoCompoundExists && <AutoCompoundTag autoCompound={true} />}\n </Subtitle>\n <Amount>{formatUSDAmount(collectableInUS)}</Amount>\n </FlexColumn>\n {[position.tokenA, position.tokenB].map((token, index) => (\n <TokenInfo\n key={`unclaimed-fees-${index}`}\n Icon={token.Icon}\n ticker={token.ticker}\n address={token.address}\n decimals={token.decimals}\n native={token.native}\n amount={token.collectableAmount}\n maxWidth={999}\n marginBottom={0}\n price={tokenPrices[index]}\n />\n ))}\n </TokenInfoContainer>\n </PaddingBox>\n </StyledRow>\n <FlexColumn gap=\"xl\">\n <StyledText>Add Liquidity</StyledText>\n <FlexColumn gap=\"xl\">\n <FlexColumn gap=\"xl\">\n <InputGroupMaxContainer>\n {tokens.map(\n (token, index) =>\n !!token && (\n <InputGroupMax\n key={`zapIn-${token.address}`}\n placeholder=\"0.00\"\n defaultValue={index === 0 ? tokenAAmount : tokenBAmount}\n subTitle={\n tokenPrices[index] === \"\"\n ? \"-\"\n : bigDecimal.multiply(\n index === 0 ? tokenAAmount : tokenBAmount,\n tokenPrices[index]\n )\n }\n balance={token.amount ?? \"0\"}\n displayBalance={token.formatAmount}\n onChange={(value) => {\n fetchTokenAmount(value, index === 0);\n }}\n onMaxClick={(value) => {\n fetchTokenAmount(value, index === 0);\n }}\n warning={\n insufficientTokenStatus[index] ||\n (!!(index === 0 ? tokenAAmount : tokenBAmount) &&\n bigDecimal.compareTo(\n index === 0 ? tokenAAmount : tokenBAmount,\n \"0\"\n ) <= 0 &&\n !(\n bigDecimal.compareTo(\n index === 0 ? tokenBAmount : tokenAAmount,\n \"0\"\n ) > 0\n ))\n }\n ticker={token.ticker}\n />\n )\n )}\n </InputGroupMaxContainer>\n </FlexColumn>\n {isTokenNonZero && (\n <SwapDetail\n setTokenAAmount={setTokenAAmount}\n setTokenBAmount={setTokenBAmount}\n />\n )}\n </FlexColumn>\n </FlexColumn>\n {(isWrappedNative(position.tokenA.address, networkId) ||\n isWrappedNative(position.tokenB.address, networkId)) && (\n <UseNative\n text=\"Deposit\"\n nativeChange={(useNative: boolean) => {\n updateForm({\n ...form,\n useNative,\n });\n }}\n />\n )}\n <DividerHorizontal />\n <FlexColumn gap=\"lg\">\n <Subtitle fontSize={14} lineHeight=\"16px\">\n Net Deposit Amount\n </Subtitle>\n <H3 fontSize={24} lineHeight=\"28px\">\n {formatUSDAmount(\n calculateTotalValue(\n tokenAAmount,\n tokenBAmount,\n tokenPrices[0],\n tokenPrices[1]\n )\n )}\n </H3>\n </FlexColumn>\n <ButtonGroup ref={buttonGroupRef}>\n {tokens.map(\n (token, index) =>\n !!(index === 0 ? tokenAAmount : tokenBAmount) && (\n <ApproveTokenBtn\n key={`ApprovalStatus-${token?.address}`}\n token={token}\n variant=\"outlined\"\n color=\"secondary\"\n contractAddress={approveContractAddress}\n amount={(index === 0 ? tokenAAmount : tokenBAmount) ?? \"0\"}\n canBeZero={!!(index === 0 ? tokenAAmount : tokenBAmount)}\n approveOnChange={(approve: boolean) =>\n index === 0 ? setApprovalA(approve) : setApprovalB(approve)\n }\n useNative={token?.native}\n />\n )\n )}\n </ButtonGroup>\n </Container>\n );\n};\n\nexport default AddLiquidityEditV2;\n","import { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { useSnackbarV2 } from \"@/components/SnackbarContext/SnackbarContextV2\";\nimport { usePositionSnackBar } from \"@/hooks/snackbar/usePositionSnackbar\";\nimport { useSendTransactionWithGas } from \"@/hooks/wagmi/useSendTransactionWithGas\";\nimport { Button, Spinner } from \"@aperture/uikit\";\nimport { getLogger } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { useEffect } from \"react\";\nimport styled from \"styled-components\";\nimport { useAccount } from \"wagmi\";\nimport { useAddLiquidityContextV2 } from \"../AddLiquidityContextV2\";\n\nexport const SpinnerWrapper = styled.div`\n margin: auto;\n`;\nexport const ButtonBox = styled(Button)`\n background: ${({ theme }) => theme.colors.global.primary};\n color: ${({ theme }) => theme.colors.global.textAlt.T1};\n min-width: 300px;\n\n :hover {\n background-color: ${({ theme }) => theme.colors.global.primary};\n ${({ disabled }) => !disabled && \"opacity: 0.8;\"}\n }\n`;\n\nconst AddLPBtnV2: React.FC<{\n onModeChange: (mode: string) => void;\n onClose: () => void;\n}> = ({ onModeChange, onClose }) => {\n const { addSnackbar } = useSnackbarV2();\n const { addPositionSnackbar } = usePositionSnackBar();\n\n const { address } = useAccount();\n const { ammEnum, networkId } = useNetwork();\n const {\n position,\n showSwapPath,\n txRequest,\n txErrorMsg,\n isSyncing,\n isSyncingTx,\n swapInfo,\n cancelSwapInfo,\n } = useAddLiquidityContextV2();\n\n const { ready, data, sendTransaction, isError, error, isPending, isSuccess } =\n useSendTransactionWithGas(txRequest);\n\n useEffect(() => {\n if (isError) {\n getLogger().error(\"AddLPV2.ConfirmAddLPFailed: \", {\n walletAddress: address,\n ammEnum,\n networkId,\n positionId: position.positionId,\n txRequest,\n swapInfo,\n hash: data,\n txErrorMsg,\n error,\n });\n addSnackbar({\n info: \"Your add liquidity request has failed.\",\n status: \"failed\",\n });\n onModeChange(\"edit\");\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isError]);\n\n useEffect(() => {\n if (isSuccess) {\n getLogger().info(\"AddLPV2.ConfirmAddLPSuccess\", {\n positionId: position.positionId,\n hash: data,\n txRequest,\n });\n addPositionSnackbar({\n info: \"Your add liquidity request has been sent.\",\n status: \"completed\",\n url: undefined,\n transaction: {\n hash: data,\n successMsg: `You have successfully added liquidity to your ${position.tokenA.ticker}-${position.tokenB.ticker} position.`,\n },\n });\n cancelSwapInfo();\n onClose();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isSuccess]);\n\n const swapInfoUnavailable =\n showSwapPath && (!swapInfo || swapInfo.length === 0);\n\n return (\n <ButtonBox\n onClick={() => sendTransaction?.()}\n disabled={\n !txRequest ||\n !ready ||\n !!txErrorMsg ||\n isPending ||\n isSuccess ||\n isSyncing ||\n isSyncingTx ||\n swapInfoUnavailable\n }\n variant=\"contained\"\n color=\"primary\"\n size=\"lg\"\n >\n {isPending || isSyncing || isSyncingTx ? (\n <SpinnerWrapper>\n <Spinner />\n </SpinnerWrapper>\n ) : txErrorMsg ? (\n txErrorMsg\n ) : swapInfoUnavailable ? (\n \"Swap Info Unavailable\"\n ) : (\n \"Confirm Add Liquidity\"\n )}\n </ButtonBox>\n );\n};\n\nexport default AddLPBtnV2;\n","import { UnstakePositionBtn } from \"@/components/Button/StakePositionBtn\";\nimport { useUnstakePositionContext } from \"@/components/Context/UnstakePositionContext\";\nimport { useGlobalSlippage } from \"@/components/GlobalStore\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\n\nimport { useFetchStakePositionsIds } from \"@/hooks/useFetchStakePositionsIds\";\nimport { DEFAULT_SLIPPAGE, WARNING_SLIPPAGE } from \"@/utils/helper\";\nimport { Title, TitleText } from \"@/views/style\";\nimport {\n Button,\n DRAWER_CONTENT_WIDTH,\n DrawerTitle,\n Headline5,\n ITransactionSettingsForm,\n Spinner,\n TransactionSettings,\n} from \"@aperture/uikit\";\nimport styled from \"styled-components\";\nimport { useAddLiquidityContextV2 } from \"../AddLiquidityContextV2\";\nimport AddLPBtnV2 from \"./AddLPBtnV2\";\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n height: 100%;\n gap: ${({ theme }) => theme.spacing[\"2xl\"]};\n`;\n\nconst Wrapper = styled.div<{ mode: string }>`\n overflow-y: auto;\n scrollbar-width: none;\n height: ${({ mode }) =>\n mode === \"edit\" ? \"calc(100% - 168px)\" : \"calc(100% - 156px)\"};\n`;\nconst Content = styled.div`\n width: ${DRAWER_CONTENT_WIDTH};\n`;\n\nconst ButtonsContainer = styled.div`\n padding-bottom: 24px;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n box-sizing: border-box;\n gap: ${({ theme }) => theme.spacing.xl};\n width: ${DRAWER_CONTENT_WIDTH};\n`;\n\nexport const SpinnerWrapper = styled.div`\n margin: auto;\n`;\n\nconst AddLiquidityLayoutV2: React.FC<{\n mode: string;\n children: React.ReactNode;\n onClose: () => void;\n onModeChange: (mode: string) => void;\n}> = ({ mode, children, onClose, onModeChange }) => {\n const { networkId } = useNetwork();\n const { globalSlippage, setGlobalSlippage } = useGlobalSlippage();\n const {\n position,\n showSwapPath,\n txnSetting,\n setTxnSetting,\n error: errorMessage,\n isSyncing,\n isSyncingTx,\n swapInfo,\n openSettings,\n } = useAddLiquidityContextV2();\n const { mutate: mutateStakePositionIds } = useFetchStakePositionsIds();\n const { stakePool, staked, setStaked } = useUnstakePositionContext();\n\n return (\n <Container>\n <Title\n onClick={() => {\n mode === \"edit\" ? onClose() : onModeChange(\"edit\");\n }}\n >\n <DrawerTitle isDrawer>\n <Headline5 fontWeight={500} textAlign={\"end\"}>\n Back to Dashboard\n </Headline5>\n </DrawerTitle>\n </Title>\n {mode === \"preview\" && <TitleText>Preview Add Liquidity</TitleText>}\n {mode === \"edit\" && <TitleText>Add Liquidity</TitleText>}\n <Wrapper mode={mode}>\n <Content>{children}</Content>\n </Wrapper>\n <ButtonsContainer>\n <TransactionSettings\n defaultSlippage={DEFAULT_SLIPPAGE}\n globalSlippage={globalSlippage}\n warningSlippage={WARNING_SLIPPAGE}\n settingsForm={txnSetting}\n openSettings={openSettings}\n dropdownPosition=\"topRight\"\n onFormChange={(form: ITransactionSettingsForm) => setTxnSetting(form)}\n buttonSize={\"small\"}\n setGlobalSlippage={(value) =>\n setGlobalSlippage((prev) => ({ ...prev, [networkId]: value }))\n }\n />\n <Button\n variant=\"contained\"\n color=\"default\"\n size=\"lg\"\n width=\"100%\"\n onClick={() => {\n mode === \"edit\" ? onClose() : onModeChange(\"edit\");\n }}\n >\n Cancel\n </Button>\n {mode === \"edit\" &&\n (stakePool && staked ? (\n <UnstakePositionBtn\n key={position.positionId}\n atStake={staked}\n gaugeAddress={stakePool.gaugeAddress}\n positionId={position.positionIdBN}\n handleTxSuccess={() => {\n setStaked(false);\n mutateStakePositionIds();\n }}\n />\n ) : (\n <Button\n variant=\"contained\"\n color=\"secondary\"\n size=\"lg\"\n width=\"100%\"\n disabled={\n typeof errorMessage === \"string\" ||\n isSyncing ||\n isSyncingTx ||\n !showSwapPath ||\n (showSwapPath && (!swapInfo || swapInfo.length === 0))\n }\n onClick={() => {\n onModeChange(\"preview\");\n }}\n >\n {errorMessage ? (\n errorMessage\n ) : isSyncing || isSyncingTx ? (\n <SpinnerWrapper>\n <Spinner />\n </SpinnerWrapper>\n ) : (\n \"Add Liquidity\"\n )}\n </Button>\n ))}\n {mode === \"preview\" && (\n <AddLPBtnV2 onModeChange={onModeChange} onClose={onClose} />\n )}\n </ButtonsContainer>\n </Container>\n );\n};\n\nexport default AddLiquidityLayoutV2;\n","import { useSolverRoutingStore } from \"@/components/GlobalStore\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { calculateTotalValue } from \"@/helper/positionHelper\";\nimport { getTicker } from \"@/helper/tokenHelper\";\nimport { useFetchTokenMap } from \"@/hooks/useFetchTokenMap\";\nimport { formatUSDAmount } from \"@/utils/numberFormat\";\nimport { CommonContainer, Row, Text1, Text2 } from \"@/views/style\";\nimport { FlexColumn, SwapRoute, TokenInfo } from \"@aperture/uikit\";\nimport { viem } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport bigDecimal from \"js-big-decimal\";\nimport React, { useEffect } from \"react\";\nimport { formatUnits } from \"viem\";\nimport { useAddLiquidityContextV2 } from \"../AddLiquidityContextV2\";\nimport {\n Amount,\n Container,\n CurrentLiquidity,\n PreviewAddLiquidity,\n StyledWhiteCard,\n Subtitle,\n TokenInfoContainer,\n} from \"../AddLiquidityEdit/style\";\n\nconst AddLiquidityPreviewV2: React.FC = () => {\n const { networkId } = useNetwork();\n const { data: tokenMap } = useFetchTokenMap();\n const {\n liquidityInUS,\n form,\n position,\n tokenPairPrice: tokenPrices,\n swapInfo,\n selectedSolver,\n suggestedSolver,\n txnSetting,\n minAmounts,\n gasEstimated,\n isSyncing,\n isSyncingTx,\n setError,\n } = useAddLiquidityContextV2();\n const { noNeedSwap } = useSolverRoutingStore();\n const tokens = [position.tokenA, position.tokenB];\n const nativeCurrency = viem.getNativeCurrency(networkId);\n\n const newTokenAAmount = bigDecimal.add(\n tokens[0].amount,\n noNeedSwap ? form.tokenA : minAmounts.amount0Min\n );\n const newTokenBAmount = bigDecimal.add(\n tokens[1].amount,\n noNeedSwap ? form.tokenB : minAmounts.amount1Min\n );\n const newLiquidity = calculateTotalValue(\n newTokenAAmount,\n newTokenBAmount,\n tokenPrices[0],\n tokenPrices[1]\n );\n const depositedItems = [\n {\n label: \"Add Liquidity\",\n values: [form.tokenA, form.tokenB],\n compareZero: false,\n loading: false,\n },\n {\n label: \"Token Deposited\",\n values: [form.tokenA, form.tokenB],\n compareZero: true,\n loading: false,\n },\n {\n label: \"Min.Amounts Of Liquidity To Add\",\n values: [minAmounts.amount0Min, minAmounts.amount1Min],\n compareZero: false,\n loading: isSyncingTx,\n },\n ];\n const liquidityItems = [\n {\n label: \"Current Liquidity Position\",\n value: liquidityInUS,\n amounts: [tokens[0].amount, tokens[1].amount],\n loading: false,\n },\n {\n label: \"New Liquidity Position\",\n value: isSyncingTx ? \"-\" : newLiquidity,\n amounts: [newTokenAAmount, newTokenBAmount],\n loading: isSyncingTx,\n },\n ];\n\n useEffect(() => {\n setError(null);\n }, [txnSetting]);\n\n return (\n <Container>\n <StyledWhiteCard flexDirection={\"column\"}>\n <PreviewAddLiquidity zapIn={!noNeedSwap}>\n {(noNeedSwap\n ? depositedItems.slice(0, 1)\n : depositedItems.slice(1)\n ).map(({ label, values, compareZero, loading }) => (\n <FlexColumn gap=\"lg\" key={label}>\n <FlexColumn gap=\"md\">\n <Subtitle>{label}</Subtitle>\n <Amount>\n {loading || tokenPrices[0] === \"\" || tokenPrices[1] === \"\"\n ? \"$-\"\n : formatUSDAmount(\n bigDecimal.add(\n bigDecimal.multiply(values[0], tokenPrices[0]),\n bigDecimal.multiply(values[1], tokenPrices[1])\n )\n )}\n </Amount>\n </FlexColumn>\n <div>\n {tokens.map(\n (token, index) =>\n (compareZero\n ? bigDecimal.compareTo(values[index], 0) > 0\n : true) && (\n <TokenInfo\n key={token.address}\n Icon={token.Icon}\n ticker={getTicker(\n token.ticker,\n networkId,\n form.useNative\n )}\n address={token.address}\n native={token.native}\n decimals={token.decimals}\n amount={bigDecimal.multiply(values[index], 1.0)}\n price={tokenPrices[index]}\n loading={loading}\n maxWidth={999}\n />\n )\n )}\n </div>\n </FlexColumn>\n ))}\n </PreviewAddLiquidity>\n </StyledWhiteCard>\n <CurrentLiquidity>\n {liquidityItems.map(({ label, value, amounts, loading }) => (\n <TokenInfoContainer key={label} gap=\"12px\" minWidth={\"262px\"}>\n <FlexColumn gap=\"md\">\n <Subtitle>{label}</Subtitle>\n <Amount>{formatUSDAmount(value)}</Amount>\n </FlexColumn>\n {tokens.map((token, index) => (\n <TokenInfo\n key={token.address}\n Icon={token.Icon}\n ticker={token.ticker}\n amount={amounts[index]}\n address={token.address}\n native={token.native}\n decimals={token.decimals}\n price={tokenPrices[index]}\n loading={loading}\n maxWidth={999}\n marginBottom={0}\n tag={\n value === \"-\" || bigDecimal.compareTo(0, value) === 0\n ? \"-\"\n : `${bigDecimal.multiply(\n bigDecimal.divide(\n bigDecimal.multiply(\n amounts[index],\n tokenPrices[index]\n ),\n value,\n 2\n ),\n 100\n )}%`\n }\n />\n ))}\n </TokenInfoContainer>\n ))}\n </CurrentLiquidity>\n {!noNeedSwap && (\n <>\n {swapInfo &&\n tokenMap &&\n swapInfo?.[selectedSolver]?.swapRoutes?.length > 0 && (\n <CommonContainer>\n <FlexColumn gap={\"xl\"}>\n <Text1>Order Routing</Text1>\n <SwapRoute\n {...swapInfo?.[selectedSolver]}\n loading={isSyncing}\n maxWidth={571}\n routes={swapInfo?.[selectedSolver]?.swapRoutes}\n wBorder={true}\n suggested={selectedSolver === suggestedSolver}\n />\n </FlexColumn>\n </CommonContainer>\n )}\n <CommonContainer>\n <FlexColumn gap=\"md\">\n <Row>\n <Text2>Est. Total Gas Fee</Text2>\n <Text2>\n {`${\n gasEstimated\n ? formatUnits(gasEstimated, nativeCurrency.decimals)\n : \"-\"\n } ${nativeCurrency.symbol}`}\n </Text2>\n </Row>\n <Row>\n <Text2>Slippage Setting</Text2>\n <Text2>{`${\n Math.floor(txnSetting.slippage * 10000) / 100\n }%`}</Text2>\n </Row>\n </FlexColumn>\n </CommonContainer>\n </>\n )}\n </Container>\n );\n};\n\nexport default AddLiquidityPreviewV2;\n","import { IPositionDetails } from \"@/config/position/positionConfig\";\nimport React, { useState } from \"react\";\nimport { GotoType } from \"../types\";\nimport { AddLiquidityProviderV2 } from \"./AddLiquidityContextV2\";\nimport AddLiquidityEditV2 from \"./AddLiquidityEdit/AddLiquidityEditV2\";\nimport AddLiquidityLayoutV2 from \"./AddLiquidityLayout/AddLiquidityLayoutV2\";\nimport AddLiquidityPreviewV2 from \"./AddLiquidityPreview/AddLiquidityPreviewV2\";\n\nexport const AddLiquidity: React.FC<{\n details: IPositionDetails;\n goto: GotoType;\n}> = ({ details, goto }) => {\n const [mode, setMode] = useState(\"edit\");\n\n return (\n <AddLiquidityProviderV2 position={details}>\n <AddLiquidityLayoutV2\n mode={mode}\n onClose={() => {\n goto.details();\n }}\n onModeChange={(mode: string) => {\n setMode(mode);\n }}\n >\n {mode === \"edit\" && <AddLiquidityEditV2 />}\n {mode === \"preview\" && <AddLiquidityPreviewV2 />}\n </AddLiquidityLayoutV2>\n </AddLiquidityProviderV2>\n );\n};\n","import { useGlobalSlippage } from \"@/components/GlobalStore\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { IPositionDetails, ITokenInfo } from \"@/config/position/positionConfig\";\nimport { getTriggerDeadline } from \"@/helper/deadlineHelper\";\nimport {\n calculateTotalValue,\n getProjectedLiquidityPosition,\n} from \"@/helper/positionHelper\";\nimport {\n filterTriggers,\n getInitializedPriceTrigger,\n getInitializedRatioTrigger,\n getInitializedTimeTrigger,\n getTriggerCondition,\n getTriggerType,\n} from \"@/helper/triggerHelper\";\nimport { useCurrentChainToken } from \"@/hooks/globalState/useCurrentChainToken\";\nimport { useFetchAllChainUserTriggers } from \"@/hooks/useFetchAllChainUserTriggers\";\nimport { useFetchUserPosition } from \"@/hooks/useFetchUserPosition\";\nimport {\n DEFAULT_SLIPPAGE,\n gasCeilingButtonError,\n getGasCeiling,\n MAX_TRIGGER,\n} from \"@/utils/helper\";\nimport {\n CreateTriggerPayload,\n TriggerItem,\n UpdateTriggerPayload,\n} from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport {\n convertRelativePriceToHumanValue,\n ITransactionSettingsForm,\n} from \"@ui/components\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { useAccount } from \"wagmi\";\nimport { IRemoveLiquidityEditForm } from \"./RemoveLiquidityEdit/types\";\n\nexport type IRemoveLiquidityTab =\n | \"Remove Liquidity\"\n | \"Prescheduled Position Close\";\nexport interface IRemoveLiquidityContext {\n tab: IRemoveLiquidityTab;\n position: IPositionDetails;\n tokenPair: ITokenInfo[];\n tokenPrice: [string, string];\n trigger: TriggerItem | undefined;\n form: IRemoveLiquidityEditForm;\n estimatedAmounts: [string, string];\n estimatedLiquidity: string;\n maxTriggersCreated: boolean;\n txForm: ITransactionSettingsForm;\n error: string;\n isPrescheduleBtnDisabled: boolean;\n prescheduledPayload?: CreateTriggerPayload | UpdateTriggerPayload;\n setTab: React.Dispatch<React.SetStateAction<IRemoveLiquidityTab>>;\n setForm: React.Dispatch<React.SetStateAction<IRemoveLiquidityEditForm>>;\n setTxForm: React.Dispatch<React.SetStateAction<ITransactionSettingsForm>>;\n setError: React.Dispatch<React.SetStateAction<string>>;\n}\n\nconst RemoveLiquidityContext = React.createContext<IRemoveLiquidityContext>(\n null as any\n);\n\ninterface RemoveLiquidityProviderProps {\n position: IPositionDetails;\n trigger: TriggerItem | undefined;\n tabs: 0 | 1;\n}\n\nexport const RemoveLiquidityProvider: React.FC<\n React.PropsWithChildren<RemoveLiquidityProviderProps>\n> = ({ children, position, trigger, tabs }) => {\n const { address } = useAccount();\n const { ammEnum, networkId } = useNetwork();\n const { data: positionDetails } = useFetchUserPosition(position.positionId);\n const tokenA = position.tokenA;\n const tokenB = position.tokenB;\n const tokenPair = [tokenA, tokenB];\n const { currentTokenPrice: tokenPrices } = useCurrentChainToken(networkId);\n const { data: allChainsTriggerObj } = useFetchAllChainUserTriggers();\n const { globalSlippage } = useGlobalSlippage();\n const [tab, setTab] = useState<IRemoveLiquidityTab>(\n tabs === 0 ? \"Remove Liquidity\" : \"Prescheduled Position Close\"\n );\n const [txForm, setTxForm] = useState<ITransactionSettingsForm>({\n slippage:\n (trigger?.action?.type !== \"LimitOrderClose\" &&\n trigger?.action?.slippage) ||\n (globalSlippage ?? DEFAULT_SLIPPAGE),\n deadline: \"30\",\n });\n const [error, setError] = useState(\"\");\n\n const existingTriggersLen = filterTriggers(\n allChainsTriggerObj?.[networkId],\n \"Close\",\n position.positionId\n ).length;\n const maxTriggersCreated = !trigger && existingTriggersLen >= MAX_TRIGGER;\n\n const [form, setForm] = useState<IRemoveLiquidityEditForm>({\n gasCeiling:\n trigger?.action?.maxGasProportion ||\n getGasCeiling(networkId, position.liquidity),\n trigger: {\n type: getTriggerType(trigger),\n Price: getInitializedPriceTrigger(trigger, tokenA, tokenB),\n Ratio: getInitializedRatioTrigger(\n trigger,\n tokenA,\n position.tickLower,\n position.tickUpper\n ),\n Time: getInitializedTimeTrigger(trigger),\n },\n removePercentage: 0.5,\n });\n\n const tokenPrice: [string, string] = useMemo(\n () => [\n tokenPrices?.[tokenA.address]?.price ?? \"0\",\n tokenPrices?.[tokenB.address]?.price ?? \"0\",\n ],\n [tokenPrices, tokenA, tokenB]\n );\n\n const estimatedAmounts: [string, string] = useMemo(() => {\n if (positionDetails) {\n const res = getProjectedLiquidityPosition(\n networkId,\n position,\n positionDetails.position,\n positionDetails.tickLower,\n positionDetails.tickUpper,\n tokenPrice,\n form.trigger\n );\n return [res[0].amount, res[1].amount];\n }\n return [position.tokenA.amount, position.tokenB.amount];\n }, [form.trigger]);\n\n const estimatedLiquidity = calculateTotalValue(\n estimatedAmounts[0],\n estimatedAmounts[1],\n tokenPrice[0],\n tokenPrice[1]\n );\n\n const [isPrescheduleBtnDisabled, setIsPrescheduleBtnDisabled] = useState(\n !!trigger\n );\n const [prescheduledPayload, setPrescheduledPayload] = useState<\n CreateTriggerPayload | UpdateTriggerPayload | undefined\n >(undefined);\n\n useEffect(() => {\n if (tab === \"Prescheduled Position Close\") {\n const { trigger } = form;\n if (maxTriggersCreated) {\n setError(\"Maximum number of triggers\");\n } else if (trigger.type === \"Price\" && trigger.Price.amount === \"0\") {\n setError(\"Price Amount Is Required\");\n } else if (trigger.type === \"Time\" && !form.trigger.Time.dateTime) {\n setError(\"Trigger Time Is Required\");\n } else if (\n trigger.type === \"Time\" &&\n moment(form.trigger.Time.dateTime).valueOf() < moment().valueOf()\n ) {\n setError(\"Trigger Time Is Before Current Time\");\n } else {\n setError(\n gasCeilingButtonError(\n networkId,\n form.gasCeiling,\n position.liquidity !== \"-\" ? position.liquidity : \"0\"\n )\n );\n }\n } else {\n setError(\"\");\n }\n }, [tab, form, maxTriggersCreated]);\n\n useEffect(() => {\n if (tab === \"Remove Liquidity\") return;\n const generateData = () => {\n const data = {\n ownerAddr: address!,\n chainId: networkId,\n action: {\n type: \"Close\",\n slippage: txForm.slippage,\n maxGasProportion: form.gasCeiling,\n },\n condition: getTriggerCondition(\n form.trigger,\n position.tokenA,\n position.tokenB,\n position.tickLower,\n position.tickUpper,\n networkId,\n false\n ),\n expiration: getTriggerDeadline(),\n };\n if (trigger) {\n (data as UpdateTriggerPayload).taskId = trigger.taskId;\n for (const key in data.condition) {\n if (data.condition[key] === undefined) {\n delete data.condition[key];\n }\n }\n const convertTrigger = _.cloneDeep(data);\n if (\n convertTrigger.condition.type === \"Price\" &&\n convertTrigger.condition.frontendType === \"RELATIVE_PRICE\"\n ) {\n if (convertTrigger.condition.lte) {\n convertTrigger.condition.lte = convertRelativePriceToHumanValue(\n convertTrigger.condition.lte,\n [position.tokenA, position.tokenB]\n );\n } else if (convertTrigger.condition.gte) {\n convertTrigger.condition.gte = convertRelativePriceToHumanValue(\n convertTrigger.condition.gte,\n [position.tokenA, position.tokenB]\n );\n }\n }\n const isActionEqual = _.isEqual(data.action, trigger.action);\n const isConditionEqual = _.isEqual(\n convertTrigger.condition,\n trigger.condition\n );\n if (isActionEqual) {\n (data as UpdateTriggerPayload).action = undefined;\n }\n if (isConditionEqual) {\n (data as UpdateTriggerPayload).condition = undefined;\n }\n setIsPrescheduleBtnDisabled(isActionEqual && isConditionEqual);\n } else {\n (data as CreateTriggerPayload).amm = ammEnum;\n (data as CreateTriggerPayload).nftId = position.positionId;\n }\n setPrescheduledPayload(\n data as CreateTriggerPayload | UpdateTriggerPayload\n );\n };\n generateData();\n }, [form, txForm]);\n\n return (\n <RemoveLiquidityContext.Provider\n value={{\n tab,\n position,\n tokenPair,\n tokenPrice,\n trigger,\n form,\n estimatedAmounts,\n estimatedLiquidity,\n maxTriggersCreated,\n txForm,\n error,\n isPrescheduleBtnDisabled,\n prescheduledPayload,\n setTab,\n setForm,\n setTxForm,\n setError,\n }}\n >\n {children}\n </RemoveLiquidityContext.Provider>\n );\n};\n\nexport const useRemoveLiquidityContext = () => {\n return React.useContext(RemoveLiquidityContext);\n};\n","import { Slider } from \"@/../../packages/uikit/src/components/Slider\";\nimport { CommonContainer, Row } from \"@/views/style\";\nimport {\n ButtonText,\n Headline3,\n Headline5,\n InputGroupRight,\n} from \"@aperture/uikit\";\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.spacing[\"xl\"]};\n`;\n\nexport const StyledRow = styled(Row)`\n gap: ${({ theme }) => theme.spacing.xl};\n`;\n\nexport const PaddingBox = styled.div`\n padding: 16px;\n height: 112px;\n min-width: calc(45% - 48px);\n border: 1px solid ${({ theme }) => theme.colors.global.line.Line2};\n border-radius: ${({ theme }) => theme.radii.xl};\n`;\n\nexport const TokenInfoContainer = styled(CommonContainer)<{\n noBorder?: boolean;\n gap?: string;\n padding?: string;\n minWidth?: string;\n}>`\n height: fit-content;\n display: flex;\n flex-direction: column;\n white-space: nowrap;\n color: ${({ theme }) => theme.colors.global.text.T2};\n gap: ${({ gap }) => gap || \"0px\"};\n border: ${({ noBorder, theme }) =>\n noBorder ? \"none\" : `1px solid ${theme.colors.global.line.Line2}`};\n padding: ${({ theme, padding }) => padding || theme.spacing.xl};\n ${({ minWidth }) => minWidth && `min-width: ${minWidth};`}\n`;\n\nexport const Amount = styled(Headline3)`\n font-size: 24px;\n line-height: 28px;\n color: ${({ theme }) => theme.colors.global.text.T1};\n`;\n\nexport const Subtitle = styled(Headline5)`\n color: ${({ theme }) => theme.colors.global.text.T1};\n display: flex;\n align-items: center;\n span:first-child {\n margin-right: 4px;\n white-space: nowrap;\n line-height: 20px;\n }\n > div {\n margin-left: auto;\n transform: translate(5px, 0);\n }\n`;\n\nexport const Position = styled(CommonContainer)`\n width: 100%;\n margin-top: 8px;\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.spacing.lg};\n`;\n\nexport const GasCeiling = styled(CommonContainer)<{ tab: string }>`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.spacing.lg};\n width: ${({ tab }) => (tab === \"Rebalance\" ? \"100%\" : \"463px\")};\n`;\n\nexport const StyledSlider = styled(Slider)`\n margin: 0 8px 16px;\n`;\n\nexport const StyledInputGroupRight = styled(InputGroupRight)`\n position: relative;\n height: 20px;\n width: 160px;\n padding: 12px 16px;\n font-size: 16px;\n line-height: 20px;\n background: ${({ theme }) => theme.colors.global.background.BG3};\n border-radius: ${({ theme }) => theme.radii.round};\n`;\n\nexport const RightNodeWrapper = styled.div`\n position: absolute;\n left: 141px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n height: 44px;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n`;\n\nexport const RightNodeText = styled(ButtonText)`\n height: 24px;\n line-height: 24px;\n align-items: center;\n text-align: center;\n color: ${({ theme }) => theme.colors.global.primary};\n`;\n\nexport const Hint = styled.div`\n font-size: 14px;\n font-weight: 500;\n color: ${({ theme }) => theme.colors.global.warning};\n display: flex;\n align-items: center;\n white-space: nowrap;\n line-height: 1;\n margin-top: 4px;\n gap: 6px;\n > svg {\n flex-shrink: 0;\n fill: ${({ theme }) => theme.colors.grey.mediumGrey};\n }\n`;\n\nexport const StyledCommonContainer = styled(CommonContainer)`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.spacing.md};\n`;\n","import { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport UseNative from \"@/components/UseNative/UseNative\";\nimport { useIsZapOutEnabled } from \"@/config/feature_flags\";\nimport { getTicker, isWrappedNative } from \"@/helper/tokenHelper\";\nimport { MAX_TRIGGER, gasCeilingInputError } from \"@/utils/helper\";\nimport { isManta } from \"@/utils/networkHelper\";\nimport { formatUSDAmount } from \"@/utils/numberFormat\";\nimport { DividerHorizontal, EmptyBox, Expires } from \"@/views/style\";\nimport { AccessoryIcons } from \"@aperture/assetkit\";\nimport {\n AutoCompoundTag,\n Flex,\n FlexColumn,\n Headline3,\n Headline5,\n PercentageInputAdditional,\n PercentageInputGroup,\n QuestionPopover,\n TokenInfo,\n TriggerSetup,\n} from \"@aperture/uikit\";\nimport { ZapTag } from \"@aperture/uikitv2\";\nimport { AUTOMATION_EXPIRATION_IN_DAYS } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport bigDecimal from \"js-big-decimal\";\nimport React, { useEffect } from \"react\";\nimport { useTheme } from \"styled-components\";\nimport { useRemoveLiquidityContext } from \"../Context\";\nimport {\n Amount,\n Container,\n GasCeiling,\n Hint,\n PaddingBox,\n Position,\n StyledCommonContainer,\n StyledRow,\n StyledSlider,\n Subtitle,\n TokenInfoContainer,\n} from \"./style\";\n\nconst RemoveLiquidityEdit: React.FC = () => {\n const theme = useTheme();\n const { networkId } = useNetwork();\n const {\n tab,\n position,\n tokenPair,\n tokenPrice,\n estimatedAmounts,\n estimatedLiquidity,\n maxTriggersCreated,\n form,\n setForm,\n } = useRemoveLiquidityContext();\n const isZapOutEnabled = useIsZapOutEnabled();\n\n const [useNative, setUseNative] = React.useState(\n isWrappedNative(position.tokenA.address, networkId) ||\n isWrappedNative(position.tokenB.address, networkId)\n );\n useEffect(() => {\n setForm({ ...form, useNative });\n }, [useNative]);\n\n return tab === \"Prescheduled Position Close\" && isManta(networkId) ? (\n <EmptyBox height={\"320px\"}>\n <Headline5>Automation tool on ApertureSwap is coming soon!</Headline5>\n </EmptyBox>\n ) : (\n <Container>\n <StyledRow>\n <PaddingBox>\n <TokenInfoContainer\n noBorder={true}\n gap={theme.spacing.lg}\n padding=\"0\"\n >\n <FlexColumn gap=\"md\">\n <Subtitle>Liquidity</Subtitle>\n <Amount>{formatUSDAmount(position.liquidity)}</Amount>\n </FlexColumn>\n <div>\n {tokenPair.map((token, index) => (\n <TokenInfo\n key={token.address}\n Icon={token.Icon}\n ticker={token.ticker}\n address={token.address}\n native={token.native}\n decimals={token.decimals}\n amount={token.amount ?? \"0\"}\n price={tokenPrice[index]}\n maxWidth={999}\n tag={\n position.liquidity === \"-\" ||\n bigDecimal.compareTo(position.liquidity, 0) === 0\n ? \"-\"\n : `${bigDecimal.multiply(\n bigDecimal.divide(\n bigDecimal.multiply(\n token.amount,\n tokenPrice[index]\n ),\n position.liquidity,\n 2\n ),\n 100\n )}%`\n }\n />\n ))}\n </div>\n </TokenInfoContainer>\n </PaddingBox>\n <PaddingBox>\n <TokenInfoContainer\n noBorder={true}\n gap={theme.spacing.lg}\n padding=\"0\"\n >\n <FlexColumn gap=\"md\">\n <Subtitle>\n <span>Unclaimed Fees</span>\n {position.autoCompound && (\n <AutoCompoundTag autoCompound={true} />\n )}\n </Subtitle>\n <Amount>{formatUSDAmount(position.feeAmount)}</Amount>\n </FlexColumn>\n <div>\n {tokenPair.map((token, index) => (\n <TokenInfo\n key={token.address}\n Icon={token.Icon}\n ticker={token.ticker}\n address={token.address}\n native={token.native}\n decimals={token.decimals}\n amount={token.collectableAmount ?? \"0\"}\n price={tokenPrice[index]}\n maxWidth={999}\n />\n ))}\n </div>\n </TokenInfoContainer>\n </PaddingBox>\n </StyledRow>\n {tab === \"Prescheduled Position Close\" && (\n <TriggerSetup\n errorMsg={\n maxTriggersCreated\n ? `You have already set up the maximum number of triggers (${MAX_TRIGGER}).`\n : undefined\n }\n showTimeBuffer={false}\n tooltip=\"Use triggers to automatically close your position (remove liquidity) based on asset prices, pool ratios, or time. Users can set up to 3 triggers for liquidity removal.\"\n initForm={form.trigger}\n tokens={[position.tokenA, position.tokenB]}\n expireDays={AUTOMATION_EXPIRATION_IN_DAYS}\n onFormChange={(triggerSetupForm) => {\n setForm({ ...form, trigger: triggerSetupForm });\n }}\n />\n )}\n {tab === \"Remove Liquidity\" && (\n <StyledCommonContainer>\n <Flex justifyContent=\"space-between\">\n <Subtitle lineHeight={\"20px\"}>\n Remove Percentage of Position\n </Subtitle>\n {isZapOutEnabled && <ZapTag status=\"Out\" />}\n </Flex>\n <StyledSlider\n value={form.removePercentage}\n onChange={(value) => {\n setForm({\n ...form,\n removePercentage: value,\n });\n }}\n />\n <PercentageInputAdditional\n color=\"primary\"\n width={280}\n amount={position.liquidity}\n additionalAmount={position.feeAmount}\n percentage={form.removePercentage}\n onChange={(percentage) => {\n setForm({ ...form, removePercentage: percentage });\n }}\n />\n </StyledCommonContainer>\n )}\n {!isZapOutEnabled &&\n tab === \"Remove Liquidity\" &&\n (isWrappedNative(position.tokenA.address, networkId) ||\n isWrappedNative(position.tokenB.address, networkId)) && (\n <UseNative\n text=\"Collect\"\n nativeChange={(useNative: boolean) => {\n setUseNative(useNative);\n setForm({ ...form, useNative });\n }}\n />\n )}\n {tab === \"Remove Liquidity\" && <DividerHorizontal />}\n <Position>\n {tab === \"Remove Liquidity\" ? (\n <Subtitle>Projected Amount To Receive</Subtitle>\n ) : (\n <Subtitle>\n <span>Current Value (If Closed Now)</span>\n <QuestionPopover content=\"Actual amount received will depend on future asset prices at the time of closure.\" />\n </Subtitle>\n )}\n <Amount>\n {formatUSDAmount(\n position.liquidity === \"-\"\n ? \"-\"\n : tab === \"Remove Liquidity\"\n ? bigDecimal.add(\n bigDecimal.multiply(\n position.liquidity,\n form.removePercentage\n ),\n position.feeAmount === \"-\" ? \"0\" : position.feeAmount\n )\n : bigDecimal.add(\n estimatedLiquidity,\n position.feeAmount === \"-\" ? \"0\" : position.feeAmount\n )\n )}\n </Amount>\n <div>\n {tokenPair.map((token, index) => (\n <TokenInfo\n key={token.address}\n Icon={token.Icon}\n ticker={getTicker(token.ticker, networkId, form.useNative)}\n address={token.address}\n native={token.native}\n decimals={token.decimals}\n maxWidth={999}\n amount={\n tab === \"Remove Liquidity\"\n ? bigDecimal.add(\n bigDecimal.multiply(token.amount, form.removePercentage),\n token.collectableAmount\n )\n : bigDecimal.add(\n estimatedAmounts[index],\n token.collectableAmount\n )\n }\n price={tokenPrice[index]}\n />\n ))}\n </div>\n {tab === \"Remove Liquidity\" && (\n <Hint>\n <AccessoryIcons.InfoIcon />\n All accrued fees will be collected when removing liquidity.\n </Hint>\n )}\n </Position>\n {tab === \"Prescheduled Position Close\" && (\n <Flex justifyContent={\"space-between\"}>\n <GasCeiling tab={tab}>\n <Subtitle>\n <span>Gas Fee Ceiling Setting</span>\n <QuestionPopover content=\"Input the maximum gas fee in either dollars or percentage of position. However, the actual gas ceiling will be based on the percentage not the dollar amount (e.g. if you choose $50 which is currently 1% of your total liquidity position then we will set a gas ceiling of 1%).\" />\n </Subtitle>\n <PercentageInputGroup\n color=\"primary\"\n width={280}\n amount={position.liquidity}\n percentage={form.gasCeiling}\n onChange={(percentage) => {\n setForm({ ...form, gasCeiling: percentage });\n }}\n onError={(percentage) =>\n gasCeilingInputError(networkId, percentage, position.liquidity)\n }\n />\n </GasCeiling>\n <Expires>\n <Subtitle>Expires In</Subtitle>\n <Headline3>{`${AUTOMATION_EXPIRATION_IN_DAYS} Days`}</Headline3>\n </Expires>\n </Flex>\n )}\n </Container>\n );\n};\n\nexport default RemoveLiquidityEdit;\n","import ApproveOnChainBtn from \"@/components/Button/ApproveOnChainBtn\";\nimport SignPayloadBtn from \"@/components/Button/SignPayloadBtn\";\nimport SignPositionPermitBtn from \"@/components/Button/SignPositionPermitBtn\";\nimport { useSnackbarV2 } from \"@/components/SnackbarContext/SnackbarContextV2\";\nimport {\n createTrigger,\n getCreateTriggerFailure,\n getTriggerType,\n updateTrigger,\n} from \"@/helper/triggerHelper\";\nimport { useFetchAllChainUserTriggers } from \"@/hooks/useFetchAllChainUserTriggers\";\nimport { useFetchPositionPermission } from \"@/hooks/useFetchPositionPermission\";\nimport { useIfAuthorized } from \"@/hooks/useFetchUserAuthentication\";\nimport { useIsWalletContract } from \"@/hooks/useIsWalletContract\";\nimport {\n CreateTriggerPayload,\n PermitInfo,\n UpdateTriggerPayload,\n} from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { useEffect, useState } from \"react\";\nimport { Address } from \"viem\";\nimport { useRemoveLiquidityContext } from \"../Context\";\n\nconst PrescheduledCloseBtn: React.FC<{\n payload: CreateTriggerPayload | UpdateTriggerPayload | undefined;\n onClose: () => void;\n}> = ({ payload, onClose }) => {\n const { addSnackbar } = useSnackbarV2();\n const { mutate } = useFetchAllChainUserTriggers();\n const { ifAuthorized } = useIfAuthorized();\n const { data: isWalletContract } = useIsWalletContract();\n const { position, trigger } = useRemoveLiquidityContext();\n const {\n data: permitStatus,\n isLoading: isPermitLoading,\n mutate: mutatePositionPermit,\n } = useFetchPositionPermission(position.positionId);\n const [permitInfo, setPermitInfo] = useState<PermitInfo>(undefined);\n const [signedPayload, setSignedPayload] = useState<Address>(undefined);\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n if (signedPayload && payload) {\n setIsLoading(true);\n if (!trigger) {\n createTrigger(\n payload as CreateTriggerPayload,\n signedPayload,\n permitInfo\n )\n .then((res) => {\n if (res === \"Success\") {\n const type = getTriggerType(payload);\n mutatePositionPermit().then(() => {\n mutate();\n });\n addSnackbar({\n info: `You have successfully set up a ${type.toLowerCase()}-based trigger to close your ${\n position.tokenA.ticker\n }-${position.tokenB.ticker} position.`,\n status: \"completed\",\n });\n onClose();\n setIsLoading(false);\n }\n })\n .catch((err) => {\n addSnackbar({\n info:\n \"Your prescheduled close request has failed: \" +\n getCreateTriggerFailure(err),\n status: \"failed\",\n });\n setIsLoading(false);\n });\n } else {\n updateTrigger(payload as UpdateTriggerPayload, signedPayload)\n .then((res) => {\n if (res === \"Success\") {\n const type = getTriggerType(trigger);\n mutatePositionPermit().then(() => {\n mutate();\n });\n addSnackbar({\n info: `You have successfully updated your ${type.toLowerCase()} trigger for the ${\n position.tokenA.ticker\n }-${position.tokenB.ticker} position closure.`,\n status: \"completed\",\n });\n onClose();\n setIsLoading(false);\n }\n })\n .catch((err) => {\n addSnackbar({\n info: \"Your prescheduled close update request has failed: \" + err,\n status: \"failed\",\n });\n setIsLoading(false);\n });\n }\n }\n }, [signedPayload]);\n\n return ifAuthorized || isPermitLoading || permitStatus || permitInfo ? (\n <SignPayloadBtn\n text=\"Confirm Prescheduled Close Intent\"\n color=\"secondary\"\n isLoading={isLoading}\n {...{ payload, setSignedPayload }}\n />\n ) : isWalletContract ? (\n <ApproveOnChainBtn\n text=\"Approve on-chain\"\n color=\"secondary\"\n tokenPair={`${position.tokenA.ticker}-${position.tokenB.ticker}`}\n positionIdBN={position.positionIdBN}\n onApproved={mutatePositionPermit}\n />\n ) : (\n <SignPositionPermitBtn\n color=\"secondary\"\n tokenPair={`${position.tokenA.ticker}-${position.tokenB.ticker}`}\n positionId={position.positionIdBN}\n setPermitInfo={(permitInfo: PermitInfo) =>\n setPermitInfo({\n signature: permitInfo.signature,\n deadline: String(permitInfo.deadline),\n })\n }\n />\n );\n};\n\nexport default PrescheduledCloseBtn;\n","import { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { useSnackbarV2 } from \"@/components/SnackbarContext/SnackbarContextV2\";\nimport { getRemovePositionRequest } from \"@/helper/positionHelper\";\nimport { usePositionSnackBar } from \"@/hooks/snackbar/usePositionSnackbar\";\nimport { useSendTransactionWithGas } from \"@/hooks/wagmi/useSendTransactionWithGas\";\nimport { calculateGasMargin } from \"@/utils/helper\";\nimport { numberToPercent } from \"@/utils/routing/utils/slippage\";\nimport { Button, Spinner } from \"@aperture/uikit\";\nimport { getLogger } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\nimport { EstimateGasExecutionError } from \"viem\";\nimport { useAccount } from \"wagmi\";\nimport { useRemoveLiquidityContext } from \"../Context\";\n\nexport const SpinnerWrapper = styled.div`\n margin: auto;\n`;\n\nconst RemoveLPBtn: React.FC<{\n onClose: () => void;\n}> = ({ onClose }) => {\n const { address } = useAccount();\n const { ammEnum, networkId, publicClient } = useNetwork();\n const [txRequest, setTxRequest] = useState<any>(undefined);\n const { addSnackbar } = useSnackbarV2();\n const { addPositionSnackbar } = usePositionSnackBar();\n const { position, form, txForm, error, setError } =\n useRemoveLiquidityContext();\n const { ready, data, sendTransaction, isError, isPending, isSuccess } =\n useSendTransactionWithGas(txRequest);\n\n useEffect(() => {\n setError(undefined);\n getRemovePositionRequest(\n address!,\n ammEnum,\n networkId,\n position.positionId,\n numberToPercent(form.removePercentage),\n numberToPercent(txForm.slippage),\n Number(txForm.deadline),\n publicClient,\n form.useNative\n )\n .then((tx) => {\n publicClient\n .estimateGas({\n ...tx,\n account: address,\n })\n .then((gas) => {\n setTxRequest({ ...tx, gas: calculateGasMargin(gas) });\n })\n .catch((gasError) => {\n const error = gasError as EstimateGasExecutionError;\n getLogger().error(\n \"RemoveLiquidity.RemoveLPBtn.RemoveLiquidityTx.EstimateGasError \",\n {\n error: error.message,\n }\n );\n setError(error.details);\n });\n })\n .catch((error: any) => {\n setError(error.message.split(\";\")[0]);\n console.log(error);\n getLogger().error(\n \"RemoveLiquidity.RemoveLPBtn.getRemovePositionRequest.Error \",\n {\n ammEnum,\n networkId,\n walletAddress: address,\n positionId: position.positionId,\n removePercentage: form.removePercentage,\n slippage: txForm.slippage,\n useNative: form.useNative,\n error: error?.message,\n }\n );\n });\n }, [txForm]);\n\n useEffect(() => {\n // when is error, send error message to snack bar\n if (isError) {\n addSnackbar({\n info: \"Your remove liquidity request has failed.\",\n status: \"failed\",\n });\n }\n }, [isError]);\n\n useEffect(() => {\n // when is success, send success message to snack bar\n if (data && isSuccess) {\n addPositionSnackbar({\n info: \"Your remove liquidity request has been sent.\",\n status: \"completed\",\n url: undefined,\n transaction: {\n hash: data,\n successMsg:\n form.removePercentage === 1\n ? `You have successfully closed your ${position.tokenA.ticker}-${position.tokenB.ticker} position.`\n : `You have successfully removed liquidity from your ${position.tokenA.ticker}-${position.tokenB.ticker} position.`,\n },\n });\n onClose();\n }\n }, [isSuccess]);\n\n return (\n <Button\n onClick={() => sendTransaction?.()}\n disabled={!txRequest || !ready || !!error || isPending || isSuccess}\n variant=\"contained\"\n color=\"secondary\"\n size=\"lg\"\n width=\"100%\"\n >\n {error ? (\n error\n ) : isPending ? (\n <SpinnerWrapper>\n <Spinner />\n </SpinnerWrapper>\n ) : (\n \"Confirm Remove Liquidity\"\n )}\n </Button>\n );\n};\n\nexport default RemoveLPBtn;\n","import { UnstakePositionBtn } from \"@/components/Button/StakePositionBtn\";\nimport { useUnstakePositionContext } from \"@/components/Context/UnstakePositionContext\";\nimport { useGlobalSlippage } from \"@/components/GlobalStore\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\n\nimport { useFetchStakePositionsIds } from \"@/hooks/useFetchStakePositionsIds\";\nimport { DEFAULT_SLIPPAGE, WARNING_SLIPPAGE } from \"@/utils/helper\";\nimport { isManta } from \"@/utils/networkHelper\";\nimport { Title, TitleText } from \"@/views/style\";\nimport {\n Button,\n DRAWER_CONTENT_WIDTH,\n DrawerTitle,\n FlexColumn,\n Headline5,\n SelectMenuTab,\n TransactionSettings,\n} from \"@aperture/uikit\";\nimport styled from \"styled-components\";\nimport { IMode } from \"..\";\nimport { IRemoveLiquidityTab, useRemoveLiquidityContext } from \"../Context\";\nimport PrescheduledCloseBtn from \"./PrescheduledCloseBtn\";\nimport RemoveLPBtn from \"./RemoveLPBtn\";\n\nconst Container = styled(FlexColumn)`\n height: 100%;\n gap: ${({ theme }) => theme.spacing[\"2xl\"]};\n`;\n\nconst StyledSelectMenuTab = styled(SelectMenuTab)<{ maxWidth: number }>`\n height: 40px;\n max-width: ${({ maxWidth }) => maxWidth}px;\n`;\n\nconst Wrapper = styled.div<{ mode: string }>`\n overflow-x: hidden;\n overflow-y: auto;\n scrollbar-width: none;\n height: ${({ mode }) =>\n mode === \"edit\" ? \"calc(100% - 168px)\" : \"calc(100% - 156px)\"};\n`;\n\nconst Content = styled.div`\n width: ${DRAWER_CONTENT_WIDTH};\n`;\n\nconst ButtonsContainer = styled.div`\n padding-bottom: 24px;\n display: flex;\n align-items: center;\n width: ${DRAWER_CONTENT_WIDTH};\n justify-content: flex-end;\n box-sizing: border-box;\n gap: 18px;\n`;\n\nconst RemoveLiquidityLayout: React.FC<{\n mode: string;\n children: React.ReactNode;\n onClose: () => void;\n onModeChange: (mode: IMode) => void;\n}> = ({ mode, children, onClose, onModeChange }) => {\n const { networkId } = useNetwork();\n const { globalSlippage, setGlobalSlippage } = useGlobalSlippage();\n const {\n tab,\n position,\n error,\n txForm,\n isPrescheduleBtnDisabled,\n prescheduledPayload,\n setTab,\n setTxForm,\n } = useRemoveLiquidityContext();\n const { mutate: mutateStakePositionIds } = useFetchStakePositionsIds();\n const { stakePool, staked, setStaked } = useUnstakePositionContext();\n\n const isModePreview = mode === \"preview\";\n const isModeEdit = mode === \"edit\";\n const isTabRemoveLP = tab === \"Remove Liquidity\";\n const isTabRemoveLPTrigger = tab === \"Prescheduled Position Close\";\n\n return (\n <Container>\n <Title>\n <DrawerTitle\n onClick={() => {\n isModeEdit ? onClose() : onModeChange(\"edit\");\n }}\n isDrawer\n >\n <Headline5 fontWeight={500} textAlign={\"end\"}>\n Back to Dashboard\n </Headline5>\n </DrawerTitle>\n </Title>\n {isModePreview && (\n <TitleText>\n {isTabRemoveLP\n ? \"Preview Remove Liquidity\"\n : \"Preview Prescheduled Close Intent\"}\n </TitleText>\n )}\n {isModeEdit && <TitleText>Remove Liquidity</TitleText>}\n {isModeEdit && (\n <StyledSelectMenuTab\n maxWidth={396}\n containerPadding={\"2px\"}\n menu={[\"Remove Liquidity\", \"Prescheduled Position Close\"]}\n isPro={[false, true]}\n selectWidth={[150, 225]}\n itemsWidth={[156, 228]}\n defaultSelected={[\n \"Remove Liquidity\",\n \"Prescheduled Position Close\",\n ].indexOf(tab)}\n onSelect={(value: IRemoveLiquidityTab) => {\n setTab(value);\n }}\n />\n )}\n <Wrapper mode={mode}>\n <Content>{children}</Content>\n </Wrapper>\n {!(isTabRemoveLPTrigger && isManta(networkId)) && (\n <ButtonsContainer>\n <TransactionSettings\n defaultSlippage={DEFAULT_SLIPPAGE}\n globalSlippage={globalSlippage}\n warningSlippage={WARNING_SLIPPAGE}\n settingsForm={txForm}\n dropdownPosition=\"topRight\"\n onFormChange={(form) => setTxForm(form)}\n buttonSize={\"small\"}\n setGlobalSlippage={(value) =>\n setGlobalSlippage((prev) => ({ ...prev, [networkId]: value }))\n }\n />\n <Button\n variant=\"contained\"\n color=\"default\"\n size=\"lg\"\n width=\"100%\"\n onClick={() => {\n isModeEdit ? onClose() : onModeChange(\"edit\");\n }}\n >\n Cancel\n </Button>\n {isModeEdit &&\n (stakePool && staked ? (\n <UnstakePositionBtn\n key={position.positionId}\n atStake={staked}\n gaugeAddress={stakePool.gaugeAddress}\n positionId={position.positionIdBN}\n handleTxSuccess={() => {\n setStaked(false);\n mutateStakePositionIds();\n }}\n />\n ) : (\n <Button\n variant=\"contained\"\n color=\"secondary\"\n size=\"lg\"\n width=\"100%\"\n disabled={!!error || isPrescheduleBtnDisabled}\n onClick={() => {\n onModeChange(\"preview\");\n }}\n >\n {error\n ? error\n : isTabRemoveLP\n ? \"Remove Liquidity\"\n : \"Preschedule Position Close\"}\n </Button>\n ))}\n {isModePreview &&\n (isTabRemoveLP ? (\n <RemoveLPBtn onClose={onClose} />\n ) : (\n <PrescheduledCloseBtn\n payload={prescheduledPayload}\n onClose={onClose}\n />\n ))}\n </ButtonsContainer>\n )}\n </Container>\n );\n};\n\nexport default RemoveLiquidityLayout;\n","import { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { getTicker } from \"@/helper/tokenHelper\";\nimport { DEFAULT_APERTURE_FEE } from \"@/utils/helper\";\nimport { formatUSDAmount } from \"@/utils/numberFormat\";\nimport {\n CommonContainer,\n Container,\n DividerHorizontal,\n OtherInfo,\n Row,\n TimeZone,\n RowTitle as Title,\n} from \"@/views/style\";\nimport { AccessoryIcons } from \"@aperture/assetkit\";\nimport {\n FeeInfoCard,\n FlexColumn,\n Headline3,\n Headline5,\n QuestionPopover,\n TokenInfo,\n TriggerSetupPreview,\n} from \"@aperture/uikit\";\nimport { AUTOMATION_EXPIRATION_IN_DAYS } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport bigDecimal from \"js-big-decimal\";\nimport moment from \"moment\";\nimport momentTimeZone from \"moment-timezone\";\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport { useRemoveLiquidityContext } from \"../Context\";\nimport { Amount, Hint, Subtitle } from \"../RemoveLiquidityEdit/style\";\n\nconst EarnedValue = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.spacing.lg};\n`;\n\nexport const StyledCommonContainer = styled(CommonContainer)<{ gap: number }>`\n display: flex;\n flex-direction: column;\n gap: ${({ gap }) => gap}px;\n`;\n\nconst RemoveLiquidityPreview: React.FC = () => {\n const { ammEnum, networkId } = useNetwork();\n const timeZone = momentTimeZone.tz.guess();\n const {\n tab,\n position,\n tokenPair,\n tokenPrice,\n estimatedAmounts,\n estimatedLiquidity,\n trigger,\n form,\n } = useRemoveLiquidityContext();\n\n return (\n <Container>\n {tab === \"Remove Liquidity\" ? (\n <StyledCommonContainer gap={12}>\n <Subtitle>Remove Liquidity</Subtitle>\n <Headline3 fontSize={32} lineHeight={\"37.5px\"}>\n {bigDecimal.multiply(form.removePercentage, 100)}%\n </Headline3>\n </StyledCommonContainer>\n ) : (\n <TriggerSetupPreview\n form={form.trigger}\n tokens={[position.tokenA, position.tokenB]}\n />\n )}\n {tab === \"Remove Liquidity\" && (\n <>\n <DividerHorizontal />\n <StyledCommonContainer gap={12}>\n <Subtitle>Projected Amount To Receive</Subtitle>\n <Amount fontSize={32} lineHeight={\"37.5px\"} marginBottom={0}>\n {formatUSDAmount(\n position.liquidity === \"-\"\n ? \"-\"\n : bigDecimal.add(\n bigDecimal.multiply(\n position.liquidity,\n form.removePercentage\n ),\n position.feeAmount\n )\n )}\n </Amount>\n {tokenPair.map((token, index) => (\n <TokenInfo\n key={token.address}\n Icon={token.Icon}\n ticker={`Pooled ${getTicker(\n token.ticker,\n networkId,\n form.useNative\n )}`}\n address={token.address}\n native={token.native}\n decimals={token.decimals}\n amount={bigDecimal.multiply(\n token.amount,\n form.removePercentage\n )}\n price={tokenPrice[index]}\n marginBottom={0}\n maxWidth={999}\n />\n ))}\n <EarnedValue>\n {tokenPair.map((token, index) => (\n <TokenInfo\n key={token.address}\n Icon={token.Icon}\n ticker={`${getTicker(\n token.ticker,\n networkId,\n form.useNative\n )} Fees Earned`}\n address={token.address}\n native={token.native}\n decimals={token.decimals}\n amount={token.collectableAmount}\n price={tokenPrice[index]}\n marginBottom={0}\n maxWidth={999}\n />\n ))}\n {tab === \"Remove Liquidity\" && (\n <Hint>\n <AccessoryIcons.InfoIcon />\n All accrued fees will be collected when removing liquidity.\n </Hint>\n )}\n </EarnedValue>\n </StyledCommonContainer>\n </>\n )}\n\n {tab === \"Prescheduled Position Close\" && (\n <StyledCommonContainer gap={8}>\n <Subtitle lineHeight={\"20px\"}>\n <span>Current Value (If Closed Now)</span>\n <QuestionPopover content=\"Actual amount received will depend on future asset prices at the time of closure.\" />\n </Subtitle>\n <Amount fontSize={32} lineHeight={\"37.gpx\"} marginBottom={0}>\n {formatUSDAmount(\n bigDecimal.add(estimatedLiquidity, position.feeAmount)\n )}\n </Amount>\n {tokenPair.map((token, index) => (\n <TokenInfo\n key={token.address}\n Icon={token.Icon}\n ticker={token.ticker}\n address={token.address}\n native={token.native}\n decimals={token.decimals}\n amount={bigDecimal.add(\n estimatedAmounts[index],\n token.collectableAmount\n )}\n price={tokenPrice[index]}\n marginBottom={0}\n maxWidth={999}\n />\n ))}\n </StyledCommonContainer>\n )}\n\n {tab === \"Prescheduled Position Close\" && (\n <>\n <DividerHorizontal />\n <OtherInfo>\n <Row>\n <Title lineHeight={\"20px\"}>Gas Ceiling</Title>\n <Headline5 lineHeight={\"20px\"}>\n {bigDecimal.multiply(form.gasCeiling, 100)}% of the position\n </Headline5>\n </Row>\n <FlexColumn gap={\"xl\"}>\n <Row>\n <Title lineHeight={\"20px\"}>Trigger Expiration</Title>\n <Headline5 lineHeight={\"20px\"}>\n {moment()\n .add(AUTOMATION_EXPIRATION_IN_DAYS, \"days\")\n .format(\"MMM Do, YYYY\")}{\" \"}\n {`(${AUTOMATION_EXPIRATION_IN_DAYS} Days)`}\n </Headline5>\n </Row>\n <TimeZone>\n {`${timeZone} (GMT${momentTimeZone.tz(timeZone).format(\"Z\")})`}\n </TimeZone>\n </FlexColumn>\n {!trigger && (\n <FeeInfoCard\n styles={{ size: \"lg\" }}\n amm={ammEnum}\n feeInfo={{\n fee: DEFAULT_APERTURE_FEE,\n amount: bigDecimal.add(\n position.liquidity,\n position.feeAmount\n ),\n }}\n hint={`${\n DEFAULT_APERTURE_FEE * 100\n }% of the closed position size.`}\n />\n )}\n </OtherInfo>\n </>\n )}\n </Container>\n );\n};\n\nexport default RemoveLiquidityPreview;\n","import { IPositionDetails } from \"@/config/position/positionConfig\";\nimport { TriggerItem } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport React, { useCallback, useState } from \"react\";\nimport { GotoType } from \"../types\";\nimport { RemoveLiquidityProvider } from \"./Context\";\nimport RemoveLiquidityEdit from \"./RemoveLiquidityEdit\";\nimport RemoveLiquidityLayout from \"./RemoveLiquidityLayout\";\nimport RemoveLiquidityPreview from \"./RemoveLiquidityPreview\";\n\nexport type IMode = \"edit\" | \"preview\";\n\nexport const RemoveLiquidity: React.FC<{\n details: IPositionDetails;\n goto: GotoType;\n tabs: 0 | 1;\n trigger: TriggerItem | undefined;\n}> = ({ details, goto, tabs, trigger }) => {\n const [mode, setMode] = useState<IMode>(\"edit\");\n const goToDetails = useCallback(() => goto.details(), [goto]);\n\n return (\n <RemoveLiquidityProvider {...{ tabs, position: details, trigger }}>\n <RemoveLiquidityLayout\n mode={mode}\n onClose={goToDetails}\n onModeChange={(mode: IMode) => setMode(mode)}\n >\n {mode === \"edit\" && <RemoveLiquidityEdit />}\n {mode === \"preview\" && <RemoveLiquidityPreview />}\n </RemoveLiquidityLayout>\n </RemoveLiquidityProvider>\n );\n};\n","import { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { usePositionSnackBar } from \"@/hooks/snackbar/usePositionSnackbar\";\nimport { useSendTransactionWithGas } from \"@/hooks/wagmi/useSendTransactionWithGas\";\nimport { calculateGasMargin } from \"@/utils/helper\";\nimport { formatUSDAmount } from \"@/utils/numberFormat\";\nimport { Button, ClaimFeeToken, Spinner } from \"@aperture/uikit\";\nimport { getLogger, viem } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { Color } from \"@ui/components/Button/types\";\nimport { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\nimport { EstimateGasExecutionError } from \"viem\";\nimport { useAccount } from \"wagmi\";\nimport { useSnackbarV2 } from \"../SnackbarContext/SnackbarContextV2\";\n\nconst StyledButton = styled(Button)`\n font-size: 16px;\n line-height: 20px;\n`;\n\nconst CollectFeeBtn: React.FC<{\n total: string;\n tokenInfo: ClaimFeeToken[];\n onClose: () => void;\n positionId: bigint;\n color?: Color;\n}> = ({ total, tokenInfo, positionId, onClose, color = \"primary\" }) => {\n const { address } = useAccount();\n const { ammEnum, networkId, publicClient } = useNetwork();\n const { addSnackbar } = useSnackbarV2();\n const { addPositionSnackbar } = usePositionSnackBar();\n const [txRequest, setTxRequest] = useState<any>(undefined);\n const [errorMsg, setErrorMsg] = useState(undefined);\n\n useEffect(() => {\n setErrorMsg(undefined);\n viem\n .getCollectTx(positionId, address!, networkId, ammEnum, publicClient)\n .then((tx) => {\n publicClient\n .estimateGas({\n ...tx,\n account: address,\n })\n .then((gas) => {\n setTxRequest({ ...tx, gas: calculateGasMargin(gas) });\n })\n .catch((gasError) => {\n const error = gasError as EstimateGasExecutionError;\n getLogger().error(\"Failed to estimate gas on CollectTx: \", {\n error: JSON.stringify(error.message),\n });\n setErrorMsg(error.details);\n });\n })\n .catch((error: any) => {\n getLogger().error(\"Failed to getCollectTx: \", {\n ammEnum,\n networkId,\n address,\n positionId,\n error: JSON.stringify(error),\n });\n setErrorMsg(error.message.split(\";\")[0]);\n });\n }, [networkId, address]);\n\n const { ready, data, sendTransaction, isError, isPending, isSuccess } =\n useSendTransactionWithGas(txRequest);\n\n useEffect(() => {\n if (isError) {\n addSnackbar({\n info: \"Your collect fee request has failed.\",\n status: \"failed\",\n });\n }\n }, [isError]);\n\n useEffect(() => {\n if (isSuccess && data) {\n addPositionSnackbar({\n info: \"Your collect fee request has been sent.\",\n status: \"completed\",\n url: undefined,\n transaction: {\n hash: data,\n successMsg: `You have successfully collected ${formatUSDAmount(\n total\n )} fees from your ${tokenInfo[0].ticker}-${\n tokenInfo[1].ticker\n } position.`,\n },\n });\n onClose();\n }\n }, [isSuccess]);\n\n return (\n <StyledButton\n onClick={() => sendTransaction?.()}\n disabled={!txRequest || !ready || errorMsg || isPending || isSuccess}\n variant=\"contained\"\n color={color}\n size=\"lg\"\n width=\"100%\"\n >\n {errorMsg ? errorMsg : isPending ? <Spinner /> : \"Collect\"}\n </StyledButton>\n );\n};\n\nexport default CollectFeeBtn;\n","import { UnstakePositionBtn } from \"@/components/Button/StakePositionBtn\";\n\nimport { useFetchStakePositionsIds } from \"@/hooks/useFetchStakePositionsIds\";\nimport { Button, ClaimFeeContent, ClaimFeeProps } from \"@aperture/uikit\";\nimport { viem } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { useState } from \"react\";\nimport styled from \"styled-components\";\nimport CollectFeeBtn from \"../Button/CollectFeeBtn\";\n\ninterface ClaimFeeModalProps extends ClaimFeeProps {\n positionId: bigint;\n stakePool?: viem.SlipStreamPool;\n staked?: boolean;\n setStaked?: React.Dispatch<React.SetStateAction<boolean>>;\n onClose: () => void;\n}\nconst ButtonWrapper = styled.div`\n display: flex;\n margin-top: 16px;\n gap: ${({ theme }) => theme.spacing.md};\n`;\n\nconst StyledButton = styled(Button)`\n font-size: 16px;\n line-height: 20px;\n`;\n\nexport const ClaimFeeModal: React.FC<ClaimFeeModalProps> = ({\n total,\n tokenInfo,\n positionId,\n stakePool,\n staked,\n setStaked,\n onClose,\n}) => {\n const { mutate: mutateStakePositionIds } = useFetchStakePositionsIds();\n const [stakeStatus, setStakeStatus] = useState(staked);\n return (\n <>\n <ClaimFeeContent total={total} tokenInfo={tokenInfo} />\n <ButtonWrapper>\n <StyledButton\n width=\"100%\"\n variant=\"contained\"\n color=\"default\"\n size=\"lg\"\n onClick={onClose}\n >\n Cancel\n </StyledButton>\n {stakePool && staked && stakeStatus ? (\n <UnstakePositionBtn\n key={positionId.toString()}\n atStake={staked}\n gaugeAddress={stakePool.gaugeAddress}\n positionId={positionId}\n handleTxSuccess={() => {\n setStaked(false);\n setStakeStatus(false);\n mutateStakePositionIds();\n }}\n />\n ) : (\n <CollectFeeBtn\n color=\"secondary\"\n {...{ total, tokenInfo, positionId, onClose }}\n />\n )}\n </ButtonWrapper>\n </>\n );\n};\n","import { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { getDeadlineWithMins } from \"@/helper/deadlineHelper\";\nimport { usePositionSnackBar } from \"@/hooks/snackbar/usePositionSnackbar\";\nimport { useSendTransactionWithGas } from \"@/hooks/wagmi/useSendTransactionWithGas\";\nimport { calculateGasMargin } from \"@/utils/helper\";\nimport { numberToPercent } from \"@/utils/routing/utils/slippage\";\nimport { Button, ITransactionSettingsForm, Spinner } from \"@aperture/uikit\";\nimport {\n getLogger,\n PermitInfo,\n viem,\n} from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { Color } from \"@ui/components/Button/types\";\nimport bigDecimal from \"js-big-decimal\";\nimport { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\nimport { EstimateGasExecutionError } from \"viem\";\nimport { useAccount } from \"wagmi\";\nimport { useSnackbarV2 } from \"../SnackbarContext/SnackbarContextV2\";\n\nconst StyledButton = styled(Button)`\n font-size: 16px;\n line-height: 20px;\n`;\n\nconst ReinvestBtn: React.FC<{\n positionId: bigint;\n feeAmount: string;\n tokenPair: string;\n txForm: ITransactionSettingsForm;\n permitInfo: PermitInfo | undefined;\n setProjectedAmount: React.Dispatch<\n React.SetStateAction<{\n amount0: string;\n amount1: string;\n }>\n >;\n onClose: () => void;\n color?: Color;\n}> = ({\n positionId,\n feeAmount,\n tokenPair,\n txForm,\n permitInfo,\n setProjectedAmount,\n onClose,\n color = \"primary\",\n}) => {\n const { address } = useAccount();\n const { ammEnum, networkId, publicClient } = useNetwork();\n const { addSnackbar } = useSnackbarV2();\n const [txRequest, setTxRequest] = useState<any>(undefined);\n const [errorMsg, setErrorMsg] = useState(undefined);\n const { addPositionSnackbar } = usePositionSnackBar();\n\n useEffect(() => {\n setErrorMsg(undefined);\n viem\n .getReinvestNoNeedSwapTx(\n networkId,\n ammEnum,\n address,\n positionId,\n numberToPercent(txForm.slippage),\n BigInt(\n getDeadlineWithMins(\n Number(txForm.deadline) === 0 || txForm.deadline === \"\"\n ? 30\n : Number(txForm.deadline)\n )\n ),\n publicClient,\n permitInfo\n )\n .then(({ tx, amounts }) => {\n setProjectedAmount({\n amount0: amounts.amount0.toString(),\n amount1: amounts.amount1.toString(),\n });\n\n publicClient\n .estimateGas({\n ...tx,\n account: address,\n })\n .then((gas) => {\n setTxRequest({ ...tx, gas: calculateGasMargin(gas) });\n })\n .catch((gasError) => {\n const error = gasError as EstimateGasExecutionError;\n getLogger().error(\"Failed to estimate gas on ReinvestTx: \", {\n error: JSON.stringify(error.message),\n });\n setErrorMsg(error.details);\n });\n })\n .catch((error) => {\n getLogger().error(\"Failed to getReinvestTx: \", {\n ammEnum,\n networkId,\n address,\n positionId,\n slippage: txForm.slippage,\n error: JSON.stringify(error),\n });\n if (\n bigDecimal.compareTo(feeAmount === \"-\" ? \"0\" : feeAmount, \"0.01\") < 1\n ) {\n setErrorMsg(\"Amount to be reinvested is too small\");\n } else setErrorMsg(error.details);\n });\n }, [txForm]);\n\n const { ready, data, sendTransaction, isError, isPending, isSuccess } =\n useSendTransactionWithGas(txRequest);\n\n useEffect(() => {\n if (isError) {\n addSnackbar({\n info: \"Your reinvest unclaimed fees request has failed.\",\n status: \"failed\",\n });\n }\n }, [isError]);\n\n useEffect(() => {\n if (isSuccess && data) {\n addPositionSnackbar({\n info: \"Your reinvest unclaimed fees request has been sent.\",\n status: \"completed\",\n url: undefined,\n transaction: {\n hash: data,\n successMsg: `You have successfully reinvested unclaimed fees to your ${tokenPair} position.`,\n },\n });\n onClose();\n }\n }, [isSuccess]);\n\n return (\n <StyledButton\n onClick={() => sendTransaction?.()}\n disabled={!txRequest || !ready || errorMsg || isPending || isSuccess}\n variant=\"contained\"\n color={color}\n size=\"lg\"\n width=\"252px\"\n >\n {errorMsg ? errorMsg : isPending ? <Spinner /> : \"Reinvest\"}\n </StyledButton>\n );\n};\n\nexport default ReinvestBtn;\n","import ApproveOnChainBtn from \"@/components/Button/ApproveOnChainBtn\";\nimport ReinvestBtn from \"@/components/Button/ReinvestBtn\";\nimport SignPositionPermitBtn from \"@/components/Button/SignPositionPermitBtn\";\nimport { useFetchPositionPermission } from \"@/hooks/useFetchPositionPermission\";\nimport { useIfAuthorized } from \"@/hooks/useFetchUserAuthentication\";\nimport { useIsWalletContract } from \"@/hooks/useIsWalletContract\";\nimport { ITransactionSettingsForm } from \"@aperture/uikit\";\nimport { PermitInfo } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { useState } from \"react\";\n\nexport const ReinvestWrapper: React.FC<{\n positionId: string;\n positionIdBN: bigint;\n feeAmount: string;\n tokenPair: string;\n txForm: ITransactionSettingsForm;\n setProjectedAmount: React.Dispatch<\n React.SetStateAction<{\n amount0: string;\n amount1: string;\n }>\n >;\n onClose: () => void;\n signPositionPermitBtnText?: string;\n}> = ({\n positionId,\n positionIdBN,\n feeAmount,\n tokenPair,\n txForm,\n setProjectedAmount,\n onClose,\n signPositionPermitBtnText = \"Sign Position Permit\",\n}) => {\n const { ifAuthorized } = useIfAuthorized();\n const { data: isWalletContract } = useIsWalletContract();\n const {\n data: permitStatus,\n isLoading: isPermitLoading,\n mutate: mutatePositionPermit,\n } = useFetchPositionPermission(positionId);\n\n const [permitInfo, setPermitInfo] = useState<PermitInfo | undefined>(\n undefined\n );\n\n return (\n <>\n {ifAuthorized ||\n (isWalletContract && (isPermitLoading || permitStatus)) ||\n permitInfo ? (\n <ReinvestBtn\n color=\"secondary\"\n positionId={positionIdBN}\n feeAmount={feeAmount}\n tokenPair={tokenPair}\n txForm={txForm}\n permitInfo={permitInfo}\n setProjectedAmount={setProjectedAmount}\n onClose={onClose}\n />\n ) : isWalletContract ? (\n <ApproveOnChainBtn\n text=\"Approve on-chain\"\n color=\"secondary\"\n tokenPair={tokenPair}\n positionIdBN={positionIdBN}\n onApproved={mutatePositionPermit}\n />\n ) : (\n <SignPositionPermitBtn\n color=\"secondary\"\n positionId={BigInt(positionId)}\n tokenPair={tokenPair}\n setPermitInfo={setPermitInfo}\n >\n {signPositionPermitBtnText}\n </SignPositionPermitBtn>\n )}\n </>\n );\n};\n","import { UnstakePositionBtn } from \"@/components/Button/StakePositionBtn\";\nimport { useGlobalSlippage } from \"@/components/GlobalStore\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\n\nimport { ITokenInfo } from \"@/config/position/positionConfig\";\nimport { getTokenPercentages } from \"@/helper/tokenHelper\";\nimport { useOnNetworkAccountChange } from \"@/hooks/globalState/useOnNetworkAccountChange\";\nimport { useFetchStakePositionsIds } from \"@/hooks/useFetchStakePositionsIds\";\nimport {\n DEFAULT_APERTURE_REINVEST_FEE,\n DEFAULT_SLIPPAGE,\n} from \"@/utils/helper\";\nimport { ReinvestWrapper } from \"@/views/PositionDetails/ReinvestWrapper\";\nimport {\n Button,\n ITransactionSettingsForm,\n ReinvestFeesContent,\n TransactionSettings,\n} from \"@aperture/uikit\";\nimport { getLogger, viem } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport bigDecimal from \"js-big-decimal\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport styled from \"styled-components\";\nimport { formatUnits } from \"viem\";\nimport { useAccount } from \"wagmi\";\n\nconst ButtonWrapper = styled.div`\n display: flex;\n width: 100%;\n padding-top: 24px;\n align-items: center;\n justify-content: flex-end;\n gap: ${({ theme }) => theme.spacing.md};\n`;\n\nconst StyledButton = styled(Button)`\n font-size: 16px;\n line-height: 20px;\n`;\n\nexport const ReinvestFeesModal: React.FC<{\n positionId: string;\n positionIdBN: bigint;\n liquidity: string;\n feeAmount: string;\n tokens: [ITokenInfo, ITokenInfo];\n tokenPrices: [string, string];\n tokenPercentages: [string, string];\n stakePool?: viem.SlipStreamPool;\n staked?: boolean;\n setStaked?: React.Dispatch<React.SetStateAction<boolean>>;\n onClose: () => void;\n}> = ({\n positionId,\n positionIdBN,\n liquidity,\n feeAmount,\n tokens,\n tokenPrices,\n tokenPercentages,\n stakePool,\n staked,\n setStaked,\n onClose,\n}) => {\n const { address } = useAccount();\n const { ammEnum, networkId, publicClient } = useNetwork();\n const { globalSlippage, setGlobalSlippage } = useGlobalSlippage();\n const { mutate: mutateStakePositionIds } = useFetchStakePositionsIds();\n const [txForm, setTXForm] = useState<ITransactionSettingsForm>({\n slippage: globalSlippage ?? DEFAULT_SLIPPAGE,\n deadline: \"30\",\n });\n const [projectedAmount, setProjectedAmount] = useState({\n amount0: \"0\",\n amount1: \"0\",\n });\n const [stakeStatus, setStakeStatus] = useState(staked);\n\n const newTokenAmount: [string, string] = useMemo(\n () => [\n bigDecimal.add(\n tokens[0].amount,\n formatUnits(BigInt(projectedAmount.amount0), tokens[0].decimals)\n ),\n bigDecimal.add(\n tokens[1].amount,\n formatUnits(BigInt(projectedAmount.amount1), tokens[1].decimals)\n ),\n ],\n [tokens, projectedAmount]\n );\n\n const newPercentage = useMemo(\n () =>\n getTokenPercentages(\n newTokenAmount[0],\n newTokenAmount[1],\n tokenPrices[0],\n tokenPrices[1]\n ),\n [tokenPrices, newTokenAmount]\n );\n\n const newLPInUs: string = useMemo(\n () =>\n bigDecimal.add(\n bigDecimal.multiply(newTokenAmount[0], tokenPrices[0]),\n bigDecimal.multiply(newTokenAmount[1], tokenPrices[1])\n ),\n [tokenPrices, newTokenAmount]\n );\n\n useOnNetworkAccountChange(() => {\n onClose();\n });\n\n useEffect(() => {\n viem\n .getReinvestedPosition(\n networkId,\n ammEnum,\n BigInt(positionId),\n publicClient\n )\n .then(([, amount0, amount1]) => {\n setProjectedAmount({\n amount0: amount0.toString(),\n amount1: amount1.toString(),\n });\n })\n .catch((error) => {\n getLogger().error(\"Failed to getReinvestedPosition: \", {\n ammEnum,\n networkId,\n address,\n positionId,\n error: JSON.stringify(error),\n });\n });\n }, []);\n\n return (\n <>\n <ReinvestFeesContent\n amm={ammEnum}\n liquidity={liquidity}\n feeAmount={feeAmount}\n tokens={[\n {\n Icon: tokens[0].Icon,\n ticker: tokens[0].ticker,\n amount: tokens[0].amount,\n price: tokenPrices[0],\n address: tokens[0].address,\n native: tokens[0].native,\n decimals: tokens[0].decimals,\n tag: tokenPercentages[0],\n },\n {\n Icon: tokens[1].Icon,\n ticker: tokens[1].ticker,\n amount: tokens[1].amount,\n price: tokenPrices[1],\n address: tokens[1].address,\n native: tokens[1].native,\n decimals: tokens[1].decimals,\n tag: tokenPercentages[1],\n },\n ]}\n unClaimedFees={[\n tokens[0].collectableAmount,\n tokens[1].collectableAmount,\n ]}\n predictedLiquidity={newLPInUs}\n predictedProjection={[\n {\n amount: newTokenAmount[0],\n percent: newPercentage.token0Percent,\n },\n {\n amount: newTokenAmount[1],\n percent: newPercentage.token1Percent,\n },\n ]}\n fee={DEFAULT_APERTURE_REINVEST_FEE}\n />\n <ButtonWrapper>\n <TransactionSettings\n defaultSlippage={DEFAULT_SLIPPAGE}\n globalSlippage={globalSlippage}\n settingsForm={txForm}\n dropdownPosition=\"topRight\"\n onFormChange={(form) => {\n setTXForm(form);\n }}\n buttonSize={\"small\"}\n setGlobalSlippage={(value) =>\n setGlobalSlippage((prev) => ({ ...prev, [networkId]: value }))\n }\n />\n <StyledButton\n width=\"252px\"\n variant=\"contained\"\n color=\"default\"\n size=\"lg\"\n onClick={onClose}\n >\n Cancel\n </StyledButton>\n {stakePool && staked && stakeStatus ? (\n <UnstakePositionBtn\n key={positionId}\n atStake={staked}\n gaugeAddress={stakePool.gaugeAddress}\n positionId={positionIdBN}\n handleTxSuccess={() => {\n setStaked(false);\n setStakeStatus(false);\n mutateStakePositionIds();\n }}\n />\n ) : (\n <ReinvestWrapper\n positionId={positionId}\n positionIdBN={positionIdBN}\n feeAmount={feeAmount}\n tokenPair={`${tokens[0].ticker}-${tokens[1].ticker}`}\n txForm={txForm}\n setProjectedAmount={setProjectedAmount}\n onClose={onClose}\n />\n )}\n </ButtonWrapper>\n </>\n );\n};\n","import { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { useFetchStakePositionsIds } from \"@/hooks/useFetchStakePositionsIds\";\nimport { getSlipstreamAmmByNetworkId } from \"@/utils/helper\";\nimport { Button } from \"@aperture/uikit\";\nimport {\n E_ModalKey,\n FlexColumn,\n StakePositionContent,\n useModal,\n} from \"@aperture/uikitv2\";\nimport styled from \"styled-components\";\nimport {\n StakePositionBtn,\n UnstakePositionBtn,\n} from \"../Button/StakePositionBtn\";\nimport { useUnstakePositionContext } from \"../Context/UnstakePositionContext\";\n\nconst ButtonWrapper = styled.div`\n display: flex;\n margin-top: 16px;\n gap: ${({ theme }) => theme.spacing.md};\n`;\nconst StyledButton = styled(Button)`\n font-size: 16px;\n line-height: 20px;\n`;\n\nexport const StakePositionModal = () => {\n const { setModalState } = useModal();\n const { networkId } = useNetwork();\n const { mutate: mutateStakePositionIds } = useFetchStakePositionsIds();\n const { positionId, stakePool, staked, setStaked } =\n useUnstakePositionContext();\n\n const onClose = () => {\n setModalState(E_ModalKey.STAKE_POSITION_MODAL, false);\n };\n\n const buttonProps = {\n atStake: staked,\n gaugeAddress: stakePool?.gaugeAddress,\n positionId,\n handleTxSuccess: () => {\n setStaked(!staked);\n mutateStakePositionIds();\n onClose();\n },\n };\n return (\n <FlexColumn gap=\"lg\">\n <StakePositionContent\n amm={getSlipstreamAmmByNetworkId(networkId)}\n atStake={staked}\n />\n <ButtonWrapper>\n <StyledButton\n width=\"100%\"\n variant=\"contained\"\n color=\"default\"\n size=\"lg\"\n onClick={onClose}\n >\n Cancel\n </StyledButton>\n {staked ? (\n <UnstakePositionBtn\n key={`${positionId.toString()}-unstake`}\n {...buttonProps}\n />\n ) : (\n <StakePositionBtn\n key={`${positionId.toString()}-stake`}\n {...buttonProps}\n />\n )}\n </ButtonWrapper>\n </FlexColumn>\n );\n};\n","import ApproveOnChainBtn from \"@/components/Button/ApproveOnChainBtn\";\nimport SignPositionPermitBtn from \"@/components/Button/SignPositionPermitBtn\";\nimport {\n Body1,\n Body2,\n Button,\n DRAWER_CONTENT_WIDTH,\n Flex,\n FlexColumn,\n Headline3,\n RangeTag,\n T1Regular,\n} from \"@aperture/uikit\";\nimport styled from \"styled-components\";\nimport {\n FlexboxProps,\n GridProps,\n LayoutProps,\n SpaceProps,\n compose,\n flexbox,\n grid,\n layout,\n space,\n} from \"styled-system\";\n\nexport const Card = styled.div<\n FlexboxProps &\n GridProps &\n LayoutProps &\n SpaceProps & {\n noBorder?: boolean;\n }\n>`\n box-sizing: border-box;\n display: flex;\n flex-direction: row;\n width: 100%;\n padding: 16px;\n gap: ${({ theme }) => theme.spacing.xl};\n border: ${({ theme, noBorder }) =>\n noBorder ? \"none\" : `1px solid ${theme.colors.global.line.Line2}`};\n border-radius: ${({ theme }) => theme.radii.xl};\n background-color: ${({ theme }) => theme.colors.global.background.BG2};\n ${compose(flexbox, grid, layout, space)}\n`;\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.spacing[\"2xl\"]};\n`;\n\nexport const Wrapper = styled.div`\n width: 100%;\n height: calc(100vh - 216px);\n overflow-x: hidden;\n overflow-y: auto;\n &::-webkit-scrollbar {\n width: 0;\n }\n`;\n\nexport const TitleWrapper = styled.div`\n width: ${DRAWER_CONTENT_WIDTH};\n`;\n\nexport const Content = styled(FlexColumn)`\n width: ${DRAWER_CONTENT_WIDTH};\n gap: ${({ theme }) => theme.spacing.xl};\n`;\n\nexport const Overview = styled.div`\n box-sizing: border-box;\n display: flex;\n width: 100%;\n gap: ${({ theme }) => theme.spacing.xl};\n`;\n\nexport const NFTCard = styled.div`\n display: flex;\n align-items: start;\n width: 176px;\n height: 308px;\n img {\n width: 176px;\n height: 308px;\n }\n`;\n\nexport const InfoWrapper = styled.div`\n flex: 1;\n width: 100%;\n box-sizing: border-box;\n display: flex;\n min-width: 395px;\n flex-direction: column;\n gap: ${({ theme }) => theme.spacing.xl};\n`;\n\nexport const Header = styled(Body1)`\n line-height: 16px;\n color: ${({ theme }) => theme.colors.global.text.T2};\n`;\n\nexport const LightHeader = styled(T1Regular)`\n font-weight: 500;\n`;\n\nexport const StyledHeadline3 = styled(Headline3)`\n line-height: 28px;\n color: ${({ theme }) => theme.colors.global.text.T1};\n`;\n\nexport const RebalanceWrapper = styled.div`\n margin-left: auto;\n`;\n\nexport const TokenInfoContainer = styled.div`\n margin-top: ${({ theme }) => theme.spacing.md};\n`;\n\nexport const LeftContent = styled.div`\n width: 215px;\n`;\n\nexport const ButtonGroupWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n align-items: flex-end;\n gap: ${({ theme }) => theme.spacing.md};\n`;\n\nexport const StyledBody2 = styled(Body2)`\n padding: 4px;\n line-height: 14px;\n`;\n\nexport const StyledButton = styled(Button)`\n padding: 0;\n width: 130px;\n height: 20px;\n border-radius: ${({ theme }) => theme.radii.round};\n`;\n\nexport const FeesContent = styled.div`\n display: flex;\n width: 100%;\n justify-content: space-between;\n gap: ${({ theme }) => theme.spacing.lg};\n`;\n\nexport const FeesButtonGroup = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: end;\n`;\n\nexport const RenableApproveOnChainBtn = styled(ApproveOnChainBtn)`\n width: 94px;\n height: 30px;\n font-size: 14px;\n padding: 8px;\n background: ${({ theme }) => theme.colors.global.warning};\n &:hover {\n background: ${({ theme }) => theme.colors.global.warning};\n opacity: 0.8;\n }\n`;\n\nexport const ReEnablePermitButton = styled(SignPositionPermitBtn)`\n width: 94px;\n height: 30px;\n font-size: 14px;\n padding: 8px;\n background: ${({ theme }) => theme.colors.global.warning};\n &:hover {\n background: ${({ theme }) => theme.colors.global.warning};\n opacity: 0.8;\n }\n`;\n\nexport const StyledTitle = styled(Body1)`\n display: flex;\n align-items: start;\n flex-direction: column;\n line-height: 20px;\n color: ${({ theme }) => theme.colors.global.text.T3};\n`;\n\nexport const StyledValue = styled(Body1)`\n display: flex;\n line-height: 20px;\n gap: ${({ theme }) => theme.spacing.md};\n color: ${({ theme }) => theme.colors.global.text.T1};\n`;\n\nexport const PriceRangeCard = styled(Card)`\n padding: 0;\n flex-direction: column;\n gap: ${({ theme }) => theme.spacing.lg};\n`;\n\nexport const PriceRangeTitleBar = styled(Flex)`\n width: 100%;\n align-items: center;\n gap: ${({ theme }) => theme.spacing.xl};\n`;\n\nexport const RangeStatus = styled(RangeTag)`\n margin-left: ${({ theme }) => theme.spacing.md};\n margin-right: auto;\n`;\n\nexport const PureBox = styled.div`\n font-weight: 400;\n color: ${({ theme }) => theme.colors.global.text.T3};\n`;\n\nexport const IntentToolCard = styled(Card)`\n padding: 0;\n flex-direction: column;\n gap: ${({ theme }) => theme.spacing.md};\n`;\n","import { useAOStore } from \"@/components/GlobalStore\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { useSnackbarV2 } from \"@/components/SnackbarContext/SnackbarContextV2\";\nimport { IPositionDetails } from \"@/config/position/positionConfig\";\nimport { updatePositionPermit } from \"@/helper/positionHelper\";\nimport { useFetchPositionPermission } from \"@/hooks/useFetchPositionPermission\";\nimport { useIsWalletContract } from \"@/hooks/useIsWalletContract\";\nimport { isProdEnv } from \"@/utils/helper\";\nimport { Notification } from \"@aperture/uikit\";\nimport { PermitInfo } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { ReEnablePermitButton, RenableApproveOnChainBtn } from \"./styles\";\n\nexport const ReEnablePermit: React.FC<{\n details: IPositionDetails;\n}> = ({ details }) => {\n const { addSnackbar } = useSnackbarV2();\n const { ammEnum, networkId } = useNetwork();\n const { ifAuthorized, isAOStatusLoading } = useAOStore();\n const { data: isWalletContract } = useIsWalletContract();\n const {\n data: permitStatus,\n isLoading: isPermitLoading,\n mutate: mutatePositionPermit,\n } = useFetchPositionPermission(details.positionId);\n\n const updatePermitInfo = (permitInfo: PermitInfo) => {\n addSnackbar({\n info: \"Re-enable position authorization in progress.\",\n status: \"completed\",\n });\n updatePositionPermit(ammEnum, networkId, details.positionId, {\n signature: permitInfo.signature,\n deadline: String(permitInfo.deadline),\n })\n .then((res) => {\n mutatePositionPermit();\n addSnackbar({\n info: \"Re-enable position authorization succeeded!\",\n status: \"completed\",\n });\n })\n .catch((err) => {\n addSnackbar({\n info: \"Re-enable position authorization has failed: \" + err,\n status: \"failed\",\n });\n });\n };\n\n return (\n <>\n {!isProdEnv() && (\n <div>\n {\" \"}\n PositionId: {details.positionId} tickLower: {details.tickLower}{\" \"}\n tickUpper: {details.tickUpper}\n <br />\n AO: {String(ifAuthorized)} <br />\n AO loading: {String(isAOStatusLoading)} <br />\n PositionPermit: {String(permitStatus)}\n </div>\n )}\n {!(ifAuthorized || isPermitLoading || permitStatus) &&\n (details.autoCompound ||\n details.rebalanced ||\n details.prescheduled) && (\n <Notification\n variant=\"warning\"\n text=\"Single position authorization permit expired or Authorized Operator status has been revoked. All triggers have become invalid. You can re-enable the singe position authorization to activate the triggers or go to Dashboard > Authorize Operator to grant operator status for all positions.\"\n button={\n isWalletContract ? (\n <RenableApproveOnChainBtn\n text=\"Re-enable\"\n color=\"secondary\"\n positionIdBN={details.positionIdBN}\n tokenPair={`${details.tokenA.ticker}-${details.tokenB.ticker}`}\n onApproved={mutatePositionPermit}\n />\n ) : (\n <ReEnablePermitButton\n color=\"secondary\"\n positionId={details.positionIdBN}\n tokenPair={`${details.tokenA.ticker}-${details.tokenB.ticker}`}\n setPermitInfo={(permitInfo: PermitInfo) =>\n updatePermitInfo(permitInfo)\n }\n >\n Re-enable\n </ReEnablePermitButton>\n )\n }\n showClose={false}\n />\n )}\n </>\n );\n};\n","import { DeleteStrategyModal } from \"@/components/Modal/DeleteStrategyModal\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { StrategyNotification } from \"@/components/Notification/Strategy\";\nimport { usePage } from \"@/components/PageContext/PageContext\";\nimport { useSnackbarV2 } from \"@/components/SnackbarContext/SnackbarContextV2\";\nimport { IPositionDetails } from \"@/config/position/positionConfig\";\nimport { offsetTickToPercentage } from \"@/helper/liquiditySelectorHelper\";\nimport { getProjectedLiquidityPosition } from \"@/helper/positionHelper\";\nimport { getStrategyInfoCardProps } from \"@/helper/strategyHelper\";\nimport { getTokensFromInfo } from \"@/helper/tokenHelper\";\nimport { strategyActionTypes } from \"@/helper/trigger\";\nimport { deleteTrigger, getTriggerType } from \"@/helper/triggerHelper\";\nimport { useFetchAllChainUserTriggers } from \"@/hooks/useFetchAllChainUserTriggers\";\nimport { useFetchPositionPermission } from \"@/hooks/useFetchPositionPermission\";\nimport { useIfAuthorized } from \"@/hooks/useFetchUserAuthentication\";\nimport { CommonQueryKey } from \"@/utils/browserHistory\";\nimport { FlexColumn, TriggerGroup } from \"@aperture/uikit\";\nimport { Projection } from \"@aperture/uikit/src/components/TriggerList/types\";\nimport { E_ModalKey, Modal, useModal } from \"@aperture/uikitv2\";\nimport {\n ActionTypeEnum,\n DeleteTriggerPayload,\n GetStrategyDetailResponse,\n RebalanceAction,\n RecurringAction,\n TriggerItem,\n viem,\n} from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { tickToPrice } from \"@aperture_finance/uniswap-v3-sdk\";\nimport stringify from \"json-stable-stringify\";\nimport _ from \"lodash\";\nimport { useRouter } from \"next/router\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useAccount, useSignMessage } from \"wagmi\";\nimport { GotoType } from \"../types\";\n\ntype IProps = {\n details: IPositionDetails;\n positionDetails: viem.PositionDetails | undefined;\n tokenPrices: [string, string];\n triggers: TriggerItem[];\n goto: GotoType;\n strategyDetail?: GetStrategyDetailResponse;\n autoCompoundOn?: boolean;\n};\n\nexport const TriggerListWrapper: React.FC<IProps> = ({\n details,\n positionDetails,\n tokenPrices,\n triggers,\n strategyDetail,\n autoCompoundOn,\n goto,\n}) => {\n const tokenA = details.tokenA;\n const tokenB = details.tokenB;\n const { networkId } = useNetwork();\n const { state, setModalState } = useModal();\n const { isOpen } = state[E_ModalKey.DELETE_STRATEGY_MODAL];\n const [selectedTrigger, setSelectedTrigger] = useState<TriggerItem>();\n\n const getPrice = useCallback(\n (tick: number) => {\n const { token0, token1 } = getTokensFromInfo(\n tokenA,\n tokenB,\n details.chainId\n );\n return tickToPrice(token0, token1, tick).toFixed(token0.decimals);\n },\n [details.chainId, tokenA, tokenB]\n );\n\n const projectLP = useCallback(\n (trigger: TriggerItem): Projection => {\n // if the rebalance trigger has a price condition for a targeted ratio, use that price to calculate the projected LP\n if (positionDetails) {\n return getProjectedLiquidityPosition(\n networkId,\n details,\n positionDetails.position,\n (trigger.action as RebalanceAction).tickLower,\n (trigger.action as RebalanceAction).tickUpper,\n tokenPrices,\n undefined,\n trigger\n );\n } else {\n return [\n { amount: \"0\", percent: \"0\" },\n { amount: \"0\", percent: \"0\" },\n ];\n }\n },\n [details, positionDetails, tokenPrices]\n );\n\n const { address, chain } = useAccount();\n const { mutate } = useFetchAllChainUserTriggers();\n const {\n data: signedPayload,\n error,\n isSuccess,\n signMessage,\n isError,\n } = useSignMessage();\n const { ifAuthorized } = useIfAuthorized();\n const { data: permitStatus, isLoading: isPermitLoading } =\n useFetchPositionPermission(details.positionId);\n const { addSnackbar } = useSnackbarV2();\n const [payload, setPayload] = useState<DeleteTriggerPayload | undefined>(\n undefined\n );\n const router = useRouter();\n const { setStrategyPage } = usePage();\n\n const closeDeleteStrategyModal = () => {\n setModalState(E_ModalKey.DELETE_STRATEGY_MODAL, false);\n setSelectedTrigger(undefined);\n };\n const strategyInfo = useMemo(() => {\n if (!selectedTrigger) return;\n const { rebalancesExecuted, ...data } = getStrategyInfoCardProps(\n details,\n selectedTrigger,\n strategyDetail\n );\n return data;\n }, [details, selectedTrigger, strategyDetail]);\n\n const handleGoToStrategy = useCallback(\n (trigger: TriggerItem) => {\n router.push({\n pathname: \"/recurring-rebalance\",\n query: {\n [CommonQueryKey.STRATEGY_ID]: (trigger.action as RecurringAction)\n .strategyId,\n },\n });\n },\n [router]\n );\n\n const handleCheck = useCallback(\n (trigger: TriggerItem) => {\n setStrategyPage(\"details\");\n handleGoToStrategy(trigger);\n },\n [goto]\n );\n\n const handleEdit = useCallback(\n (trigger: TriggerItem) => {\n if (trigger.action.type === \"Close\") {\n goto.removeLP(1, trigger);\n } else if (trigger.action.type === \"Rebalance\") {\n goto.rebalance(1, trigger);\n } else if (strategyActionTypes.includes(trigger.action.type)) {\n setStrategyPage(\"edit\");\n handleGoToStrategy(trigger);\n }\n },\n [goto]\n );\n\n const handleDeleteClick = (taskId: number) => {\n const trigger = triggers.find((trigger) => trigger.taskId === taskId);\n const triggerAction = trigger.action;\n const isRecurringType =\n triggerAction.type === \"RecurringPrice\" ||\n triggerAction.type === \"RecurringPercentage\" ||\n triggerAction.type === \"RecurringRatio\" ||\n triggerAction.type === \"RecurringDualAction\";\n\n if (!isRecurringType) {\n handleDelete(taskId);\n } else {\n setSelectedTrigger(trigger);\n setModalState(E_ModalKey.DELETE_STRATEGY_MODAL, true);\n }\n };\n\n const handleDelete = useCallback(\n (taskId: number) => {\n const deletePayload: DeleteTriggerPayload = {\n ownerAddr: address!,\n chainId: chain!.id,\n taskId,\n };\n setPayload(deletePayload);\n const payloadInString = stringify(deletePayload);\n signMessage({ account: address, message: payloadInString });\n },\n [address, chain, signMessage]\n );\n\n useEffect(() => {\n if (isSuccess && payload && signedPayload) {\n const trigger = triggers.find(\n (trigger) => trigger.taskId === payload.taskId\n );\n const category =\n trigger.action.type === \"Close\" ? \"Closure\" : trigger.action.type;\n const type = getTriggerType(trigger);\n deleteTrigger(payload, signedPayload)\n .then((res) => {\n addSnackbar({\n info: `Your ${type.toLowerCase()} trigger for the ${\n tokenA.ticker\n }-${\n tokenB.ticker\n } position ${category.toLowerCase()} has been deleted.`,\n status: \"completed\",\n });\n closeDeleteStrategyModal();\n mutate();\n })\n .catch((err) => {\n addSnackbar({\n info: \"Your delete trigger request has failed: \" + err!.message,\n status: \"failed\",\n });\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isSuccess]);\n\n useEffect(() => {\n if (isError) {\n addSnackbar({ info: \"Failed: \" + error!.message, status: \"failed\" });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isError]);\n\n const renderNotification = useCallback(() => {\n return (\n <StrategyNotification\n chainId={details.chainId}\n positionId={details.positionId}\n />\n );\n }, [details.positionId]);\n\n const groupedTriggers = _.groupBy(triggers, (trigger) => trigger.action.type);\n\n const getErrorTag = useCallback(\n (trigger: TriggerItem) => {\n if (!ifAuthorized || trigger.lastFailedMessage) {\n return \"Rebalance Failed\";\n }\n return \"\";\n },\n [ifAuthorized]\n );\n\n return (\n <>\n <FlexColumn gap=\"xl\">\n {orderedKeys.map((key) => (\n <TriggerGroup\n key={key}\n getErrorTag={getErrorTag}\n getPrice={getPrice}\n getPercentage={offsetTickToPercentage}\n projectLP={projectLP}\n tickRange={[details.tickLower, details.tickUpper]}\n tokens={[tokenA, tokenB]}\n chainId={details.chainId}\n triggers={groupedTriggers[key]}\n enableEdit={ifAuthorized || isPermitLoading || !!permitStatus}\n onEdit={handleEdit}\n onDelete={handleDeleteClick}\n onClickGoTo={handleCheck}\n executedTimes={strategyDetail?.executed}\n autoCompoundOn={autoCompoundOn}\n renderNotification={renderNotification}\n />\n ))}\n </FlexColumn>\n <Modal isModalOpen={isOpen} onClose={closeDeleteStrategyModal}>\n {selectedTrigger && (\n <DeleteStrategyModal\n taskId={selectedTrigger.taskId}\n strategyInfo={strategyInfo}\n onClose={closeDeleteStrategyModal}\n />\n )}\n </Modal>\n </>\n );\n};\n\nconst orderedKeys: ActionTypeEnum[] = [\n \"Close\",\n \"Rebalance\",\n \"RecurringPercentage\",\n \"RecurringPrice\",\n \"RecurringRatio\",\n \"RecurringDualAction\",\n];\n","import { useUnstakePositionContext } from \"@/components/Context/UnstakePositionContext\";\nimport { ClaimFeeModal } from \"@/components/Modal/ClaimFeeModal\";\nimport { ReinvestFeesModal } from \"@/components/Modal/ReinvestModal\";\nimport { StakePositionModal } from \"@/components/Modal/StakePositionModal\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { usePage } from \"@/components/PageContext/PageContext\";\nimport { IPositionDetails } from \"@/config/position/positionConfig\";\nimport {\n getClosedPositions,\n getPositionAnalytics,\n} from \"@/helper/positionHelper\";\nimport { getTokenPercentages } from \"@/helper/tokenHelper\";\nimport { strategyActionTypes } from \"@/helper/trigger\";\nimport { filterTriggers } from \"@/helper/triggerHelper\";\nimport { useCurrentChainToken } from \"@/hooks/globalState/useCurrentChainToken\";\nimport { useFetchPositionRebalanceHistory } from \"@/hooks/useFetch/useFetchPositionRebalanceHistory\";\nimport { useFetchStrategy } from \"@/hooks/useFetch/useFetchStrategy\";\nimport { useFetchAllChainsAnalytics } from \"@/hooks/useFetchAllChainAnalytics\";\nimport { useFetchAllChainUserTriggers } from \"@/hooks/useFetchAllChainUserTriggers\";\nimport { useFetchAllChainsPositions } from \"@/hooks/useFetchAllChainsPositions\";\nimport { useFetchCurrentChainMarketPrice } from \"@/hooks/useFetchMarketPrice\";\nimport { useFetchTokenURL } from \"@/hooks/useFetchTokenURL\";\nimport { useFetchUserPosition } from \"@/hooks/useFetchUserPosition\";\nimport { CommonQueryKey } from \"@/utils/browserHistory\";\nimport {\n SLIPSTREAM_NETWORKS,\n getSlipstreamAmmByNetworkId,\n} from \"@/utils/helper\";\nimport { isManta } from \"@/utils/networkHelper\";\nimport {\n formatMarketPrice,\n formatPrice,\n formatUSDAmount,\n} from \"@/utils/numberFormat\";\nimport {\n DrawerTitle,\n FeeTierPercentage,\n Headline5,\n LinearLoader,\n Notification,\n TitleBar,\n TokenInfo,\n TokenPriceGroup,\n ToolCard,\n} from \"@aperture/uikit\";\nimport {\n ClosedPositions,\n Flex,\n NFTPositionCard,\n PositionAnalytics,\n useModal,\n} from \"@aperture/uikitv2\";\nimport {\n ActionTypeEnum,\n RecurringAction,\n} from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { E_ModalKey, Modal } from \"@uiv2/components/Modals\";\nimport bigDecimal from \"js-big-decimal\";\nimport { useRouter } from \"next/router\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useAccount } from \"wagmi\";\nimport { GotoType } from \"../types\";\nimport { AutoCompoundWrapper } from \"./AutoCompoundWrapper\";\nimport { ReEnablePermit } from \"./ReEnablePermit\";\nimport { TriggerListWrapper } from \"./TriggerListWrapper\";\nimport {\n ButtonGroupWrapper,\n Card,\n Container,\n Content,\n FeesButtonGroup,\n FeesContent,\n Header,\n InfoWrapper,\n IntentToolCard,\n LeftContent,\n LightHeader,\n NFTCard,\n Overview,\n PriceRangeCard,\n PriceRangeTitleBar,\n PureBox,\n RangeStatus,\n RebalanceWrapper,\n StyledBody2,\n StyledButton,\n StyledHeadline3,\n StyledTitle,\n StyledValue,\n TitleWrapper,\n TokenInfoContainer,\n Wrapper,\n} from \"./styles\";\n\nexport const PositionDetails: React.FC<{\n navBack: () => void;\n details: IPositionDetails;\n goto: GotoType;\n}> = ({ navBack, details, goto }) => {\n const { address: walletAddress } = useAccount();\n const { state, setModalState } = useModal();\n const { isOpen } = state[E_ModalKey.STAKE_POSITION_MODAL];\n const { isOpen: isClaimFeeModalOpen } = state[E_ModalKey.CLAIM_FEE_MODAL];\n const { isOpen: isReinvestFeeModalOpen } =\n state[E_ModalKey.REINVEST_FEE_MODAL];\n const { ammEnum, network, networkId } = useNetwork();\n const poolKey =\n ammEnum === \"SLIPSTREAM\" ? details.tickSpacing : details.feeTier;\n const {\n data: marketPrice,\n isLoading: marketPriceLoading,\n mutate: mutateMarketPrice,\n } = useFetchCurrentChainMarketPrice(\n details.tokenA.address,\n details.tokenB.address,\n [poolKey]\n );\n\n const { data: allChainPositions } = useFetchAllChainsPositions(walletAddress);\n const { data: positionDetails } = useFetchUserPosition(details.positionId);\n const { data: positionRebalanceHistory } = useFetchPositionRebalanceHistory(\n details.positionId\n );\n\n const { currentTokenPrice: tokenPriceList } = useCurrentChainToken(networkId);\n const { data: NFTurl, isLoading: isNFTLoading } = useFetchTokenURL(\n details.positionId\n );\n const [selected, setSelected] = useState(details.tokenB.ticker);\n const router = useRouter();\n const { setPosition, setStrategyPage } = usePage();\n const { isLoading: isAnalyticsLoading, data: analyticsData } =\n useFetchAllChainsAnalytics(walletAddress);\n\n const latestPositionInHistory = useMemo(() => {\n if (\n !allChainPositions ||\n !tokenPriceList ||\n !allChainPositions[details.chainId]\n )\n return;\n const positionMap = allChainPositions[details.chainId];\n\n if (positionRebalanceHistory?.length > 0) {\n const activePositionId =\n positionRebalanceHistory[positionRebalanceHistory.length - 1];\n return positionMap[activePositionId.tokenId];\n }\n }, [\n allChainPositions,\n tokenPriceList,\n details.chainId,\n positionRebalanceHistory,\n ]);\n\n const tokenPercentages = useMemo(\n () =>\n getTokenPercentages(\n details.tokenA.amount,\n details.tokenB.amount,\n tokenPriceList?.[details.tokenA.address]?.price || \"0\",\n tokenPriceList?.[details.tokenB.address]?.price || \"0\"\n ),\n [\n details.tokenA.amount,\n details.tokenA.address,\n details.tokenB.amount,\n details.tokenB.address,\n tokenPriceList,\n ]\n );\n const { stakePool, staked, setStaked } = useUnstakePositionContext();\n\n // Get latest market price if marketPrice[poolKey] is undefined\n useEffect(() => {\n if (!marketPriceLoading && !marketPrice?.[poolKey]) {\n mutateMarketPrice();\n }\n }, [marketPriceLoading]);\n\n const formattedMarketPrice = marketPrice?.[poolKey]\n ? formatMarketPrice(\n marketPrice[poolKey][\n selected === details.tokenA.ticker ? \"tokenA\" : \"tokenB\"\n ]\n )\n : \"0\";\n\n const { data: allChainsTriggerObj } = useFetchAllChainUserTriggers();\n const triggers = details.closed\n ? []\n : filterTriggers(\n allChainsTriggerObj?.[details.chainId],\n [\n ActionTypeEnum.Values.Close,\n ActionTypeEnum.Values.Rebalance,\n ...strategyActionTypes,\n ],\n details.positionId\n );\n const autoCompound = details.closed\n ? undefined\n : filterTriggers(\n allChainsTriggerObj?.[details.chainId],\n \"Reinvest\",\n details.positionId\n )[0];\n const strategy = triggers.find((item) =>\n strategyActionTypes.includes(item.action.type)\n );\n\n const strategyId = (strategy?.action as RecurringAction)?.strategyId;\n const { data: strategyDetail } = useFetchStrategy(strategyId);\n\n const unclaimedFees = [\n {\n Icon: details.tokenA.Icon,\n ticker: details.tokenA.ticker,\n amount: details.tokenA.collectableAmount,\n address: details.tokenA.address,\n },\n {\n Icon: details.tokenB.Icon,\n ticker: details.tokenB.ticker,\n amount: details.tokenB.collectableAmount,\n address: details.tokenB.address,\n },\n ];\n\n const toggleClaimFeeModal = (open: boolean) => {\n setModalState(E_ModalKey.CLAIM_FEE_MODAL, open);\n };\n const toggleReinvestFeeModal = (open: boolean) => {\n setModalState(E_ModalKey.REINVEST_FEE_MODAL, open);\n };\n\n const navToStrategy = useCallback(() => {\n if (strategyId) {\n setStrategyPage(\"edit\");\n router.push({\n pathname: \"/recurring-rebalance\",\n query: {\n [CommonQueryKey.STRATEGY_ID]: strategyId,\n },\n });\n } else {\n setPosition(details);\n router.push({\n pathname: \"/recurring-rebalance/create\",\n query: {\n [CommonQueryKey.PID]: `${details.chainId}-${details.positionId}`,\n },\n });\n }\n }, [details, strategyId]);\n\n const actions = useMemo(\n () => [\n {\n label: \"Add Liquidity\",\n onClick: () => goto.addLP(),\n },\n {\n label: \"Remove Liquidity\",\n onClick: () => goto.removeLP(0),\n disabled: details.closed,\n },\n {\n label: \"Collect Fees\",\n onClick: () => toggleClaimFeeModal(true),\n disabled:\n bigDecimal.compareTo(details.tokenA.collectableAmount, 0) <= 0 &&\n bigDecimal.compareTo(details.tokenB.collectableAmount, 0) <= 0,\n },\n {\n label: \"Rebalance\",\n onClick: () => goto.rebalance(0),\n disabled: details.closed,\n },\n {\n label: \"Recurring Rebalance\",\n onClick: navToStrategy,\n disabled: isManta(network) || details.closed,\n },\n {\n label: \"Automated Rebalance\",\n onClick: () => goto.rebalance(1),\n disabled: isManta(network) || details.closed,\n },\n {\n label: \"Prescheduled Position Close\",\n onClick: () => goto.removeLP(1),\n disabled: isManta(network) || details.closed,\n },\n ],\n [details.closed, details.feeAmount, goto]\n );\n\n const toggleStakePositionModal = (open: boolean) => {\n setModalState(E_ModalKey.STAKE_POSITION_MODAL, open);\n };\n\n const handleGoToPositionDetail = useCallback(\n (pid: string) => {\n router.push({\n pathname: \"/liquidity-management\",\n query: {\n [CommonQueryKey.PID]: pid,\n },\n });\n },\n [router]\n );\n\n return (\n <>\n <Container>\n <DrawerTitle onClick={navBack} isDrawer>\n <Headline5 fontWeight={500} textAlign={\"end\"}>\n Back to Dashboard\n </Headline5>\n </DrawerTitle>\n <TitleWrapper>\n <TitleBar\n actions={actions}\n isInRange={details.inRange}\n atStake={staked}\n tokens={[details.tokenA, details.tokenB]}\n tag={`${details.feeTier / FeeTierPercentage}%`}\n closed={details.closed}\n />\n </TitleWrapper>\n <Wrapper>\n <Content>\n <Overview>\n {ammEnum === \"UNISWAP_V3\" && (\n <NFTCard>\n {isNFTLoading ? (\n <LinearLoader size=\"100%\" height=\"308px\" radius=\"25px\" />\n ) : (\n NFTurl && <NFTPositionCard NFTStr={NFTurl} />\n )}\n </NFTCard>\n )}\n <InfoWrapper>\n <Card justifyContent={\"space-between\"}>\n <LeftContent>\n <Header mb={\"8px\"}>Liquidity</Header>\n <StyledHeadline3>\n {formatUSDAmount(details.liquidity)}\n </StyledHeadline3>\n <TokenInfoContainer>\n <TokenInfo\n marginBottom={12}\n key={details.tokenA.address}\n Icon={details.tokenA.Icon}\n ticker={details.tokenA.ticker}\n address={details.tokenA.address}\n native={details.tokenA.native}\n decimals={details.tokenA.decimals}\n amount={details.tokenA.amount}\n maxWidth={118}\n price={\n (tokenPriceList?.[details.tokenA.address]?.price ||\n \"0\") as string\n }\n tag={`${tokenPercentages.token0Percent}%`}\n />\n <TokenInfo\n key={details.tokenB.address}\n Icon={details.tokenB.Icon}\n ticker={details.tokenB.ticker}\n address={details.tokenB.address}\n native={details.tokenB.native}\n decimals={details.tokenB.decimals}\n amount={details.tokenB.amount}\n maxWidth={118}\n price={\n (tokenPriceList?.[details.tokenB.address]?.price ||\n \"0\") as string\n }\n tag={`${tokenPercentages.token1Percent}%`}\n />\n </TokenInfoContainer>\n </LeftContent>\n <ButtonGroupWrapper>\n <StyledButton\n variant=\"contained\"\n color=\"secondary\"\n size=\"xs\"\n onClick={() => goto.addLP()}\n >\n <StyledBody2>Add Liquidity</StyledBody2>\n </StyledButton>\n <StyledButton\n variant=\"contained\"\n color=\"default\"\n size=\"xs\"\n disabled={details.closed}\n onClick={() => goto.removeLP(0)}\n >\n <StyledBody2>Remove Liquidity</StyledBody2>\n </StyledButton>\n </ButtonGroupWrapper>\n </Card>\n <Card flexDirection={\"column\"}>\n <FeesContent>\n <LeftContent>\n <Header mb={\"8px\"}>Unclaimed Fees</Header>\n <StyledHeadline3 lineHeight={\"38px\"}>\n {formatUSDAmount(details.feeAmount)}\n </StyledHeadline3>\n <TokenInfoContainer>\n <TokenInfo\n marginBottom={12}\n key={details.tokenA.address}\n Icon={details.tokenA.Icon}\n ticker={details.tokenA.ticker}\n address={details.tokenA.address}\n native={details.tokenA.native}\n decimals={details.tokenA.decimals}\n amount={details.tokenA.collectableAmount}\n maxWidth={118}\n price={\n (tokenPriceList?.[details.tokenA.address]?.price ||\n \"0\") as string\n }\n />\n <TokenInfo\n key={details.tokenB.address}\n Icon={details.tokenB.Icon}\n ticker={details.tokenB.ticker}\n address={details.tokenB.address}\n native={details.tokenB.native}\n decimals={details.tokenB.decimals}\n amount={details.tokenB.collectableAmount}\n maxWidth={118}\n price={\n (tokenPriceList?.[details.tokenB.address]?.price ||\n \"0\") as string\n }\n />\n </TokenInfoContainer>\n </LeftContent>\n <FeesButtonGroup>\n {!isManta(network) && (\n <AutoCompoundWrapper\n details={details}\n autoCompound={autoCompound}\n />\n )}\n <ButtonGroupWrapper>\n <StyledButton\n variant=\"contained\"\n color=\"secondary\"\n size=\"xs\"\n width=\"130px\"\n onClick={() => toggleReinvestFeeModal(true)}\n disabled={\n bigDecimal.compareTo(\n details.tokenA.collectableAmount,\n 0\n ) <= 0 &&\n bigDecimal.compareTo(\n details.tokenB.collectableAmount,\n 0\n ) <= 0\n }\n >\n <StyledBody2>Reinvest</StyledBody2>\n </StyledButton>\n <StyledButton\n variant=\"contained\"\n color=\"secondary\"\n size=\"xs\"\n width=\"130px\"\n onClick={() => toggleClaimFeeModal(true)}\n disabled={\n bigDecimal.compareTo(\n details.tokenA.collectableAmount,\n 0\n ) <= 0 &&\n bigDecimal.compareTo(\n details.tokenB.collectableAmount,\n 0\n ) <= 0\n }\n >\n <StyledBody2>Collect Fees</StyledBody2>\n </StyledButton>\n </ButtonGroupWrapper>\n </FeesButtonGroup>\n </FeesContent>\n </Card>\n </InfoWrapper>\n </Overview>\n {details?.autoCompound && autoCompound?.lastFailedMessage && (\n <Notification\n variant=\"warning\"\n text={autoCompound.lastFailedMessage}\n showClose={true}\n />\n )}\n <ReEnablePermit details={details} />\n <PriceRangeCard noBorder={true}>\n <PriceRangeTitleBar>\n <LightHeader>Price Range</LightHeader>\n {!details.closed && (\n <RangeStatus\n closed={details.closed}\n inRange={details.inRange}\n />\n )}\n <RebalanceWrapper>\n <StyledButton\n variant=\"contained\"\n color=\"secondary\"\n size=\"xs\"\n width=\"130px\"\n disabled={details.closed}\n onClick={() => goto.rebalance(0)}\n >\n <StyledBody2>Rebalance</StyledBody2>\n </StyledButton>\n </RebalanceWrapper>\n </PriceRangeTitleBar>\n <TokenPriceGroup\n buyToken={{\n ticker: details.tokenA.ticker,\n min:\n bigDecimal.compareTo(details.minPrice, 0) > 0 &&\n bigDecimal.compareTo(\n bigDecimal.divide(1, details.minPrice, 18),\n 0\n ) === 0\n ? \"∞\"\n : formatPrice(details.minPrice),\n max:\n bigDecimal.compareTo(details.maxPrice, 0) > 0 &&\n bigDecimal.compareTo(\n bigDecimal.divide(1, details.maxPrice, 18),\n 0\n ) === 0\n ? \"∞\"\n : formatPrice(details.maxPrice),\n }}\n sellToken={{\n ticker: details.tokenB.ticker,\n min:\n bigDecimal.compareTo(details.maxPrice, 0) === 0\n ? \"∞\"\n : formatPrice(bigDecimal.divide(1, details.maxPrice, 18)),\n max:\n bigDecimal.compareTo(details.minPrice, 0) === 0\n ? \"∞\"\n : formatPrice(bigDecimal.divide(1, details.minPrice, 18)),\n }}\n title={\n <StyledTitle>\n Market Price:\n <StyledValue>\n {formattedMarketPrice}\n <PureBox>\n {selected === details.tokenA.ticker\n ? `${details.tokenB.ticker} per ${details.tokenA.ticker}`\n : `${details.tokenA.ticker} per ${details.tokenB.ticker}`}\n </PureBox>\n </StyledValue>\n </StyledTitle>\n }\n setSelected={(value) => setSelected(value)}\n />\n </PriceRangeCard>\n {triggers && triggers.length > 0 && (\n <TriggerListWrapper\n details={details}\n positionDetails={positionDetails}\n tokenPrices={[\n (tokenPriceList?.[details.tokenA.address]?.price ||\n \"0\") as string,\n (tokenPriceList?.[details.tokenB.address]?.price ||\n \"0\") as string,\n ]}\n triggers={triggers}\n goto={goto}\n strategyDetail={strategyDetail}\n autoCompoundOn={!!autoCompound}\n />\n )}\n <IntentToolCard noBorder={true}>\n <LightHeader>Liquidity Intents Tools</LightHeader>\n <Flex gap=\"xl\">\n <ToolCard\n title=\"Recurring Rebalance\"\n subTitle=\"We will allow users to define a new recurring range around a future spot price triggered by price percentages, absolute token terms, or token ratios.\"\n disabled={details.closed}\n nextClick={navToStrategy}\n comingSoon={isManta(network)}\n width={\"224.5px\"}\n />\n <ToolCard\n title=\"Automated Rebalance\"\n subTitle=\"Create a trigger for a pre-set rebalance based on pricing signals or time based logic.\"\n disabled={details.closed}\n nextClick={() => goto.rebalance(1)}\n comingSoon={isManta(network)}\n width={\"224.5px\"}\n />\n </Flex>\n <ToolCard\n title=\"Prescheduled Position Close\"\n subTitle=\"Create a trigger for a position closure based on pricing signals or time based logic.\"\n disabled={details.closed}\n nextClick={() => goto.removeLP(1)}\n comingSoon={isManta(network)}\n />\n </IntentToolCard>\n {ammEnum === \"SLIPSTREAM\" &&\n SLIPSTREAM_NETWORKS.includes(networkId) && (\n <IntentToolCard noBorder={true} flexDirection={\"column\"}>\n <LightHeader>Liquidity Position Stake</LightHeader>\n <ToolCard\n title={`${getSlipstreamAmmByNetworkId(\n networkId\n )} Position Stake`}\n nextClick={() => toggleStakePositionModal(true)}\n />\n <Modal\n disableBackgroundOnClose={true}\n isModalOpen={isOpen}\n onClose={() => toggleStakePositionModal(false)}\n padding={24}\n >\n <StakePositionModal />\n </Modal>\n </IntentToolCard>\n )}\n {!isAnalyticsLoading &&\n analyticsData?.[details.chainId]?.[details.positionId] && (\n <>\n <PositionAnalytics\n {...getPositionAnalytics(\n details,\n analyticsData?.[details.chainId]?.[details.positionId]\n )}\n />\n <ClosedPositions\n {...getClosedPositions(\n details,\n latestPositionInHistory,\n positionRebalanceHistory,\n tokenPriceList,\n networkId,\n handleGoToPositionDetail\n )}\n />\n </>\n )}\n </Content>\n </Wrapper>\n </Container>\n <Modal\n isModalOpen={isClaimFeeModalOpen}\n onClose={() => toggleClaimFeeModal(false)}\n >\n <ClaimFeeModal\n {...{\n total: details.feeAmount,\n tokenInfo: unclaimedFees,\n positionId: details.positionIdBN,\n stakePool,\n staked,\n setStaked,\n }}\n onClose={() => toggleClaimFeeModal(false)}\n />\n </Modal>\n <Modal\n isModalOpen={isReinvestFeeModalOpen}\n onClose={() => toggleReinvestFeeModal(false)}\n >\n <ReinvestFeesModal\n {...{\n positionId: details.positionId,\n positionIdBN: details.positionIdBN,\n liquidity: details.liquidity,\n feeAmount: details.feeAmount,\n feeTier: details.feeTier,\n tokens: [details.tokenA, details.tokenB],\n tokenPrices: [\n (tokenPriceList?.[details.tokenA.address]?.price ||\n \"0\") as string,\n (tokenPriceList?.[details.tokenB.address]?.price ||\n \"0\") as string,\n ],\n tokenPercentages: [\n tokenPercentages.token0Percent,\n tokenPercentages.token1Percent,\n ],\n stakePool,\n staked,\n setStaked,\n }}\n onClose={() => toggleReinvestFeeModal(false)}\n />\n </Modal>\n </>\n );\n};\n","import { useSolverRoutingStore } from \"@/components/GlobalStore\";\nimport { IPositionDetails } from \"@/config/position/positionConfig\";\nimport { useOnNetworkAccountChange } from \"@/hooks/globalState/useOnNetworkAccountChange\";\nimport { Rebalance } from \"@/views/Rebalance\";\nimport { TriggerItem } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { AddLiquidity } from \"../AddLiquidity\";\nimport { RemoveLiquidity } from \"../RemoveLiquidity\";\nimport { GotoType, PositionPage } from \"../types\";\nimport { PositionDetails } from \"./PositionDetails\";\n\nexport const PositionDetail: React.FC<{\n navBack: () => void;\n details: IPositionDetails;\n navToPage?: PositionPage;\n}> = ({ navBack, details, navToPage }) => {\n const { resetSolver } = useSolverRoutingStore();\n const [page, setPage] = useState<PositionPage>(navToPage ?? \"details\");\n const [tabs, setTabs] = useState<0 | 1>(0);\n const [trigger, setTrigger] = useState<TriggerItem | undefined>(undefined);\n\n const goto: GotoType = useMemo(\n () => ({\n details: () => setPage(\"details\"),\n addLP: () => setPage(\"addLP\"),\n removeLP: (tabs: 0 | 1, trigger?: TriggerItem) => {\n setPage(\"removeLP\");\n setTabs(tabs);\n setTrigger(trigger);\n },\n rebalance: (tabs: 0 | 1, trigger?: TriggerItem) => {\n setPage(\"rebalance\");\n setTabs(tabs);\n setTrigger(trigger);\n },\n }),\n [setPage, setTabs, setTrigger]\n );\n\n useEffect(() => {\n resetSolver();\n setPage(navToPage ?? \"details\");\n }, [details.positionId]);\n\n useOnNetworkAccountChange(() => {\n navBack();\n setPage(\"details\");\n });\n\n return (\n <>\n {page === \"details\" && (\n <PositionDetails\n {...{\n navBack,\n details,\n goto,\n }}\n />\n )}\n {page === \"addLP\" && <AddLiquidity {...{ details, goto }} />}\n {page === \"removeLP\" && (\n <RemoveLiquidity\n details={details}\n goto={goto}\n tabs={tabs}\n trigger={trigger}\n />\n )}\n {page === \"rebalance\" && (\n <Rebalance\n {...{\n details,\n amount: \"0\",\n trigger,\n tokens: [details.tokenA, details.tokenB],\n feeTier: details.feeTier,\n goto: goto,\n tabs: tabs,\n navBack,\n }}\n />\n )}\n </>\n );\n};\n","import { useConnectStore } from \"@/components/GlobalStore\";\nimport { IActivePositionMap } from \"@/components/GlobalStore/allChain/types\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { useSnackbarV2 } from \"@/components/SnackbarContext/SnackbarContextV2\";\nimport { IPositionDetails } from \"@/config/position/positionConfig\";\nimport { filterPositions, sortActivePositions } from \"@/helper/positionHelper\";\nimport { TriggerStatus } from \"@/helper/triggerHelper\";\nimport { useEventCallback } from \"@/hooks/useEventCallback\";\nimport {\n getNetworkId,\n getSwitchNetworkError,\n getValidChains,\n} from \"@/utils/networkHelper\";\nimport { IChain } from \"@aperture/uikit\";\nimport { getLogger } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { useEffect, useMemo } from \"react\";\nimport { useSwitchChain } from \"wagmi\";\n\nexport const useAllChainsPositions = (\n allChainPositionResults: IActivePositionMap,\n currentChainId: IChain\n) => {\n return useMemo(() => {\n const validChains = getValidChains();\n const activePositions: IPositionDetails[] = allChainPositionResults\n ? Object.entries(allChainPositionResults)\n .reduce((acc, [chainId, chainPositions]) => {\n if (currentChainId === \"ALL_CHAINS\") {\n if (validChains.includes(parseInt(chainId)))\n acc.push(Object.values(chainPositions));\n } else {\n if (parseInt(chainId) === getNetworkId(currentChainId))\n acc.push(Object.values(chainPositions));\n }\n return acc;\n }, [])\n .flat()\n : [];\n return sortActivePositions(activePositions);\n }, [allChainPositionResults, currentChainId]);\n};\n\nexport const useLimitOrders = (allChainLOTriggers: any) => {\n return useMemo(() => {\n const chainIds = Object.keys(allChainLOTriggers ?? {}).map(Number);\n const chainsLOTriggers: {\n [chainId: number]: string[];\n } = {};\n chainIds.map(async (chainId) => {\n const triggers = (allChainLOTriggers?.[chainId]?.triggers).reduce(\n (acc, trigger) => {\n if (trigger.status !== TriggerStatus.DELETED) acc.push(trigger.nftId);\n return acc;\n },\n []\n );\n chainsLOTriggers[chainId] = triggers;\n });\n return chainsLOTriggers;\n }, [allChainLOTriggers]);\n};\n\nexport const useFilteredPositions = (\n allChainsPositions: IPositionDetails[],\n searchKeyword: string,\n showAll: boolean,\n stakePositionIds: bigint[] | undefined\n) => {\n return useMemo(() => {\n let filteredResults: IPositionDetails[] = allChainsPositions\n ? showAll\n ? allChainsPositions\n : allChainsPositions.filter((position) => !position.closed)\n : [];\n return filterPositions(\n searchKeyword,\n filteredResults,\n stakePositionIds ?? []\n );\n }, [allChainsPositions, searchKeyword, showAll, stakePositionIds]);\n};\n\nexport const useNetworkSwitching = (\n selected: string | undefined,\n setSelected: (value: string | undefined) => void\n) => {\n const { networkId } = useNetwork();\n const { addSnackbar } = useSnackbarV2();\n const { connectType } = useConnectStore();\n const {\n switchChain,\n isError: isSwitchChainError,\n error: switchChainTxnErrorMsg,\n } = useSwitchChain();\n\n const handleSwitchNetwork = useEventCallback((chainId: number) => {\n if (selected && chainId !== networkId) switchChain?.({ chainId: chainId });\n });\n\n useEffect(() => {\n if (isSwitchChainError) {\n getLogger().warn(\"SwitchActivePosition.SwitchNetworkError\", {\n error: (switchChainTxnErrorMsg as Error).message,\n });\n addSnackbar({\n info: getSwitchNetworkError(connectType),\n status: \"failed\",\n });\n setSelected(undefined);\n }\n }, [isSwitchChainError]);\n\n return { handleSwitchNetwork, networkId };\n};\n","import { UnstakePositionProvider } from \"@/components/Context/UnstakePositionContext\";\nimport { usePage } from \"@/components/PageContext/PageContext\";\nimport { getPid } from \"@/helper/positionHelper\";\nimport { useIsChainAndWalletReady } from \"@/hooks/globalState/useIsChainAccountReady\";\nimport { useSelected } from \"@/hooks/urls/useSelected\";\nimport { useFetchAllChainUserTriggers } from \"@/hooks/useFetchAllChainUserTriggers\";\nimport { useFetchAllChainsClosedPositions } from \"@/hooks/useFetchAllChainsClosedPositions\";\nimport { useFetchAllChainsPositions } from \"@/hooks/useFetchAllChainsPositions\";\nimport { useFetchStakePositionsIds } from \"@/hooks/useFetchStakePositionsIds\";\nimport { useOnFirstLoad } from \"@/hooks/useOnFirstLoad\";\nimport { CommonQueryKey } from \"@/utils/browserHistory\";\nimport { AccessoryIcons } from \"@aperture/assetkit\";\nimport { IChain, LinearLoaderGroup, useDrawer } from \"@aperture/uikit\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport styled from \"styled-components\";\nimport { Address } from \"viem\";\nimport { useAccount } from \"wagmi\";\nimport { PositionDetail } from \"../PositionDetails\";\nimport { EmptyBox } from \"../style\";\nimport { PositionPage } from \"../types\";\nimport { PositionList } from \"./PositionList\";\nimport {\n useAllChainsPositions,\n useFilteredPositions,\n useLimitOrders,\n useNetworkSwitching,\n} from \"./hook\";\n\nconst StyledEmptyWrapper = styled.div`\n margin-bottom: 16px;\n`;\nconst StyledEmptyBox = styled(EmptyBox)`\n border: none;\n color: ${({ theme }) => theme.colors.global.text.T1};\n text-align: center;\n font-family: \"Roboto Flex\";\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n`;\n\nexport const ActivePositions: React.FC<{\n searchKeyword: string;\n showAll: boolean;\n currentChainId: IChain;\n}> = ({ searchKeyword, showAll, currentChainId }) => {\n const { address: walletAddress } = useAccount();\n const { data: allChainPositionResults, isLoading } =\n useFetchAllChainsPositions(walletAddress);\n const { data: allChainsClosedPositionResults } =\n useFetchAllChainsClosedPositions(showAll, walletAddress);\n\n const { data: stakePositionIds } = useFetchStakePositionsIds();\n const { data: allChainTriggerObj } = useFetchAllChainUserTriggers();\n const { data: allChainLOTriggers } = useFetchAllChainUserTriggers(true);\n\n const { isReady } = useIsChainAndWalletReady();\n const { positionPage } = usePage();\n const [navToPage, setNavToPage] = useState<PositionPage>(\n positionPage ?? \"details\"\n );\n const { selected, setSelected } = useSelected(CommonQueryKey.PID);\n const { Drawer, showDrawer, hideDrawer, hideIntentDrawer } = useDrawer();\n\n const allChainsPositions = useAllChainsPositions(\n allChainPositionResults,\n currentChainId\n );\n const limitOrders = useLimitOrders(allChainLOTriggers);\n const filteredResults = useFilteredPositions(\n allChainsPositions,\n searchKeyword,\n showAll,\n stakePositionIds\n );\n const { handleSwitchNetwork, networkId } = useNetworkSwitching(\n selected,\n setSelected\n );\n\n const selectedPosition = useMemo(() => {\n return selected\n ? allChainsPositions?.find(\n (position) =>\n `${position.chainId}-${position.positionId}` === selected\n )\n : undefined;\n }, [selected, allChainsPositions]);\n\n useOnFirstLoad(allChainsPositions, () => {\n if (!selected) return;\n if (!selectedPosition) {\n setSelected(undefined);\n return;\n }\n\n setTimeout(() => {\n document\n .getElementById(`Position-${getPid(selectedPosition)}`)\n ?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n setNavToPage(\"details\");\n }, 300);\n });\n\n useEffect(() => {\n if (selectedPosition) {\n const isCurrentChain = selectedPosition.chainId === networkId;\n if (isCurrentChain) {\n hideIntentDrawer();\n showDrawer();\n } else {\n setTimeout(() => {\n handleSwitchNetwork(selectedPosition.chainId);\n }, 300);\n }\n } else {\n hideDrawer();\n }\n }, [selectedPosition, networkId]);\n\n const renderPositionList = () => {\n if (!isReady) {\n return (\n <StyledEmptyBox>\n <StyledEmptyWrapper>\n <AccessoryIcons.HandEmptyIcon />\n </StyledEmptyWrapper>\n Connect wallet and select correct network.\n </StyledEmptyBox>\n );\n }\n\n if (isLoading) {\n return <LinearLoaderGroup size=\"100%\" height=\"85px\" />;\n }\n\n if (!filteredResults?.length) {\n return <EmptyBox>Your active positions will appear here.</EmptyBox>;\n }\n\n return (\n <PositionList\n walletAddress={walletAddress}\n positions={filteredResults}\n stakePositionIds={{ [networkId]: stakePositionIds }}\n triggerObj={allChainTriggerObj}\n limitOrders={limitOrders}\n closedPositionResults={allChainsClosedPositionResults}\n />\n );\n };\n\n return (\n <>\n {renderPositionList()}\n <Drawer>\n {selectedPosition && networkId === selectedPosition.chainId && (\n <UnstakePositionProvider\n {...{\n positionId: selectedPosition.positionIdBN,\n token0Address: selectedPosition.tokenA.address as Address,\n token1Address: selectedPosition.tokenB.address as Address,\n feeTier: selectedPosition.feeTier,\n }}\n >\n <PositionDetail\n navBack={() => setSelected(undefined)}\n details={selectedPosition}\n navToPage={navToPage}\n />\n </UnstakePositionProvider>\n )}\n </Drawer>\n </>\n );\n};\n","import { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { useSelected } from \"@/hooks/urls/useSelected\";\nimport { CommonQueryKey } from \"@/utils/browserHistory\";\nimport { getNetworkId, isManta } from \"@/utils/networkHelper\";\nimport { ActivePositions } from \"@/views/ActivePositions\";\nimport { Headline, PageContainer } from \"@/views/style\";\nimport { AccessoryIcons } from \"@aperture/assetkit\";\nimport {\n AllChainsIcon,\n BaseButton,\n Button,\n ButtonText,\n ChainAMMLabel,\n DrawerOpenCardWidth,\n Flex,\n FlexColumn,\n Headline1,\n Headline5,\n IChain,\n SearchInput,\n StatusTab,\n useDrawer,\n} from \"@aperture/uikit\";\nimport { useRouter } from \"next/router\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport styled, { useTheme } from \"styled-components\";\n\nconst StyledPageContainer = styled(PageContainer)<{ drawerOpen?: boolean }>`\n max-width: 840px;\n margin-top: 0px;\n align-items: ${({ drawerOpen }) => (drawerOpen ? \"flex-end\" : \"center\")};\n`;\nconst Wrapper = styled(FlexColumn)<{\n drawerOpen?: boolean;\n}>`\n width: 100%;\n gap: 0;\n max-width: ${({ drawerOpen }) => (drawerOpen ? DrawerOpenCardWidth : \"100%\")};\n`;\nconst Container = styled(Flex)`\n width: 100%;\n margin-bottom: ${({ theme }) => theme.spacing.xl};\n flex-wrap: wrap;\n row-gap: ${({ theme }) => theme.spacing.xl};\n`;\nconst StyledButtonLink = styled(BaseButton)`\n display: inline-flex;\n height: 40px;\n min-width: 224px;\n padding: 12px 20px;\n justify-content: center;\n align-items: center;\n gap: 4px;\n flex-shrink: 0;\n font-family: \"Roboto Flex\";\n font-weight: 500;\n line-height: 16px;\n text-transform: capitalize;\n\n color: ${({ theme }) => theme.colors.global.text.T1};\n background: ${({ theme }) => theme.colors.global.background.BG2};\n\n :hover {\n background: ${({ theme }) => theme.colors.global.background.BG2};\n opacity: 0.8;\n }\n`;\nconst LinkIconBox = styled(AccessoryIcons.LinkIcon2)`\n width: 12px;\n height: 12px;\n stroke: ${({ theme }) => theme.colors.global.primary};\n`;\nconst SearchButton = styled(BaseButton)`\n min-width: 158px;\n height: 42px;\n gap: ${({ theme }) => theme.spacing.md};\n color: ${({ theme }) => theme.colors.global.textAlt.T1};\n background: ${({ theme }) => theme.colors.global.primary};\n &:hover {\n background: ${({ theme }) => theme.colors.global.primary};\n opacity: 0.8;\n }\n &:disabled {\n background: ${({ theme }) => theme.colors.primary.lightPurple};\n opacity: 1;\n }\n`;\nconst NewPosition = styled(Flex)<{ drawerOpen?: Boolean }>`\n width: 100%;\n margin: 20px 0;\n gap: ${({ theme, drawerOpen }) => (drawerOpen ? theme.spacing.xl : 0)};\n flex-direction: ${({ drawerOpen }) => (drawerOpen ? \"column\" : \"row\")};\n justify-content: space-between;\n`;\nconst NewPositionText = styled(Headline1)`\n color: ${({ theme }) => theme.colors.global.text.T1};\n font-family: \"Dunbar Tall\";\n font-style: normal;\n transform: none;\n backface-visibility: hidden;\n`;\nconst NewPositionButton = styled(Flex)`\n margin: auto 0;\n gap: ${({ theme }) => theme.spacing.lg};\n`;\nconst StyledCard = styled.div`\n width: 100%;\n`;\nconst Title = styled(Flex)`\n align-items: center;\n gap: ${({ theme }) => theme.spacing.md};\n`;\nconst LinkButton = styled(Flex)`\n width: 100%;\n justify-content: space-between;\n margin-top: -8px;\n margin-bottom: 12px;\n gap: ${({ theme }) => theme.spacing.md};\n`;\nconst LinkButtonLink = styled(Flex)`\n align-items: center;\n gap: ${({ theme }) => theme.spacing.xl};\n`;\nconst AllChainsText = styled.div`\n font-family: \"Roboto Flex\";\n font-size: 16px;\n font-weight: 400;\n line-height: 20px;\n color: ${({ theme }) => theme.colors.global.text.T1};\n`;\nconst StyledTextButton = styled(Button)<{ black?: boolean }>`\n margin-right: 8px;\n text-decoration-line: none;\n font-family: \"Roboto Flex\";\n font-size: 14px;\n font-weight: 400;\n line-height: 16px;\n text-transform: capitalize;\n color: ${({ theme }) => theme.colors.global.text.T1};\n :hover {\n color: ${({ theme }) => theme.colors.global.text.T1};\n }\n`;\nconst StyledChainAMMLabel = styled(ChainAMMLabel)`\n align-self: flex-start;\n margin-top: auto;\n margin-bottom: auto;\n`;\n\nconst LiquidityManagement = () => {\n const { amm, network } = useNetwork();\n const router = useRouter();\n const theme = useTheme();\n const [searchKeyword, setSearchKeyword] = useState<string>(\"\");\n const [showAll, setShowAll] = useState(false);\n const { drawerOpen, intentDrawerOpen } = useDrawer();\n const [currentChainId, setCurrentChainId] = useState<IChain>(network);\n const { selected, setSelected } = useSelected(CommonQueryKey.PID);\n const isAllChains = currentChainId === \"ALL_CHAINS\";\n const _drawerOpen = drawerOpen || intentDrawerOpen;\n\n const pageTitle = useMemo(() => {\n switch (amm?.name) {\n case \"Uniswap\":\n return \"Uniswap V3\";\n case \"PancakeSwap\":\n return \"PancakeSwap V3\";\n case \"ApertureSwap\":\n return \"Aperture\";\n }\n }, [amm]);\n\n useEffect(() => {\n if (currentChainId !== \"ALL_CHAINS\" && currentChainId !== network)\n setCurrentChainId(network);\n\n // Open the selected position when switching from other network\n if (selected) {\n if (parseInt(selected.split(\"-\")[0]) === getNetworkId(network)) {\n setSelected(selected);\n } else {\n setSelected(undefined);\n }\n }\n }, [network]);\n\n return (\n <StyledPageContainer drawerOpen={_drawerOpen}>\n <Wrapper drawerOpen={_drawerOpen}>\n <NewPosition drawerOpen={_drawerOpen}>\n <NewPositionText fontWeight={500}>\n {pageTitle} <br />\n Liquidity Positions\n </NewPositionText>\n <NewPositionButton>\n <SearchInput\n width={192}\n placeholder=\"Search Position\"\n onChange={(value: string) => setSearchKeyword(value.trim())}\n />\n <SearchButton onClick={() => router.push(\"/new-position\")}>\n <AccessoryIcons.AddIcon\n width={16}\n height={16}\n fill={theme.colors.global.textAlt.T1}\n />\n <Headline5 fontSize={\"14px\"}>New Position</Headline5>\n </SearchButton>\n </NewPositionButton>\n </NewPosition>\n {!drawerOpen && isManta(network) && (\n <LinkButton>\n <LinkButtonLink>\n <StyledButtonLink\n onClick={(event) => {\n event.stopPropagation();\n window.open(\n \"https://pacific-bridge.manta.network/\",\n \"_blank\"\n );\n }}\n >\n <ButtonText\n padding={\"0 4px\"}\n fontSize={14}\n lineHeight={\"46px\"}\n height={\"46px\"}\n >\n Bridge assets to Manta Pacific\n </ButtonText>\n <LinkIconBox />\n </StyledButtonLink>\n </LinkButtonLink>\n </LinkButton>\n )}\n <Container justifyContent=\"space-between\">\n <StyledChainAMMLabel amm={amm} chainId={network} />\n <Flex gap=\"md\" alignItems=\"center\">\n <StatusTab\n noText\n onStatus={isAllChains}\n onChange={() =>\n setCurrentChainId(isAllChains ? network : \"ALL_CHAINS\")\n }\n />\n <AllChainsText>Show All Chains</AllChainsText>\n <AllChainsIcon sm overlapRight />\n </Flex>\n </Container>\n <StyledCard>\n <FlexColumn>\n <Headline lineHeight={\"20px\"}>\n <Title>\n <span>Active Positions</span>\n <StatusTab\n initTop={2}\n initLeft={2}\n marginLeft={8}\n noText={true}\n onStatus={showAll}\n onChange={() => setShowAll(!showAll)}\n />\n <StyledTextButton\n variant=\"text\"\n color=\"default\"\n size=\"xs\"\n onClick={() => setShowAll(!showAll)}\n >\n {showAll ? \"Hide\" : \"Show\"} Closed Positions\n </StyledTextButton>\n </Title>\n </Headline>\n <ActivePositions\n searchKeyword={searchKeyword}\n showAll={showAll}\n currentChainId={currentChainId}\n />\n </FlexColumn>\n </StyledCard>\n </Wrapper>\n </StyledPageContainer>\n );\n};\n\nexport default LiquidityManagement;\n"],"names":["window","__NEXT_P","push","__webpack_require__","useFetchUserPosition","positionId","isConnected","useAccount","ammEnum","networkId","publicClient","isChainSupported","useNetwork","useSWR","showFetch","concat","viem","BigInt","RebalanceContext","React","RebalanceProvider","trigger","tokenPrices","children","position","tabs","param","address","tokenA","tokenB","data","positionDetails","currentTokenPrice","useCurrentChainToken","allChainsTriggerObj","useFetchAllChainUserTriggers","tokenMap","useFetchTokenMap","globalSlippage","useGlobalSlippage","tab","setTab","useState","projectedAmount","setProjectedAmount","amount0","amount1","txForm","setTxForm","slippage","action","type","DEFAULT_REBALANCE_SLIPPAGE","deadline","error","setError","automatedRebalancePayload","setAutomatedRebalancePayload","permitInfo","setPermitInfo","gasEstimated","setGasEstimated","existingTriggersLen","filterTriggers","length","maxTriggersCreated","MAX_TRIGGER","getPrice","tickToPrice","positionDataRaw","pool","token0","token1","tick","form","setForm","gasCeiling","maxGasProportion","getGasCeiling","liquidity","getTriggerType","Price","getInitializedPriceTrigger","getInitializedTriggerTimeBuffer","Ratio","getInitializedRatioTrigger","tickLower","tickUpper","Time","getInitializedTimeTrigger","priceRange","getPriceRange","newTickLower","isCurrentTickOffset","newTickUpper","lowerPrice","upperPrice","min","toFixed","max","swapMin","invert","swapMax","percentageRange","getPercentageRange","percentageToOffsetTick","offsetTickToPercentage","useFutureSpot","futureSpotTab","RebalanceActionTab","tokenPrice","useMemo","price","isRebalanceChanged","isAutoBtnDisabled","setIsAutoBtnDisabled","useEffect","amount","dateTime","moment","valueOf","gasCeilingButtonError","generateData","ownerAddr","chainId","condition","getTriggerCondition","expiration","getTriggerDeadline","key","taskId","undefined","convertTrigger","_","frontendType","lte","convertRelativePriceToHumanValue","gte","isActionEqual","isConditionEqual","amm","nftId","debouncePriceRange","useDebounce","wait","swapInfo","selectedSolver","suggestedSolver","setSelectedSolver","useSolverRoutingStore","isSyncing","runSwapInfo","cancelSwapInfo","swapInfoError","useSwapInfo","staked","useUnstakePositionContext","fetchKey","options","useOnNetworkAccountChange","jsx_runtime","jsx","Provider","value","useRebalanceContext","Subtitle","styled","Headline5","theme","colors","global","text","T1","PriceRangeHeader","spacing","xl","FutureSpotContainer","Flex","md","FutureSpotText","T2","StyledSwapPath","SwapPath","StatusWrapper","StyledCommonContainer","CommonContainer","StyledCommonText","CommonLgText","lg","mockValidate","string","RebalanceEdit","marketPrice","useTheme","updateForm","setModalState","useModal","tokenATicker","ticker","tokenBTicker","baseToken","setBaseToken","setTickLower","setTickUpper","percentageTickLower","setPercentageTickLower","percentageTickUpper","setPercentageTickUpper","enableFutureSpot","setEnableFutureSpot","futureSpotStatus","setFutureSpotStatus","setFutureSpotTab","selectedTokenList","getTokensFromInfo","estimate","finalAmount0","finalAmount1","formatUnits","decimals","token0Amount","token1Amount","getTokenPercentages","res","getProjectedLiquidityPosition","token0Percent","percent","token1Percent","poolKey","tickSpacing","feeTier","lpDistribution","isLoading","lpDistributionLoading","lpDistributionError","useFetchLPDistribution","useFetchCurrentChainMarketPrice","baseTokenPrice","Number","updatePrice","priceForm","updatePercentage","percentageForm","useCallback","_tickLower","_tickUpper","updateMinMax","val","priceToTick","updateMinMaxPercentage","percentageTick","Math","abs","parseFloat","updateTickAfterPlusOrMinus","plusOrMinusTick","actionType","updatePercentageTickAfterPlusOrMinus","newPercentage","newTick","percentageToTick","TICK_SPACINGS","percentage","minPercentage","priceLower","priceUpper","timeId","setTimeout","clearTimeout","priceRangeLower","priceRangeUpper","isManta","EmptyBox","height","jsxs","Container","TriggerSetup","errorMsg","tooltip","initForm","tokens","expireDays","AUTOMATION_EXPIRATION_IN_DAYS","onFormChange","triggerSetupForm","isProdEnv","div","RowWithGap","gap","width","lineHeight","StyledTokenTab","menu","defaultSelected","onSelect","StatusTab","noText","onStatus","onChange","status","FutureSpotSelector","getDecrementLower","getIncrementLower","getDecrementUpper","getIncrementUpper","onLeftRangeInput","onRightRangeInput","feeAmount","currencyA","currencyB","ticksAtLimit","LOWER","UPPER","interactive","chartHeight","onSwitchFutureSpotTab","LiquiditySelector","warningMsg","bigDecimal","validate","dataState","formattedData","currentRange","Fragment","loading","priceImpact","api","fromToken","swapData","swapRoutes","showSwapRoutes","maxSwapRouteWidth","onBtnClick","E_ModalKey","suggested","gasFeeUSD","atStake","OrderRoutingModal","justifyContent","TokenInfo","Icon","native","tag","maxWidth","marginBottom","NoteCard","Expires","Headline3","fontSize","span","QuestionPopover","content","PercentageInputGroup","color","onError","gasCeilingInputError","AutomatedRebalanceBtn","payload","onClose","mutate","addSnackbar","useSnackbarV2","ifAuthorized","useIfAuthorized","isWalletContract","useIsWalletContract","triggerTask","permitStatus","isPermitLoading","mutatePositionPermit","useFetchPositionPermission","signedPayload","setSignedPayload","setIsLoading","updateTrigger","then","info","toLowerCase","catch","err","createTrigger","getCreateTriggerFailure","SignPayloadBtn","ApproveOnChainBtn","tokenPair","positionIdBN","onApproved","SignPositionPermitBtn","signature","String","ConfirmRebalanceBtn","navBack","txRequest","setTxRequest","ready","sendTransaction","txErrorMsg","isError","isPending","isSuccess","useSendTransactionWithGas","addPositionSnackbar","usePositionSnackBar","console","log","getRebalanceRequest","swapDataHex","feeBips","tx","toString","estimateGas","totalGasCost","gasCost","l2GasAmount","gas","calculateGasMargin","getLogger","JSON","stringify","message","details","reason","url","transaction","hash","successMsg","feePips","floor","context","txHash","feeUSD","solver","warn","Button","onClick","disabled","variant","size","Spinner","RebalanceWrapper","FlexColumn","StyledSelectMenuTab","SelectMenuTab","background","BG3","Content","DRAWER_CONTENT_WIDTH","Wrapper","mode","ButtonsContainer","StyledTransactionSettings","TransactionSettings","RebalanceLayout","onModeChange","setGlobalSlippage","onTabChange","mutateStakePositionIds","useFetchStakePositionsIds","stakePool","setStaked","isModePreview","isModeEdit","isTabRebalance","previewTitle","Title","DrawerTitle","isDrawer","textAlign","TitleText","containerPadding","selectWidth","itemsWidth","isPro","indexOf","defaultSlippage","settingsForm","dropdownPosition","buttonSize","prev","UnstakePositionBtn","gaugeAddress","handleTxSuccess","PriceRange","PositionContainer","FixedSubtitle","StyledRow","Row","RebalancePreview","nativeCurrency","timeZone","momentTimeZone","formatTokenPrice","PriceRangeKey","formatPrice","formatFutureSpotPrice","feeDesc","DEFAULT_APERTURE_FLAT_FEE","DEFAULT_APERTURE_REINVEST_FEE","DEFAULT_APERTURE_REBALANCE_FEE","TriggerSetupPreview","TokenPriceGroup","tabPosition","buyToken","sellToken","style","DividerHorizontal","OtherInfo","Text1","SwapRoute","routes","wBorder","add","format","TimeZone","isCreatingTrigger","symbol","FeeInfoCard","styles","feeInfo","fee","calculateTotalValue","formatUSDAmount","active","hint","Rebalance","goto","setMode","goToDetails","AddLiquidityContextV2","AddLiquidityProviderV2","tokenPriceList","props","startTransition","useTransition","balanceData","useFetchUserTokensBalance","autoCompound","usePositionAutoCompound","setPool","openSettings","setOpenSettings","tokenAPrice","tokenBPrice","tokenPairPrice","nativeStatus","isWrappedNative","tokensInfo","poolTokens","poolTokensToNative","useNative","debounceForm","tokenBalanceList","balance","isTokenNonZero","isTokenANonZero","isTokenBNonZero","showSwapPath","liquidityInUS","collectableInUS","collectableAmount","txnSetting","setTxnSetting","DEFAULT_SLIPPAGE","setTxErrorMsg","minAmounts","setMinAmounts","amount0Min","amount1Min","noNeedSwap","setIsSyncing","isSyncingTx","setIsSyncingTx","option_amounts","amounts","getEstimates","useEventCallback","finally","resetTxStatus","getTx","formattedSwapInfo","getAddPositionRequest","txErr","getIncreaseLiquidityOptimalTx","token0FeeAmount","token1FeeAmount","autoCompoundExists","useAddLiquidityContextV2","StyledWC","WhiteCard","UseNative","nativeChange","setUseNative","wrapped","NoSwapInfoWrapper","NoSwapInfoText","T3","ZapInSwapPath","selectedSwapInfo","hide","keepDropdown","marginTop","getSwapFailureMessage","netDepositUSDValue","feePercentage","DEFAULT_APERTURE_ZAPIN_FEE","ApertureLogos","fill","Headline","T3Regular","ErrorMessage","radii","warning","isDark","SwapDetail","setTokenAAmount","setTokenBAmount","setHide","failureMessage","showAlignTokens","ErrorMsg","fetchTokenPairsAmount","ifTokenA","_tokenAAmount","_tokenBAmount","tickCurrent","getOtherTokenAmount","toExact","alignItems","RaindropSpinner","ChevronDown","isShow","AlignTokenAmounts","disableA","disableB","onAlignTokenA","onAlignTokenB","isAddLP","TokenInfoContainer","noBorder","line","Line2","padding","minWidth","InputGroupMaxContainer","PaddingBox","Amount","StyledText","H3","Slider","InputGroupRight","primary","purple","round","ButtonText","grey","white","ButtonGroup","PreviewAddLiquidity","zapIn","CurrentLiquidity","StyledWhiteCard","AddLiquidityEditV2","buttonGroupRef","getChainInfo","token","index","tokenAAmount","tokenBAmount","approvalA","setApprovalA","approvalB","setApprovalB","useRef","insufficientTokenStatus","tokenAmountApproved","fetchTokenAmount","current","offsetHeight","scrollIntoView","approveContractAddress","amms","nonfungiblePositionManager","apertureAutomanV3","fontWeight","map","AutoCompoundTag","InputGroupMax","placeholder","defaultValue","subTitle","displayBalance","formatAmount","onMaxClick","ref","ApproveTokenBtn","contractAddress","canBeZero","approveOnChange","approve","SpinnerWrapper","ButtonBox","textAlt","AddLPBtnV2","walletAddress","swapInfoUnavailable","AddLiquidityLayoutV2","errorMessage","warningSlippage","WARNING_SLIPPAGE","AddLiquidityPreviewV2","newTokenAAmount","newTokenBAmount","newLiquidity","depositedItems","label","values","compareZero","liquidityItems","flexDirection","slice","getTicker","Text2","AddLiquidity","RemoveLiquidityContext","RemoveLiquidityProvider","removePercentage","estimatedAmounts","estimatedLiquidity","isPrescheduleBtnDisabled","setIsPrescheduleBtnDisabled","prescheduledPayload","setPrescheduledPayload","useRemoveLiquidityContext","Position","GasCeiling","StyledSlider","Hint","mediumGrey","RemoveLiquidityEdit","isZapOutEnabled","useIsZapOutEnabled","showTimeBuffer","ZapTag","PercentageInputAdditional","additionalAmount","AccessoryIcons","PrescheduledCloseBtn","RemoveLPBtn","getRemovePositionRequest","numberToPercent","account","split","RemoveLiquidityLayout","isTabRemoveLP","isTabRemoveLPTrigger","EarnedValue","RemoveLiquidityPreview","DEFAULT_APERTURE_FEE","RemoveLiquidity","StyledButton","CollectFeeBtn","total","tokenInfo","setErrorMsg","ButtonWrapper","ClaimFeeModal","stakeStatus","setStakeStatus","ClaimFeeContent","ReinvestBtn","getDeadlineWithMins","ReinvestWrapper","signPositionPermitBtnText","ReinvestFeesModal","tokenPercentages","setTXForm","newTokenAmount","newLPInUs","ReinvestFeesContent","unClaimedFees","predictedLiquidity","predictedProjection","StakePositionModal","buttonProps","StakePositionContent","getSlipstreamAmmByNetworkId","StakePositionBtn","Card","BG2","compose","flexbox","grid","layout","space","TitleWrapper","Overview","NFTCard","InfoWrapper","Header","Body1","LightHeader","T1Regular","StyledHeadline3","LeftContent","ButtonGroupWrapper","StyledBody2","Body2","FeesContent","FeesButtonGroup","RenableApproveOnChainBtn","ReEnablePermitButton","StyledTitle","StyledValue","PriceRangeCard","PriceRangeTitleBar","RangeStatus","RangeTag","PureBox","IntentToolCard","ReEnablePermit","isAOStatusLoading","useAOStore","updatePermitInfo","updatePositionPermit","br","rebalanced","prescheduled","Notification","button","showClose","TriggerListWrapper","triggers","strategyDetail","autoCompoundOn","state","isOpen","selectedTrigger","setSelectedTrigger","projectLP","chain","signMessage","useSignMessage","setPayload","router","useRouter","setStrategyPage","usePage","closeDeleteStrategyModal","strategyInfo","rebalancesExecuted","getStrategyInfoCardProps","handleGoToStrategy","pathname","query","CommonQueryKey","strategyId","handleCheck","handleEdit","removeLP","rebalance","strategyActionTypes","handleDeleteClick","find","triggerAction","isRecurringType","handleDelete","deletePayload","id","payloadInString","category","deleteTrigger","renderNotification","StrategyNotification","groupedTriggers","getErrorTag","lastFailedMessage","orderedKeys","TriggerGroup","getPercentage","tickRange","enableEdit","onEdit","onDelete","onClickGoTo","executedTimes","executed","Modal","isModalOpen","DeleteStrategyModal","PositionDetails","_ref","analyticsData","isClaimFeeModalOpen","isReinvestFeeModalOpen","network","marketPriceLoading","mutateMarketPrice","allChainPositions","useFetchAllChainsPositions","positionRebalanceHistory","useFetchPositionRebalanceHistory","NFTurl","isNFTLoading","useFetchTokenURL","selected","setSelected","setPosition","isAnalyticsLoading","useFetchAllChainsAnalytics","latestPositionInHistory","positionMap","activePositionId","tokenId","formattedMarketPrice","formatMarketPrice","closed","ActionTypeEnum","strategy","item","useFetchStrategy","unclaimedFees","toggleClaimFeeModal","open","toggleReinvestFeeModal","navToStrategy","actions","addLP","toggleStakePositionModal","handleGoToPositionDetail","pid","TitleBar","isInRange","inRange","FeeTierPercentage","LinearLoader","radius","NFTPositionCard","NFTStr","mb","AutoCompoundWrapper","minPrice","maxPrice","title","ToolCard","nextClick","comingSoon","SLIPSTREAM_NETWORKS","disableBackgroundOnClose","PositionAnalytics","getPositionAnalytics","ClosedPositions","getClosedPositions","PositionDetail","navToPage","resetSolver","page","setPage","setTabs","setTrigger","useAllChainsPositions","allChainPositionResults","currentChainId","validChains","getValidChains","activePositions","Object","entries","reduce","acc","chainPositions","includes","parseInt","getNetworkId","flat","sortActivePositions","useLimitOrders","chainIds","keys","allChainLOTriggers","chainsLOTriggers","TriggerStatus","useFilteredPositions","allChainsPositions","searchKeyword","showAll","stakePositionIds","filteredResults","filter","filterPositions","useNetworkSwitching","connectType","useConnectStore","switchChain","isSwitchChainError","switchChainTxnErrorMsg","useSwitchChain","handleSwitchNetwork","getSwitchNetworkError","StyledEmptyWrapper","StyledEmptyBox","ActivePositions","allChainsClosedPositionResults","useFetchAllChainsClosedPositions","allChainTriggerObj","isReady","useIsChainAndWalletReady","positionPage","setNavToPage","useSelected","Drawer","showDrawer","hideDrawer","hideIntentDrawer","useDrawer","limitOrders","selectedPosition","useOnFirstLoad","document","getElementById","getPid","behavior","block","inline","isCurrentChain","LinearLoaderGroup","PositionList","positions","triggerObj","closedPositionResults","UnstakePositionProvider","token0Address","token1Address","StyledPageContainer","PageContainer","drawerOpen","DrawerOpenCardWidth","StyledButtonLink","BaseButton","LinkIconBox","withConfig","SearchButton","lightPurple","NewPosition","NewPositionText","Headline1","NewPositionButton","StyledCard","LinkButton","LinkButtonLink","AllChainsText","StyledTextButton","StyledChainAMMLabel","ChainAMMLabel","LiquidityManagement","setSearchKeyword","setShowAll","intentDrawerOpen","setCurrentChainId","isAllChains","_drawerOpen","pageTitle","name","SearchInput","trim","event","stopPropagation","AllChainsIcon","sm","overlapRight","initTop","initLeft","marginLeft","liquidity_management"],"sourceRoot":""}