From 845c779c9a22c8753e5d6b6c5c3814c6a4526803 Mon Sep 17 00:00:00 2001 From: "moxey.eth" Date: Tue, 9 Apr 2024 13:20:36 +1000 Subject: [PATCH] chore: update viem --- bun.lockb | Bin 329125 -> 328743 bytes package.json | 4 +- src/design-system/components/ButtonCopy.tsx | 2 +- src/design-system/components/ButtonSymbol.tsx | 2 +- src/entries/background/rpc.ts | 3 +- src/errors/rpc.ts | 3 +- src/hooks/useErc20Balance.ts | 2 +- src/hooks/useErc20Metadata.ts | 2 +- src/hooks/useReadContract.ts | 16 +++++-- src/hooks/useWriteContract.ts | 27 +++++++++--- src/messengers/schema.ts | 6 +-- src/provider.ts | 2 +- src/types/rpc.ts | 39 ++++++++++++++++++ src/{utils/types.ts => types/utils.ts} | 0 src/utils/abi.ts | 9 +++- src/zustand/account.ts | 5 +-- src/zustand/contracts.ts | 3 +- src/zustand/pending-requests.ts | 2 +- test/dapp/App.tsx | 6 +-- 19 files changed, 102 insertions(+), 31 deletions(-) create mode 100644 src/types/rpc.ts rename src/{utils/types.ts => types/utils.ts} (100%) diff --git a/bun.lockb b/bun.lockb index 7aabedcfabd836e037fa9ead372c787ac5d52b22..da08d01f4c5e447cee123ce5b703e9aaea51b937 100755 GIT binary patch delta 59174 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 ag45{gs_A58s;W<2-l = ContractFunctionName, > = ReadContractParameters_viem & { enabled?: boolean raw?: boolean @@ -31,7 +35,10 @@ export const readContractQueryKey = createQueryKey< export function useReadContractQueryOptions< const TAbi extends Abi | readonly unknown[] = Abi, - TFunctionName extends string = string, + TFunctionName extends ContractFunctionName< + TAbi, + 'pure' | 'view' + > = ContractFunctionName, >(params: ReadContractParameters) { const client = useClient() return queryOptions({ @@ -72,7 +79,10 @@ export function useReadContractQueryOptions< export function useReadContract< const TAbi extends Abi | readonly unknown[] = Abi, - TFunctionName extends string = string, + TFunctionName extends ContractFunctionName< + TAbi, + 'pure' | 'view' + > = ContractFunctionName, >(args: ReadContractParameters) { const queryOptions = useReadContractQueryOptions(args) return useQuery(queryOptions) diff --git a/src/hooks/useWriteContract.ts b/src/hooks/useWriteContract.ts index d4cad5d..e17c9ed 100644 --- a/src/hooks/useWriteContract.ts +++ b/src/hooks/useWriteContract.ts @@ -1,21 +1,38 @@ import { useMutation } from '@tanstack/react-query' -import type { Abi, Account, Chain, WriteContractParameters } from 'viem' +import type { + Abi, + Account, + Chain, + ContractFunctionArgs, + ContractFunctionName, + WriteContractParameters, +} from 'viem' import { useClient } from './useClient' type UseWriteContractParameters< TAbi extends Abi | readonly unknown[], - TFunctionName extends string, -> = WriteContractParameters + TFunctionName extends ContractFunctionName, + TArgs extends ContractFunctionArgs< + TAbi, + 'nonpayable' | 'payable', + TFunctionName + > = ContractFunctionArgs, +> = WriteContractParameters export function useWriteContract< const TAbi extends Abi | readonly unknown[], - TFunctionName extends string, + TFunctionName extends ContractFunctionName, + TArgs extends ContractFunctionArgs< + TAbi, + 'nonpayable' | 'payable', + TFunctionName + >, >() { const client = useClient() return useMutation({ - mutationFn(args: UseWriteContractParameters) { + mutationFn(args: UseWriteContractParameters) { return client.writeContract({ ...args, chain: null } as any) }, }) diff --git a/src/messengers/schema.ts b/src/messengers/schema.ts index 2c3e709..3493a96 100644 --- a/src/messengers/schema.ts +++ b/src/messengers/schema.ts @@ -1,10 +1,8 @@ -import type { Address, EIP1193Parameters, EIP1474Methods } from 'viem' -import type { RpcResponse } from 'viem/utils' +import type { Address } from 'viem' +import type { RpcRequest, RpcResponse } from '~/types/rpc' import type { SessionsState } from '~/zustand' -export type RpcRequest = EIP1193Parameters & { id: number } - export type Schema = { accountsChanged: [ payload: { accounts: Address[]; sessions: SessionsState['sessions'] }, diff --git a/src/provider.ts b/src/provider.ts index e19a7a6..2b7238f 100644 --- a/src/provider.ts +++ b/src/provider.ts @@ -7,7 +7,7 @@ import { UserRejectedRequestError, } from '~/errors' import type { Messenger } from '~/messengers' -import type { RpcRequest } from '~/messengers/schema' +import type { RpcRequest } from '~/types/rpc' const providerCache = new Map() export function getProvider({ diff --git a/src/types/rpc.ts b/src/types/rpc.ts new file mode 100644 index 0000000..7632d5e --- /dev/null +++ b/src/types/rpc.ts @@ -0,0 +1,39 @@ +import type { EIP1193Parameters, EIP1474Methods } from 'viem' + +type SuccessResult = { + method?: never | undefined + result: T + error?: never | undefined +} +type ErrorResult = { + method?: never | undefined + result?: never | undefined + error: T +} +type Subscription = { + method: 'eth_subscription' + error?: never | undefined + result?: never | undefined + params: { + subscription: string + } & ( + | { + result: TResult + error?: never | undefined + } + | { + result?: never | undefined + error: TError + } + ) +} +export type RpcResponse = { + jsonrpc: `${number}` + id: number +} & ( + | SuccessResult + | ErrorResult + | Subscription +) + +export type RpcRequest = EIP1193Parameters & { id: number } diff --git a/src/utils/types.ts b/src/types/utils.ts similarity index 100% rename from src/utils/types.ts rename to src/types/utils.ts diff --git a/src/utils/abi.ts b/src/utils/abi.ts index 8df34ef..7d9a8c7 100644 --- a/src/utils/abi.ts +++ b/src/utils/abi.ts @@ -4,6 +4,7 @@ import type { AbiEvent } from 'abitype' import { FunctionFragment } from 'ethers' import { type AbiItem, + type ContractEventName, type DecodeEventLogParameters, type Hex, decodeEventLog, @@ -18,7 +19,13 @@ export function decodeEventLogs_guessed< data, topics, }: { abiItem: AbiEvent } & Pick< - DecodeEventLogParameters<[TAbiEvent], string, TTopics, TData, true>, + DecodeEventLogParameters< + [TAbiEvent], + ContractEventName<[TAbiEvent]>, + TTopics, + TData, + true + >, 'data' | 'topics' >) { const indexedValues = topics.slice(1) diff --git a/src/zustand/account.ts b/src/zustand/account.ts index ee2198c..c7ece94 100644 --- a/src/zustand/account.ts +++ b/src/zustand/account.ts @@ -1,13 +1,12 @@ +import { uniqBy } from 'remeda' import type { Address, JsonRpcAccount as JsonRpcAccount_, LocalAccount, } from 'viem' - import { useSyncExternalStoreWithTracked } from '~/hooks/useSyncExternalStoreWithTracked' +import type { OneOf } from '~/types/utils' -import { uniqBy } from 'remeda' -import type { OneOf } from '../utils/types' import { createStore } from './utils' // Only support JSON-RPC Accounts for now. In the future, we may want to add support diff --git a/src/zustand/contracts.ts b/src/zustand/contracts.ts index d5ca6af..5d75499 100644 --- a/src/zustand/contracts.ts +++ b/src/zustand/contracts.ts @@ -3,7 +3,8 @@ import type { Abi, Address } from 'abitype' import type { Hex, TransactionReceipt } from 'viem' import { useStore } from 'zustand' -import type { RequiredBy } from '~/utils/types' +import type { RequiredBy } from '~/types/utils' + import { createStore, getKey } from './utils' type Contract = { diff --git a/src/zustand/pending-requests.ts b/src/zustand/pending-requests.ts index c969abc..c2f5cfe 100644 --- a/src/zustand/pending-requests.ts +++ b/src/zustand/pending-requests.ts @@ -1,5 +1,5 @@ import { useSyncExternalStoreWithTracked } from '~/hooks/useSyncExternalStoreWithTracked' -import type { RpcRequest } from '~/messengers/schema' +import type { RpcRequest } from '~/types/rpc' import { createStore } from './utils' diff --git a/test/dapp/App.tsx b/test/dapp/App.tsx index 29a0f1d..f23a52e 100644 --- a/test/dapp/App.tsx +++ b/test/dapp/App.tsx @@ -557,7 +557,7 @@ function ContractPlayground() { chain: null, }) const transaction = await client.waitForTransactionReceipt({ hash }) - setDeployedAddress(transaction.contractAddress) + setDeployedAddress(transaction.contractAddress!) } const test_rivet_1 = async (e: React.FormEvent) => { @@ -619,7 +619,7 @@ function ContractMockERC20() { args: ['MockERC20', 'M20', 18], }) const transaction = await client.waitForTransactionReceipt({ hash }) - setDeployedAddress(transaction.contractAddress) + setDeployedAddress(transaction.contractAddress!) } const mint = async (e: React.FormEvent) => { @@ -665,7 +665,7 @@ function ContractMockERC721() { args: ['MockERC721', 'M721'], }) const transaction = await client.waitForTransactionReceipt({ hash }) - setDeployedAddress(transaction.contractAddress) + setDeployedAddress(transaction.contractAddress!) } const mint = async (e: React.FormEvent) => {