diff --git a/package.json b/package.json index 309448dd4a..1a4a9db160 100644 --- a/package.json +++ b/package.json @@ -41,10 +41,9 @@ "clsx": "^2.1.1", "graphql": "^14 || ^15 || ^16", "graphql-request": "^6.1.0", - "permissionless": "^0.1.29", "tailwind-merge": "^2.3.0", - "viem": "^2.17.4", - "wagmi": "^2.11.0" + "viem": "^2.21.33", + "wagmi": "^2.12.24" }, "devDependencies": { "@biomejs/biome": "1.8.3", @@ -73,7 +72,6 @@ "graphql-request": "^6.1.0", "jsdom": "^24.1.0", "packemon": "3.3.1", - "permissionless": "^0.1.29", "react": "^18", "react-dom": "^18", "rimraf": "^5.0.5", diff --git a/playground/nextjs-app-router/bun.lockb b/playground/nextjs-app-router/bun.lockb index 3af89290e0..03e209c819 100755 Binary files a/playground/nextjs-app-router/bun.lockb and b/playground/nextjs-app-router/bun.lockb differ diff --git a/playground/nextjs-app-router/components/demo/Transaction.tsx b/playground/nextjs-app-router/components/demo/Transaction.tsx index 93862cd569..42de2b1f1a 100644 --- a/playground/nextjs-app-router/components/demo/Transaction.tsx +++ b/playground/nextjs-app-router/components/demo/Transaction.tsx @@ -1,4 +1,8 @@ -import { clickCalls, clickContracts } from '@/lib/transactions'; +import { + clickCalls, + clickContracts, + heterogeneousClickCalls, +} from '@/lib/transactions'; import type { Call } from '@/onchainkit/esm/transaction/types'; import type { LifecycleStatus } from '@/onchainkit/src/transaction'; import { TransactionTypes } from '@/types/onchainkit'; @@ -66,6 +70,12 @@ function TransactionDemo() { case TransactionTypes.Contracts: console.log('Playground.Transaction.contracts:', contracts); break; + case TransactionTypes.ContractsAndCalls: + console.log( + 'Playground.Transaction.contractsAndCalls:', + heterogeneousClickCalls, + ); + break; default: console.log(`Playground.Transaction.${transactionType}`); break; @@ -75,31 +85,21 @@ function TransactionDemo() { const transactions = useMemo(() => { switch (transactionType) { case TransactionTypes.Calls: - return { - calls, - contracts: undefined, - }; + return calls; case TransactionTypes.Contracts: - return { - calls: undefined, - contracts, - }; + return contracts; case TransactionTypes.CallsPromise: - return { - calls: promiseCalls, - contracts: undefined, - }; + return promiseCalls; case TransactionTypes.ContractsPromise: - return { - contracts: promiseContracts, - calls: undefined, - }; + return promiseContracts; case TransactionTypes.CallsCallback: - return { calls: callsCallback, contracts: undefined }; + return callsCallback; case TransactionTypes.ContractsCallback: - return { calls: undefined, contracts: contractsCallback }; + return contractsCallback; + case TransactionTypes.ContractsAndCalls: + return heterogeneousClickCalls; default: - return { calls, contracts: undefined }; + return calls; } }, [ calls, @@ -115,9 +115,9 @@ function TransactionDemo() {
{ console.log('Playground.Transaction.chainId:', chainId); }, [chainId]); - const handleOnStatus = useCallback((status) => { + const handleOnStatus = useCallback((status: LifecycleStatus) => { console.log('Playground.Transaction.onStatus:', status); }, []); @@ -32,7 +35,7 @@ export default function TransactionDefaultDemo() { chainId={chainId ?? 84532} // something breaks if we don't have default network? {...(transactionType === TransactionTypes.Calls ? { calls } - : { contracts })} + : { calls: contracts })} capabilities={capabilities} onStatus={handleOnStatus} disabled={!chainId && !transactionType} diff --git a/playground/nextjs-app-router/components/form/transaction-options.tsx b/playground/nextjs-app-router/components/form/transaction-options.tsx index 3342f9d614..6459721cdc 100644 --- a/playground/nextjs-app-router/components/form/transaction-options.tsx +++ b/playground/nextjs-app-router/components/form/transaction-options.tsx @@ -40,6 +40,9 @@ export function TransactionOptions() { Contracts Callback + + Contracts and Calls +
diff --git a/playground/nextjs-app-router/lib/transactions.ts b/playground/nextjs-app-router/lib/transactions.ts index 999401e9f8..f88db60483 100644 --- a/playground/nextjs-app-router/lib/transactions.ts +++ b/playground/nextjs-app-router/lib/transactions.ts @@ -35,3 +35,26 @@ export const clickCalls = [ to: deployedContracts[85432].click, }, ]; + +export const heterogeneousClickCalls = [ + { + data: encodeFunctionData({ + abi: clickAbi, + functionName: 'click', + args: [], + }), + to: deployedContracts[85432].click, + }, + { + address: deployedContracts[85432].click, + abi: clickAbi, + functionName: 'click', + args: [], + }, + { + address: deployedContracts[85432].click, + abi: clickAbi, + functionName: 'click', + args: [], + }, +]; diff --git a/playground/nextjs-app-router/package.json b/playground/nextjs-app-router/package.json index 595d34e213..59bac9eb42 100644 --- a/playground/nextjs-app-router/package.json +++ b/playground/nextjs-app-router/package.json @@ -35,13 +35,12 @@ "graphql-request": "^6.1.0", "lucide-react": "^0.416.0", "next": "^14.2.5", - "permissionless": "^0.1.29", "react": "^18", "react-dom": "^18", "tailwind-merge": "^2.4.0", "tailwindcss-animate": "^1.0.7", - "viem": "^2.17.4", - "wagmi": "^2.11.0" + "viem": "^2.21.33", + "wagmi": "^2.12.24" }, "devDependencies": { "@types/node": "^20", diff --git a/playground/nextjs-app-router/types/onchainkit.ts b/playground/nextjs-app-router/types/onchainkit.ts index a11530e0dc..93471f8cbf 100644 --- a/playground/nextjs-app-router/types/onchainkit.ts +++ b/playground/nextjs-app-router/types/onchainkit.ts @@ -22,6 +22,7 @@ export enum TransactionTypes { ContractsPromise = 'contractsPromise', CallsCallback = 'callsCallback', ContractsCallback = 'contractsCallback', + ContractsAndCalls = 'contractsAndCalls', } export type Paymaster = { diff --git a/src/transaction/components/TransactionDefault.tsx b/src/transaction/components/TransactionDefault.tsx index fa234b6145..230fbe82d7 100644 --- a/src/transaction/components/TransactionDefault.tsx +++ b/src/transaction/components/TransactionDefault.tsx @@ -11,7 +11,6 @@ export function TransactionDefault({ capabilities, chainId, className, - contracts, disabled, onError, onStatus, @@ -23,7 +22,6 @@ export function TransactionDefault({ capabilities={capabilities} chainId={chainId} className={className} - contracts={contracts} onError={onError} onStatus={onStatus} onSuccess={onSuccess} diff --git a/src/transaction/components/TransactionProvider.test.tsx b/src/transaction/components/TransactionProvider.test.tsx index db9a15b987..a3ad83884f 100644 --- a/src/transaction/components/TransactionProvider.test.tsx +++ b/src/transaction/components/TransactionProvider.test.tsx @@ -12,8 +12,6 @@ import { useCallsStatus } from '../hooks/useCallsStatus'; import { useSendCall } from '../hooks/useSendCall'; import { useSendCalls } from '../hooks/useSendCalls'; import { useSendWalletTransactions } from '../hooks/useSendWalletTransactions'; -import { useWriteContract } from '../hooks/useWriteContract'; -import { useWriteContracts } from '../hooks/useWriteContracts'; import { TransactionProvider, useTransactionContext, @@ -35,15 +33,6 @@ vi.mock('../hooks/useCallsStatus', () => ({ useCallsStatus: vi.fn(), })); -vi.mock('../hooks/useWriteContract', () => ({ - useWriteContract: vi.fn(), -})); - -vi.mock('../hooks/useWriteContracts', () => ({ - useWriteContracts: vi.fn(), - genericErrorMessage: 'Something went wrong. Please try again.', -})); - vi.mock('../hooks/useSendCall', () => ({ useSendCall: vi.fn(), })); @@ -142,15 +131,6 @@ describe('TransactionProvider', () => { transactionHash: null, status: 'idle', }); - (useWriteContract as ReturnType).mockReturnValue({ - status: 'idle', - writeContract: vi.fn(), - data: null, - }); - (useWriteContracts as ReturnType).mockReturnValue({ - status: 'idle', - writeContractsAsync: vi.fn(), - }); (useSendCall as ReturnType).mockReturnValue({ status: 'idle', sendCallAsync: vi.fn(), @@ -171,7 +151,7 @@ describe('TransactionProvider', () => { it('should emit onError when setLifecycleStatus is called with error', async () => { const onErrorMock = vi.fn(); render( - + , ); @@ -183,7 +163,7 @@ describe('TransactionProvider', () => { it('should emit onStatus when setLifecycleStatus is called with transactionLegacyExecuted', async () => { const onStatusMock = vi.fn(); render( - + , ); @@ -202,7 +182,7 @@ describe('TransactionProvider', () => { it('should emit onStatus when setLifecycleStatus is called', async () => { const onStatusMock = vi.fn(); render( - + , ); @@ -221,7 +201,7 @@ describe('TransactionProvider', () => { }); render( @@ -244,7 +224,7 @@ describe('TransactionProvider', () => { ); render( { const onErrorMock = vi.fn(); const contracts = () => Promise.reject(new Error('error')); render( - + , ); @@ -301,7 +281,7 @@ describe('TransactionProvider', () => { ); render( { it('should set setLifecycleStatus to transactionPending when writeContractsAsync is pending', async () => { const writeContractsAsyncMock = vi.fn(); - (useWriteContracts as ReturnType).mockReturnValue({ + (useSendCalls as ReturnType).mockReturnValue({ status: 'pending', writeContractsAsync: writeContractsAsyncMock, }); @@ -336,7 +316,7 @@ describe('TransactionProvider', () => { auxiliaryFunds: { supported: true }, }); render( - + , ); @@ -352,12 +332,12 @@ describe('TransactionProvider', () => { it('should set setLifecycleStatus to transactionPending when writeContractAsync is pending', async () => { const writeContractsAsyncMock = vi.fn(); - (useWriteContract as ReturnType).mockReturnValue({ + (useSendCall as ReturnType).mockReturnValue({ status: 'pending', writeContractsAsync: writeContractsAsyncMock, }); render( - + , ); @@ -382,7 +362,7 @@ describe('TransactionProvider', () => { sendWalletTransactionsMock, ); render( - + , ); @@ -397,7 +377,7 @@ describe('TransactionProvider', () => { const writeContractsAsyncMock = vi .fn() .mockRejectedValue(new Error('Test error')); - (useWriteContracts as ReturnType).mockReturnValue({ + (useSendCalls as ReturnType).mockReturnValue({ status: 'idle', writeContractsAsync: writeContractsAsyncMock, }); @@ -407,7 +387,7 @@ describe('TransactionProvider', () => { auxiliaryFunds: { supported: true }, }); render( - + , ); @@ -429,7 +409,7 @@ describe('TransactionProvider', () => { switchChainAsync: switchChainAsyncMock, }); render( - + , ); @@ -441,12 +421,12 @@ describe('TransactionProvider', () => { }); it('should display toast on error', async () => { - (useWriteContracts as ReturnType).mockReturnValue({ + (useSendCalls as ReturnType).mockReturnValue({ status: 'idle', writeContractsAsync: vi.fn().mockRejectedValue(new Error('Test error')), }); render( - + , ); @@ -465,7 +445,7 @@ describe('TransactionProvider', () => { const sendWalletTransactionsMock = vi.fn().mockRejectedValue({ cause: { name: 'UserRejectedRequestError' }, }); - (useWriteContracts as ReturnType).mockReturnValue({ + (useSendCalls as ReturnType).mockReturnValue({ status: 'idle', writeContractsAsync: writeContractsAsyncMock, }); @@ -478,7 +458,7 @@ describe('TransactionProvider', () => { auxiliaryFunds: { supported: true }, }); render( - + , ); @@ -497,7 +477,7 @@ describe('TransactionProvider', () => { }); (useAccount as ReturnType).mockReturnValue({ chainId: 1 }); render( - + , ); @@ -511,7 +491,7 @@ describe('TransactionProvider', () => { it('should set transactions based on contracts', async () => { const contracts = [{ address: '0x123', method: 'method' }]; render( - + , ); @@ -534,7 +514,7 @@ describe('TransactionProvider', () => { }); }); - it('should throw an error when neither contracts nor calls are provided', async () => { + it('should throw an error when calls are not provided', async () => { const restore = silenceError(); expect(() => { render( @@ -543,7 +523,7 @@ describe('TransactionProvider', () => { , ); }).toThrowError( - 'Transaction: One of contracts or calls must be provided as a prop to the Transaction component.', + 'Transaction: calls or contracts must be provided as a prop to the Transaction component.', ); restore(); }); @@ -576,12 +556,12 @@ describe('TransactionProvider', () => { auxiliaryFunds: { supported: true }, }); const mockWriteContractsAsync = vi.fn().mockResolvedValue({}); - (useWriteContracts as Mock).mockReturnValue({ + (useSendCalls as Mock).mockReturnValue({ status: 'success', writeContractsAsync: mockWriteContractsAsync, }); render( - + , ); diff --git a/src/transaction/components/TransactionProvider.tsx b/src/transaction/components/TransactionProvider.tsx index b7a5c26b90..bc5e744e0b 100644 --- a/src/transaction/components/TransactionProvider.tsx +++ b/src/transaction/components/TransactionProvider.tsx @@ -18,17 +18,11 @@ import { Capabilities } from '../../constants'; import { useCapabilitiesSafe } from '../../internal/hooks/useCapabilitiesSafe'; import { useValue } from '../../internal/hooks/useValue'; import { useOnchainKit } from '../../useOnchainKit'; -import { - GENERIC_ERROR_MESSAGE, - TRANSACTION_TYPE_CALLS, - TRANSACTION_TYPE_CONTRACTS, -} from '../constants'; +import { GENERIC_ERROR_MESSAGE } from '../constants'; import { useCallsStatus } from '../hooks/useCallsStatus'; import { useSendCall } from '../hooks/useSendCall'; import { useSendCalls } from '../hooks/useSendCalls'; import { useSendWalletTransactions } from '../hooks/useSendWalletTransactions'; -import { useWriteContract } from '../hooks/useWriteContract'; -import { useWriteContracts } from '../hooks/useWriteContracts'; import type { LifecycleStatus, TransactionContextType, @@ -82,9 +76,6 @@ export function TransactionProvider({ >(); const [transactionHashList, setTransactionHashList] = useState([]); const transactions = calls || contracts; - const transactionType = calls - ? TRANSACTION_TYPE_CALLS - : TRANSACTION_TYPE_CONTRACTS; // Retrieve wallet capabilities const walletCapabilities = useCapabilitiesSafe({ @@ -96,72 +87,42 @@ export function TransactionProvider({ // Validate `calls` and `contracts` props if (!contracts && !calls) { throw new Error( - 'Transaction: One of contracts or calls must be provided as a prop to the Transaction component.', + 'Transaction: calls or contracts must be provided as a prop to the Transaction component.', ); } + + // Validate `calls` and `contracts` props if (calls && contracts) { throw new Error( 'Transaction: Only one of contracts or calls can be provided as a prop to the Transaction component.', ); } - // useWriteContracts or useWriteContract - // Used for contract calls with an ABI and functions. - const { status: statusWriteContracts, writeContractsAsync } = - useWriteContracts({ - setLifecycleStatus, - setTransactionId, - }); - const { - status: statusWriteContract, - writeContractAsync, - data: writeContractTransactionHash, - } = useWriteContract({ - setLifecycleStatus, - transactionHashList, - }); // useSendCalls or useSendCall // Used for contract calls with raw calldata. const { status: statusSendCalls, sendCallsAsync } = useSendCalls({ setLifecycleStatus, setTransactionId, }); + const { status: statusSendCall, sendCallAsync, - data: sendCallTransactionHash, + data: singleTransactionHash, } = useSendCall({ setLifecycleStatus, transactionHashList, }); // Transaction Status - // For batched, use statusSendCalls or statusWriteContracts - // For single, use statusSendCall or statusWriteContract + // For batched, use statusSendCalls + // For single, use statusSendCall const transactionStatus = useMemo(() => { - const transactionStatuses = walletCapabilities[Capabilities.AtomicBatch] - ?.supported - ? { - [TRANSACTION_TYPE_CALLS]: statusSendCalls, - [TRANSACTION_TYPE_CONTRACTS]: statusWriteContracts, - } - : { - [TRANSACTION_TYPE_CALLS]: statusSendCall, - [TRANSACTION_TYPE_CONTRACTS]: statusWriteContract, - }; - return transactionStatuses[transactionType]; - }, [ - statusSendCalls, - statusWriteContracts, - statusSendCall, - statusWriteContract, - transactionType, - walletCapabilities[Capabilities.AtomicBatch], - ]); - - // Transaction hash for single transaction (non-batched) - const singleTransactionHash = - writeContractTransactionHash || sendCallTransactionHash; + if (walletCapabilities[Capabilities.AtomicBatch]?.supported) { + return statusSendCalls; + } + return statusSendCall; + }, [statusSendCall, statusSendCalls, walletCapabilities]); const capabilities = useMemo(() => { if (isSponsored && paymaster) { @@ -181,10 +142,7 @@ export function TransactionProvider({ capabilities, sendCallAsync, sendCallsAsync, - transactionType, walletCapabilities, - writeContractAsync, - writeContractsAsync, }); const { transactionHash: batchedTransactionHash, status: callStatus } = @@ -192,6 +150,7 @@ export function TransactionProvider({ setLifecycleStatus, transactionId, }); + const { data: receipt } = useWaitForTransactionReceipt({ hash: singleTransactionHash || batchedTransactionHash, }); diff --git a/src/transaction/hooks/useSendWalletTransactions.test.tsx b/src/transaction/hooks/useSendWalletTransactions.test.tsx index 8d6047094e..d471188270 100644 --- a/src/transaction/hooks/useSendWalletTransactions.test.tsx +++ b/src/transaction/hooks/useSendWalletTransactions.test.tsx @@ -1,9 +1,5 @@ import { renderHook } from '@testing-library/react'; import { beforeEach, describe, expect, it, vi } from 'vitest'; -import { - TRANSACTION_TYPE_CALLS, - TRANSACTION_TYPE_CONTRACTS, -} from '../constants'; import { sendBatchedTransactions } from '../utils/sendBatchedTransactions'; import { sendSingleTransactions } from '../utils/sendSingleTransactions'; import { useSendWalletTransactions } from './useSendWalletTransactions'; @@ -22,10 +18,7 @@ describe('useSendWalletTransactions', () => { const capabilities = {}; const { result } = renderHook(() => useSendWalletTransactions({ - transactionType: TRANSACTION_TYPE_CONTRACTS, capabilities, - writeContractsAsync: vi.fn(), - writeContractAsync: vi.fn(), sendCallsAsync: vi.fn(), sendCallAsync: vi.fn(), walletCapabilities: { @@ -40,8 +33,6 @@ describe('useSendWalletTransactions', () => { capabilities, sendCallsAsync: expect.any(Function), transactions, - transactionType: TRANSACTION_TYPE_CONTRACTS, - writeContractsAsync: expect.any(Function), }); }); @@ -52,10 +43,7 @@ describe('useSendWalletTransactions', () => { ]; const { result } = renderHook(() => useSendWalletTransactions({ - transactionType: TRANSACTION_TYPE_CALLS, capabilities: undefined, - writeContractsAsync: vi.fn(), - writeContractAsync: vi.fn(), sendCallsAsync: vi.fn(), sendCallAsync: vi.fn(), walletCapabilities: { @@ -69,8 +57,6 @@ describe('useSendWalletTransactions', () => { expect(sendSingleTransactions).toHaveBeenCalledWith({ sendCallAsync: expect.any(Function), transactions, - transactionType: TRANSACTION_TYPE_CALLS, - writeContractAsync: expect.any(Function), }); }); @@ -79,10 +65,7 @@ describe('useSendWalletTransactions', () => { const capabilities = {}; const { result } = renderHook(() => useSendWalletTransactions({ - transactionType: TRANSACTION_TYPE_CONTRACTS, capabilities, - writeContractsAsync: vi.fn(), - writeContractAsync: vi.fn(), sendCallsAsync: vi.fn(), sendCallAsync: vi.fn(), walletCapabilities: { @@ -97,18 +80,13 @@ describe('useSendWalletTransactions', () => { capabilities, sendCallsAsync: expect.any(Function), transactions, - transactionType: TRANSACTION_TYPE_CONTRACTS, - writeContractsAsync: expect.any(Function), }); }); it('should handle no transactions', async () => { const { result } = renderHook(() => useSendWalletTransactions({ - transactionType: TRANSACTION_TYPE_CONTRACTS, capabilities: undefined, - writeContractsAsync: vi.fn(), - writeContractAsync: vi.fn(), sendCallsAsync: vi.fn(), sendCallAsync: vi.fn(), walletCapabilities: { hasAtomicBatch: false }, @@ -126,10 +104,7 @@ describe('useSendWalletTransactions', () => { ]; const { result } = renderHook(() => useSendWalletTransactions({ - transactionType: TRANSACTION_TYPE_CALLS, capabilities: undefined, - writeContractsAsync: vi.fn(), - writeContractAsync: vi.fn(), sendCallsAsync: vi.fn(), sendCallAsync: vi.fn(), walletCapabilities: {}, @@ -139,8 +114,6 @@ describe('useSendWalletTransactions', () => { expect(sendSingleTransactions).toHaveBeenCalledWith({ sendCallAsync: expect.any(Function), transactions, - transactionType: TRANSACTION_TYPE_CALLS, - writeContractAsync: expect.any(Function), }); }); }); diff --git a/src/transaction/hooks/useSendWalletTransactions.tsx b/src/transaction/hooks/useSendWalletTransactions.tsx index b8bf2f6567..d78ec81772 100644 --- a/src/transaction/hooks/useSendWalletTransactions.tsx +++ b/src/transaction/hooks/useSendWalletTransactions.tsx @@ -10,10 +10,7 @@ export const useSendWalletTransactions = ({ capabilities, sendCallAsync, sendCallsAsync, - transactionType, walletCapabilities, - writeContractAsync, - writeContractsAsync, }: UseSendWalletTransactionsParams) => { return useCallback( async ( @@ -21,7 +18,8 @@ export const useSendWalletTransactions = ({ | Call[] | ContractFunctionParameters[] | Promise - | Promise, + | Promise + | (Call | ContractFunctionParameters)[], ) => { if (!transactions) { return; @@ -35,27 +33,15 @@ export const useSendWalletTransactions = ({ capabilities, sendCallsAsync, transactions: resolvedTransactions, - transactionType, - writeContractsAsync, }); } else { // Non-batched transactions await sendSingleTransactions({ sendCallAsync, transactions: resolvedTransactions, - transactionType, - writeContractAsync, }); } }, - [ - writeContractsAsync, - writeContractAsync, - sendCallsAsync, - sendCallAsync, - capabilities, - transactionType, - walletCapabilities, - ], + [sendCallsAsync, sendCallAsync, capabilities, walletCapabilities], ); }; diff --git a/src/transaction/types.ts b/src/transaction/types.ts index e839eb5aa5..2539a01846 100644 --- a/src/transaction/types.ts +++ b/src/transaction/types.ts @@ -8,10 +8,7 @@ import type { } from 'viem'; import type { WalletCapabilities as ViemWalletCapabilities } from 'viem'; import type { Config } from 'wagmi'; -import type { - SendTransactionMutateAsync, - WriteContractMutateAsync, -} from 'wagmi/query'; +import type { SendTransactionMutateAsync } from 'wagmi/query'; export type Call = { to: Hex; data?: Hex; value?: bigint }; @@ -93,7 +90,7 @@ export type TransactionContextType = { setIsToastVisible: (isVisible: boolean) => void; // A function to set the visibility of the transaction toast. setLifecycleStatus: (state: LifecycleStatus) => void; // A function to set the lifecycle status of the component setTransactionId: (id: string) => void; // A function to set the transaction ID. - transactions?: Calls | Contracts; // An array of transactions for the component or a promise that resolves to an array of transactions. + transactions?: Calls | Contracts | (Call | ContractFunctionParameters)[]; // An array of transactions for the component or a promise that resolves to an array of transactions. transactionId?: string; // An optional string representing the ID of the transaction. transactionHash?: string; // An optional string representing the hash of the transaction. transactionCount?: number; // Number of transactions being executed @@ -107,17 +104,12 @@ export type SendBatchedTransactionsParams = { capabilities?: WalletCapabilities; // biome-ignore lint: cannot find module 'wagmi/experimental/query' sendCallsAsync: any; - transactions?: Call[] | ContractFunctionParameters[]; - transactionType: string; - // biome-ignore lint: cannot find module 'wagmi/experimental/query' - writeContractsAsync: any; + transactions?: (Call | ContractFunctionParameters)[]; }; export type SendSingleTransactionParams = { sendCallAsync: SendTransactionMutateAsync | (() => void); - transactions: Call[] | ContractFunctionParameters[]; - transactionType: string; - writeContractAsync: WriteContractMutateAsync | (() => void); + transactions: (Call | ContractFunctionParameters)[]; }; /** @@ -137,21 +129,24 @@ export type TransactionError = { message: string; // The error message providing details about the transaction error. }; -type Calls = Call[] | Promise | (() => Promise); -type Contracts = +export type Calls = Call[] | Promise | (() => Promise); +export type Contracts = | ContractFunctionParameters[] | Promise | (() => Promise); export type TransactionProviderReact = { - calls?: Calls; // An array of calls to be made in the transaction. Mutually exclusive with the `contracts` prop. + calls?: Calls | Contracts | (Call | ContractFunctionParameters)[]; // An array of calls to be made in the transaction. /** * @deprecated Use `isSponsored` instead. */ capabilities?: WalletCapabilities; // Capabilities that a wallet supports (e.g. paymasters, session keys, etc). chainId: number; // The chainId for the transaction. children: ReactNode; // The child components to be rendered within the provider component. - contracts?: Contracts; // An array of contract function parameters provided to the child components. Mutually exclusive with the `calls` prop. + /** + * @deprecated Use `calls` instead. + */ + contracts?: Calls | Contracts | (Call | ContractFunctionParameters)[]; // An array of calls to be made in the transaction. isSponsored?: boolean; // Whether the transactions are sponsored (default: false) onError?: (e: TransactionError) => void; // An optional callback function that handles errors within the provider. onStatus?: (lifecycleStatus: LifecycleStatus) => void; // An optional callback function that exposes the component lifecycle state @@ -162,7 +157,7 @@ export type TransactionProviderReact = { * Note: exported as public Type */ export type TransactionReact = { - calls?: Calls; // An array of calls to be made in the transaction. Mutually exclusive with the `contracts` prop. + calls?: Calls | Contracts | (Call | ContractFunctionParameters)[]; // An array of calls to be made in the transaction. /** * @deprecated Use `isSponsored` instead. */ @@ -170,7 +165,10 @@ export type TransactionReact = { chainId?: number; // The chainId for the transaction. children: ReactNode; // The child components to be rendered within the transaction component. className?: string; // An optional CSS class name for styling the component. - contracts?: Contracts; // An array of contract function parameters provided to the child components. Mutually exclusive with the `calls` prop. + /** + * @deprecated Use `calls` instead. + */ + contracts?: Calls | Contracts | (Call | ContractFunctionParameters)[]; // An array of calls to be made in the transaction. isSponsored?: boolean; // Whether the transactions are sponsored (default: false) onError?: (e: TransactionError) => void; // An optional callback function that handles transaction errors. onStatus?: (lifecycleStatus: LifecycleStatus) => void; // An optional callback function that exposes the component lifecycle state @@ -274,11 +272,7 @@ export type UseSendWalletTransactionsParams = { // biome-ignore lint: cannot find module 'wagmi/experimental/query' sendCallsAsync: any; sendCallAsync: SendTransactionMutateAsync | (() => void); - transactionType: string; walletCapabilities: ViemWalletCapabilities; - // biome-ignore lint: cannot find module 'wagmi/experimental/query' - writeContractsAsync: any; - writeContractAsync: WriteContractMutateAsync | (() => void); }; /** diff --git a/src/transaction/utils/isContract.ts b/src/transaction/utils/isContract.ts new file mode 100644 index 0000000000..bc52b97109 --- /dev/null +++ b/src/transaction/utils/isContract.ts @@ -0,0 +1,8 @@ +import type { ContractFunctionParameters } from 'viem'; +import type { Call } from '../types'; + +export function isContract( + transaction: Call | ContractFunctionParameters, +): transaction is ContractFunctionParameters { + return 'abi' in transaction; +} diff --git a/src/transaction/utils/sendBatchedTransactions.test.ts b/src/transaction/utils/sendBatchedTransactions.test.ts index 1761f1b21f..4fe5f96bb9 100644 --- a/src/transaction/utils/sendBatchedTransactions.test.ts +++ b/src/transaction/utils/sendBatchedTransactions.test.ts @@ -1,12 +1,7 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'; -import { - TRANSACTION_TYPE_CALLS, - TRANSACTION_TYPE_CONTRACTS, -} from '../constants'; import { sendBatchedTransactions } from './sendBatchedTransactions'; describe('sendBatchedTransactions', () => { - const mockWriteContractsAsync = vi.fn(); const mockSendCallsAsync = vi.fn(); const mockTransactions = []; const mockCapabilities = { paymasterService: '' }; @@ -15,19 +10,13 @@ describe('sendBatchedTransactions', () => { vi.clearAllMocks(); }); - it('should call writeContractsAsync for contract transactions', async () => { + it('should call sendCallsAsync for contract transactions', async () => { await sendBatchedTransactions({ capabilities: mockCapabilities, sendCallsAsync: mockSendCallsAsync, transactions: mockTransactions, - transactionType: TRANSACTION_TYPE_CONTRACTS, - writeContractsAsync: mockWriteContractsAsync, }); - expect(mockWriteContractsAsync).toHaveBeenCalledWith({ - contracts: mockTransactions, - capabilities: mockCapabilities, - }); - expect(mockSendCallsAsync).not.toHaveBeenCalled(); + expect(mockSendCallsAsync).toHaveBeenCalled(); }); it('should call sendCallsAsync for call transactions', async () => { @@ -35,14 +24,11 @@ describe('sendBatchedTransactions', () => { capabilities: mockCapabilities, sendCallsAsync: mockSendCallsAsync, transactions: mockTransactions, - transactionType: TRANSACTION_TYPE_CALLS, - writeContractsAsync: mockWriteContractsAsync, }); expect(mockSendCallsAsync).toHaveBeenCalledWith({ calls: mockTransactions, capabilities: mockCapabilities, }); - expect(mockWriteContractsAsync).not.toHaveBeenCalled(); }); it('should not call any function if transactions are undefined', async () => { @@ -50,22 +36,31 @@ describe('sendBatchedTransactions', () => { capabilities: mockCapabilities, sendCallsAsync: mockSendCallsAsync, transactions: undefined, - transactionType: TRANSACTION_TYPE_CONTRACTS, - writeContractsAsync: mockWriteContractsAsync, }); - expect(mockWriteContractsAsync).not.toHaveBeenCalled(); expect(mockSendCallsAsync).not.toHaveBeenCalled(); }); - it('should not call any function if transaction type is invalid', async () => { + it('should transform contracts address prop', async () => { await sendBatchedTransactions({ capabilities: mockCapabilities, sendCallsAsync: mockSendCallsAsync, - transactions: mockTransactions, - transactionType: 'INVALID_TYPE', - writeContractsAsync: mockWriteContractsAsync, + transactions: [{ address: '0x123', abi: '123' }], + }); + expect(mockSendCallsAsync).toHaveBeenCalled({ + Capabilities: mockCapabilities, + calls: [{ to: '0x123', abi: '123' }], + }); + }); + + it('should transform not transform call', async () => { + await sendBatchedTransactions({ + capabilities: mockCapabilities, + sendCallsAsync: mockSendCallsAsync, + transactions: [{ to: '0x123', data: '123' }], + }); + expect(mockSendCallsAsync).toHaveBeenCalled({ + Capabilities: mockCapabilities, + calls: [{ to: '0x123', data: '123' }], }); - expect(mockWriteContractsAsync).not.toHaveBeenCalled(); - expect(mockSendCallsAsync).not.toHaveBeenCalled(); }); }); diff --git a/src/transaction/utils/sendBatchedTransactions.ts b/src/transaction/utils/sendBatchedTransactions.ts index bc359442eb..54c16fd4e1 100644 --- a/src/transaction/utils/sendBatchedTransactions.ts +++ b/src/transaction/utils/sendBatchedTransactions.ts @@ -1,29 +1,28 @@ -import { - TRANSACTION_TYPE_CALLS, - TRANSACTION_TYPE_CONTRACTS, -} from '../constants'; import type { SendBatchedTransactionsParams } from '../types'; +import { isContract } from './isContract'; export const sendBatchedTransactions = async ({ capabilities, sendCallsAsync, transactions, - transactionType, - writeContractsAsync, }: SendBatchedTransactionsParams) => { if (!transactions) { return; } - if (transactionType === TRANSACTION_TYPE_CONTRACTS) { - await writeContractsAsync({ - contracts: transactions, - capabilities, - }); - } - if (transactionType === TRANSACTION_TYPE_CALLS) { - await sendCallsAsync({ - calls: transactions, - capabilities, - }); - } + + const calls = transactions?.map((transaction) => { + if (isContract(transaction)) { + const { address, ...rest } = transaction; + return { + ...rest, + to: address, + }; + } + return transaction; + }); + + await sendCallsAsync({ + calls, + capabilities, + }); }; diff --git a/src/transaction/utils/sendSingleTransactions.test.ts b/src/transaction/utils/sendSingleTransactions.test.ts index d8958960d8..41970c9539 100644 --- a/src/transaction/utils/sendSingleTransactions.test.ts +++ b/src/transaction/utils/sendSingleTransactions.test.ts @@ -1,11 +1,14 @@ -import { beforeEach, describe, expect, it, vi } from 'vitest'; -import { TRANSACTION_TYPE_CALLS } from '../constants'; +import { encodeFunctionData } from 'viem'; +import { type Mock, beforeEach, describe, expect, it, vi } from 'vitest'; import type { Call } from '../types'; import { sendSingleTransactions } from './sendSingleTransactions'; +vi.mock('viem', () => ({ + encodeFunctionData: vi.fn(), +})); + describe('sendSingleTransactions', () => { const mockSendCallAsync = vi.fn(); - const mockWriteContractAsync = vi.fn(); const transactions: Call[] = [ { to: '0x123', data: '0x456' }, { to: '0x789', data: '0xabc' }, @@ -13,59 +16,55 @@ describe('sendSingleTransactions', () => { beforeEach(() => { vi.clearAllMocks(); + (encodeFunctionData as Mock).mockReturnValue('123'); }); it('should call sendCallAsync for each transaction when type is TRANSACTION_TYPE_CALLS', async () => { await sendSingleTransactions({ sendCallAsync: mockSendCallAsync, transactions, - transactionType: TRANSACTION_TYPE_CALLS, - writeContractAsync: mockWriteContractAsync, }); expect(mockSendCallAsync).toHaveBeenCalledTimes(2); expect(mockSendCallAsync).toHaveBeenNthCalledWith(1, transactions[0]); expect(mockSendCallAsync).toHaveBeenNthCalledWith(2, transactions[1]); - expect(mockWriteContractAsync).not.toHaveBeenCalled(); }); - it('should call writeContractAsync for each transaction when type is not TRANSACTION_TYPE_CALLS', async () => { + it('should call sendCallAsync for each transaction', async () => { await sendSingleTransactions({ sendCallAsync: mockSendCallAsync, transactions, - transactionType: 'SOME_OTHER_TYPE', - writeContractAsync: mockWriteContractAsync, }); - expect(mockWriteContractAsync).toHaveBeenCalledTimes(2); - expect(mockWriteContractAsync).toHaveBeenNthCalledWith(1, transactions[0]); - expect(mockWriteContractAsync).toHaveBeenNthCalledWith(2, transactions[1]); - expect(mockSendCallAsync).not.toHaveBeenCalled(); + expect(mockSendCallAsync).toHaveBeenCalled(); }); it('should not call any function if transactions array is empty', async () => { await sendSingleTransactions({ sendCallAsync: mockSendCallAsync, transactions: [], - transactionType: TRANSACTION_TYPE_CALLS, - writeContractAsync: mockWriteContractAsync, }); expect(mockSendCallAsync).not.toHaveBeenCalled(); - expect(mockWriteContractAsync).not.toHaveBeenCalled(); }); it('should handle mixed transaction types correctly', async () => { await sendSingleTransactions({ sendCallAsync: mockSendCallAsync, transactions, - transactionType: TRANSACTION_TYPE_CALLS, - writeContractAsync: mockWriteContractAsync, }); - expect(mockSendCallAsync).toHaveBeenCalledTimes(2); await sendSingleTransactions({ sendCallAsync: mockSendCallAsync, transactions, - transactionType: 'CONTRACT_TYPE', - writeContractAsync: mockWriteContractAsync, }); - expect(mockWriteContractAsync).toHaveBeenCalledTimes(2); + expect(mockSendCallAsync).toHaveBeenCalledTimes(4); + }); + + it('should transform contracts to calls', async () => { + await sendSingleTransactions({ + sendCallAsync: mockSendCallAsync, + transactions: [{ abi: '123', address: '0x123' }], + }); + expect(mockSendCallAsync).toHaveBeenCalledWith({ + data: '123', + to: '0x123', + }); }); }); diff --git a/src/transaction/utils/sendSingleTransactions.ts b/src/transaction/utils/sendSingleTransactions.ts index b83d48b428..2906af9301 100644 --- a/src/transaction/utils/sendSingleTransactions.ts +++ b/src/transaction/utils/sendSingleTransactions.ts @@ -1,18 +1,26 @@ -import type { ContractFunctionParameters } from 'viem'; -import { TRANSACTION_TYPE_CALLS } from '../constants'; +import { encodeFunctionData } from 'viem'; import type { Call, SendSingleTransactionParams } from '../types'; +import { isContract } from './isContract'; export const sendSingleTransactions = async ({ sendCallAsync, transactions, - transactionType, - writeContractAsync, }: SendSingleTransactionParams) => { - for (const transaction of transactions) { - if (transactionType === TRANSACTION_TYPE_CALLS) { - await sendCallAsync(transaction as Call); - } else { - await writeContractAsync(transaction as ContractFunctionParameters); + const calls = transactions?.map((transaction) => { + if (isContract(transaction)) { + return { + data: encodeFunctionData({ + abi: transaction?.abi, + functionName: transaction?.functionName, + args: transaction?.args, + }), + to: transaction?.address, + }; } + return transaction; + }); + + for (const call of calls) { + await sendCallAsync(call as Call); } }; diff --git a/src/wallet/types.ts b/src/wallet/types.ts index 3e613d9b2b..3db91805e4 100644 --- a/src/wallet/types.ts +++ b/src/wallet/types.ts @@ -1,6 +1,6 @@ -import type { UserOperation } from 'permissionless'; import type { Dispatch, ReactNode, SetStateAction } from 'react'; import type { Address, Chain, PublicClient } from 'viem'; +import type { UserOperation } from 'viem/_types/account-abstraction'; import type { UseBalanceReturnType, UseReadContractReturnType } from 'wagmi'; import type { SwapError } from '../swap'; @@ -43,7 +43,7 @@ export type IsValidAAEntrypointOptions = { */ export type IsWalletACoinbaseSmartWalletOptions = { client: PublicClient; - userOp: UserOperation<'v0.6'>; + userOp: UserOperation<'0.6'>; }; /** diff --git a/src/wallet/utils/isValidAAEntrypoint.test.ts b/src/wallet/utils/isValidAAEntrypoint.test.ts index 9a6bcfb557..d8875e4fd5 100644 --- a/src/wallet/utils/isValidAAEntrypoint.test.ts +++ b/src/wallet/utils/isValidAAEntrypoint.test.ts @@ -1,9 +1,9 @@ -import { ENTRYPOINT_ADDRESS_V06 } from 'permissionless'; +import { entryPoint06Address } from 'viem/account-abstraction'; import { isValidAAEntrypoint } from './isValidAAEntrypoint'; describe('isValidAAEntrypoint', () => { it('should return true for a valid v6 entrypoint address', () => { - const result = isValidAAEntrypoint({ entrypoint: ENTRYPOINT_ADDRESS_V06 }); + const result = isValidAAEntrypoint({ entrypoint: entryPoint06Address }); expect(result).toEqual(true); }); it('should return false if the entrypoint is not ENTRYPOINT_ADDRESS_V06', () => { diff --git a/src/wallet/utils/isValidAAEntrypoint.ts b/src/wallet/utils/isValidAAEntrypoint.ts index 7aae9cd61f..b15529d397 100644 --- a/src/wallet/utils/isValidAAEntrypoint.ts +++ b/src/wallet/utils/isValidAAEntrypoint.ts @@ -1,4 +1,4 @@ -import { ENTRYPOINT_ADDRESS_V06 } from 'permissionless'; +import { entryPoint06Address } from 'viem/account-abstraction'; import type { IsValidAAEntrypointOptions } from '../types'; /** @@ -7,7 +7,7 @@ import type { IsValidAAEntrypointOptions } from '../types'; export function isValidAAEntrypoint({ entrypoint, }: IsValidAAEntrypointOptions): boolean { - if (entrypoint.toLowerCase() !== ENTRYPOINT_ADDRESS_V06.toLowerCase()) { + if (entrypoint.toLowerCase() !== entryPoint06Address.toLowerCase()) { return false; } return true; diff --git a/src/wallet/utils/isWalletACoinbaseSmartWallet.test.ts b/src/wallet/utils/isWalletACoinbaseSmartWallet.test.ts index cf07dae87d..e03d5c220d 100644 --- a/src/wallet/utils/isWalletACoinbaseSmartWallet.test.ts +++ b/src/wallet/utils/isWalletACoinbaseSmartWallet.test.ts @@ -1,5 +1,5 @@ -import type { UserOperation } from 'permissionless'; import type { PublicClient } from 'viem'; +import type { UserOperation } from 'viem/_types/account-abstraction'; import { type Mock, describe, expect, it, vi } from 'vitest'; import { CB_SW_PROXY_BYTECODE, diff --git a/src/wallet/utils/isWalletACoinbaseSmartWallet.ts b/src/wallet/utils/isWalletACoinbaseSmartWallet.ts index 6266f04ede..30843a0b81 100644 --- a/src/wallet/utils/isWalletACoinbaseSmartWallet.ts +++ b/src/wallet/utils/isWalletACoinbaseSmartWallet.ts @@ -25,7 +25,7 @@ export async function isWalletACoinbaseSmartWallet({ if (!code) { // no code at address, check that the initCode is deploying a Coinbase Smart Wallet // factory address is first 20 bytes of initCode after '0x' - const factoryAddress = userOp.initCode.slice(0, 42) as Address; + const factoryAddress = userOp?.initCode?.slice(0, 42) as Address; if ( checksumAddress(factoryAddress) !== checksumAddress(CB_SW_FACTORY_ADDRESS) diff --git a/yarn.lock b/yarn.lock index ae88e716be..fcc68d0df0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19,6 +19,13 @@ __metadata: languageName: node linkType: hard +"@adraffy/ens-normalize@npm:1.11.0": + version: 1.11.0 + resolution: "@adraffy/ens-normalize@npm:1.11.0" + checksum: 5111d0f1a273468cb5661ed3cf46ee58de8f32f84e2ebc2365652e66c1ead82649df94c736804e2b9cfa831d30ef24e1cc3575d970dbda583416d3a98d8870a6 + languageName: node + linkType: hard + "@alloc/quick-lru@npm:^5.2.0": version: 5.2.0 resolution: "@alloc/quick-lru@npm:5.2.0" @@ -2201,7 +2208,6 @@ __metadata: graphql-request: "npm:^6.1.0" jsdom: "npm:^24.1.0" packemon: "npm:3.3.1" - permissionless: "npm:^0.1.29" react: "npm:^18" react-dom: "npm:^18" rimraf: "npm:^5.0.5" @@ -2210,10 +2216,10 @@ __metadata: tailwindcss: "npm:^3.4.3" tsup: "npm:^8.3.5" typescript: "npm:~5.3.3" - viem: "npm:^2.17.4" + viem: "npm:^2.21.33" vite: "npm:^5.3.3" vitest: "npm:^2.0.5" - wagmi: "npm:^2.11.0" + wagmi: "npm:^2.12.24" peerDependencies: "@types/react": ^18 "@xmtp/frames-validator": ^0.6.0 @@ -2222,17 +2228,24 @@ __metadata: languageName: unknown linkType: soft -"@coinbase/wallet-sdk@npm:4.0.4": - version: 4.0.4 - resolution: "@coinbase/wallet-sdk@npm:4.0.4" +"@coinbase/wallet-sdk@npm:4.1.0": + version: 4.1.0 + resolution: "@coinbase/wallet-sdk@npm:4.1.0" dependencies: - buffer: "npm:^6.0.3" + "@noble/hashes": "npm:^1.4.0" clsx: "npm:^1.2.1" eventemitter3: "npm:^5.0.1" - keccak: "npm:^3.0.3" preact: "npm:^10.16.0" - sha.js: "npm:^2.4.11" - checksum: 7c8c39688c144b5305ac59d847023f7dce9ccffdd8ed6fdcc690c03980ce7cf8f88caff4e0cf0a1f081bcfd61ebe6a590970771505f86700f9b798a0e8e2dc88 + checksum: 9ccd8171e8874a357f246fc3b8b9641cb015f12e0c8912c15b77c55cdca58c00ba59c68afdc3162d26421fedcaf8164a95ee39abce96e4dcde5b391e0920ca65 + languageName: node + linkType: hard + +"@ecies/ciphers@npm:^0.2.0": + version: 0.2.0 + resolution: "@ecies/ciphers@npm:0.2.0" + peerDependencies: + "@noble/ciphers": ^1.0.0 + checksum: 1aa83fd46c52325e267c67eb2ab1575751da008a18ef806b4ade3ff3db71df7e29155287c3b66e1dcc3c47bf5ce7b302509518569763b6c91cc5b6f9f6f12cb3 languageName: node linkType: hard @@ -3044,7 +3057,7 @@ __metadata: languageName: node linkType: hard -"@metamask/json-rpc-engine@npm:^7.0.0, @metamask/json-rpc-engine@npm:^7.3.2": +"@metamask/json-rpc-engine@npm:^7.0.0": version: 7.3.3 resolution: "@metamask/json-rpc-engine@npm:7.3.3" dependencies: @@ -3055,15 +3068,26 @@ __metadata: languageName: node linkType: hard -"@metamask/json-rpc-middleware-stream@npm:^6.0.2": - version: 6.0.2 - resolution: "@metamask/json-rpc-middleware-stream@npm:6.0.2" +"@metamask/json-rpc-engine@npm:^8.0.1, @metamask/json-rpc-engine@npm:^8.0.2": + version: 8.0.2 + resolution: "@metamask/json-rpc-engine@npm:8.0.2" dependencies: - "@metamask/json-rpc-engine": "npm:^7.3.2" + "@metamask/rpc-errors": "npm:^6.2.1" + "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/utils": "npm:^8.3.0" + checksum: 57a584e713be98837b56b1985fc14020b74939af200c304e9dcde0a59b622f0d4b1fd07a9032dd3652b72ce330e47db8b9aa13402a443ad8c09667a4204c4c17 + languageName: node + linkType: hard + +"@metamask/json-rpc-middleware-stream@npm:^7.0.1": + version: 7.0.2 + resolution: "@metamask/json-rpc-middleware-stream@npm:7.0.2" + dependencies: + "@metamask/json-rpc-engine": "npm:^8.0.2" "@metamask/safe-event-emitter": "npm:^3.0.0" "@metamask/utils": "npm:^8.3.0" readable-stream: "npm:^3.6.2" - checksum: a91b8d834253a1700d96cf0f08d2362e2db58365f751cb3e60b3c5e9422a1f443a8a515d5a653ced59535726717d0f827c1aaf2a33dd33efb96a05f653bb0915 + checksum: 5819e5cd1460046d309218110a76727d5b5b7b0fb379efd2e938e145905a359c2b6d4278d390760227ad5823e3f4bcaa001cbb5abeeeb014b08badbb1fa29f1f languageName: node linkType: hard @@ -3086,15 +3110,15 @@ __metadata: languageName: node linkType: hard -"@metamask/providers@npm:^15.0.0": - version: 15.0.0 - resolution: "@metamask/providers@npm:15.0.0" +"@metamask/providers@npm:16.1.0": + version: 16.1.0 + resolution: "@metamask/providers@npm:16.1.0" dependencies: - "@metamask/json-rpc-engine": "npm:^7.3.2" - "@metamask/json-rpc-middleware-stream": "npm:^6.0.2" + "@metamask/json-rpc-engine": "npm:^8.0.1" + "@metamask/json-rpc-middleware-stream": "npm:^7.0.1" "@metamask/object-multiplex": "npm:^2.0.0" "@metamask/rpc-errors": "npm:^6.2.1" - "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/safe-event-emitter": "npm:^3.1.1" "@metamask/utils": "npm:^8.3.0" detect-browser: "npm:^5.2.0" extension-port-stream: "npm:^3.0.0" @@ -3102,7 +3126,7 @@ __metadata: is-stream: "npm:^2.0.0" readable-stream: "npm:^3.6.2" webextension-polyfill: "npm:^0.10.0" - checksum: c079cb8440f7cbd8ba863070a8c5c1ada4ad99e31694ec7b0c537b1cb11e66f9d4271e737633ce89f98248208ba076bfc90ddab94ce0299178fdab9a8489fb09 + checksum: ef0fe2cad0db6e2fd1c0b73894419e4dc153e1742e8b16e233164eaec941ef3d4859728e4a2e733e818b56093abd889fc96c7a75dccf9878cbdab45fd3b36e2c languageName: node linkType: hard @@ -3130,9 +3154,16 @@ __metadata: languageName: node linkType: hard -"@metamask/sdk-communication-layer@npm:0.26.4": - version: 0.26.4 - resolution: "@metamask/sdk-communication-layer@npm:0.26.4" +"@metamask/safe-event-emitter@npm:^3.1.1": + version: 3.1.2 + resolution: "@metamask/safe-event-emitter@npm:3.1.2" + checksum: ca59aada3e79bae9609d3be2569c25c22f9b1df05821a2fbebfbcc835a811347e814eabf9dbbddf342fef9dcadac903492a49fdc0c9bcac0aff980c0d38daab2 + languageName: node + linkType: hard + +"@metamask/sdk-communication-layer@npm:0.30.0": + version: 0.30.0 + resolution: "@metamask/sdk-communication-layer@npm:0.30.0" dependencies: bufferutil: "npm:^4.0.8" date-fns: "npm:^2.29.3" @@ -3145,17 +3176,17 @@ __metadata: eventemitter2: ^6.4.7 readable-stream: ^3.6.2 socket.io-client: ^4.5.1 - checksum: 01f9704942f6751ba03819117ba611dae3712310bdf54fed1637a526d5fd972fc6fe097be27a5ed4b657a8dea8e497861ce81efa1879000d10696c787e8356e2 + checksum: e3f2b1a05e474142c1c92c89b4347cbefe4503143cd9e27ff961a341afe2bc2d593b111db5a9425231ff1661a9219449fb50c47c3f4ccc39c81c97e925aac477 languageName: node linkType: hard -"@metamask/sdk-install-modal-web@npm:0.26.4": - version: 0.26.4 - resolution: "@metamask/sdk-install-modal-web@npm:0.26.4" +"@metamask/sdk-install-modal-web@npm:0.30.0": + version: 0.30.0 + resolution: "@metamask/sdk-install-modal-web@npm:0.30.0" dependencies: qr-code-styling: "npm:^1.6.0-rc.1" peerDependencies: - i18next: 23.2.3 + i18next: 23.11.5 react: ^18.2.0 react-dom: ^18.2.0 react-native: "*" @@ -3166,23 +3197,22 @@ __metadata: optional: true react-native: optional: true - checksum: 2bd87481e2630e739d19cfd211e5c68ebe7bd24ee4760764381ef93e4127afb5d6d4ca51b539c424c3bd2368dfe421daf86d689e1462b09c84509d0042968e45 + checksum: b515a356148179e74c80562d6127c59a21d25bce0a83bef3b190d02785d231936cc394fb87f6141a673ba0d8ba3f443f0572540aa6883b74ea17b9f6e771dc00 languageName: node linkType: hard -"@metamask/sdk@npm:0.26.4": - version: 0.26.4 - resolution: "@metamask/sdk@npm:0.26.4" +"@metamask/sdk@npm:0.30.1": + version: 0.30.1 + resolution: "@metamask/sdk@npm:0.30.1" dependencies: "@metamask/onboarding": "npm:^1.0.1" - "@metamask/providers": "npm:^15.0.0" - "@metamask/sdk-communication-layer": "npm:0.26.4" - "@metamask/sdk-install-modal-web": "npm:0.26.4" - "@types/dom-screen-wake-lock": "npm:^1.0.0" + "@metamask/providers": "npm:16.1.0" + "@metamask/sdk-communication-layer": "npm:0.30.0" + "@metamask/sdk-install-modal-web": "npm:0.30.0" bowser: "npm:^2.9.0" cross-fetch: "npm:^4.0.0" debug: "npm:^4.3.4" - eciesjs: "npm:^0.3.15" + eciesjs: "npm:^0.4.8" eth-rpc-errors: "npm:^4.0.3" eventemitter2: "npm:^6.4.7" i18next: "npm:23.11.5" @@ -3192,7 +3222,6 @@ __metadata: qrcode-terminal-nooctal: "npm:^0.12.1" react-native-webview: "npm:^11.26.0" readable-stream: "npm:^3.6.2" - rollup-plugin-visualizer: "npm:^5.9.2" socket.io-client: "npm:^4.5.1" util: "npm:^0.12.4" uuid: "npm:^8.3.2" @@ -3204,7 +3233,7 @@ __metadata: optional: true react-dom: optional: true - checksum: 74c671a1dae8f148ad6917f06c01a4d8f57ad9f4be911a7f9f0101be42871efa65a7836779e380a25644a4489a78bda54f68021d2e6066e09dcf08cfd57187f8 + checksum: e42a98471adecc6c291e322ec6772fa8f8d9ae9949887e59c77f7d916ff44f5e69fc57b74449b2e04603e8ecb550e782815a6dc8f81f8afc291fc61d06fe6722 languageName: node linkType: hard @@ -3347,12 +3376,10 @@ __metadata: languageName: node linkType: hard -"@noble/curves@npm:1.2.0, @noble/curves@npm:~1.2.0": - version: 1.2.0 - resolution: "@noble/curves@npm:1.2.0" - dependencies: - "@noble/hashes": "npm:1.3.2" - checksum: 0bac7d1bbfb3c2286910b02598addd33243cb97c3f36f987ecc927a4be8d7d88e0fcb12b0f0ef8a044e7307d1844dd5c49bb724bfa0a79c8ec50ba60768c97f6 +"@noble/ciphers@npm:^1.0.0": + version: 1.0.0 + resolution: "@noble/ciphers@npm:1.0.0" + checksum: 6c04d6e9d10a922fff170efc44622c95a25fb817f4b593e0f150dd27599576f3fe3c5b61eb02054b22d1507e3839879ddd5acb2d2acf8efbea4efab99bbcd333 languageName: node linkType: hard @@ -3374,10 +3401,12 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:1.3.2": - version: 1.3.2 - resolution: "@noble/hashes@npm:1.3.2" - checksum: 2482cce3bce6a596626f94ca296e21378e7a5d4c09597cbc46e65ffacc3d64c8df73111f2265444e36a3168208628258bbbaccba2ef24f65f58b2417638a20e7 +"@noble/curves@npm:1.6.0, @noble/curves@npm:^1.4.0, @noble/curves@npm:^1.6.0, @noble/curves@npm:~1.6.0": + version: 1.6.0 + resolution: "@noble/curves@npm:1.6.0" + dependencies: + "@noble/hashes": "npm:1.5.0" + checksum: f3262aa4d39148e627cd82b5ac1c93f88c5bb46dd2566b5e8e52ffac3a0fc381ad30c2111656fd2bd3b0d37d43d540543e0d93a5ff96a6cb184bc3bfe10d1cd9 languageName: node linkType: hard @@ -3388,10 +3417,10 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:~1.3.0, @noble/hashes@npm:~1.3.2": - version: 1.3.3 - resolution: "@noble/hashes@npm:1.3.3" - checksum: 23c020b33da4172c988e44100e33cd9f8f6250b68b43c467d3551f82070ebd9716e0d9d2347427aa3774c85934a35fa9ee6f026fca2117e3fa12db7bedae7668 +"@noble/hashes@npm:1.5.0, @noble/hashes@npm:^1.5.0, @noble/hashes@npm:~1.5.0": + version: 1.5.0 + resolution: "@noble/hashes@npm:1.5.0" + checksum: 1b46539695fbfe4477c0822d90c881a04d4fa2921c08c552375b444a48cac9930cb1ee68de0a3c7859e676554d0f3771999716606dc4d8f826e414c11692cdd9 languageName: node linkType: hard @@ -4038,23 +4067,23 @@ __metadata: languageName: node linkType: hard -"@safe-global/safe-apps-provider@npm:0.18.1": - version: 0.18.1 - resolution: "@safe-global/safe-apps-provider@npm:0.18.1" +"@safe-global/safe-apps-provider@npm:0.18.3": + version: 0.18.3 + resolution: "@safe-global/safe-apps-provider@npm:0.18.3" dependencies: - "@safe-global/safe-apps-sdk": "npm:^8.1.0" + "@safe-global/safe-apps-sdk": "npm:^9.1.0" events: "npm:^3.3.0" - checksum: 9e6375132930cedd0935baa83cd026eb7c76776c7285edb3ff8c463ccf48d1e30cea03e93ce7199d3d3efa3cd035495e5f85fc361e203a2c03a4459d1989e726 + checksum: 7209d761919969c0859e8b9df90fd46d06c3f99424ecd5fd2e0b8080355a880504ee5c46cebcbaa94739f8be272f3f7102a9f40cf18e6c1a9e1d7dd29d77ee5e languageName: node linkType: hard -"@safe-global/safe-apps-sdk@npm:8.1.0, @safe-global/safe-apps-sdk@npm:^8.1.0": - version: 8.1.0 - resolution: "@safe-global/safe-apps-sdk@npm:8.1.0" +"@safe-global/safe-apps-sdk@npm:9.1.0, @safe-global/safe-apps-sdk@npm:^9.1.0": + version: 9.1.0 + resolution: "@safe-global/safe-apps-sdk@npm:9.1.0" dependencies: "@safe-global/safe-gateway-typescript-sdk": "npm:^3.5.3" - viem: "npm:^1.0.0" - checksum: b6ad0610ed39a1106ecaa91e43e411dd361c8d4d9712cb3fbf15342950b86fe387ce331bd91ae35c90ff036cded188272ea45ca4e3534c2b08e7e3d3c741fdc0 + viem: "npm:^2.1.1" + checksum: 13af12122a6b1388e7960a76c3c421ea5ed97197646cd1f720b9fc9364fad0cc8f21cda23773130cd6bf57935a36f9e93f5222569cc80382709430b5cad26fda languageName: node linkType: hard @@ -4065,21 +4094,17 @@ __metadata: languageName: node linkType: hard -"@scure/base@npm:^1.1.3, @scure/base@npm:~1.1.0, @scure/base@npm:~1.1.2, @scure/base@npm:~1.1.6": +"@scure/base@npm:^1.1.3, @scure/base@npm:~1.1.6": version: 1.1.7 resolution: "@scure/base@npm:1.1.7" checksum: 2d06aaf39e6de4b9640eb40d2e5419176ebfe911597856dcbf3bc6209277ddb83f4b4b02cb1fd1208f819654268ec083da68111d3530bbde07bae913e2fc2e5d languageName: node linkType: hard -"@scure/bip32@npm:1.3.2": - version: 1.3.2 - resolution: "@scure/bip32@npm:1.3.2" - dependencies: - "@noble/curves": "npm:~1.2.0" - "@noble/hashes": "npm:~1.3.2" - "@scure/base": "npm:~1.1.2" - checksum: 2e9c1ce67f72b6c3329483f5fd39fb43ba6dcf732ed7ac63b80fa96341d2bc4cad1ea4c75bfeb91e801968c00df48b577b015fd4591f581e93f0d91178e630ca +"@scure/base@npm:~1.1.7, @scure/base@npm:~1.1.8": + version: 1.1.9 + resolution: "@scure/base@npm:1.1.9" + checksum: 77a06b9a2db8144d22d9bf198338893d77367c51b58c72b99df990c0a11f7cadd066d4102abb15e3ca6798d1529e3765f55c4355742465e49aed7a0c01fe76e8 languageName: node linkType: hard @@ -4094,13 +4119,14 @@ __metadata: languageName: node linkType: hard -"@scure/bip39@npm:1.2.1": - version: 1.2.1 - resolution: "@scure/bip39@npm:1.2.1" +"@scure/bip32@npm:1.5.0": + version: 1.5.0 + resolution: "@scure/bip32@npm:1.5.0" dependencies: - "@noble/hashes": "npm:~1.3.0" - "@scure/base": "npm:~1.1.0" - checksum: fe951f69dd5a7cdcefbe865bce1b160d6b59ba19bd01d09f0718e54fce37a7d8be158b32f5455f0e9c426a7fbbede3e019bf0baa99bacc88ef26a76a07e115d4 + "@noble/curves": "npm:~1.6.0" + "@noble/hashes": "npm:~1.5.0" + "@scure/base": "npm:~1.1.7" + checksum: 3319beda59e7f129d770cbe49709a2d1742f2deb6989b12e37aa1a47cd128a8c943bdd9286c6a5513ef4539307c4bca8f89f9aa91f294cac4598cbf95fa0c01d languageName: node linkType: hard @@ -4114,6 +4140,16 @@ __metadata: languageName: node linkType: hard +"@scure/bip39@npm:1.4.0": + version: 1.4.0 + resolution: "@scure/bip39@npm:1.4.0" + dependencies: + "@noble/hashes": "npm:~1.5.0" + "@scure/base": "npm:~1.1.8" + checksum: dcdceeac348ed9c0f545c1a7ef8854ef62d6eb4e7b7aaafa4e2ef27f7e1c5744b0cd26292afd04e1ee59ae035b19abdd65174a444b8db8c238ccc662f6b90eac + languageName: node + linkType: hard + "@sideway/address@npm:^4.1.5": version: 4.1.5 resolution: "@sideway/address@npm:4.1.5" @@ -5248,13 +5284,6 @@ __metadata: languageName: node linkType: hard -"@types/dom-screen-wake-lock@npm:^1.0.0": - version: 1.0.3 - resolution: "@types/dom-screen-wake-lock@npm:1.0.3" - checksum: bab45f6a797de562f1bd3c095c49b7c0464ad05e571f38d00adaa35da2b02109bfe587206cc55f420377634cf0f7b07caa5acb3257e49dfd2d94dab74c617bf1 - languageName: node - linkType: hard - "@types/emscripten@npm:^1.39.6": version: 1.39.13 resolution: "@types/emscripten@npm:1.39.13" @@ -5495,15 +5524,6 @@ __metadata: languageName: node linkType: hard -"@types/secp256k1@npm:^4.0.6": - version: 4.0.6 - resolution: "@types/secp256k1@npm:4.0.6" - dependencies: - "@types/node": "npm:*" - checksum: 0e391316ae30c218779583b626382a56546ddbefb65f1ff9cf5e078af8a7118f67f3e66e30914399cc6f8710c424d0d8c3f34262ffb1f429c6ad911fd0d0bc26 - languageName: node - linkType: hard - "@types/semver@npm:^7.3.4, @types/semver@npm:^7.5.0": version: 7.5.8 resolution: "@types/semver@npm:7.5.8" @@ -5777,35 +5797,34 @@ __metadata: languageName: node linkType: hard -"@wagmi/connectors@npm:5.0.24": - version: 5.0.24 - resolution: "@wagmi/connectors@npm:5.0.24" +"@wagmi/connectors@npm:5.3.3": + version: 5.3.3 + resolution: "@wagmi/connectors@npm:5.3.3" dependencies: - "@coinbase/wallet-sdk": "npm:4.0.4" - "@metamask/sdk": "npm:0.26.4" - "@safe-global/safe-apps-provider": "npm:0.18.1" - "@safe-global/safe-apps-sdk": "npm:8.1.0" - "@walletconnect/ethereum-provider": "npm:2.13.0" - "@walletconnect/modal": "npm:2.6.2" + "@coinbase/wallet-sdk": "npm:4.1.0" + "@metamask/sdk": "npm:0.30.1" + "@safe-global/safe-apps-provider": "npm:0.18.3" + "@safe-global/safe-apps-sdk": "npm:9.1.0" + "@walletconnect/ethereum-provider": "npm:2.17.0" cbw-sdk: "npm:@coinbase/wallet-sdk@3.9.3" peerDependencies: - "@wagmi/core": 2.12.0 + "@wagmi/core": 2.14.1 typescript: ">=5.0.4" viem: 2.x peerDependenciesMeta: typescript: optional: true - checksum: 117f6549c6323bd7ea6f8d0c85c7983bbf85ac680bb53801988013c90c6544c0de285e2c36388b917b0461e0946b6181fca411a971b8913e7e66592c36612fa0 + checksum: 78789ed27fca0bc1d54a3a8282584ddcbdcee26f2d95b27d7dd9663a7cd02e2728e0bcdd0ce0aaae8983dfac3ad966c03243dd08ce11b80d908c314f0d139cb7 languageName: node linkType: hard -"@wagmi/core@npm:2.12.0": - version: 2.12.0 - resolution: "@wagmi/core@npm:2.12.0" +"@wagmi/core@npm:2.14.1": + version: 2.14.1 + resolution: "@wagmi/core@npm:2.14.1" dependencies: eventemitter3: "npm:5.0.1" mipd: "npm:0.0.7" - zustand: "npm:4.4.1" + zustand: "npm:5.0.0" peerDependencies: "@tanstack/query-core": ">=5.0.0" typescript: ">=5.0.4" @@ -5815,13 +5834,13 @@ __metadata: optional: true typescript: optional: true - checksum: e7defa0c10e9e1be198b5abe115bedecdbcda02b61e90e72fa8e83bfec12e703ca7500d9c7f6efa915bf7c1a7e5cd4f058412a42a3fcc9a6b045468f24550d8a + checksum: 4cde494a8fcf218e79eb4e650fd598fbb273fcaa3cab52aa0a3b41a2a104de2bac602ed19d2d2c6b130f881300770d809b5e1bfd81a8375269bed7d4e9606fb0 languageName: node linkType: hard -"@walletconnect/core@npm:2.13.0": - version: 2.13.0 - resolution: "@walletconnect/core@npm:2.13.0" +"@walletconnect/core@npm:2.17.0": + version: 2.17.0 + resolution: "@walletconnect/core@npm:2.17.0" dependencies: "@walletconnect/heartbeat": "npm:1.2.2" "@walletconnect/jsonrpc-provider": "npm:1.0.14" @@ -5830,17 +5849,16 @@ __metadata: "@walletconnect/jsonrpc-ws-connection": "npm:1.0.14" "@walletconnect/keyvaluestorage": "npm:1.1.1" "@walletconnect/logger": "npm:2.1.2" - "@walletconnect/relay-api": "npm:1.0.10" + "@walletconnect/relay-api": "npm:1.0.11" "@walletconnect/relay-auth": "npm:1.0.4" "@walletconnect/safe-json": "npm:1.0.2" "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.13.0" - "@walletconnect/utils": "npm:2.13.0" + "@walletconnect/types": "npm:2.17.0" + "@walletconnect/utils": "npm:2.17.0" events: "npm:3.3.0" - isomorphic-unfetch: "npm:3.1.0" lodash.isequal: "npm:4.5.0" uint8arrays: "npm:3.1.0" - checksum: e1356eb8ac94f8f6743814337607244557280d43a6e2ec14591beb21dca0e73cc79b16f0a2ace60ef447149778c5383a1fd4eac67788372d249c8c5f6d8c7dc2 + checksum: 34ae5b9b68c08c1dd3ebb2a6ebff8697307e76fbfe4d6b51d5d090da5cd1613e1c66fa5ac3a87c914333458d7b5bf075bb664292f6b2c7d438c72f706d87416d languageName: node linkType: hard @@ -5853,21 +5871,21 @@ __metadata: languageName: node linkType: hard -"@walletconnect/ethereum-provider@npm:2.13.0": - version: 2.13.0 - resolution: "@walletconnect/ethereum-provider@npm:2.13.0" +"@walletconnect/ethereum-provider@npm:2.17.0": + version: 2.17.0 + resolution: "@walletconnect/ethereum-provider@npm:2.17.0" dependencies: "@walletconnect/jsonrpc-http-connection": "npm:1.0.8" "@walletconnect/jsonrpc-provider": "npm:1.0.14" "@walletconnect/jsonrpc-types": "npm:1.0.4" "@walletconnect/jsonrpc-utils": "npm:1.0.8" - "@walletconnect/modal": "npm:2.6.2" - "@walletconnect/sign-client": "npm:2.13.0" - "@walletconnect/types": "npm:2.13.0" - "@walletconnect/universal-provider": "npm:2.13.0" - "@walletconnect/utils": "npm:2.13.0" + "@walletconnect/modal": "npm:2.7.0" + "@walletconnect/sign-client": "npm:2.17.0" + "@walletconnect/types": "npm:2.17.0" + "@walletconnect/universal-provider": "npm:2.17.0" + "@walletconnect/utils": "npm:2.17.0" events: "npm:3.3.0" - checksum: 4bc3c76b7a9e81ac505fcff99244bfa9f14419ee2de322e491dacd94669923adf5e9e1a2298ae84b33e3d5985a0bfab6b7715237e6f2ce23ec02c67dedb58898 + checksum: b046a9c296e95b22841f0b2efd28a4ce1a38529a9ba412d3c8ffc482879d79c3d2a24b8c0ec712baecf781938b4321ab5c1ecad5573d078add7c47b0cfd08a25 languageName: node linkType: hard @@ -5974,43 +5992,43 @@ __metadata: languageName: node linkType: hard -"@walletconnect/modal-core@npm:2.6.2": - version: 2.6.2 - resolution: "@walletconnect/modal-core@npm:2.6.2" +"@walletconnect/modal-core@npm:2.7.0": + version: 2.7.0 + resolution: "@walletconnect/modal-core@npm:2.7.0" dependencies: valtio: "npm:1.11.2" - checksum: 5e3fb21a1fc923ec0d2a3e33cc360e3d56278a211609d5fd4cc4d6e3b4f1acb40b9783fcc771b259b78c7e731af3862def096aa1da2e210e7859729808304c94 + checksum: 84b11735c005e37e661aa0f08b2e8c8098db3b2cacd957c4a73f4d3de11b2d5e04dd97ab970f8d22fc3e8269fea3297b9487e177343bbab8dd69b3b917fb7f60 languageName: node linkType: hard -"@walletconnect/modal-ui@npm:2.6.2": - version: 2.6.2 - resolution: "@walletconnect/modal-ui@npm:2.6.2" +"@walletconnect/modal-ui@npm:2.7.0": + version: 2.7.0 + resolution: "@walletconnect/modal-ui@npm:2.7.0" dependencies: - "@walletconnect/modal-core": "npm:2.6.2" + "@walletconnect/modal-core": "npm:2.7.0" lit: "npm:2.8.0" motion: "npm:10.16.2" qrcode: "npm:1.5.3" - checksum: 5d8f0a2703b9757dfa48ad3e48a40e64608f6a28db31ec93a2f10e942dcc5ee986c03ffdab94018e905836d339131fc928bc14614a94943011868cdddc36a32a + checksum: b717f1fc9854b7d14a4364720fce2d44167f547533340704644ed2fdf9d861b3798ffd19a3b51062a366a8bc39f84b9a8bb3dd04e9e33da742192359be00b051 languageName: node linkType: hard -"@walletconnect/modal@npm:2.6.2": - version: 2.6.2 - resolution: "@walletconnect/modal@npm:2.6.2" +"@walletconnect/modal@npm:2.7.0": + version: 2.7.0 + resolution: "@walletconnect/modal@npm:2.7.0" dependencies: - "@walletconnect/modal-core": "npm:2.6.2" - "@walletconnect/modal-ui": "npm:2.6.2" - checksum: 1cc309f63d061e49fdf7b10d28093d7ef1a47f4624f717f8fd3bf6097ac3b00cea4acc45c50e8bd386d4bcfdf10f4dcba960f7129c557b9dc42ef7d05b970807 + "@walletconnect/modal-core": "npm:2.7.0" + "@walletconnect/modal-ui": "npm:2.7.0" + checksum: 2f3074eebbca41a46e29680dc2565bc762133508774f05db0075a82b0b66ecc8defca40a94ad63669676090a7e3ef671804592b10e91636ab1cdeac014a1eb11 languageName: node linkType: hard -"@walletconnect/relay-api@npm:1.0.10": - version: 1.0.10 - resolution: "@walletconnect/relay-api@npm:1.0.10" +"@walletconnect/relay-api@npm:1.0.11": + version: 1.0.11 + resolution: "@walletconnect/relay-api@npm:1.0.11" dependencies: "@walletconnect/jsonrpc-types": "npm:^1.0.2" - checksum: 2709bbe45f60579cd2e1c74b0fd03c36ea409cd8a9117e00a7485428d0c9ba7eb02e525c21e5286db2b6ce563b1d29053b0249c2ed95f8adcf02b11e54f61fcd + checksum: 2595d7e68d3a93e7735e0b6204811762898b0ce1466e811d78be5bcec7ac1cde5381637615a99104099165bf63695da5ef9381d6ded29924a57a71b10712a91d languageName: node linkType: hard @@ -6037,20 +6055,20 @@ __metadata: languageName: node linkType: hard -"@walletconnect/sign-client@npm:2.13.0": - version: 2.13.0 - resolution: "@walletconnect/sign-client@npm:2.13.0" +"@walletconnect/sign-client@npm:2.17.0": + version: 2.17.0 + resolution: "@walletconnect/sign-client@npm:2.17.0" dependencies: - "@walletconnect/core": "npm:2.13.0" + "@walletconnect/core": "npm:2.17.0" "@walletconnect/events": "npm:1.0.1" "@walletconnect/heartbeat": "npm:1.2.2" "@walletconnect/jsonrpc-utils": "npm:1.0.8" "@walletconnect/logger": "npm:2.1.2" "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.13.0" - "@walletconnect/utils": "npm:2.13.0" + "@walletconnect/types": "npm:2.17.0" + "@walletconnect/utils": "npm:2.17.0" events: "npm:3.3.0" - checksum: 58c702997f719cab9b183d23c53efee561a3a407de24e464e339e350124a71eeccb1bd651f0893ad0f39343ce42a7ff3666bbd28cb8dfc6a0e8d12c94eacc288 + checksum: 48f7d13b3db49584a40dc2653f49fabadd100a324e2213476b8d9e4d6fe0808a08ae14103d2e5b609abff3115197003d8570d606275dbd0f6774d0d49da10c61 languageName: node linkType: hard @@ -6063,9 +6081,9 @@ __metadata: languageName: node linkType: hard -"@walletconnect/types@npm:2.13.0": - version: 2.13.0 - resolution: "@walletconnect/types@npm:2.13.0" +"@walletconnect/types@npm:2.17.0": + version: 2.17.0 + resolution: "@walletconnect/types@npm:2.17.0" dependencies: "@walletconnect/events": "npm:1.0.1" "@walletconnect/heartbeat": "npm:1.2.2" @@ -6073,46 +6091,48 @@ __metadata: "@walletconnect/keyvaluestorage": "npm:1.1.1" "@walletconnect/logger": "npm:2.1.2" events: "npm:3.3.0" - checksum: 9962284daf92d6b27a009b90b908518b3f028f10f2168ddbc37ad2cb2b20cb0e65d170aa4343e2ea445c519cf79e78264480e2b2c4ab9f974f2c15962db5b012 + checksum: bdc0c062da1edb4410882d9cfca1bb30eb0afd7caea90d5e7a66eaf15e28380e9ef97635cd5e5a017947f4c814c1f780622b4d8946b11a335d415ae066ec7ade languageName: node linkType: hard -"@walletconnect/universal-provider@npm:2.13.0": - version: 2.13.0 - resolution: "@walletconnect/universal-provider@npm:2.13.0" +"@walletconnect/universal-provider@npm:2.17.0": + version: 2.17.0 + resolution: "@walletconnect/universal-provider@npm:2.17.0" dependencies: "@walletconnect/jsonrpc-http-connection": "npm:1.0.8" "@walletconnect/jsonrpc-provider": "npm:1.0.14" "@walletconnect/jsonrpc-types": "npm:1.0.4" "@walletconnect/jsonrpc-utils": "npm:1.0.8" "@walletconnect/logger": "npm:2.1.2" - "@walletconnect/sign-client": "npm:2.13.0" - "@walletconnect/types": "npm:2.13.0" - "@walletconnect/utils": "npm:2.13.0" + "@walletconnect/sign-client": "npm:2.17.0" + "@walletconnect/types": "npm:2.17.0" + "@walletconnect/utils": "npm:2.17.0" events: "npm:3.3.0" - checksum: 79d14cdce74054859f26f69a17215c59367d961d0f36e7868601ed98030bd0636b3806dd68b76cc66ec4a70d5f6ec107fbe18bb6a1022a5161ea6d71810a0ed9 + checksum: 7c1afc79054db5add4e937d7adaadb4fc26aecffb5d749d388418fa5d4eb153807ab4de301b642cd80669b4e5c6bcae917f18cf5ce8696d87da8b3705b60d1ec languageName: node linkType: hard -"@walletconnect/utils@npm:2.13.0": - version: 2.13.0 - resolution: "@walletconnect/utils@npm:2.13.0" +"@walletconnect/utils@npm:2.17.0": + version: 2.17.0 + resolution: "@walletconnect/utils@npm:2.17.0" dependencies: "@stablelib/chacha20poly1305": "npm:1.0.1" "@stablelib/hkdf": "npm:1.0.1" "@stablelib/random": "npm:1.0.2" "@stablelib/sha256": "npm:1.0.1" "@stablelib/x25519": "npm:1.0.3" - "@walletconnect/relay-api": "npm:1.0.10" + "@walletconnect/relay-api": "npm:1.0.11" + "@walletconnect/relay-auth": "npm:1.0.4" "@walletconnect/safe-json": "npm:1.0.2" "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.13.0" + "@walletconnect/types": "npm:2.17.0" "@walletconnect/window-getters": "npm:1.0.1" "@walletconnect/window-metadata": "npm:1.0.1" detect-browser: "npm:5.3.0" + elliptic: "npm:^6.5.7" query-string: "npm:7.1.3" uint8arrays: "npm:3.1.0" - checksum: 2dbdb9ed790492411eb5c4e6b06aa511f6c0204c4ff283ecb5a4d339bb1bf3da033ef3a0c0af66b94df0553676f408222c2feca8c601b0554be2bbfbef43d6ec + checksum: d1da74b2cd7af35f16d735fe408cfc820c611b2709bd00899e4e91b0b0a6dcd8f344f97df34d0ef8cabc121619a40b62118ffa2aa233ddba9863d1ba23480a0c languageName: node linkType: hard @@ -6186,24 +6206,24 @@ __metadata: languageName: node linkType: hard -"abitype@npm:0.9.8": - version: 0.9.8 - resolution: "abitype@npm:0.9.8" +"abitype@npm:1.0.5": + version: 1.0.5 + resolution: "abitype@npm:1.0.5" peerDependencies: typescript: ">=5.0.4" - zod: ^3 >=3.19.1 + zod: ^3 >=3.22.0 peerDependenciesMeta: typescript: optional: true zod: optional: true - checksum: ec559461d901d456820faf307e21b2c129583d44f4c68257ed9d0d44eae461114a7049046e715e069bc6fa70c410f644e06bdd2c798ac30d0ada794cd2a6c51e + checksum: dc954877fba19e2b7a70f1025807d69fa5aabec8bd58ce94e68d1a5ec1697fff3fe5214b4392508db7191762150f19a2396cf66ffb1d3ba8c1f37a89fd25e598 languageName: node linkType: hard -"abitype@npm:1.0.5": - version: 1.0.5 - resolution: "abitype@npm:1.0.5" +"abitype@npm:1.0.6": + version: 1.0.6 + resolution: "abitype@npm:1.0.6" peerDependencies: typescript: ">=5.0.4" zod: ^3 >=3.22.0 @@ -6212,7 +6232,7 @@ __metadata: optional: true zod: optional: true - checksum: dc954877fba19e2b7a70f1025807d69fa5aabec8bd58ce94e68d1a5ec1697fff3fe5214b4392508db7191762150f19a2396cf66ffb1d3ba8c1f37a89fd25e598 + checksum: 30ca97010bbf34b9aaed401858eeb6bc30419f7ff11eb34adcb243522dd56c9d8a9d3d406aa5d4f60a7c263902f5136043005698e3f073ea882a4922d43a2929 languageName: node linkType: hard @@ -7875,13 +7895,6 @@ __metadata: languageName: node linkType: hard -"define-lazy-prop@npm:^2.0.0": - version: 2.0.0 - resolution: "define-lazy-prop@npm:2.0.0" - checksum: db6c63864a9d3b7dc9def55d52764968a5af296de87c1b2cc71d8be8142e445208071953649e0386a8cc37cfcf9a2067a47207f1eb9ff250c2a269658fdae422 - languageName: node - linkType: hard - "define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" @@ -8110,14 +8123,15 @@ __metadata: languageName: node linkType: hard -"eciesjs@npm:^0.3.15": - version: 0.3.19 - resolution: "eciesjs@npm:0.3.19" +"eciesjs@npm:^0.4.8": + version: 0.4.10 + resolution: "eciesjs@npm:0.4.10" dependencies: - "@types/secp256k1": "npm:^4.0.6" - futoin-hkdf: "npm:^1.5.3" - secp256k1: "npm:^5.0.0" - checksum: 8fc86c7675f0e7bb169c546b5422992d52bbbeeeea6abb8e958815b09138873d195a00c708ffa239da29160344b594858ee0d04b3010598b25426029ec75b1c1 + "@ecies/ciphers": "npm:^0.2.0" + "@noble/ciphers": "npm:^1.0.0" + "@noble/curves": "npm:^1.6.0" + "@noble/hashes": "npm:^1.5.0" + checksum: f9e0603a839b763c1bb0a00a64686d553f2d8c10efcfab57461d9e052ebacc80dca0e28cbad8548015a99bee90c60cb085486be4c44261283535873d97aba59e languageName: node linkType: hard @@ -8135,9 +8149,9 @@ __metadata: languageName: node linkType: hard -"elliptic@npm:^6.5.4": - version: 6.5.7 - resolution: "elliptic@npm:6.5.7" +"elliptic@npm:^6.5.7": + version: 6.6.0 + resolution: "elliptic@npm:6.6.0" dependencies: bn.js: "npm:^4.11.9" brorand: "npm:^1.1.0" @@ -8146,7 +8160,7 @@ __metadata: inherits: "npm:^2.0.4" minimalistic-assert: "npm:^1.0.1" minimalistic-crypto-utils: "npm:^1.0.1" - checksum: 799959b6c54ea3564e8961f35abdf8c77e37617f3051614b05ab1fb6a04ddb65bd1caa75ed1bae375b15dda312a0f79fed26ebe76ecf05c5a7af244152a601b8 + checksum: 42eb3492e218017bf8923a5d14a86f414952f2f771361805b3ae9f380923b5da53e203d0d92be95cb0a248858a78db7db5934a346e268abb757e6fe561d401c9 languageName: node linkType: hard @@ -9289,13 +9303,6 @@ __metadata: languageName: node linkType: hard -"futoin-hkdf@npm:^1.5.3": - version: 1.5.3 - resolution: "futoin-hkdf@npm:1.5.3" - checksum: fe87b50d2ac125ca2074e92588ca1df5016e9657267363cb77d8287080639dc31f90e7740f4737aa054c3e687b2ab3456f9b5c55950b94cd2c2010bc441aa5ae - languageName: node - linkType: hard - "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" @@ -10171,15 +10178,6 @@ __metadata: languageName: node linkType: hard -"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": - version: 2.2.1 - resolution: "is-docker@npm:2.2.1" - bin: - is-docker: cli.js - checksum: e828365958d155f90c409cdbe958f64051d99e8aedc2c8c4cd7c89dcf35329daed42f7b99346f7828df013e27deb8f721cf9408ba878c76eb9e8290235fbcdcc - languageName: node - linkType: hard - "is-docker@npm:^3.0.0": version: 3.0.0 resolution: "is-docker@npm:3.0.0" @@ -10436,15 +10434,6 @@ __metadata: languageName: node linkType: hard -"is-wsl@npm:^2.2.0": - version: 2.2.0 - resolution: "is-wsl@npm:2.2.0" - dependencies: - is-docker: "npm:^2.0.0" - checksum: a6fa2d370d21be487c0165c7a440d567274fbba1a817f2f0bfa41cc5e3af25041d84267baa22df66696956038a43973e72fca117918c91431920bdef490fa25e - languageName: node - linkType: hard - "is-wsl@npm:^3.1.0": version: 3.1.0 resolution: "is-wsl@npm:3.1.0" @@ -10498,31 +10487,21 @@ __metadata: languageName: node linkType: hard -"isomorphic-unfetch@npm:3.1.0": - version: 3.1.0 - resolution: "isomorphic-unfetch@npm:3.1.0" - dependencies: - node-fetch: "npm:^2.6.1" - unfetch: "npm:^4.2.0" - checksum: d3b61fca06304db692b7f76bdfd3a00f410e42cfa7403c3b250546bf71589d18cf2f355922f57198e4cc4a9872d3647b20397a5c3edf1a347c90d57c83cf2a89 - languageName: node - linkType: hard - -"isows@npm:1.0.3": - version: 1.0.3 - resolution: "isows@npm:1.0.3" +"isows@npm:1.0.4": + version: 1.0.4 + resolution: "isows@npm:1.0.4" peerDependencies: ws: "*" - checksum: adec15db704bb66615dd8ef33f889d41ae2a70866b21fa629855da98cc82a628ae072ee221fe9779a9a19866cad2a3e72593f2d161a0ce0e168b4484c7df9cd2 + checksum: 46f43b07edcf148acba735ddfc6ed985e1e124446043ea32b71023e67671e46619c8818eda8c34a9ac91cb37c475af12a3aeeee676a88a0aceb5d67a3082313f languageName: node linkType: hard -"isows@npm:1.0.4": - version: 1.0.4 - resolution: "isows@npm:1.0.4" +"isows@npm:1.0.6": + version: 1.0.6 + resolution: "isows@npm:1.0.6" peerDependencies: ws: "*" - checksum: 46f43b07edcf148acba735ddfc6ed985e1e124446043ea32b71023e67671e46619c8818eda8c34a9ac91cb37c475af12a3aeeee676a88a0aceb5d67a3082313f + checksum: f89338f63ce2f497d6cd0f86e42c634209328ebb43b3bdfdc85d8f1589ee75f02b7e6d9e1ba274101d0f6f513b1b8cbe6985e6542b4aaa1f0c5fd50d9c1be95c languageName: node linkType: hard @@ -12219,15 +12198,6 @@ __metadata: languageName: node linkType: hard -"node-addon-api@npm:^5.0.0": - version: 5.1.0 - resolution: "node-addon-api@npm:5.1.0" - dependencies: - node-gyp: "npm:latest" - checksum: 0eb269786124ba6fad9df8007a149e03c199b3e5a3038125dfb3e747c2d5113d406a4e33f4de1ea600aa2339be1f137d55eba1a73ee34e5fff06c52a5c296d1d - languageName: node - linkType: hard - "node-addon-api@npm:^7.0.0": version: 7.1.0 resolution: "node-addon-api@npm:7.1.0" @@ -12253,7 +12223,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.5.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12": +"node-fetch@npm:^2.5.0, node-fetch@npm:^2.6.12": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" dependencies: @@ -12553,17 +12523,6 @@ __metadata: languageName: node linkType: hard -"open@npm:^8.4.0": - version: 8.4.2 - resolution: "open@npm:8.4.2" - dependencies: - define-lazy-prop: "npm:^2.0.0" - is-docker: "npm:^2.1.1" - is-wsl: "npm:^2.2.0" - checksum: bb6b3a58401dacdb0aad14360626faf3fb7fba4b77816b373495988b724fb48941cad80c1b65d62bb31a17609b2cd91c41a181602caea597ca80dfbcc27e84c9 - languageName: node - linkType: hard - "optimal@npm:^5.1.1": version: 5.1.1 resolution: "optimal@npm:5.1.1" @@ -12950,15 +12909,6 @@ __metadata: languageName: node linkType: hard -"permissionless@npm:^0.1.29": - version: 0.1.38 - resolution: "permissionless@npm:0.1.38" - peerDependencies: - viem: ^2.14.1 - checksum: 332ef57d9124dd90ec43b8ba986494b99ceb075f0b57dc3c3c270185f00746b5473bbc84dc5658de4d2551c3759de03fd81a5da0357a0839fa6bc624a5ef36c8 - languageName: node - linkType: hard - "picocolors@npm:^1.0.0, picocolors@npm:^1.0.1": version: 1.0.1 resolution: "picocolors@npm:1.0.1" @@ -14148,25 +14098,6 @@ __metadata: languageName: node linkType: hard -"rollup-plugin-visualizer@npm:^5.9.2": - version: 5.12.0 - resolution: "rollup-plugin-visualizer@npm:5.12.0" - dependencies: - open: "npm:^8.4.0" - picomatch: "npm:^2.3.1" - source-map: "npm:^0.7.4" - yargs: "npm:^17.5.1" - peerDependencies: - rollup: 2.x || 3.x || 4.x - peerDependenciesMeta: - rollup: - optional: true - bin: - rollup-plugin-visualizer: dist/bin/cli.js - checksum: 0e44a641223377ebb472bb10f2b22efa773b5f6fbe8d54f197f07c68d7a432cbf00abad79a0aa1570f70c673c792f24700d926d663ed9a4d0ad8406ae5a0f4e4 - languageName: node - linkType: hard - "rollup@npm:^4.13.0, rollup@npm:^4.9.6": version: 4.18.1 resolution: "rollup@npm:4.18.1" @@ -14387,18 +14318,6 @@ __metadata: languageName: node linkType: hard -"secp256k1@npm:^5.0.0": - version: 5.0.0 - resolution: "secp256k1@npm:5.0.0" - dependencies: - elliptic: "npm:^6.5.4" - node-addon-api: "npm:^5.0.0" - node-gyp: "npm:latest" - node-gyp-build: "npm:^4.2.0" - checksum: b9ab4c952babfe6103978b2f656265041ebe09b8a91b26a796cbcbe04d2252e28e12ec50d5ed3006bf2ca5feef6edcbd71c7c85122615f5ffbcd1acdd564f77f - languageName: node - linkType: hard - "semver@npm:^5.6.0": version: 5.7.2 resolution: "semver@npm:5.7.2" @@ -14769,13 +14688,6 @@ __metadata: languageName: node linkType: hard -"source-map@npm:^0.7.4": - version: 0.7.4 - resolution: "source-map@npm:0.7.4" - checksum: dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc - languageName: node - linkType: hard - "space-separated-tokens@npm:^2.0.0": version: 2.0.2 resolution: "space-separated-tokens@npm:2.0.2" @@ -15727,13 +15639,6 @@ __metadata: languageName: node linkType: hard -"unfetch@npm:^4.2.0": - version: 4.2.0 - resolution: "unfetch@npm:4.2.0" - checksum: a5c0a896a6f09f278b868075aea65652ad185db30e827cb7df45826fe5ab850124bf9c44c4dafca4bf0c55a0844b17031e8243467fcc38dd7a7d435007151f1b - languageName: node - linkType: hard - "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -16110,24 +16015,25 @@ __metadata: languageName: node linkType: hard -"viem@npm:^1.0.0": - version: 1.21.4 - resolution: "viem@npm:1.21.4" +"viem@npm:^2.1.1, viem@npm:^2.21.33": + version: 2.21.35 + resolution: "viem@npm:2.21.35" dependencies: - "@adraffy/ens-normalize": "npm:1.10.0" - "@noble/curves": "npm:1.2.0" - "@noble/hashes": "npm:1.3.2" - "@scure/bip32": "npm:1.3.2" - "@scure/bip39": "npm:1.2.1" - abitype: "npm:0.9.8" - isows: "npm:1.0.3" - ws: "npm:8.13.0" + "@adraffy/ens-normalize": "npm:1.11.0" + "@noble/curves": "npm:1.6.0" + "@noble/hashes": "npm:1.5.0" + "@scure/bip32": "npm:1.5.0" + "@scure/bip39": "npm:1.4.0" + abitype: "npm:1.0.6" + isows: "npm:1.0.6" + webauthn-p256: "npm:0.0.10" + ws: "npm:8.18.0" peerDependencies: typescript: ">=5.0.4" peerDependenciesMeta: typescript: optional: true - checksum: 8b29c790181e44c4c95b9ffed1a8c1b6c2396eb949b95697cc390ca8c49d88ef9e2cd56bd4800b90a9bbc93681ae8d63045fc6fa06e00d84f532bef77967e751 + checksum: d35c0004aa46099c45fdde142f074da124246cf9b58304246bf29c4ddd9218a1114ebc9eae08e7907238daabee6bb870fbf72219d5655c9980cd377c8e66941d languageName: node linkType: hard @@ -16152,27 +16058,6 @@ __metadata: languageName: node linkType: hard -"viem@npm:^2.17.4": - version: 2.17.4 - resolution: "viem@npm:2.17.4" - dependencies: - "@adraffy/ens-normalize": "npm:1.10.0" - "@noble/curves": "npm:1.4.0" - "@noble/hashes": "npm:1.4.0" - "@scure/bip32": "npm:1.4.0" - "@scure/bip39": "npm:1.3.0" - abitype: "npm:1.0.5" - isows: "npm:1.0.4" - ws: "npm:8.17.1" - peerDependencies: - typescript: ">=5.0.4" - peerDependenciesMeta: - typescript: - optional: true - checksum: 8e44aaaba9865500f74be60e5e77473884a2157963114ec9cec491084bcc4f487ba296a473f6ebb7213ba21732727a98090e44dda4f17c5869f0f86faf48f214 - languageName: node - linkType: hard - "vite-node@npm:2.0.5": version: 2.0.5 resolution: "vite-node@npm:2.0.5" @@ -16286,12 +16171,12 @@ __metadata: languageName: node linkType: hard -"wagmi@npm:^2.11.0": - version: 2.11.0 - resolution: "wagmi@npm:2.11.0" +"wagmi@npm:^2.12.24": + version: 2.12.25 + resolution: "wagmi@npm:2.12.25" dependencies: - "@wagmi/connectors": "npm:5.0.24" - "@wagmi/core": "npm:2.12.0" + "@wagmi/connectors": "npm:5.3.3" + "@wagmi/core": "npm:2.14.1" use-sync-external-store: "npm:1.2.0" peerDependencies: "@tanstack/react-query": ">=5.0.0" @@ -16301,7 +16186,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 1b7fc33d5505f89537005f3db9deec1289dba062d1670058e1a3af70b4fb72a78154d551ea5fba48cc7d0448651f6e5a9225464a35572ca0c5e3646cb96898b0 + checksum: 18510c1a7528c28b013130ec84fefc5792ee3d4105d60b0b598075b5b6620d51ad0e890e936c6e549e44de4eb6a36e975d14745551dcff3d1d8a963e4d29b8df languageName: node linkType: hard @@ -16358,6 +16243,16 @@ __metadata: languageName: node linkType: hard +"webauthn-p256@npm:0.0.10": + version: 0.0.10 + resolution: "webauthn-p256@npm:0.0.10" + dependencies: + "@noble/curves": "npm:^1.4.0" + "@noble/hashes": "npm:^1.4.0" + checksum: 27d836d81a1fec24a31d2d9b652f8ff6876b51940d1003bbd14dc5cfa57c58d84223b5a4eece229516522fd997bc0bc7be618ac42b129fb5fa42fa530060b16d + languageName: node + linkType: hard + "webextension-polyfill@npm:>=0.10.0 <1.0": version: 0.12.0 resolution: "webextension-polyfill@npm:0.12.0" @@ -16636,9 +16531,9 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.13.0": - version: 8.13.0 - resolution: "ws@npm:8.13.0" +"ws@npm:8.17.1, ws@npm:~8.17.1": + version: 8.17.1 + resolution: "ws@npm:8.17.1" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -16647,13 +16542,13 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 579817dbbab3ee46669129c220cfd81ba6cdb9ab5c3e9a105702dd045743c4ab72e33bb384573827c0c481213417cc880e41bc097e0fc541a0b79fa3eb38207d + checksum: f4a49064afae4500be772abdc2211c8518f39e1c959640457dcee15d4488628620625c783902a52af2dd02f68558da2868fd06e6fd0e67ebcd09e6881b1b5bfe languageName: node linkType: hard -"ws@npm:8.17.1, ws@npm:~8.17.1": - version: 8.17.1 - resolution: "ws@npm:8.17.1" +"ws@npm:8.18.0, ws@npm:^8.17.0, ws@npm:^8.2.3": + version: 8.18.0 + resolution: "ws@npm:8.18.0" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -16662,7 +16557,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: f4a49064afae4500be772abdc2211c8518f39e1c959640457dcee15d4488628620625c783902a52af2dd02f68558da2868fd06e6fd0e67ebcd09e6881b1b5bfe + checksum: 25eb33aff17edcb90721ed6b0eb250976328533ad3cd1a28a274bd263682e7296a6591ff1436d6cbc50fa67463158b062f9d1122013b361cec99a05f84680e06 languageName: node linkType: hard @@ -16681,21 +16576,6 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.17.0, ws@npm:^8.2.3": - version: 8.18.0 - resolution: "ws@npm:8.18.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 25eb33aff17edcb90721ed6b0eb250976328533ad3cd1a28a274bd263682e7296a6591ff1436d6cbc50fa67463158b062f9d1122013b361cec99a05f84680e06 - languageName: node - linkType: hard - "xml-name-validator@npm:^5.0.0": version: 5.0.0 resolution: "xml-name-validator@npm:5.0.0" @@ -16811,7 +16691,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.3.1, yargs@npm:^17.5.1, yargs@npm:^17.7.2": +"yargs@npm:^17.3.1, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: @@ -16842,15 +16722,14 @@ __metadata: languageName: node linkType: hard -"zustand@npm:4.4.1": - version: 4.4.1 - resolution: "zustand@npm:4.4.1" - dependencies: - use-sync-external-store: "npm:1.2.0" +"zustand@npm:5.0.0": + version: 5.0.0 + resolution: "zustand@npm:5.0.0" peerDependencies: - "@types/react": ">=16.8" - immer: ">=9.0" - react: ">=16.8" + "@types/react": ">=18.0.0" + immer: ">=9.0.6" + react: ">=18.0.0" + use-sync-external-store: ">=1.2.0" peerDependenciesMeta: "@types/react": optional: true @@ -16858,6 +16737,8 @@ __metadata: optional: true react: optional: true - checksum: c119273886e5cdbd7a9f80c9e0fee8a2c736bb6428e283b25c6dfd428789a95e10b6ed6b18553c955ce0d5dd62e2f4a84af3e2a41f31fdb34fd25462d2b19a8c + use-sync-external-store: + optional: true + checksum: 7546df78aa512f1d2271e238c44699c0ac4bc57f12ae46fcfe8ba1e8a97686fc690596e654101acfabcd706099aa5d3519fc3f22d32b3082baa60699bb333e9a languageName: node linkType: hard