diff --git a/.changeset/nine-pandas-judge.md b/.changeset/nine-pandas-judge.md new file mode 100644 index 00000000..58fbd8b3 --- /dev/null +++ b/.changeset/nine-pandas-judge.md @@ -0,0 +1,5 @@ +--- +"@balancer/sdk": patch +--- + +Add vault and vault extension abis to any router interactions to enable decoded error messages. diff --git a/src/entities/addLiquidity/addLiquidityV3/doAddLiquidityProportionalQuery.ts b/src/entities/addLiquidity/addLiquidityV3/doAddLiquidityProportionalQuery.ts index 26ce916b..4c60ac11 100644 --- a/src/entities/addLiquidity/addLiquidityV3/doAddLiquidityProportionalQuery.ts +++ b/src/entities/addLiquidity/addLiquidityV3/doAddLiquidityProportionalQuery.ts @@ -1,7 +1,12 @@ import { createPublicClient, http } from 'viem'; import { AddLiquidityProportionalInput } from '../types'; import { BALANCER_ROUTER, CHAINS } from '@/utils'; -import { balancerRouterAbi } from '@/abi'; +import { + balancerRouterAbi, + permit2Abi, + vaultExtensionV3Abi, + vaultV3Abi, +} from '@/abi'; import { Address } from '@/types'; export const doAddLiquidityProportionalQuery = async ( @@ -16,7 +21,12 @@ export const doAddLiquidityProportionalQuery = async ( const { result: amountsIn } = await client.simulateContract({ address: BALANCER_ROUTER[chainId], - abi: balancerRouterAbi, + abi: [ + ...balancerRouterAbi, + ...vaultV3Abi, + ...vaultExtensionV3Abi, + ...permit2Abi, + ], functionName: 'queryAddLiquidityProportional', args: [poolAddress, bptOut, '0x'], }); diff --git a/src/entities/addLiquidity/addLiquidityV3/doAddLiquiditySingleTokenQuery.ts b/src/entities/addLiquidity/addLiquidityV3/doAddLiquiditySingleTokenQuery.ts index 39f9214b..db88f2f8 100644 --- a/src/entities/addLiquidity/addLiquidityV3/doAddLiquiditySingleTokenQuery.ts +++ b/src/entities/addLiquidity/addLiquidityV3/doAddLiquiditySingleTokenQuery.ts @@ -1,7 +1,12 @@ import { createPublicClient, http } from 'viem'; import { AddLiquiditySingleTokenInput } from '../types'; import { BALANCER_ROUTER, CHAINS } from '@/utils'; -import { balancerRouterAbi } from '@/abi'; +import { + balancerRouterAbi, + permit2Abi, + vaultExtensionV3Abi, + vaultV3Abi, +} from '@/abi'; import { Address } from '@/types'; export const doAddLiquiditySingleTokenQuery = async ( @@ -16,7 +21,12 @@ export const doAddLiquiditySingleTokenQuery = async ( const { result: amountIn } = await client.simulateContract({ address: BALANCER_ROUTER[chainId], - abi: balancerRouterAbi, + abi: [ + ...balancerRouterAbi, + ...vaultV3Abi, + ...vaultExtensionV3Abi, + ...permit2Abi, + ], functionName: 'queryAddLiquiditySingleTokenExactOut', args: [poolAddress, tokenIn, bptOut, '0x'], }); diff --git a/src/entities/addLiquidity/addLiquidityV3/doAddLiquidityUnbalancedQuery.ts b/src/entities/addLiquidity/addLiquidityV3/doAddLiquidityUnbalancedQuery.ts index dae017fc..2c20149f 100644 --- a/src/entities/addLiquidity/addLiquidityV3/doAddLiquidityUnbalancedQuery.ts +++ b/src/entities/addLiquidity/addLiquidityV3/doAddLiquidityUnbalancedQuery.ts @@ -1,7 +1,12 @@ import { createPublicClient, http } from 'viem'; import { AddLiquidityUnbalancedInput } from '../types'; import { BALANCER_ROUTER, CHAINS } from '@/utils'; -import { balancerRouterAbi } from '@/abi'; +import { + balancerRouterAbi, + permit2Abi, + vaultExtensionV3Abi, + vaultV3Abi, +} from '@/abi'; import { Address } from '@/types'; export const doAddLiquidityUnbalancedQuery = async ( @@ -16,7 +21,12 @@ export const doAddLiquidityUnbalancedQuery = async ( const { result: bptAmountOut } = await client.simulateContract({ address: BALANCER_ROUTER[chainId], - abi: balancerRouterAbi, + abi: [ + ...balancerRouterAbi, + ...vaultV3Abi, + ...vaultExtensionV3Abi, + ...permit2Abi, + ], functionName: 'queryAddLiquidityUnbalanced', args: [poolAddress, maxAmountsIn, '0x'], }); diff --git a/src/entities/addLiquidityNested/doAddLiquidityNestedQuery.ts b/src/entities/addLiquidityNested/doAddLiquidityNestedQuery.ts index 063a1e70..8dfe2ba7 100644 --- a/src/entities/addLiquidityNested/doAddLiquidityNestedQuery.ts +++ b/src/entities/addLiquidityNested/doAddLiquidityNestedQuery.ts @@ -6,7 +6,12 @@ import { } from 'viem'; import { Hex } from '../../types'; import { BALANCER_RELAYER, CHAINS, ChainId } from '../../utils'; -import { balancerRelayerAbi } from '../../abi'; +import { + balancerRelayerAbi, + permit2Abi, + vaultExtensionV3Abi, + vaultV3Abi, +} from '../../abi'; export const doAddLiquidityNestedQuery = async ( chainId: ChainId, @@ -24,7 +29,12 @@ export const doAddLiquidityNestedQuery = async ( }); const result = decodeFunctionResult({ - abi: balancerRelayerAbi, + abi: [ + ...balancerRelayerAbi, + ...vaultV3Abi, + ...vaultExtensionV3Abi, + ...permit2Abi, + ], functionName: 'vaultActionsQueryMulticall', data: data as Hex, }); diff --git a/src/entities/removeLiquidity/removeLiquidityV3/doRemoveLiquidityProportionalQuery.ts b/src/entities/removeLiquidity/removeLiquidityV3/doRemoveLiquidityProportionalQuery.ts index af4fc3b3..65e7dc50 100644 --- a/src/entities/removeLiquidity/removeLiquidityV3/doRemoveLiquidityProportionalQuery.ts +++ b/src/entities/removeLiquidity/removeLiquidityV3/doRemoveLiquidityProportionalQuery.ts @@ -1,4 +1,9 @@ -import { balancerRouterAbi } from '@/abi'; +import { + balancerRouterAbi, + permit2Abi, + vaultExtensionV3Abi, + vaultV3Abi, +} from '@/abi'; import { BALANCER_ROUTER, CHAINS } from '@/utils'; import { createPublicClient, http } from 'viem'; import { RemoveLiquidityProportionalInput } from '../types'; @@ -14,7 +19,12 @@ export const doRemoveLiquidityProportionalQuery = async ( }); const { result: amountsOut } = await client.simulateContract({ address: BALANCER_ROUTER[chainId], - abi: balancerRouterAbi, + abi: [ + ...balancerRouterAbi, + ...vaultV3Abi, + ...vaultExtensionV3Abi, + ...permit2Abi, + ], functionName: 'queryRemoveLiquidityProportional', args: [poolAddress, bptIn.rawAmount, '0x'], }); diff --git a/src/entities/removeLiquidity/removeLiquidityV3/doRemoveLiquidityRecoveryQuery.ts b/src/entities/removeLiquidity/removeLiquidityV3/doRemoveLiquidityRecoveryQuery.ts index a31d4cb1..a7df806c 100644 --- a/src/entities/removeLiquidity/removeLiquidityV3/doRemoveLiquidityRecoveryQuery.ts +++ b/src/entities/removeLiquidity/removeLiquidityV3/doRemoveLiquidityRecoveryQuery.ts @@ -1,4 +1,9 @@ -import { balancerRouterAbi } from '@/abi'; +import { + balancerRouterAbi, + permit2Abi, + vaultExtensionV3Abi, + vaultV3Abi, +} from '@/abi'; import { BALANCER_ROUTER, CHAINS } from '@/utils'; import { createPublicClient, http } from 'viem'; import { RemoveLiquidityRecoveryInput } from '../types'; @@ -16,7 +21,12 @@ export const doRemoveLiquidityRecoveryQuery = async ( const { result: amountsOut } = await client.simulateContract({ address: BALANCER_ROUTER[chainId], - abi: balancerRouterAbi, + abi: [ + ...balancerRouterAbi, + ...vaultV3Abi, + ...vaultExtensionV3Abi, + ...permit2Abi, + ], functionName: 'queryRemoveLiquidityRecovery', args: [poolAddress, bptIn.rawAmount], }); diff --git a/src/entities/removeLiquidity/removeLiquidityV3/doRemoveLiquiditySingleTokenExactInQuery.ts b/src/entities/removeLiquidity/removeLiquidityV3/doRemoveLiquiditySingleTokenExactInQuery.ts index 55219337..36562dee 100644 --- a/src/entities/removeLiquidity/removeLiquidityV3/doRemoveLiquiditySingleTokenExactInQuery.ts +++ b/src/entities/removeLiquidity/removeLiquidityV3/doRemoveLiquiditySingleTokenExactInQuery.ts @@ -1,4 +1,9 @@ -import { balancerRouterAbi } from '@/abi'; +import { + balancerRouterAbi, + permit2Abi, + vaultExtensionV3Abi, + vaultV3Abi, +} from '@/abi'; import { BALANCER_ROUTER, CHAINS } from '@/utils'; import { createPublicClient, http } from 'viem'; import { RemoveLiquiditySingleTokenExactInInput } from '../types'; @@ -19,7 +24,12 @@ export const doRemoveLiquiditySingleTokenExactInQuery = async ( }); const { result: amountOut } = await client.simulateContract({ address: BALANCER_ROUTER[chainId], - abi: balancerRouterAbi, + abi: [ + ...balancerRouterAbi, + ...vaultV3Abi, + ...vaultExtensionV3Abi, + ...permit2Abi, + ], functionName: 'queryRemoveLiquiditySingleTokenExactIn', args: [poolAddress, bptIn.rawAmount, tokenOut, '0x'], }); diff --git a/src/entities/removeLiquidity/removeLiquidityV3/doRemoveLiquiditySingleTokenExactOutQuery.ts b/src/entities/removeLiquidity/removeLiquidityV3/doRemoveLiquiditySingleTokenExactOutQuery.ts index d7647436..665a6271 100644 --- a/src/entities/removeLiquidity/removeLiquidityV3/doRemoveLiquiditySingleTokenExactOutQuery.ts +++ b/src/entities/removeLiquidity/removeLiquidityV3/doRemoveLiquiditySingleTokenExactOutQuery.ts @@ -1,4 +1,9 @@ -import { balancerRouterAbi } from '@/abi'; +import { + balancerRouterAbi, + permit2Abi, + vaultExtensionV3Abi, + vaultV3Abi, +} from '@/abi'; import { BALANCER_ROUTER, CHAINS } from '@/utils'; import { createPublicClient, http } from 'viem'; import { RemoveLiquiditySingleTokenExactOutInput } from '../types'; @@ -14,7 +19,12 @@ export const doRemoveLiquiditySingleTokenExactOutQuery = async ( }); const { result: bptIn } = await client.simulateContract({ address: BALANCER_ROUTER[chainId], - abi: balancerRouterAbi, + abi: [ + ...balancerRouterAbi, + ...vaultV3Abi, + ...vaultExtensionV3Abi, + ...permit2Abi, + ], functionName: 'queryRemoveLiquiditySingleTokenExactOut', args: [poolAddress, amountOut.address, amountOut.rawAmount, '0x'], }); diff --git a/src/entities/swap/swaps/v3/index.ts b/src/entities/swap/swaps/v3/index.ts index 5573a455..f4908091 100644 --- a/src/entities/swap/swaps/v3/index.ts +++ b/src/entities/swap/swaps/v3/index.ts @@ -15,7 +15,12 @@ import { MAX_UINT256, CHAINS, } from '../../../../utils'; -import { balancerRouterAbi } from '../../../../abi'; +import { + balancerRouterAbi, + permit2Abi, + vaultExtensionV3Abi, + vaultV3Abi, +} from '../../../../abi'; import { ExactInQueryOutput, ExactOutQueryOutput, @@ -106,7 +111,12 @@ export class SwapV3 implements SwapBase { ): Promise { const routerContract = getContract({ address: BALANCER_ROUTER[this.chainId], - abi: balancerRouterAbi, + abi: [ + ...balancerRouterAbi, + ...vaultV3Abi, + ...vaultExtensionV3Abi, + ...permit2Abi, + ], client, }); if ('exactAmountIn' in this.swaps) { @@ -194,7 +204,12 @@ export class SwapV3 implements SwapBase { // Note - batchSwaps are made via the Batch Router const batchRouterContract = getContract({ address: BALANCER_BATCH_ROUTER[this.chainId], - abi: balancerBatchRouterAbi, + abi: [ + ...balancerBatchRouterAbi, + ...vaultV3Abi, + ...vaultExtensionV3Abi, + ...permit2Abi, + ], client, }); /*