diff --git a/packages/nextjs/app/v3/_components/ChooseToken.tsx b/packages/nextjs/app/v3/_components/ChooseToken.tsx
index 570c82b8..3dcfb1ad 100644
--- a/packages/nextjs/app/v3/_components/ChooseToken.tsx
+++ b/packages/nextjs/app/v3/_components/ChooseToken.tsx
@@ -324,7 +324,6 @@ const BoostOpportunityModal = ({
const boostedVariantRateProvider = boostedVariant.priceRateProviderData?.address;
const handleBoost = (enableBoost: boolean) => {
- // TODO: more testing for rate provider UX
updateTokenConfig(tokenIndex, {
useBoostedVariant: enableBoost,
rateProvider:
diff --git a/packages/nextjs/app/v3/_components/ChooseTokens.tsx b/packages/nextjs/app/v3/_components/ChooseTokens.tsx
index cc0d913e..1f1f34e8 100644
--- a/packages/nextjs/app/v3/_components/ChooseTokens.tsx
+++ b/packages/nextjs/app/v3/_components/ChooseTokens.tsx
@@ -13,7 +13,6 @@ const MAX_TOKENS = {
export function ChooseTokens() {
const { tokenConfigs, poolType, updatePool } = usePoolCreationStore();
const { hasAgreedToWarning, updateUserData } = useUserDataStore();
- // const isProportional = useVerifyProportionalInit();
// Beware of javascript floating point precision issues if 100 % number of tokens is not equal to zero
function handleAddToken() {
diff --git a/packages/nextjs/app/v3/_components/PoolDetails.tsx b/packages/nextjs/app/v3/_components/PoolDetails.tsx
index 24ce82f5..82389664 100644
--- a/packages/nextjs/app/v3/_components/PoolDetails.tsx
+++ b/packages/nextjs/app/v3/_components/PoolDetails.tsx
@@ -258,7 +258,7 @@ function TokenDetails({ token }: { token: TokenConfig }) {
)}
-
{token.amount}
+ {token.amount.length > 15 ? `${token.amount.slice(0, 15)}...` : token.amount}
{token.rateProvider && token.rateProvider !== zeroAddress && (
<>
diff --git a/packages/nextjs/app/v3/_components/UserExperienceAlerts.tsx b/packages/nextjs/app/v3/_components/UserExperienceAlerts.tsx
new file mode 100644
index 00000000..93a8a185
--- /dev/null
+++ b/packages/nextjs/app/v3/_components/UserExperienceAlerts.tsx
@@ -0,0 +1,86 @@
+import { useState } from "react";
+import Link from "next/link";
+import { ArrowUpRightIcon, XMarkIcon } from "@heroicons/react/24/outline";
+import { Alert } from "~~/components/common";
+import { usePoolCreationStore } from "~~/hooks/v3";
+
+export function UserExperienceAlerts() {
+ const [isInfoAlertVisible, setIsInfoAlertVisible] = useState(true);
+ const { chain } = usePoolCreationStore();
+
+ return (
+ <>
+ {!chain && (
+
+
+
+
+ Make sure you switch to your desired network before beginning pool creation. You cannot switch after
+ selecting pool type unless you reset progress
+
+
+
+
+
+ )}
+ {isInfoAlertVisible && (
+
+
+
+
+ For tips and guidance on pool configuration and creation, check out our
+
+ partner onboarding documentation
+
+
+
+
setIsInfoAlertVisible(false)}
+ className="absolute top-3 right-3 p-1 rounded-full transition-colors text-neutral-700"
+ >
+
+
+
+
+ )}
+ >
+ );
+}
+
+export function ConnectWalletAlert() {
+ return (
+
+
+
+
+ Please connect a wallet and switch to the network you wish to create a pool
+
+
+
+
+
+ );
+}
+
+export function StartedOnDifferentNetworkAlert() {
+ const { chain } = usePoolCreationStore();
+
+ return (
+
+
+
+
+ You have already begun the pool configuration process on {chain?.name}. If you wish to start creating a pool
+ on a different network, choose reset progress after switching back to {chain?.name}.
+
+
+
+
+
+ );
+}
diff --git a/packages/nextjs/app/v3/_components/index.tsx b/packages/nextjs/app/v3/_components/index.tsx
index abcbaed8..62e3ce0f 100644
--- a/packages/nextjs/app/v3/_components/index.tsx
+++ b/packages/nextjs/app/v3/_components/index.tsx
@@ -6,3 +6,4 @@ export * from "./ChooseParameters";
export * from "./ChooseInfo";
export * from "./PoolCreationManager";
export * from "./ApproveOnTokenManager";
+export * from "./UserExperienceAlerts";
diff --git a/packages/nextjs/app/v3/page.tsx b/packages/nextjs/app/v3/page.tsx
index 3fbddf4d..c9be7a1a 100644
--- a/packages/nextjs/app/v3/page.tsx
+++ b/packages/nextjs/app/v3/page.tsx
@@ -1,17 +1,23 @@
"use client";
-import { useState } from "react";
-import Link from "next/link";
-import { PoolConfiguration, PoolDetails } from "./_components";
+import {
+ ConnectWalletAlert,
+ PoolConfiguration,
+ PoolDetails,
+ StartedOnDifferentNetworkAlert,
+ UserExperienceAlerts,
+} from "./_components";
import type { NextPage } from "next";
-import { ArrowUpRightIcon, XMarkIcon } from "@heroicons/react/24/outline";
+import { useWalletClient } from "wagmi";
import { BalancerLogo } from "~~/components/assets/BalancerLogo";
import { Alert, ContactSupportModal, PoolStateResetModal } from "~~/components/common";
import { useTargetNetwork } from "~~/hooks/scaffold-eth/useTargetNetwork";
-import { usePoolCreationStore, useUserDataStore, useValidateNetwork } from "~~/hooks/v3";
+import { usePoolCreationStore, useUserDataStore } from "~~/hooks/v3";
const BalancerV3: NextPage = () => {
const { clearPoolStore, chain } = usePoolCreationStore();
+ const { targetNetwork: selectedNetwork } = useTargetNetwork();
+ const { data: walletClient } = useWalletClient();
const { clearUserData } = useUserDataStore();
return (
@@ -23,44 +29,50 @@ const BalancerV3: NextPage = () => {
Balancer v3
-
+ {!walletClient ? (
+
+ ) : chain && selectedNetwork.id !== chain.id ? (
+
+ ) : (
+ <>
+
- <>
-
-
+
+
-
-
-
Pool Preview
- {chain && (
-
- {chain?.name}
-
- )}
-
-
-
-
-
·
-
{
- clearPoolStore();
- clearUserData();
- }}
- />
+
+
+
Pool Preview
+ {chain && (
+
+ {chain?.name}
+
+ )}
+
+
+
+
+
·
+
{
+ clearPoolStore();
+ clearUserData();
+ }}
+ />
+
-
-
-
- Pool creation not available on mobile
-
-
- >
+
+
+ Pool creation not available on mobile
+
+
+ >
+ )}
@@ -68,86 +80,3 @@ const BalancerV3: NextPage = () => {
};
export default BalancerV3;
-
-function UserExperienceAlerts() {
- const { targetNetwork: selectedNetwork } = useTargetNetwork();
- const [isInfoAlertVisible, setIsInfoAlertVisible] = useState(true);
- const { isWrongNetwork, isWalletConnected } = useValidateNetwork();
- const { chain } = usePoolCreationStore();
-
- return !isWalletConnected ? (
-
-
-
-
- Please connect a wallet and switch to the network you wish to create a pool
-
-
-
-
-
- ) : isWrongNetwork ? (
-
-
-
-
- You are connected to an unsupported network. To continue, please switch to Sepolia, Ethereum, or Gnosis
-
-
-
-
-
- ) : chain && selectedNetwork.id !== chain.id ? (
-
-
-
-
- You have already begun the pool configuration process. Please switch back to {chain.name}
-
-
-
-
-
- ) : (
- <>
- {!chain && (
-
-
-
-
- Make sure you switch to your desired network before beginning pool creation. You cannot switch after
- selecting pool type unless you reset progress
-
-
-
-
-
- )}
- {isInfoAlertVisible && (
-
-
-
-
- For tips and guidance on pool configuration and creation, check out our
-
- partner onboarding documentation
-
-
-
-
setIsInfoAlertVisible(false)}
- className="absolute top-3 right-3 p-1 rounded-full transition-colors text-neutral-700"
- >
-
-
-
-
- )}
- >
- );
-}
diff --git a/packages/nextjs/components/scaffold-eth/RainbowKitCustomConnectButton/NetworkOptions.tsx b/packages/nextjs/components/scaffold-eth/RainbowKitCustomConnectButton/NetworkOptions.tsx
index ad29f323..ec05fa61 100644
--- a/packages/nextjs/components/scaffold-eth/RainbowKitCustomConnectButton/NetworkOptions.tsx
+++ b/packages/nextjs/components/scaffold-eth/RainbowKitCustomConnectButton/NetworkOptions.tsx
@@ -1,4 +1,3 @@
-import { usePathname } from "next/navigation";
import { useTheme } from "next-themes";
import { useAccount, useSwitchChain } from "wagmi";
import { ArrowsRightLeftIcon } from "@heroicons/react/24/solid";
@@ -17,17 +16,9 @@ export const NetworkOptions = ({ hidden = false }: NetworkOptionsProps) => {
const { resolvedTheme } = useTheme();
const isDarkMode = resolvedTheme === "dark";
- // TODO: Update this as v3 adds more network support
- const pathname = usePathname();
- // Filter out base and arbitrum for v3 pool creation page
- const filteredAllowedNetworks =
- pathname === "/v3"
- ? allowedNetworks.filter(network => network.id !== 42161 && network.id !== 8453)
- : allowedNetworks;
-
return (
<>
- {filteredAllowedNetworks
+ {allowedNetworks
.filter(allowedNetwork => allowedNetwork.id !== chain?.id)
.map(allowedNetwork => (
diff --git a/packages/nextjs/hooks/balancer/useApiConfig.ts b/packages/nextjs/hooks/balancer/useApiConfig.ts
index 29df1fb7..db3ec881 100644
--- a/packages/nextjs/hooks/balancer/useApiConfig.ts
+++ b/packages/nextjs/hooks/balancer/useApiConfig.ts
@@ -18,6 +18,7 @@ export const useApiConfig = () => {
return { url, chainName };
};
+// TODO: Will need to update this as v3 is deployed to more chains
export const CHAIN_NAMES: { [key: number]: string } = {
1: "MAINNET",
100: "GNOSIS",
diff --git a/packages/nextjs/hooks/v3/index.ts b/packages/nextjs/hooks/v3/index.ts
index 482784e8..de31a640 100644
--- a/packages/nextjs/hooks/v3/index.ts
+++ b/packages/nextjs/hooks/v3/index.ts
@@ -2,9 +2,7 @@ export * from "./usePoolCreationStore";
export * from "./useCreatePool";
export * from "./useInitializePool";
export * from "./useValidatePoolCreationInput";
-export * from "./useValidateNetwork";
export * from "./useMultiSwap";
-export * from "./useVerifyProportionalInit";
export * from "./useBoostableWhitelist";
export * from "./useValidateHooksContract";
export * from "./useValidateRateProvider";
diff --git a/packages/nextjs/hooks/v3/useCreatePool.ts b/packages/nextjs/hooks/v3/useCreatePool.ts
index e6d79c75..af0a5195 100644
--- a/packages/nextjs/hooks/v3/useCreatePool.ts
+++ b/packages/nextjs/hooks/v3/useCreatePool.ts
@@ -56,9 +56,9 @@ export const useCreatePool = () => {
name,
symbol,
swapFeePercentage: parseUnits(swapFeePercentage, SWAP_FEE_PERCENTAGE_DECIMALS),
- swapFeeManager: swapFeeManager === "" ? zeroAddress : swapFeeManager,
- pauseManager: pauseManager === "" ? zeroAddress : pauseManager,
- poolHooksContract: poolHooksContract === "" ? zeroAddress : poolHooksContract,
+ swapFeeManager: swapFeeManager === "" ? zeroAddress : (swapFeeManager as `0x${string}`),
+ pauseManager: pauseManager === "" ? zeroAddress : (pauseManager as `0x${string}`),
+ poolHooksContract: poolHooksContract === "" ? zeroAddress : (poolHooksContract as `0x${string}`),
enableDonation,
disableUnbalancedLiquidity,
};
diff --git a/packages/nextjs/hooks/v3/useInitializePool.ts b/packages/nextjs/hooks/v3/useInitializePool.ts
index 16290852..41ca05e8 100644
--- a/packages/nextjs/hooks/v3/useInitializePool.ts
+++ b/packages/nextjs/hooks/v3/useInitializePool.ts
@@ -1,10 +1,9 @@
-import { BALANCER_ROUTER, InitPool, InitPoolDataProvider, InitPoolInput, balancerRouterAbi } from "@balancer/sdk";
+import { InitPool, InitPoolDataProvider, InitPoolInput, Permit2Helper, PublicWalletClient } from "@balancer/sdk";
import { useMutation } from "@tanstack/react-query";
-import { getContract, parseUnits } from "viem";
+import { parseUnits, publicActions, walletActions } from "viem";
import { usePublicClient, useWalletClient } from "wagmi";
import { useTransactor } from "~~/hooks/scaffold-eth";
import { useBoostableWhitelist, usePoolCreationStore } from "~~/hooks/v3";
-import { createPermit2 } from "~~/utils/permit2Helper";
/**
* Handles sending the init pool transaction
@@ -25,21 +24,14 @@ export const useInitializePool = () => {
if (!chainId) throw new Error("Chain Id missing");
if (!poolType) throw new Error("Pool type missing");
if (!walletClient) throw new Error("Wallet client missing");
+ if (!walletClient.account) throw new Error("Wallet account missing");
- const initPoolDataProvider = new InitPoolDataProvider(chainId, rpcUrl);
- const poolState = await initPoolDataProvider.getInitPoolData(poolAddress, poolType, protocolVersion);
- const initPool = new InitPool();
-
- // Make sure all tokenConfigs have decimals and address
- tokenConfigs.forEach(token => {
- if (token.tokenInfo?.decimals === null || token.address === "") {
- throw new Error(`Token ${token.address} is missing tokenInfo.decimals`);
- }
- });
-
+ // Build init pool input using pool creation store
const amountsIn = tokenConfigs
.map(token => {
+ if (!token.address) throw new Error(`Token is missing address`);
if (!token.tokenInfo?.decimals) throw new Error(`Token ${token.address} is missing tokenInfo.decimals`);
+
const boostedToken = boostableWhitelist?.[token.address];
const address = token.useBoostedVariant ? boostedToken?.address : token.address;
const decimals = token.useBoostedVariant ? boostedToken?.decimals : token.tokenInfo?.decimals;
@@ -58,33 +50,37 @@ export const useInitializePool = () => {
chainId,
};
- const { callData: encodedInitData } = initPool.buildCall(initPoolInput, poolState);
-
- // Setup permit2 stuffs for permitBatchAndCall
- const balancerRouterAddress = BALANCER_ROUTER[chainId];
- const client = { public: publicClient, wallet: walletClient };
+ // Fetch the necessary pool state
+ const initPoolDataProvider = new InitPoolDataProvider(chainId, rpcUrl);
+ const poolState = await initPoolDataProvider.getInitPoolData(
+ poolAddress as `0x${string}`,
+ poolType,
+ protocolVersion,
+ );
- const { batch, signature } = await createPermit2({
- chainId,
- tokens: amountsIn.map(token => ({ address: token.address, amount: token.rawAmount })),
- client,
- spender: balancerRouterAddress,
+ const permit2 = await Permit2Helper.signInitPoolApproval({
+ ...initPoolInput,
+ client: walletClient.extend(publicActions).extend(walletActions) as unknown as PublicWalletClient, // TODO: upgrade viem/wagmi to match SDK version of viem to fix type casting
+ owner: walletClient.account.address as `0x${string}`,
});
- const router = getContract({
- address: balancerRouterAddress,
- abi: balancerRouterAbi,
- client,
- });
+ const initPool = new InitPool();
- const args = [[], [], batch, signature, [encodedInitData]] as const;
- console.log("router.permitBatchAndCall args for initialize pool", args);
+ const call = initPool.buildCallWithPermit2(initPoolInput, poolState, permit2);
- const hash = await writeTx(() => router.write.permitBatchAndCall(args), {
- // callbacks to save tx hash's to store
- onSafeTxHash: safeHash => updatePool({ initPoolTx: { ...initPoolTx, safeHash } }),
- onWagmiTxHash: wagmiHash => updatePool({ initPoolTx: { ...initPoolTx, wagmiHash } }),
- });
+ const hash = await writeTx(
+ () =>
+ walletClient.sendTransaction({
+ account: walletClient.account,
+ data: call.callData,
+ to: call.to,
+ }),
+ {
+ // callbacks to save tx hash's to store
+ onSafeTxHash: safeHash => updatePool({ initPoolTx: { ...initPoolTx, safeHash } }),
+ onWagmiTxHash: wagmiHash => updatePool({ initPoolTx: { ...initPoolTx, wagmiHash } }),
+ },
+ );
if (!hash) throw new Error("Missing init pool transaction hash");
return hash;
diff --git a/packages/nextjs/hooks/v3/useMultiSwap.ts b/packages/nextjs/hooks/v3/useMultiSwap.ts
index 0c9ec9ff..2f428196 100644
--- a/packages/nextjs/hooks/v3/useMultiSwap.ts
+++ b/packages/nextjs/hooks/v3/useMultiSwap.ts
@@ -53,7 +53,7 @@ export const useMultiSwap = () => {
const exactAmountIn = parseUnits(token.amount, token.tokenInfo.decimals);
return {
- tokenIn: token.address,
+ tokenIn: token.address as `0x${string}`,
steps: [
{
pool: boostedToken.address,
diff --git a/packages/nextjs/hooks/v3/usePoolCreationStore.ts b/packages/nextjs/hooks/v3/usePoolCreationStore.ts
index 71ac7728..67cde520 100644
--- a/packages/nextjs/hooks/v3/usePoolCreationStore.ts
+++ b/packages/nextjs/hooks/v3/usePoolCreationStore.ts
@@ -1,5 +1,4 @@
import { useEffect } from "react";
-// import { ALLOWED_NETWORKS } from "./useValidateNetwork";
import { PoolType } from "@balancer/sdk";
import { TokenType } from "@balancer/sdk";
import { Address, zeroAddress } from "viem";
@@ -84,10 +83,10 @@ export const initialPoolCreationState = {
poolType: undefined,
tokenConfigs: [initialTokenConfig, initialTokenConfig],
amplificationParameter: "", // only used for stable pools
- swapFeePercentage: "", // store as human readable % to be converted later
- swapFeeManager: "",
- pauseManager: "",
- poolHooksContract: "",
+ swapFeePercentage: "" as const, // store as human readable % to be converted later
+ swapFeeManager: "" as const,
+ pauseManager: "" as const,
+ poolHooksContract: "" as const,
disableUnbalancedLiquidity: false,
enableDonation: false,
// isSuccess is only flipped to true after parsing tx receipt for status
diff --git a/packages/nextjs/hooks/v3/useValidateNetwork.ts b/packages/nextjs/hooks/v3/useValidateNetwork.ts
deleted file mode 100644
index 6eaf382d..00000000
--- a/packages/nextjs/hooks/v3/useValidateNetwork.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { gnosis, mainnet, sepolia } from "viem/chains";
-import { useWalletClient } from "wagmi";
-
-export const ALLOWED_NETWORKS = [sepolia.id, mainnet.id, gnosis.id] as const;
-
-export function useValidateNetwork() {
- const { data: walletClient } = useWalletClient();
- const chainId = walletClient?.chain.id;
- const isWalletConnected = !!walletClient;
- const isWrongNetwork =
- isWalletConnected && chainId !== undefined && !ALLOWED_NETWORKS.includes(chainId as typeof sepolia.id);
-
- return { isWalletConnected, isWrongNetwork, chainId };
-}
diff --git a/packages/nextjs/hooks/v3/useValidatePoolCreationInput.ts b/packages/nextjs/hooks/v3/useValidatePoolCreationInput.ts
index 5624f0b4..639ddc4b 100644
--- a/packages/nextjs/hooks/v3/useValidatePoolCreationInput.ts
+++ b/packages/nextjs/hooks/v3/useValidatePoolCreationInput.ts
@@ -1,11 +1,10 @@
import { PoolType, TokenType } from "@balancer/sdk";
import { isAddress, parseUnits } from "viem";
import { useWalletClient } from "wagmi";
-import { usePoolCreationStore, useUserDataStore, useValidateHooksContract, useValidateNetwork } from "~~/hooks/v3";
+import { usePoolCreationStore, useUserDataStore, useValidateHooksContract } from "~~/hooks/v3";
import { MAX_POOL_NAME_LENGTH, MAX_POOL_SYMBOL_LENGTH } from "~~/utils/constants";
export function useValidatePoolCreationInput() {
- const { isWrongNetwork } = useValidateNetwork();
const { data: walletClient } = useWalletClient();
const { userTokenBalances, hasAgreedToWarning } = useUserDataStore();
@@ -24,7 +23,7 @@ export function useValidatePoolCreationInput() {
poolHooksContract,
} = usePoolCreationStore();
- const isTypeValid = poolType !== undefined && !isWrongNetwork;
+ const isTypeValid = poolType !== undefined;
const isValidTokenWeights =
poolType !== PoolType.Weighted ||
diff --git a/packages/nextjs/hooks/v3/useVerifyProportionalInit.ts b/packages/nextjs/hooks/v3/useVerifyProportionalInit.ts
deleted file mode 100644
index 7d5316b7..00000000
--- a/packages/nextjs/hooks/v3/useVerifyProportionalInit.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-// import { useFetchTokenPrices } from "~~/hooks/token";
-// import { usePoolCreationStore } from "~~/hooks/v3";
-
-export const useVerifyProportionalInit = () => {
- // const { tokenConfigs } = usePoolCreationStore();
- // const { data: tokenPrices } = useFetchTokenPrices();
-
- // console.log("TODO: verify if token usd values match weights from tokenConfig");
- // console.log("tokenConfigs", tokenConfigs);
- // console.log("tokenPrices", tokenPrices);
- return true;
-};
diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json
index edf336a6..852be152 100644
--- a/packages/nextjs/package.json
+++ b/packages/nextjs/package.json
@@ -14,7 +14,7 @@
"vercel:yolo": "vercel --build-env NEXT_PUBLIC_IGNORE_BUILD_ERROR=true"
},
"dependencies": {
- "@balancer/sdk": "^0.33.3",
+ "@balancer/sdk": "^1.4.0",
"@heroicons/react": "^2.0.11",
"@rainbow-me/rainbowkit": "2.1.2",
"@safe-global/safe-apps-provider": "^0.18.5",
diff --git a/packages/nextjs/utils/permit2Helper.ts b/packages/nextjs/utils/permit2Helper.ts
index 8054f1a6..02d830a5 100644
--- a/packages/nextjs/utils/permit2Helper.ts
+++ b/packages/nextjs/utils/permit2Helper.ts
@@ -8,13 +8,13 @@ import {
PermitDetails,
permit2Abi,
} from "@balancer/sdk";
-import { Address, PublicClient, WalletClient, getContract } from "viem";
+import { PublicClient, WalletClient, getContract } from "viem";
export type CreatePermit2 = {
chainId: number;
- tokens: { address: string; amount: bigint }[];
+ tokens: { address: `0x${string}`; amount: bigint }[];
client: { public: PublicClient; wallet: WalletClient };
- spender: Address;
+ spender: `0x${string}`;
};
export const createPermit2 = async ({ client, chainId, tokens, spender }: CreatePermit2) => {
@@ -55,7 +55,10 @@ export const createPermit2 = async ({ client, chainId, tokens, spender }: Create
message: {
...values,
},
- domain,
+ domain: {
+ ...domain,
+ chainId: Number(domain.chainId),
+ },
primaryType: "PermitBatch",
types,
});
diff --git a/yarn.lock b/yarn.lock
index 93ca3b0e..deefeb9d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -286,14 +286,14 @@ __metadata:
languageName: node
linkType: hard
-"@balancer/sdk@npm:^0.33.3":
- version: 0.33.3
- resolution: "@balancer/sdk@npm:0.33.3"
+"@balancer/sdk@npm:^1.4.0":
+ version: 1.4.0
+ resolution: "@balancer/sdk@npm:1.4.0"
dependencies:
decimal.js-light: ^2.5.1
lodash.clonedeep: ^4.5.0
- viem: ^2.12.1
- checksum: c0d4cd284d8e5ccabfbcb4215477ea2bd87102c65fb4a856fe4fdc9863c7ecc2fda6e662d1bceab4b7781443ad2adb07826acd5e4585cbae35b6fda152dd6b8e
+ viem: ^2.22.3
+ checksum: 0128b7dd6f59e0a145d91d945a52073ef27de5aa9c7de14f9a7cca2203eff12c97bf76177ba5645dc7147ab7c7f48cf894ec62507917e45a04d23aa2ebc1db27
languageName: node
linkType: hard
@@ -1659,7 +1659,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@se-2/nextjs@workspace:packages/nextjs"
dependencies:
- "@balancer/sdk": ^0.33.3
+ "@balancer/sdk": ^1.4.0
"@heroicons/react": ^2.0.11
"@rainbow-me/rainbowkit": 2.1.2
"@safe-global/safe-apps-provider": ^0.18.5
@@ -8016,6 +8016,26 @@ __metadata:
languageName: node
linkType: hard
+"ox@npm:0.6.5":
+ version: 0.6.5
+ resolution: "ox@npm:0.6.5"
+ dependencies:
+ "@adraffy/ens-normalize": ^1.10.1
+ "@noble/curves": ^1.6.0
+ "@noble/hashes": ^1.5.0
+ "@scure/bip32": ^1.5.0
+ "@scure/bip39": ^1.4.0
+ abitype: ^1.0.6
+ eventemitter3: 5.0.1
+ peerDependencies:
+ typescript: ">=5.4.0"
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: 2ad755c09652561c71f5d76e8af1d106fb2c09a2a61c3e606fb107dea5e436027438884968f995f4a5d2a8dc5608bd44c54931a2f4385c9db63340f7e1138e21
+ languageName: node
+ linkType: hard
+
"p-finally@npm:^2.0.0":
version: 2.0.1
resolution: "p-finally@npm:2.0.1"
@@ -10527,25 +10547,24 @@ __metadata:
languageName: node
linkType: hard
-"viem@npm:^2.12.1":
- version: 2.18.2
- resolution: "viem@npm:2.18.2"
+"viem@npm:^2.22.3":
+ version: 2.22.10
+ resolution: "viem@npm:2.22.10"
dependencies:
- "@adraffy/ens-normalize": 1.10.0
- "@noble/curves": 1.4.0
- "@noble/hashes": 1.4.0
- "@scure/bip32": 1.4.0
- "@scure/bip39": 1.3.0
- abitype: 1.0.5
- isows: 1.0.4
- webauthn-p256: 0.0.5
- ws: 8.17.1
+ "@noble/curves": 1.7.0
+ "@noble/hashes": 1.6.1
+ "@scure/bip32": 1.6.0
+ "@scure/bip39": 1.5.0
+ abitype: 1.0.7
+ isows: 1.0.6
+ ox: 0.6.5
+ ws: 8.18.0
peerDependencies:
typescript: ">=5.0.4"
peerDependenciesMeta:
typescript:
optional: true
- checksum: e7cd42d0a5c94d3ad5ee1d0fcf42520b904f2ca863b859c0e836ebf3ecc137375b22cd4ceb108c2d725d3e694d90d42e145e0c9adb4f4a512aae6095f052a619
+ checksum: 6e32423899b816e9ab976f032ff39ca85f147daaceb96e1139d82889b28cb2d476d43b933b4330e02575c11b15dffcc6c934353d83ead5dbddd22f9aaca48dcd
languageName: node
linkType: hard
@@ -10595,16 +10614,6 @@ __metadata:
languageName: node
linkType: hard
-"webauthn-p256@npm:0.0.5":
- version: 0.0.5
- resolution: "webauthn-p256@npm:0.0.5"
- dependencies:
- "@noble/curves": ^1.4.0
- "@noble/hashes": ^1.4.0
- checksum: 2837188d1e6d947c87c5728374fb6aec96387cb766f78e7a04d5903774264feb278d68a639748f09997f591e5278796c662bb5c4e8b8286b0f22254694023584
- languageName: node
- linkType: hard
-
"webextension-polyfill@npm:>=0.10.0 <1.0, webextension-polyfill@npm:^0.10.0":
version: 0.10.0
resolution: "webextension-polyfill@npm:0.10.0"