'use client' import { type Config, type GetClientParameters, type GetClientReturnType, type ResolvedRegister, getClient, watchClient, } from '@wagmi/core' import type { Evaluate } from '@wagmi/core/internal' import { type DeepReadonly, type ShallowRef, readonly, shallowRef, } from 'vue-demi' import type { ConfigParameter, MaybeRefDeep } from '../types.js' import { cloneDeepUnref } from '../utils/cloneDeepUnref.js' import { useConfig } from './useConfig.js' export type UseClientParameters< config extends Config = Config, chainId extends config['chains'][number]['id'] | number | undefined = | config['chains'][number]['id'] | undefined, > = MaybeRefDeep< Evaluate & ConfigParameter> > export type UseClientReturnType< config extends Config = Config, chainId extends config['chains'][number]['id'] | number | undefined = | config['chains'][number]['id'] | undefined, > = ShallowRef>> /** https://wagmi.sh/react/api/hooks/useClient */ export function useClient< config extends Config = ResolvedRegister['config'], chainId extends config['chains'][number]['id'] | number | undefined = | config['chains'][number]['id'] | undefined, >( parameters: UseClientParameters = {}, ): UseClientReturnType { const config = useConfig(parameters) const client = shallowRef( getClient( config, cloneDeepUnref>(parameters as any), ), ) watchClient(config, { onChange() { client.value = getClient( config, cloneDeepUnref>(parameters as any), ) }, }) return readonly(client) as unknown as UseClientReturnType }