{"version":3,"file":"static/chunks/4455-6eef9c87ef60cc5c.js","mappings":"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","sources":["webpack://_N_E/./hooks/useOnCondition.ts","webpack://_N_E/./views/Strategy/Edit/utils.ts","webpack://_N_E/./views/Strategy/Edit/Context.tsx","webpack://_N_E/./views/Strategy/Edit/AdvancedSettings.tsx","webpack://_N_E/./views/Strategy/Edit/ButtonGroups.tsx","webpack://_N_E/./views/Strategy/Edit/EditTriggerCondition.tsx","webpack://_N_E/./views/Strategy/Edit/Edit.tsx","webpack://_N_E/./views/Strategy/Edit/PositionInfoCard.tsx","webpack://_N_E/./views/Strategy/Edit/TriggerCondition.tsx","webpack://_N_E/./views/Strategy/Edit/index.ts","webpack://_N_E/<anon>"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useEventCallback } from \"./useEventCallback\";\n\nexport const useOnCondition = (condition: boolean, callback: () => void) => {\n const cb = useEventCallback(callback);\n useEffect(() => {\n if (condition) {\n cb();\n }\n }, [cb, condition]);\n};\n","import { useGlobalSlippage } from \"@/components/GlobalStore\";\nimport { IPositionDetails } from \"@/config/position/positionConfig\";\nimport {\n offsetTickToPercentage,\n percentageToOffsetTick,\n} from \"@/helper/liquiditySelectorHelper\";\nimport { DEFAULT_REBALANCE_SLIPPAGE } from \"@/utils/helper\";\nimport { ITokenPair } from \"@aperture/types\";\nimport {\n ITransactionSettingsForm,\n StrategyDefaultAction,\n TriggerType,\n trimNumber,\n} from \"@aperture/uikit\";\nimport {\n ActionTypeEnum,\n ApertureSupportedChainId,\n RecurringAction,\n RecurringCondition,\n RecurringConditionTypeEnum,\n RecurringDualAction,\n RecurringPriceCondition,\n RecurringRatioCondition,\n parsePrice,\n priceToClosestUsableTick,\n priceToSqrtRatioX96,\n} from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { IDualTriggerState } from \"@ui/components/Strategy\";\nimport { Token } from \"@uniswap/sdk-core\";\nimport Big from \"big.js\";\nimport bigDecimal from \"js-big-decimal\";\nimport { useCallback, useState } from \"react\";\n\nexport function useTransactionSettingForms() {\n const { globalSlippage } = useGlobalSlippage();\n const init = {\n slippage: globalSlippage ?? DEFAULT_REBALANCE_SLIPPAGE,\n deadline: \"30\",\n };\n const [txnSetting, setTxnSetting] = useState<ITransactionSettingsForm>(init);\n\n return {\n txnSetting,\n setTxnSetting,\n resetTxnSetting: useCallback(() => setTxnSetting(init), []),\n };\n}\n\nexport function getDefaultStrategyAction(\n networkId: ApertureSupportedChainId,\n position: IPositionDetails,\n tokens: ITokenPair,\n tokenMarketPrice0: string\n): StrategyDefaultAction {\n const tickCurrent = priceToClosestUsableTick(\n parsePrice(\n new Token(\n networkId,\n tokens[0].address,\n tokens[0].decimals,\n tokens[0].ticker,\n tokens[0].name\n ),\n new Token(\n networkId,\n tokens[1].address,\n tokens[1].decimals,\n tokens[1].ticker,\n tokens[1].name\n ),\n tokenMarketPrice0\n ),\n undefined,\n position.tickSpacing\n );\n let actionTickLower = position.tickLower;\n let actionTickUpper = position.tickUpper;\n const rangeWidth = position.tickUpper - position.tickLower;\n // Handle position out of range\n // Set the default out of range tick to curent tick, and keep the range width\n if (actionTickLower > tickCurrent) {\n actionTickLower = tickCurrent;\n actionTickUpper = tickCurrent + rangeWidth;\n } else if (actionTickUpper < tickCurrent) {\n actionTickLower = tickCurrent - rangeWidth;\n actionTickUpper = tickCurrent;\n }\n const percentLower = offsetTickToPercentage(actionTickLower - tickCurrent);\n const percentUpper = offsetTickToPercentage(actionTickUpper - tickCurrent);\n const priceLower = bigDecimal.subtract(\n bigDecimal.divide(\n bigDecimal.multiply(tokenMarketPrice0, 100 + Number(percentLower)),\n 100,\n 18\n ),\n tokenMarketPrice0\n );\n const priceUpper = bigDecimal.subtract(\n bigDecimal.divide(\n bigDecimal.multiply(tokenMarketPrice0, 100 + Number(percentUpper)),\n 100,\n 18\n ),\n tokenMarketPrice0\n );\n const token0USDAmount = bigDecimal.multiply(\n tokens[0].amount,\n tokens[0].price\n );\n const token1USDAmount = bigDecimal.multiply(\n tokens[1].amount,\n tokens[1].price\n );\n const ratioDemonimator = Number(token0USDAmount) + Number(token1USDAmount);\n const ratioLower = (\n ratioDemonimator === 0\n ? 50\n : (Number(token0USDAmount) / ratioDemonimator) * 100\n ).toString();\n const ratioUpper = bigDecimal.subtract(100, ratioLower);\n\n return {\n percentLower,\n percentUpper,\n priceLower,\n priceUpper,\n ratioLower,\n ratioUpper,\n rangeWidth: rangeWidth.toString(),\n };\n}\n\nexport function convertClientToTriggerCondition(\n trigger: IDualTriggerState,\n position: IPositionDetails\n): RecurringCondition {\n const {\n baseToken,\n triggerType,\n timeBuffer,\n above,\n below,\n timeBufferChecked,\n aboveChecked,\n belowChecked,\n } = trigger;\n\n const common = {\n sqrtPriceX96: priceToSqrtRatioX96(\n new Big(position.tokenA.price)\n ).toString(),\n ...(timeBufferChecked && {\n durationSec: parseFloat(bigDecimal.multiply(timeBuffer, 3600)),\n }),\n };\n\n const gteEnabled =\n (aboveChecked && baseToken === 0) || (belowChecked && baseToken === 1);\n const lteEnabled =\n (belowChecked && baseToken === 0) || (aboveChecked && baseToken === 1);\n\n if (triggerType === TriggerType.PRICE_PERCENTAGE) {\n return {\n ...common,\n type: \"RecurringPercentage\",\n gteTickOffset: gteEnabled\n ? baseToken === 0\n ? percentageToOffsetTick(Number(above), 0)\n : -percentageToOffsetTick(-Number(below), -100, 0)\n : undefined,\n lteTickOffset: lteEnabled\n ? baseToken === 0\n ? percentageToOffsetTick(-Number(below), -100, 0)\n : -percentageToOffsetTick(Number(above), 0)\n : undefined,\n };\n } else if (triggerType === TriggerType.PRICE) {\n return {\n ...common,\n type: \"RecurringPrice\",\n baseToken,\n gtePriceOffset: gteEnabled ? above : undefined,\n ltePriceOffset: lteEnabled ? bigDecimal.negate(below) : undefined,\n } as RecurringPriceCondition;\n } else if (triggerType === TriggerType.RATIO) {\n const token0RatioAbove = (\n (baseToken ? 100 - parseFloat(below) : parseFloat(above)) / 100\n ).toFixed(4);\n const token0RatioBelow = (\n (baseToken ? 100 - parseFloat(above) : parseFloat(below)) / 100\n ).toFixed(4);\n return {\n ...common,\n type: \"RecurringRatio\",\n gteToken0ValueProportion: gteEnabled ? token0RatioAbove : undefined,\n lteToken0ValueProportion: lteEnabled ? token0RatioBelow : undefined,\n } as RecurringRatioCondition;\n }\n return null;\n}\n\nexport function convertTriggerConditionToClient(\n condition: RecurringCondition\n): IDualTriggerState {\n if (!condition) return null;\n\n const { durationSec } = condition;\n\n const common = {\n timeBufferChecked: durationSec !== undefined,\n timeBuffer: durationSec\n ? trimNumber(bigDecimal.divide(durationSec, 3600, 8))\n : \"0\",\n };\n\n if (\n condition.type === RecurringConditionTypeEnum.Values.RecurringPercentage\n ) {\n const { gteTickOffset, lteTickOffset } = condition;\n return {\n ...common,\n triggerType: TriggerType.PRICE_PERCENTAGE,\n baseToken: 0,\n aboveChecked: gteTickOffset !== undefined,\n belowChecked: lteTickOffset !== undefined,\n below: `${\n lteTickOffset ? offsetTickToPercentage(lteTickOffset, true) : 0\n }`,\n above: `${\n gteTickOffset ? offsetTickToPercentage(gteTickOffset, true) : 0\n }`,\n };\n }\n if (condition.type === RecurringConditionTypeEnum.Values.RecurringPrice) {\n const { gtePriceOffset, ltePriceOffset } = condition;\n\n return {\n ...common,\n triggerType: TriggerType.PRICE,\n baseToken: condition.baseToken,\n aboveChecked: gtePriceOffset !== undefined,\n belowChecked: ltePriceOffset !== undefined,\n below: `${ltePriceOffset ? bigDecimal.negate(ltePriceOffset) : 0}`,\n above: `${gtePriceOffset ?? 0}`,\n };\n }\n if (condition.type === RecurringConditionTypeEnum.Values.RecurringRatio) {\n const { gteToken0ValueProportion, lteToken0ValueProportion } = condition;\n return {\n ...common,\n triggerType: TriggerType.RATIO,\n baseToken: 0,\n aboveChecked: gteToken0ValueProportion !== undefined,\n belowChecked: lteToken0ValueProportion !== undefined,\n below: `${\n lteToken0ValueProportion\n ? Math.floor(parseFloat(lteToken0ValueProportion) * 10000) / 100\n : 0\n }`,\n above: `${\n gteToken0ValueProportion\n ? Math.floor(parseFloat(gteToken0ValueProportion) * 10000) / 100\n : 0\n }`,\n };\n }\n}\n\nexport function convertToTriggerAction(\n aboveAction?: RecurringAction,\n belowAction?: RecurringAction,\n swapLteGte?: boolean\n) {\n if (aboveAction && belowAction) {\n const lteAction = getDualAction(swapLteGte ? aboveAction : belowAction);\n const gteAction = getDualAction(swapLteGte ? belowAction : aboveAction);\n return {\n type: ActionTypeEnum.Values.RecurringDualAction,\n lteAction,\n gteAction,\n };\n } else if (aboveAction) {\n return aboveAction;\n } else if (belowAction) {\n return belowAction;\n }\n}\n\nfunction getDualAction(action: RecurringAction) {\n const common = [\"slippage\", \"maxGasProportion\", \"strategyId\", \"type\"];\n return Object.entries(action).reduce((acc, [key, value]) => {\n if (!common.includes(key)) {\n acc[key] = value;\n }\n return acc;\n }, {} as RecurringDualAction[\"gteAction\"] | RecurringDualAction[\"lteAction\"]);\n}\n","import { useGlobalSlippage } from \"@/components/GlobalStore\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { IPositionDetails } from \"@/config/position/positionConfig\";\nimport { getTriggerDeadline } from \"@/helper/deadlineHelper\";\nimport { useCurrentChainToken } from \"@/hooks/globalState/useCurrentChainToken\";\nimport {\n usePositionAutoCompound,\n usePositionStrategy,\n} from \"@/hooks/trigger/usePositionTrigger\";\nimport { useEventCallback } from \"@/hooks/useEventCallback\";\nimport { TokenPriceMap } from \"@/hooks/useFetchAllChainsTokensPrice\";\nimport { useFetchCurrentChainMarketPrice } from \"@/hooks/useFetchMarketPrice\";\nimport {\n DEFAULT_SLIPPAGE,\n gasCeilingButtonError,\n getGasCeiling,\n} from \"@/utils/helper\";\nimport { ITokenPair } from \"@aperture/types\";\nimport { ITransactionSettingsForm } from \"@aperture/uikit\";\nimport {\n ApertureSupportedChainId,\n CreateTriggerPayload,\n RecurringAction,\n RecurringCondition,\n TriggerItem,\n UpdateTriggerPayload,\n} from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport _ from \"lodash\";\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useAccount } from \"wagmi\";\nimport { useTransactionSettingForms } from \"./utils\";\n\ntype AutoCompoundPayload = Pick<TriggerItem, \"condition\" | \"action\">;\n\nexport interface IStrategyContext {\n position: IPositionDetails;\n triggerCondition: RecurringCondition;\n triggerAction: RecurringAction;\n autoCompoundExists: boolean;\n autoCompoundError: string;\n autoCompound: AutoCompoundPayload;\n tokens: ITokenPair;\n tokenMarketPrice: {\n tokenA: string;\n tokenB: string;\n };\n txnSetting: ITransactionSettingsForm;\n enableAutoCompound: boolean;\n isStrategyNotChanged: boolean;\n isTriggerLoaded: boolean;\n taskId: number;\n useInit: () => void;\n getTriggerPayload: (\n isCreate?: boolean\n ) => CreateTriggerPayload | UpdateTriggerPayload;\n setEnableAutoCompound: React.Dispatch<React.SetStateAction<boolean>>;\n setTriggerCondition: React.Dispatch<React.SetStateAction<RecurringCondition>>;\n setTriggerAction: React.Dispatch<React.SetStateAction<RecurringAction>>;\n setAutoCompound: React.Dispatch<React.SetStateAction<AutoCompoundPayload>>;\n setTxnSetting: React.Dispatch<React.SetStateAction<ITransactionSettingsForm>>;\n}\n\nconst StrategyContext = React.createContext<IStrategyContext>(null as any);\n\ninterface StrategyProviderProps {\n position: IPositionDetails;\n}\n\nexport const StrategyProvider: React.FC<\n React.PropsWithChildren<StrategyProviderProps>\n> = ({ children, position, ...props }) => {\n const initRef = useRef<{ trigger: TriggerItem; autoCompound: TriggerItem }>({\n trigger: null as any,\n autoCompound: null as any,\n });\n\n const { ammEnum, networkId } = useNetwork();\n const { address } = useAccount();\n const { currentTokenPrice: tokenPriceList } = useCurrentChainToken(networkId);\n\n const tokens = useMemo(\n () => getTokensWithPrice(position, tokenPriceList),\n [position, tokenPriceList]\n );\n\n const poolKey =\n ammEnum === \"SLIPSTREAM\" ? position.tickSpacing : position.feeTier;\n const { data: marketPrice } = useFetchCurrentChainMarketPrice(\n tokens[0].address,\n tokens[1].address,\n [poolKey]\n );\n\n const tokenMarketPrice = useMemo(() => {\n return (\n marketPrice?.[poolKey] ?? {\n tokenA: \"0\",\n tokenB: \"0\",\n }\n );\n }, [marketPrice, poolKey]);\n\n const [triggerCondition, setTriggerCondition] =\n useState<RecurringCondition>(null);\n const [triggerAction, setTriggerAction] = useState<RecurringAction>(null);\n const { globalSlippage } = useGlobalSlippage();\n const [autoCompoundPayload, setAutoCompoundPayload] =\n useState<AutoCompoundPayload>(\n getInitAutoCompoundPayload(networkId, position.liquidity, globalSlippage)\n );\n\n const [enableAutoCompound, setEnableAutoCompound] = useState<boolean>(false);\n const { txnSetting, setTxnSetting, resetTxnSetting } =\n useTransactionSettingForms();\n const _triggerAction = useMemo(() => {\n return {\n ...triggerAction,\n slippage: txnSetting.slippage,\n };\n }, [triggerAction, txnSetting.slippage]);\n\n const isConditionNotChanged = useMemo(() => {\n return _.isEqual(triggerCondition, initRef.current.trigger?.condition);\n }, [triggerCondition]);\n\n const isActionNotChanged = useMemo(() => {\n return _.isEqual(_triggerAction, initRef.current.trigger?.action);\n }, [_triggerAction]);\n\n const autoCompoundError = useMemo(\n () =>\n (triggerAction &&\n gasCeilingButtonError(\n networkId,\n triggerAction.maxGasProportion,\n position.liquidity\n )) ||\n (!initRef.current.autoCompound &&\n enableAutoCompound &&\n gasCeilingButtonError(\n networkId,\n autoCompoundPayload.action.maxGasProportion,\n position.liquidity\n )),\n [\n autoCompoundPayload,\n enableAutoCompound,\n networkId,\n position.liquidity,\n triggerAction,\n ]\n );\n\n const getTriggerPayload = useEventCallback((isCreate: boolean) => {\n const common = {\n ownerAddr: address!,\n chainId: networkId,\n condition: triggerCondition,\n action: _triggerAction,\n expiration: getTriggerDeadline(),\n };\n\n if (isCreate) {\n return {\n ...common,\n ...(enableAutoCompound &&\n !initRef.current.autoCompound && {\n autoCompound: autoCompoundPayload,\n }),\n amm: ammEnum,\n nftId: position.positionId,\n } as CreateTriggerPayload;\n }\n\n const payload: UpdateTriggerPayload = {\n ...common,\n taskId: initRef.current.trigger?.taskId,\n };\n\n if (isConditionNotChanged) {\n payload.condition = undefined;\n }\n\n if (isActionNotChanged) {\n payload.action = undefined;\n }\n\n return payload;\n });\n\n const useInit = () => {\n const { trigger, autoCompound } = useFetch(\n position.positionId,\n position.chainId\n );\n\n useEffect(() => {\n // reset form\n return () => {\n setTriggerCondition(null);\n setTriggerAction(null);\n setEnableAutoCompound(false);\n setAutoCompoundPayload(\n getInitAutoCompoundPayload(\n networkId,\n position.liquidity,\n globalSlippage\n )\n );\n resetTxnSetting();\n };\n }, []);\n\n useEffect(() => {\n if (trigger) {\n initRef.current.trigger = trigger;\n const action = trigger.action as RecurringAction;\n setTriggerCondition(trigger.condition as RecurringCondition);\n setTriggerAction(action);\n setTxnSetting((prev) => ({\n ...prev,\n slippage: action?.slippage,\n }));\n }\n }, [trigger]);\n\n useEffect(() => {\n if (autoCompound) {\n initRef.current.autoCompound = autoCompound;\n setAutoCompoundPayload(_.pick(autoCompound, [\"condition\", \"action\"]));\n setEnableAutoCompound(true);\n }\n }, [autoCompound]);\n };\n\n return (\n <StrategyContext.Provider\n value={{\n tokens,\n tokenMarketPrice,\n triggerCondition,\n setTriggerCondition,\n triggerAction: _triggerAction,\n setTriggerAction,\n autoCompoundExists: !!initRef.current.autoCompound,\n autoCompoundError: autoCompoundError,\n autoCompound: autoCompoundPayload,\n setAutoCompound: setAutoCompoundPayload,\n position: position,\n txnSetting,\n setTxnSetting,\n enableAutoCompound,\n setEnableAutoCompound,\n getTriggerPayload,\n isTriggerLoaded: !!(triggerCondition && triggerAction),\n isStrategyNotChanged: isConditionNotChanged && isActionNotChanged, // TODO: add isAutoCompoundChanged\n useInit,\n taskId: initRef.current.trigger?.taskId,\n ...props,\n }}\n >\n {children}\n </StrategyContext.Provider>\n );\n};\n\nexport const useEditStrategyContext = () => {\n return React.useContext(StrategyContext);\n};\n\nfunction getTokensWithPrice(\n position: IPositionDetails,\n tokenPriceList: TokenPriceMap\n): ITokenPair {\n return [\n {\n ...position.tokenA,\n price: tokenPriceList?.[position.tokenA.address]?.price || \"0\",\n },\n {\n ...position.tokenB,\n price: tokenPriceList?.[position.tokenB.address]?.price || \"0\",\n },\n ];\n}\n\nconst useFetch = (positionId: string, chainId: ApertureSupportedChainId) => {\n const trigger = usePositionStrategy(positionId, chainId);\n const autoCompound = usePositionAutoCompound(positionId, chainId);\n\n return {\n trigger,\n autoCompound,\n };\n};\n\nconst getInitAutoCompoundPayload = (\n networkId: ApertureSupportedChainId,\n liquidity: string,\n globalSlippage?: number\n) =>\n ({\n condition: {\n feeToPrincipalRatioThreshold: 0.05,\n type: \"AccruedFees\",\n },\n action: {\n maxGasProportion: getGasCeiling(networkId, liquidity),\n slippage: globalSlippage ?? DEFAULT_SLIPPAGE,\n type: \"Reinvest\",\n },\n } as AutoCompoundPayload);\n","import { useGlobalSlippage } from \"@/components/GlobalStore\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { useOnCondition } from \"@/hooks/useOnCondition\";\nimport {\n DEFAULT_SLIPPAGE,\n WARNING_SLIPPAGE,\n gasCeilingInputError,\n getGasCeiling,\n} from \"@/utils/helper\";\nimport { StrategyAdvancedSettings } from \"@aperture/uikit\";\nimport {\n AccruedFeesCondition,\n ReinvestAction,\n} from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useEditStrategyContext } from \"./Context\";\n\nexport const AdvancedSettings: React.FC<{\n isCreate?: boolean;\n bg?: string;\n}> = ({ isCreate, bg }) => {\n const {\n position,\n triggerAction,\n setTriggerAction,\n autoCompound,\n autoCompoundExists,\n setAutoCompound,\n enableAutoCompound,\n setEnableAutoCompound,\n autoCompoundError,\n } = useEditStrategyContext();\n\n const { networkId } = useNetwork();\n const { globalSlippage, setGlobalSlippage } = useGlobalSlippage();\n const [applyGlobally, setApplyGlobally] = useState(false);\n\n const gasCeiling = triggerAction?.maxGasProportion;\n\n const minFees = (autoCompound.condition as AccruedFeesCondition)\n .feeToPrincipalRatioThreshold;\n const maxGasFee = (autoCompound.action as ReinvestAction).maxGasProportion;\n const slippage = (autoCompound.action as ReinvestAction).slippage;\n\n useOnCondition(isCreate, () => {\n handleGasCeilingChange(getGasCeiling(networkId, position.liquidity));\n });\n\n const handleAutoCompoundChange = () => {\n setEnableAutoCompound(!enableAutoCompound);\n };\n const handleGasCeilingChange = useCallback(\n (percentage: number) => {\n setTriggerAction((prev) => ({\n ...prev,\n maxGasProportion: percentage,\n }));\n },\n [setTriggerAction]\n );\n const handleAcGasCeilingChange = useCallback(\n (percentage: number) => {\n setAutoCompound((prev) => ({\n ...prev,\n condition: {\n ...prev.condition,\n feeToPrincipalRatioThreshold: percentage,\n },\n }));\n },\n [setAutoCompound]\n );\n const handleAcMaxGasChange = useCallback(\n (percentage: number) => {\n setAutoCompound((prev) => ({\n ...prev,\n action: {\n ...prev.action,\n maxGasProportion: percentage,\n },\n }));\n },\n [setAutoCompound]\n );\n const handleAcSlippageChange = useCallback(\n (percentage: number) => {\n setAutoCompound((prev) => ({\n ...prev,\n action: {\n ...prev.action,\n slippage: percentage,\n },\n }));\n },\n [setAutoCompound]\n );\n const handleOnError = useCallback(\n (percentage: number) =>\n gasCeilingInputError(networkId, percentage, position.liquidity),\n [networkId, position.liquidity]\n );\n\n return (\n <StrategyAdvancedSettings\n bg={bg}\n isCreate={isCreate}\n expanded={!!autoCompoundError}\n hideAutoCompound={!isCreate && !enableAutoCompound}\n disableAutoCompound={!isCreate || autoCompoundExists}\n autoCompound={enableAutoCompound}\n handleAutoCompoundChange={handleAutoCompoundChange}\n gasCeiling={{\n amount: position.liquidity,\n percentage: gasCeiling,\n onChange: handleGasCeilingChange,\n onError: handleOnError,\n }}\n acGasCeiling={{\n amount: position.liquidity,\n percentage: minFees,\n onChange: handleAcGasCeilingChange,\n }}\n acMaxGasFee={{\n amount: position.liquidity,\n percentage: maxGasFee,\n onChange: handleAcMaxGasChange,\n onError: handleOnError,\n }}\n acSlippage={{\n defaultValue: DEFAULT_SLIPPAGE,\n globalValue: globalSlippage,\n warningValue: WARNING_SLIPPAGE,\n value: slippage,\n onSlippageChange: handleAcSlippageChange,\n applyGlobally,\n onApplyGlobally: (checked) => {\n setApplyGlobally(checked);\n checked &&\n setGlobalSlippage((prev) => ({ ...prev, [networkId]: slippage }));\n },\n }}\n />\n );\n};\n","import { Button } from \"@aperture/uikit\";\nimport styled from \"styled-components\";\n\ninterface ButtonsGroupProps {\n cancelText?: string;\n confirmText?: string | React.ReactNode;\n addConfirmWrapper?: boolean;\n disableConfirm?: boolean;\n width?: string;\n minWidth?: string;\n onCancel: () => void;\n onConfirm: () => void;\n}\n\nconst ButtonItem = styled(Button)<{ black?: boolean }>`\n font-weight: 500;\n color: ${({ theme, black }) =>\n black ? theme.colors.global.text.T1 : theme.colors.global.textAlt.T1};\n background-color: ${({ theme, black }) =>\n black ? theme.colors.global.background.BG3 : theme.colors.global.primary};\n :hover {\n background-color: ${({ theme, black }) =>\n black ? theme.colors.global.background.BG4 : theme.colors.global.primary};\n }\n`;\n\nexport const ButtonsGroup: React.FC<ButtonsGroupProps> = ({\n cancelText = \"Cancel\",\n confirmText = \"Confirm\",\n addConfirmWrapper = true,\n disableConfirm,\n width,\n minWidth,\n onCancel,\n onConfirm,\n}) => {\n return (\n <>\n <ButtonItem\n black\n size=\"lg\"\n variant=\"contained\"\n width={width}\n minWidth={minWidth}\n onClick={onCancel}\n >\n {cancelText}\n </ButtonItem>\n {addConfirmWrapper ? (\n <ButtonItem\n variant=\"contained\"\n color=\"primary\"\n size=\"lg\"\n width={width}\n minWidth={minWidth}\n disabled={disableConfirm}\n onClick={onConfirm}\n >\n {confirmText}\n </ButtonItem>\n ) : (\n confirmText\n )}\n </>\n );\n};\n","import { DeleteStrategyModal } from \"@/components/Modal/DeleteStrategyModal\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { useEventCallback } from \"@/hooks/useEventCallback\";\nimport { useOnCondition } from \"@/hooks/useOnCondition\";\nimport {\n DualTriggerContent,\n E_StrategyModalType,\n Flex,\n FlexColumn,\n getTriggerNotification,\n notificationVariants,\n TriggerType,\n useClickOutside,\n} from \"@aperture/uikit\";\nimport { E_ModalKey, Modal, useModal } from \"@aperture/uikitv2\";\nimport {\n ActionTypeEnum,\n RecurringAction,\n} from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport {\n EditTrigger,\n EditTriggerDetail,\n IDualTriggerState,\n IEditTriggerState,\n StrategyTriggerEditType,\n} from \"@ui/components/Strategy\";\nimport {\n StyledInputWithTicker,\n StyledNotification,\n StyledQuestionPopover,\n} from \"@ui/components/Strategy/DualTriggerSetup/style\";\nimport {\n emptyDualTriggerForm,\n getDefaultCacheForm,\n MAX_TIME_BUFFER,\n} from \"@ui/components/Strategy/utils\";\nimport { getActionType } from \"@ui/components/TriggerList/getStrategyInfo\";\nimport bigDecimal from \"js-big-decimal\";\nimport {\n Dispatch,\n SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport styled from \"styled-components\";\nimport { useEditStrategyContext } from \"./Context\";\nimport {\n convertClientToTriggerCondition,\n convertToTriggerAction,\n convertTriggerConditionToClient,\n getDefaultStrategyAction,\n} from \"./utils\";\n\nconst strings = {\n timeBufferLabel: \"TWAP Duration\",\n timeBufferPopover:\n \"Enabling TWAP (time-weight average price) on your trigger means the average price or ratio based trigger between past specified time and now must be met before the trigger executes. This helps prevent potential price manipulation and examples are for rebalancing if 1) average ETH goes above $3,500 for past 30+ mins or 2) average pool above 80% USDC for past 2+ hrs.\",\n};\n\nconst Wrapper = styled.div`\n padding: ${({ theme }) => theme.spacing.lg};\n border-radius: ${({ theme }) => theme.radii.md2};\n border: 1px solid ${({ theme }) => theme.colors.global.line.Line2};\n`;\nconst Title = styled.div`\n font-size: 14px;\n line-height: 16px;\n font-weight: 400;\n color: ${({ theme }) => theme.colors.global.text.T1};\n`;\n\ninterface EditTriggerConditionProps {\n editMode: StrategyTriggerEditType;\n setEditMode: Dispatch<SetStateAction<StrategyTriggerEditType>>;\n onDeleteStrategy: () => void;\n}\ntype TriggerList = (RecurringAction & { id: StrategyTriggerEditType })[];\n\nexport const EditTriggerCondition: React.FC<EditTriggerConditionProps> = ({\n editMode,\n setEditMode,\n onDeleteStrategy,\n}) => {\n const { networkId } = useNetwork();\n const {\n triggerCondition,\n triggerAction,\n tokens,\n tokenMarketPrice,\n position,\n isTriggerLoaded,\n taskId,\n setTriggerCondition,\n setTriggerAction,\n } = useEditStrategyContext();\n const { state, setModalState } = useModal();\n const modalRef = useRef<HTMLDivElement>(null);\n const { isOpen: isDeleteStrategyModalOpen } = state.DELETE_STRATEGY_MODAL;\n const { isOpen: isDeleteTriggerModalOpen } = state.DELETE_TRIGGER_MODAL;\n const { isOpen: isDiscardEditModalOpen } = state.DISCARD_TRIGGER_EDIT_MODAL;\n const [clientTrigger, setClientTrigger] = useState<IDualTriggerState>(null);\n const [data, setData] = useState<IDualTriggerState>(null);\n const [triggerList, setTriggerList] = useState<TriggerList>();\n const [addTrigger, setAddTrigger] = useState<StrategyTriggerEditType>();\n const [triggerId, setTriggerId] = useState<StrategyTriggerEditType>();\n const tokenRatio = useMemo(\n () => Math.floor(tokens[0].getTokenValueProportion().mul(10000).toNumber()),\n [tokens]\n );\n const ref = useRef<HTMLDivElement>(null);\n const isEditing = editMode !== undefined || addTrigger !== undefined;\n\n useOnCondition(isTriggerLoaded, () => {\n setClientTrigger(convertTriggerConditionToClient(triggerCondition));\n });\n\n const isAboveEdit = editMode === StrategyTriggerEditType.ABOVE;\n const [tokenSpotPrice, setTokenSpotPrice] =\n useState<[string, string]>(undefined);\n\n useEffect(() => {\n if (tokenSpotPrice) return;\n if (tokenMarketPrice.tokenA !== \"0\" && tokenMarketPrice.tokenB !== \"0\") {\n setTokenSpotPrice([tokenMarketPrice.tokenA, tokenMarketPrice.tokenB]);\n }\n }, [tokenMarketPrice.tokenA, tokenMarketPrice.tokenB, tokenSpotPrice]);\n\n useEffect(() => {\n if (!isTriggerLoaded || !clientTrigger) return;\n\n const isDualAction =\n clientTrigger.aboveChecked &&\n clientTrigger.belowChecked &&\n triggerAction.type === ActionTypeEnum.Values.RecurringDualAction;\n const { slippage, maxGasProportion, strategyId } = triggerAction;\n\n const init = {\n ...clientTrigger,\n aboveAction: clientTrigger.aboveChecked\n ? isDualAction\n ? //@ts-ignore\n getActionType({\n ...triggerAction.gteAction,\n strategyId,\n slippage,\n maxGasProportion,\n })\n : triggerAction\n : undefined,\n belowAction: clientTrigger.belowChecked\n ? isDualAction\n ? getActionType({\n ...triggerAction.lteAction,\n strategyId,\n slippage,\n maxGasProportion,\n })\n : triggerAction\n : undefined,\n };\n\n //@ts-ignore\n setData(init);\n //@ts-ignore\n setTriggerList(generateTriggerList(init));\n }, [isTriggerLoaded, clientTrigger]);\n\n const defaultForm: IDualTriggerState = useMemo(() => {\n let triggerType = TriggerType.PRICE;\n if (triggerCondition?.type === \"RecurringPercentage\")\n triggerType = TriggerType.PRICE_PERCENTAGE;\n if (triggerCondition?.type === \"RecurringRatio\")\n triggerType = TriggerType.RATIO;\n return {\n ...emptyDualTriggerForm,\n ...getDefaultCacheForm(\n tokenRatio,\n tokenSpotPrice ? tokenSpotPrice[0] : \"0\",\n tokens[1].decimals,\n true\n )[triggerType],\n };\n }, [tokenSpotPrice, tokens]);\n\n const handleSave = useEventCallback((t: IEditTriggerState) => {\n const timeBufferInvalid =\n t.timeBufferChecked && parseFloat(t.timeBuffer || \"0\") === 0;\n const editedData = {\n ...data,\n [isAboveEdit ? \"above\" : \"below\"]: isAboveEdit ? t.above : t.below,\n [isAboveEdit ? \"aboveAction\" : \"belowAction\"]: isAboveEdit\n ? t.aboveAction\n : t.belowAction,\n timeBufferChecked: timeBufferInvalid ? false : t.timeBufferChecked,\n timeBuffer: t.timeBuffer,\n };\n setData(editedData);\n\n const converted = convertClientToTriggerCondition(editedData, position);\n setTriggerCondition((prev) => {\n return {\n ...converted,\n ...(prev?.sqrtPriceX96 && {\n sqrtPriceX96: prev.sqrtPriceX96,\n }),\n };\n });\n setTriggerAction((prev) => ({\n maxGasProportion: prev.maxGasProportion,\n slippage: prev.slippage,\n strategyId: prev.strategyId,\n ...convertToTriggerAction(editedData.aboveAction, editedData.belowAction),\n }));\n const updatedList = triggerList?.map((trigger) => {\n if (trigger.id === editMode) {\n return {\n id: trigger.id,\n ...(isAboveEdit ? t.aboveAction : t.belowAction),\n };\n } else {\n return trigger;\n }\n });\n setTriggerList(updatedList);\n setEditMode(undefined);\n setAddTrigger(undefined);\n });\n\n const handleDelete = useCallback(\n (id: StrategyTriggerEditType) => {\n const isAbove = id === StrategyTriggerEditType.ABOVE;\n const updatedData = {\n ...data,\n [isAbove ? \"above\" : \"below\"]: defaultForm[id],\n [isAbove ? \"aboveChecked\" : \"belowChecked\"]: false,\n [isAbove ? \"aboveAction\" : \"belowAction\"]: undefined,\n };\n setData(updatedData);\n\n const converted = convertClientToTriggerCondition(updatedData, position);\n setTriggerCondition((prev) => {\n return {\n ...converted,\n ...(prev?.sqrtPriceX96 && {\n sqrtPriceX96: prev.sqrtPriceX96,\n }),\n };\n });\n setTriggerAction((prev) => ({\n maxGasProportion: prev.maxGasProportion,\n slippage: prev.slippage,\n strategyId: prev.strategyId,\n ...convertToTriggerAction(\n updatedData.aboveAction,\n updatedData.belowAction\n ),\n }));\n\n const updatedList = triggerList.filter((trigger) => trigger.id !== id);\n setTriggerList(updatedList);\n setEditMode(undefined);\n setAddTrigger(undefined);\n },\n [data, triggerList, defaultForm]\n );\n\n const handleEdit = useCallback((id: StrategyTriggerEditType) => {\n setEditMode(id);\n }, []);\n\n const handleAddTrigger = useCallback(\n (id: StrategyTriggerEditType) => {\n const isAbove = id === StrategyTriggerEditType.ABOVE;\n const updatedData = {\n ...data,\n [isAbove ? \"aboveChecked\" : \"belowChecked\"]: true,\n [isAbove ? \"above\" : \"below\"]: defaultForm[id],\n };\n const updatedList = [\n ...triggerList,\n {\n id,\n ...defaultForm[isAbove ? \"aboveAction\" : \"belowAction\"],\n },\n ];\n\n setData(updatedData);\n setAddTrigger(id);\n setTriggerList(updatedList);\n setEditMode(id);\n },\n [data, triggerList, defaultForm]\n );\n\n const toggleDeleteStartegyModal = (open: boolean) => {\n setModalState(E_ModalKey.DELETE_STRATEGY_MODAL, open);\n };\n const toggleDeleteTriggerModal = (open: boolean) => {\n !open && setTriggerId(undefined);\n setModalState(E_ModalKey.DELETE_TRIGGER_MODAL, open);\n };\n const toggleDiscardEditModal = (open: boolean) => {\n setModalState(E_ModalKey.DISCARD_TRIGGER_EDIT_MODAL, open);\n };\n\n const handleDeleteTrigger = useCallback(\n (id: StrategyTriggerEditType) => {\n const isLastTrigger = triggerList.length === 1;\n setTriggerId(id);\n isLastTrigger\n ? toggleDeleteStartegyModal(true)\n : toggleDeleteTriggerModal(true);\n },\n [handleDelete]\n );\n\n const handleClickOutside = (event: MouseEvent) => {\n if (modalRef.current && modalRef.current.contains(event.target as Node)) {\n return;\n }\n event.stopPropagation();\n toggleDiscardEditModal(true);\n };\n useClickOutside([ref], handleClickOutside);\n\n const initForm = useMemo(() => {\n return {\n ...data,\n [isAboveEdit ? \"belowChecked\" : \"aboveChecked\"]: false,\n [isAboveEdit ? \"belowAction\" : \"aboveAction\"]: undefined,\n [isAboveEdit ? \"below\" : \"above\"]:\n defaultForm[isAboveEdit ? \"below\" : \"above\"],\n };\n }, [data, defaultForm, editMode]);\n\n const defaultAction = useMemo(\n () =>\n getDefaultStrategyAction(\n networkId,\n position,\n tokens,\n tokenMarketPrice.tokenA\n ),\n [networkId, position, tokens, tokenMarketPrice]\n );\n\n return (\n <>\n <FlexColumn gap=\"lg\">\n <Title>Trigger Setup</Title>\n {triggerList?.map(\n (trigger, idx) =>\n trigger !== undefined &&\n (editMode === trigger.id ? (\n <Wrapper key={trigger.id} ref={ref}>\n <EditTrigger\n triggerIdx={idx + 1}\n tokens={tokens}\n tokenSpotPrice={tokenSpotPrice}\n tokenRatio={tokenRatio}\n tickSpacing={position.tickSpacing}\n defaultAction={defaultAction}\n initForm={initForm}\n onSave={handleSave}\n onDiscard={() => toggleDiscardEditModal(true)}\n isAddTrigger={!!addTrigger}\n />\n </Wrapper>\n ) : (\n <EditTriggerDetail\n key={trigger.id}\n disabled={isEditing}\n type={trigger.id}\n triggerIdx={idx + 1}\n tokens={tokens}\n trigger={data}\n onEdit={() => handleEdit(trigger.id)}\n onDelete={() => handleDeleteTrigger(trigger.id)}\n onAddTrigger={() =>\n handleAddTrigger(\n triggerList[0].id === StrategyTriggerEditType.ABOVE\n ? StrategyTriggerEditType.BELOW\n : StrategyTriggerEditType.ABOVE\n )\n }\n />\n ))\n )}\n <Flex alignItems=\"center\" justifyContent=\"space-between\">\n <Flex alignItems=\"center\">\n <Title>{strings.timeBufferLabel}</Title>\n <StyledQuestionPopover\n content={strings.timeBufferPopover}\n defaultSize={{ width: 500 }}\n defaultPosition={{ left: -90, bottom: 20 }}\n />\n </Flex>\n <StyledInputWithTicker\n align=\"left\"\n type=\"number\"\n placeholder=\"0\"\n defaultValue={data?.timeBuffer?.toString() ?? \"0\"}\n disabled={isEditing}\n onChange={(value) =>\n handleSave({\n ...data,\n timeBufferChecked: true,\n timeBuffer: value,\n })\n }\n onBlur={() => {\n if (bigDecimal.compareTo(data?.timeBuffer, MAX_TIME_BUFFER) > 0)\n handleSave({\n ...data,\n timeBufferChecked: true,\n timeBuffer: MAX_TIME_BUFFER.toString(),\n });\n }}\n ticker={\n bigDecimal.compareTo(data?.timeBuffer, 1) > 0 ? \"hrs\" : \"hr\"\n }\n width={200}\n height={36}\n />\n </Flex>\n {bigDecimal.compareTo(data?.timeBuffer, 0) > 0 && (\n <StyledNotification\n variant={notificationVariants.WARNING}\n text={getTriggerNotification()}\n />\n )}\n </FlexColumn>\n <Modal\n padding={16}\n isModalOpen={isDeleteStrategyModalOpen}\n onClose={() => toggleDeleteStartegyModal(false)}\n >\n <DeleteStrategyModal\n taskId={taskId}\n isDeletingLastTrigger={true}\n onClose={() => toggleDeleteStartegyModal(false)}\n onDelete={() => onDeleteStrategy()}\n />\n </Modal>\n <Modal\n padding={16}\n isModalOpen={isDeleteTriggerModalOpen}\n onClose={() => toggleDeleteTriggerModal(false)}\n >\n {triggerId && (\n <DualTriggerContent\n {...{\n type: E_StrategyModalType.Delete_Trigger,\n onCancel: () => toggleDeleteTriggerModal(false),\n onConfirm: () => {\n toggleDeleteTriggerModal(false);\n handleDelete(triggerId);\n },\n }}\n />\n )}\n </Modal>\n <Modal\n ref={modalRef}\n padding={16}\n isModalOpen={isDiscardEditModalOpen}\n onClose={() => toggleDiscardEditModal(false)}\n >\n <DualTriggerContent\n {...{\n type: E_StrategyModalType.Discard_Trigger_Edit,\n onCancel: () => toggleDiscardEditModal(false),\n onConfirm: () => {\n toggleDiscardEditModal(false);\n addTrigger ? handleDelete(addTrigger) : handleSave(data);\n },\n }}\n />\n </Modal>\n </>\n );\n};\n\nfunction generateTriggerList(data: IEditTriggerState | null): TriggerList {\n const triggers = [];\n if (data?.belowChecked && data?.belowAction) {\n triggers.push({ ...data.belowAction, id: StrategyTriggerEditType.BELOW });\n }\n if (data?.aboveChecked && data?.aboveAction) {\n triggers.push({ ...data.aboveAction, id: StrategyTriggerEditType.ABOVE });\n }\n return triggers;\n}\n","import { UnstakePositionBtn } from \"@/components/Button/StakePositionBtn\";\nimport { useUnstakePositionContext } from \"@/components/Context/UnstakePositionContext\";\nimport { useAOStore, useGlobalSlippage } from \"@/components/GlobalStore\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\n\nimport { useOnNetworkAccountChange } from \"@/hooks/globalState/useOnNetworkAccountChange\";\nimport { useSignAndCUDTrigger } from \"@/hooks/trigger/useSignAndCUDTrigger\";\nimport { useEventCallback } from \"@/hooks/useEventCallback\";\nimport { useFetchAllChainUserTriggers } from \"@/hooks/useFetchAllChainUserTriggers\";\nimport { useFetchStakePositionsIds } from \"@/hooks/useFetchStakePositionsIds\";\nimport {\n DEFAULT_APERTURE_FLAT_FEE,\n DEFAULT_APERTURE_REBALANCE_FEE,\n DEFAULT_APERTURE_REINVEST_FEE,\n DEFAULT_REBALANCE_SLIPPAGE,\n WARNING_SLIPPAGE,\n} from \"@/utils/helper\";\nimport {\n DRAWER_CONTENT_WIDTH,\n Flex,\n FlexColumn,\n RecurringRebalanceFeePopover,\n Spinner,\n StrategyTriggerEditType,\n TransactionSettings,\n} from \"@aperture/uikit\";\nimport { darkColors } from \"@aperture/uikitv2\";\nimport {\n CreateTriggerPayload,\n UpdateTriggerPayload,\n} from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport bigDecimal from \"js-big-decimal\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport styled from \"styled-components\";\nimport {\n AdvancedSettings,\n ButtonsGroup,\n PositionInfoCard,\n TriggerCondition,\n useEditStrategyContext,\n} from \".\";\nimport { EditTriggerCondition } from \"./EditTriggerCondition\";\n\ninterface EditStrategyProps {\n isCreate?: boolean;\n onSave: () => void;\n onCancel: () => void;\n navBack?: () => void;\n}\n\nconst FlexColumnBox = styled(FlexColumn)`\n padding-bottom: 120px;\n`;\nconst EditContentWrapper = styled.div<{\n isCreate: boolean;\n}>`\n height: ${({ isCreate }) => (isCreate ? \"100%\" : \"calc(100vh - 220px)\")};\n overflow-y: scroll;\n scrollbar-width: none;\n`;\nconst Content = styled(FlexColumn)<{\n isCreate: boolean;\n}>`\n width: ${({ isCreate }) => (isCreate ? \"100%\" : DRAWER_CONTENT_WIDTH)};\n`;\n\nconst StrategyFooter = styled(Flex)<{ isCreate: boolean }>`\n padding-top: ${({ isCreate }) => (isCreate ? \"8px\" : \"20px\")};\n display: flex;\n align-items: center;\n width: ${({ isCreate }) => (isCreate ? \"100%\" : DRAWER_CONTENT_WIDTH)};\n justify-content: flex-end;\n box-sizing: border-box;\n gap: 18px;\n`;\nconst HR = styled.hr`\n width: 100%;\n margin: 0;\n border-bottom: none;\n border: 1px solid ${({ theme }) => theme.colors.global.line.Line1};\n`;\n\nexport const EditStrategy: React.FC<EditStrategyProps> = ({\n isCreate,\n onSave,\n onCancel,\n navBack,\n}) => {\n const {\n position,\n autoCompoundError,\n txnSetting,\n isStrategyNotChanged,\n setTxnSetting,\n getTriggerPayload,\n useInit,\n } = useEditStrategyContext();\n const { networkId } = useNetwork();\n const { globalSlippage, setGlobalSlippage } = useGlobalSlippage();\n\n const { mutate } = useFetchAllChainUserTriggers();\n useInit();\n\n useOnNetworkAccountChange(() => {\n onCancel();\n });\n\n const {\n ifAuthorized,\n isAOStatusLoading: isAOLoading,\n safeToggleAOStatus: enableAO,\n } = useAOStore();\n const {\n isLoading: isRequesting,\n signAndCreateTrigger,\n signAndUpdateTrigger,\n } = useSignAndCUDTrigger();\n const [isEditingTrigger, setIsEditingTrigger] = useState(true); //create trigger\n const [editMode, setEditMode] = useState<StrategyTriggerEditType>(); //edit trigger\n const { mutate: mutateStakePositionIds } = useFetchStakePositionsIds();\n const { stakePool, staked, setStaked } = useUnstakePositionContext();\n\n const handleClickConfirm = useEventCallback(async () => {\n if (!ifAuthorized) {\n enableAO();\n return;\n }\n const payload = getTriggerPayload(isCreate);\n try {\n if (isCreate) {\n await signAndCreateTrigger({\n payload: payload as CreateTriggerPayload,\n successTip: `You have successfully set up a recurring rebalance strategy for your ${position.tokenA.ticker}-${position.tokenB.ticker} position.`,\n });\n } else {\n await signAndUpdateTrigger({\n payload: payload as UpdateTriggerPayload,\n successTip: `You have successfully updated a recurring rebalance strategy for your ${position.tokenA.ticker}-${position.tokenB.ticker} position.`,\n });\n }\n\n mutate();\n onSave();\n } catch (err) {\n console.log(err);\n }\n });\n const onDeleteStrategy = useCallback(() => navBack(), [navBack]);\n\n const showLoading = isAOLoading || isRequesting;\n\n const confirmButtonLabel = useMemo(() => {\n if (showLoading) {\n return <Spinner />;\n }\n if (isCreate ? isEditingTrigger : !!editMode) {\n return \"You need to save trigger to rebalance\";\n }\n if (autoCompoundError) {\n return autoCompoundError;\n }\n if (!ifAuthorized) {\n return \"Authorize Operator\";\n }\n\n return isCreate ? (\n <>\n Create Strategy\n <RecurringRebalanceFeePopover\n hint={`Aperture charges $${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 for each rebalance.`}\n defaultPosition={{ right: -24, bottom: 36 }}\n />\n </>\n ) : (\n \"Update Strategy\"\n );\n }, [\n showLoading,\n isEditingTrigger,\n editMode,\n autoCompoundError,\n ifAuthorized,\n isCreate,\n ]);\n\n const disableConfirm =\n (isCreate ? isEditingTrigger : !!editMode) ||\n showLoading ||\n !!autoCompoundError ||\n (isStrategyNotChanged && ifAuthorized);\n\n return (\n <FlexColumnBox>\n <EditContentWrapper isCreate={isCreate}>\n <Content gap=\"xl\" isCreate={isCreate}>\n <PositionInfoCard isCreate={isCreate} />\n <HR />\n {isCreate ? (\n <TriggerCondition\n isEditing={isEditingTrigger}\n toggleEdit={() => setIsEditingTrigger(!isEditingTrigger)}\n />\n ) : (\n <EditTriggerCondition\n editMode={editMode}\n setEditMode={setEditMode}\n onDeleteStrategy={onDeleteStrategy}\n />\n )}\n <HR />\n <AdvancedSettings\n isCreate={isCreate}\n bg={darkColors.global.background.BG2}\n />\n </Content>\n </EditContentWrapper>\n <StrategyFooter isCreate={isCreate}>\n <TransactionSettings\n defaultSlippage={DEFAULT_REBALANCE_SLIPPAGE}\n globalSlippage={globalSlippage}\n warningSlippage={WARNING_SLIPPAGE}\n dropdownPosition=\"topRight\"\n buttonSize={\"small\"}\n settingsForm={txnSetting}\n onFormChange={setTxnSetting}\n setGlobalSlippage={(value) =>\n setGlobalSlippage((prev) => ({ ...prev, [networkId]: value }))\n }\n />\n <ButtonsGroup\n width={isCreate ? \"250px\" : \"100%\"}\n disableConfirm={disableConfirm}\n addConfirmWrapper={!(stakePool && staked)}\n confirmText={\n stakePool && staked ? (\n <UnstakePositionBtn\n key={position.positionId}\n width={isCreate ? \"250px\" : \"100%\"}\n atStake={staked}\n gaugeAddress={stakePool.gaugeAddress}\n positionId={position.positionIdBN}\n handleTxSuccess={() => {\n setStaked(false);\n mutateStakePositionIds();\n }}\n />\n ) : (\n confirmButtonLabel\n )\n }\n onConfirm={handleClickConfirm}\n onCancel={onCancel}\n />\n </StrategyFooter>\n </FlexColumnBox>\n );\n};\n","import { usePage } from \"@/components/PageContext/PageContext\";\nimport { IPositionDetails } from \"@/config/position/positionConfig\";\nimport { getTokenPercentages } from \"@/helper/tokenHelper\";\nimport { CommonQueryKey } from \"@/utils/browserHistory\";\nimport { getFormattedPriceRange } from \"@/views/ActivePositions/getPositionCardProps\";\nimport { ITokenPair } from \"@aperture/types\";\nimport {\n CurrentPositionInfoCard,\n CurrentPositionInfoCardProps,\n} from \"@aperture/uikit\";\nimport { NextRouter, useRouter } from \"next/router\";\nimport { useMemo } from \"react\";\nimport { useEditStrategyContext } from \"./Context\";\n\nexport const PositionInfoCard: React.FC<{\n isCreate?: boolean;\n}> = ({ isCreate }) => {\n const router = useRouter();\n const { setPositionPage } = usePage();\n const { tokens, position } = useEditStrategyContext();\n const positionProps = useMemo(\n () => ({\n ...convertPositionToProps(position, tokens, isCreate),\n goToDetail: () =>\n navToPositionDetail(\n router,\n `${position.chainId}-${position.positionId}`\n ),\n addLiquidity: () => {\n setPositionPage(\"addLP\");\n navToPositionDetail(\n router,\n `${position.chainId}-${position.positionId}`\n );\n },\n // TODO: Add notification\n }),\n [isCreate, position, router, setPositionPage, tokens]\n );\n\n return <CurrentPositionInfoCard {...positionProps} />;\n};\n\nfunction convertPositionToProps(\n position: IPositionDetails,\n tokens: ITokenPair,\n lite?: boolean\n): CurrentPositionInfoCardProps {\n const tokenPercentages = getTokenPercentages(\n tokens[0].amount,\n tokens[1].amount,\n tokens[0].price,\n tokens[1].price\n );\n\n return {\n lite,\n id: position.positionId,\n tokens: tokens,\n feeTier: position?.feeTier,\n priceRange: getFormattedPriceRange(position.minPrice, position.maxPrice),\n liquidity: !lite ? position.liquidity : undefined,\n liquidityDetails: lite\n ? {\n amounts: [tokens[0].amount, tokens[1].amount],\n percentages: [\n tokenPercentages.token0Percent,\n tokenPercentages.token1Percent,\n ],\n }\n : undefined,\n };\n}\n\nfunction navToPositionDetail(router: NextRouter, pid: string) {\n router.push({\n pathname: \"/liquidity-management\",\n query: {\n [CommonQueryKey.PID]: pid,\n },\n });\n}\n","import { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { StrategyTriggerDetail, TriggerType } from \"@aperture/uikit\";\nimport { DualTriggerSetup, IDualTriggerState } from \"@ui/components/Strategy\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useEditStrategyContext } from \"./Context\";\nimport {\n convertClientToTriggerCondition,\n convertToTriggerAction,\n getDefaultStrategyAction,\n} from \"./utils\";\n\ninterface TriggerConditionProps {\n isEditing: boolean;\n toggleEdit: () => void;\n}\n\nexport const TriggerCondition: React.FC<TriggerConditionProps> = ({\n isEditing,\n toggleEdit,\n}) => {\n const { networkId } = useNetwork();\n const {\n setTriggerCondition,\n setTriggerAction,\n tokens,\n tokenMarketPrice,\n position,\n } = useEditStrategyContext();\n const [clientTrigger, setClientTrigger] = useState<IDualTriggerState>(null);\n const [tokenSpotPrice, setTokenSpotPrice] =\n useState<[string, string]>(undefined);\n\n const defaultAction = useMemo(\n () =>\n getDefaultStrategyAction(\n networkId,\n position,\n tokens,\n tokenMarketPrice.tokenA\n ),\n [networkId, position, tokens, tokenMarketPrice]\n );\n\n useEffect(() => {\n if (tokenSpotPrice) return;\n\n if (tokenMarketPrice.tokenA !== \"0\" && tokenMarketPrice.tokenB !== \"0\") {\n setTokenSpotPrice([tokenMarketPrice.tokenA, tokenMarketPrice.tokenB]);\n }\n }, [tokenMarketPrice.tokenA, tokenMarketPrice.tokenB, tokenSpotPrice]);\n\n const tokenRatio = useMemo(\n () => Math.floor(tokens[0].getTokenValueProportion().mul(10000).toNumber()),\n [tokens]\n );\n\n const handleSave = (data: IDualTriggerState) => {\n const timeBufferInvalid =\n data.timeBufferChecked && parseFloat(data.timeBuffer || \"0\") === 0;\n const validatedData = {\n ...data,\n timeBufferChecked: timeBufferInvalid ? false : data.timeBufferChecked,\n };\n setClientTrigger(validatedData);\n\n const swapLteGteActions =\n data.baseToken === 1 && data.triggerType !== TriggerType.PRICE;\n const converted = convertClientToTriggerCondition(validatedData, position);\n setTriggerCondition((prev) => {\n return {\n ...converted,\n ...(prev?.sqrtPriceX96 && {\n sqrtPriceX96: prev.sqrtPriceX96, //should only set sqrtPriceX96 when create?\n }),\n };\n });\n setTriggerAction((prev) => ({\n maxGasProportion: prev.maxGasProportion,\n slippage: prev.slippage,\n strategyId: prev.strategyId,\n ...convertToTriggerAction(\n data.aboveAction,\n data.belowAction,\n swapLteGteActions\n ),\n }));\n toggleEdit();\n };\n\n return isEditing ? (\n <DualTriggerSetup\n tokens={tokens}\n tokenSpotPrice={tokenSpotPrice}\n tokenMarketPrice={tokenMarketPrice}\n tickSpacing={position.tickSpacing}\n defaultAction={defaultAction}\n tokenRatio={tokenRatio}\n onSave={handleSave}\n initForm={clientTrigger}\n />\n ) : (\n <StrategyTriggerDetail\n tokens={tokens}\n trigger={clientTrigger}\n onEdit={toggleEdit}\n />\n );\n};\n","export * from \"./AdvancedSettings\";\nexport * from \"./ButtonGroups\";\nexport * from \"./Context\";\nexport * from \"./Edit\";\nexport * from \"./PositionInfoCard\";\nexport * from \"./TriggerCondition\";\nexport * from \"./utils\";\n"],"names":["useOnCondition","condition","callback","cb","useEventCallback","useEffect","getDefaultStrategyAction","networkId","position","tokens","tokenMarketPrice0","tickCurrent","priceToClosestUsableTick","parsePrice","Token","address","decimals","ticker","name","undefined","tickSpacing","actionTickLower","tickLower","actionTickUpper","tickUpper","rangeWidth","percentLower","offsetTickToPercentage","percentUpper","priceLower","bigDecimal","Number","priceUpper","token0USDAmount","amount","price","token1USDAmount","ratioDemonimator","ratioLower","toString","ratioUpper","convertClientToTriggerCondition","trigger","baseToken","triggerType","timeBuffer","above","below","timeBufferChecked","aboveChecked","belowChecked","common","sqrtPriceX96","priceToSqrtRatioX96","Big","tokenA","durationSec","parseFloat","gteEnabled","lteEnabled","TriggerType","type","gteTickOffset","percentageToOffsetTick","lteTickOffset","gtePriceOffset","ltePriceOffset","token0RatioAbove","toFixed","token0RatioBelow","gteToken0ValueProportion","lteToken0ValueProportion","convertToTriggerAction","aboveAction","belowAction","swapLteGte","lteAction","getDualAction","gteAction","ActionTypeEnum","action","Object","entries","reduce","acc","key","value","param","includes","StrategyContext","React","StrategyProvider","initRef","children","props","useRef","autoCompound","ammEnum","useNetwork","useAccount","currentTokenPrice","tokenPriceList","useCurrentChainToken","useMemo","tokenB","poolKey","feeTier","data","marketPrice","useFetchCurrentChainMarketPrice","tokenMarketPrice","triggerCondition","setTriggerCondition","useState","triggerAction","setTriggerAction","globalSlippage","useGlobalSlippage","autoCompoundPayload","setAutoCompoundPayload","getInitAutoCompoundPayload","liquidity","enableAutoCompound","setEnableAutoCompound","txnSetting","setTxnSetting","resetTxnSetting","useTransactionSettingForms","init","slippage","DEFAULT_REBALANCE_SLIPPAGE","deadline","useCallback","_triggerAction","isConditionNotChanged","_","current","isActionNotChanged","autoCompoundError","gasCeilingButtonError","maxGasProportion","getTriggerPayload","ownerAddr","chainId","expiration","getTriggerDeadline","isCreate","amm","nftId","positionId","payload","taskId","useInit","useFetch","prev","jsx_runtime","jsx","Provider","autoCompoundExists","setAutoCompound","isTriggerLoaded","isStrategyNotChanged","useEditStrategyContext","usePositionStrategy","usePositionAutoCompound","feeToPrincipalRatioThreshold","getGasCeiling","DEFAULT_SLIPPAGE","AdvancedSettings","bg","setGlobalSlippage","applyGlobally","setApplyGlobally","gasCeiling","minFees","maxGasFee","handleGasCeilingChange","handleAutoCompoundChange","percentage","handleAcGasCeilingChange","handleAcMaxGasChange","handleAcSlippageChange","handleOnError","gasCeilingInputError","StrategyAdvancedSettings","expanded","hideAutoCompound","disableAutoCompound","onChange","onError","acGasCeiling","acMaxGasFee","acSlippage","defaultValue","globalValue","warningValue","WARNING_SLIPPAGE","onSlippageChange","onApplyGlobally","checked","ButtonItem","styled","Button","black","theme","colors","global","text","T1","textAlt","background","BG3","primary","BG4","ButtonsGroup","cancelText","confirmText","addConfirmWrapper","disableConfirm","width","minWidth","onCancel","onConfirm","jsxs","Fragment","size","variant","onClick","color","disabled","strings","timeBufferLabel","timeBufferPopover","Wrapper","spacing","lg","radii","md2","line","Line2","Title","EditTriggerCondition","editMode","setEditMode","onDeleteStrategy","state","setModalState","useModal","modalRef","isOpen","isDeleteStrategyModalOpen","DELETE_STRATEGY_MODAL","isDeleteTriggerModalOpen","DELETE_TRIGGER_MODAL","isDiscardEditModalOpen","DISCARD_TRIGGER_EDIT_MODAL","clientTrigger","setClientTrigger","setData","triggerList","setTriggerList","addTrigger","setAddTrigger","triggerId","setTriggerId","tokenRatio","Math","floor","getTokenValueProportion","mul","toNumber","ref","isEditing","convertTriggerConditionToClient","trimNumber","RecurringConditionTypeEnum","concat","isAboveEdit","StrategyTriggerEditType","tokenSpotPrice","setTokenSpotPrice","isDualAction","strategyId","getActionType","generateTriggerList","triggers","push","id","defaultForm","emptyDualTriggerForm","getDefaultCacheForm","handleSave","timeBufferInvalid","t","editedData","converted","updatedList","map","handleDelete","isAbove","updatedData","filter","handleEdit","handleAddTrigger","toggleDeleteStartegyModal","E_ModalKey","open","toggleDeleteTriggerModal","toggleDiscardEditModal","handleDeleteTrigger","isLastTrigger","length","handleClickOutside","contains","event","target","stopPropagation","useClickOutside","initForm","defaultAction","FlexColumn","gap","idx","EditTrigger","triggerIdx","onSave","onDiscard","isAddTrigger","EditTriggerDetail","onEdit","onDelete","onAddTrigger","Flex","alignItems","justifyContent","StyledQuestionPopover","content","defaultSize","defaultPosition","left","bottom","StyledInputWithTicker","align","placeholder","onBlur","MAX_TIME_BUFFER","height","StyledNotification","notificationVariants","getTriggerNotification","Modal","padding","isModalOpen","onClose","DeleteStrategyModal","isDeletingLastTrigger","DualTriggerContent","E_StrategyModalType","FlexColumnBox","EditContentWrapper","Content","DRAWER_CONTENT_WIDTH","StrategyFooter","HR","Line1","EditStrategy","navBack","mutate","useFetchAllChainUserTriggers","useOnNetworkAccountChange","ifAuthorized","isAOStatusLoading","isAOLoading","safeToggleAOStatus","enableAO","useAOStore","isLoading","isRequesting","signAndCreateTrigger","signAndUpdateTrigger","useSignAndCUDTrigger","isEditingTrigger","setIsEditingTrigger","mutateStakePositionIds","useFetchStakePositionsIds","stakePool","staked","setStaked","useUnstakePositionContext","handleClickConfirm","successTip","err","console","log","showLoading","confirmButtonLabel","Spinner","RecurringRebalanceFeePopover","hint","DEFAULT_APERTURE_FLAT_FEE","DEFAULT_APERTURE_REINVEST_FEE","DEFAULT_APERTURE_REBALANCE_FEE","right","PositionInfoCard","TriggerCondition","toggleEdit","darkColors","TransactionSettings","defaultSlippage","warningSlippage","dropdownPosition","buttonSize","settingsForm","onFormChange","UnstakePositionBtn","atStake","gaugeAddress","positionIdBN","handleTxSuccess","router","useRouter","setPositionPage","usePage","positionProps","convertPositionToProps","lite","tokenPercentages","getTokenPercentages","priceRange","getFormattedPriceRange","minPrice","maxPrice","liquidityDetails","amounts","percentages","token0Percent","token1Percent","goToDetail","navToPositionDetail","addLiquidity","CurrentPositionInfoCard","pid","pathname","query","CommonQueryKey","validatedData","swapLteGteActions","DualTriggerSetup","StrategyTriggerDetail"],"sourceRoot":""}