diff --git a/libs/oeth/swap/src/actions/index.ts b/libs/oeth/swap/src/actions/index.ts index 2053566be..044dd9e20 100644 --- a/libs/oeth/swap/src/actions/index.ts +++ b/libs/oeth/swap/src/actions/index.ts @@ -1,11 +1,12 @@ import defaultApi from './defaultApi'; import mintVault from './mintVault'; import redeemVault from './redeemVault'; +import swapCurve from './swapCurve'; import type { SwapAction, SwapApi } from '../types'; export const swapActions: Record = { - 'swap-curve': { ...defaultApi }, + 'swap-curve': { ...defaultApi, ...swapCurve }, 'swap-zapper': { ...defaultApi }, 'mint-vault': { ...defaultApi, ...mintVault }, 'redeem-vault': { ...defaultApi, ...redeemVault }, diff --git a/libs/oeth/swap/src/actions/swapCurve.ts b/libs/oeth/swap/src/actions/swapCurve.ts index dcbaafc1b..b7960bfa7 100644 --- a/libs/oeth/swap/src/actions/swapCurve.ts +++ b/libs/oeth/swap/src/actions/swapCurve.ts @@ -1,14 +1,29 @@ +import curve from '@curvefi/api'; import { isNilOrEmpty } from '@origin/shared/utils'; import { getAvailableRoutes } from '../utils'; import type { SwapApi, SwapState } from '../types'; +const ETHOETHCurvePool = 'factory-v2-298'; +const ETH = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE'; + const estimateAmount = async ({ tokenIn, tokenOut, amountIn }: SwapState) => { if (amountIn === 0n) { return 0n; } + const bals = await curve.router.getBestRouteAndOutput( + tokenIn.address ?? ETH, + tokenOut.address ?? ETH, + amountIn.toString(), + ); + + console.groupCollapsed('Curve'); + console.log(curve.getPool(ETHOETHCurvePool)); + console.log(bals); + console.groupEnd(); + return amountIn; }; diff --git a/libs/oeth/swap/src/constants.ts b/libs/oeth/swap/src/constants.ts index 63f4f26c7..56d395d15 100644 --- a/libs/oeth/swap/src/constants.ts +++ b/libs/oeth/swap/src/constants.ts @@ -48,12 +48,12 @@ export const swapRoutes = [ { tokenIn: tokens.mainnet.rETH, tokenOut: tokens.mainnet.OETH, - action: 'mint-vault', + action: 'swap-curve', }, { tokenIn: tokens.mainnet.rETH, tokenOut: tokens.mainnet.OETH, - action: 'swap-curve', + action: 'mint-vault', }, { tokenIn: tokens.mainnet.frxETH, diff --git a/libs/shared/providers/src/curve/state.ts b/libs/shared/providers/src/curve/state.ts index 4d1b31cc9..448c7e3f1 100644 --- a/libs/shared/providers/src/curve/state.ts +++ b/libs/shared/providers/src/curve/state.ts @@ -28,6 +28,7 @@ export const { Provider: CurveProvider, useTrackedState: useCurve } = }, { chainId: chain?.id ?? mainnet.id }, ); + await curve.factory.fetchPools(); setState(curve); }; @@ -47,6 +48,7 @@ export const { Provider: CurveProvider, useTrackedState: useCurve } = chainId: chain.id, }, ); + await curve.factory.fetchPools(); setState(curve); };