Skip to content

Commit

Permalink
Merge pull request #408 from balancer/370-parse-error-signatures-comi…
Browse files Browse the repository at this point in the history
…ng-from-sc

chore: Append vault and vault extension abis to any router interactions.
  • Loading branch information
johngrantuk committed Sep 6, 2024
2 parents f54809a + 75d88f0 commit 2af738f
Show file tree
Hide file tree
Showing 10 changed files with 119 additions and 19 deletions.
5 changes: 5 additions & 0 deletions .changeset/nine-pandas-judge.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@balancer/sdk": patch
---

Add vault and vault extension abis to any router interactions to enable decoded error messages.
Original file line number Diff line number Diff line change
@@ -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 (
Expand All @@ -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'],
});
Expand Down
Original file line number Diff line number Diff line change
@@ -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 (
Expand All @@ -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'],
});
Expand Down
Original file line number Diff line number Diff line change
@@ -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 (
Expand All @@ -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'],
});
Expand Down
14 changes: 12 additions & 2 deletions src/entities/addLiquidityNested/doAddLiquidityNestedQuery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -24,7 +29,12 @@ export const doAddLiquidityNestedQuery = async (
});

const result = decodeFunctionResult({
abi: balancerRelayerAbi,
abi: [
...balancerRelayerAbi,
...vaultV3Abi,
...vaultExtensionV3Abi,
...permit2Abi,
],
functionName: 'vaultActionsQueryMulticall',
data: data as Hex,
});
Expand Down
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -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'],
});
Expand Down
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -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],
});
Expand Down
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -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'],
});
Expand Down
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -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'],
});
Expand Down
21 changes: 18 additions & 3 deletions src/entities/swap/swaps/v3/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,12 @@ import {
MAX_UINT256,
CHAINS,
} from '../../../../utils';
import { balancerRouterAbi } from '../../../../abi';
import {
balancerRouterAbi,
permit2Abi,
vaultExtensionV3Abi,
vaultV3Abi,
} from '../../../../abi';
import {
ExactInQueryOutput,
ExactOutQueryOutput,
Expand Down Expand Up @@ -106,7 +111,12 @@ export class SwapV3 implements SwapBase {
): Promise<ExactInQueryOutput | ExactOutQueryOutput> {
const routerContract = getContract({
address: BALANCER_ROUTER[this.chainId],
abi: balancerRouterAbi,
abi: [
...balancerRouterAbi,
...vaultV3Abi,
...vaultExtensionV3Abi,
...permit2Abi,
],
client,
});
if ('exactAmountIn' in this.swaps) {
Expand Down Expand Up @@ -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,
});
/*
Expand Down

0 comments on commit 2af738f

Please sign in to comment.