import type { UseMutationResult } from '@tanstack/react-query' import type { Config, ResolvedRegister } from '@wagmi/core' import type { ConfigParameter, ExactPartial, UnionCompute, } from '@wagmi/core/internal' import { Actions } from '@wagmi/core/tempo' import { useEffect } from 'react' import { useChainId } from '../../hooks/useChainId.js' import { useConfig } from '../../hooks/useConfig.js' import { type UseMutationParameters, type UseQueryReturnType, useMutation, useQuery, } from '../../utils/query.js' import type { QueryParameter } from '../utils.js' /** * Hook for getting the user's default fee token. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * * function App() { * const { data, isLoading } = Hooks.fee.useUserToken({ * account: '0x20c...0055', * }) * * if (isLoading) return
Loading...
* return
Token: {data?.address}
* } * ``` * * @param parameters - Parameters. * @returns Query result with token address and ID. */ export function useUserToken< config extends Config = ResolvedRegister['config'], selectData = Actions.fee.getUserToken.ReturnValue, >( parameters: useUserToken.Parameters, ): useUserToken.ReturnValue { const config = useConfig(parameters) const chainId = useChainId({ config }) const options = Actions.fee.getUserToken.queryOptions(config, { ...parameters, chainId: parameters.chainId ?? chainId, } as never) return useQuery(options) as never } export declare namespace useUserToken { export type Parameters< config extends Config = ResolvedRegister['config'], selectData = Actions.fee.getUserToken.ReturnValue, > = ConfigParameter & QueryParameter< Actions.fee.getUserToken.ReturnValue, Actions.fee.getUserToken.ErrorType, selectData, Actions.fee.getUserToken.QueryKey > & ExactPartial> export type ReturnValue = UseQueryReturnType } /** * Hook for setting the user's default fee token. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * * function App() { * const { mutate, isPending } = Hooks.fee.useSetUserToken() * * return ( * * ) * } * ``` * * @param parameters - Parameters. * @returns Mutation result. */ export function useSetUserToken< config extends Config = ResolvedRegister['config'], context = unknown, >( parameters: useSetUserToken.Parameters = {}, ): useSetUserToken.ReturnType { const { mutation } = parameters const config = useConfig(parameters) return useMutation({ ...mutation, async mutationFn(variables) { return Actions.fee.setUserToken(config, variables as never) }, mutationKey: ['setUserToken'], }) as never } export declare namespace useSetUserToken { type Parameters< config extends Config = Config, context = unknown, > = ConfigParameter & { mutation?: | UseMutationParameters< Actions.fee.setUserToken.ReturnValue, Actions.fee.setUserToken.ErrorType, Actions.fee.setUserToken.Parameters, context > | undefined } type ReturnType< config extends Config = Config, context = unknown, > = UseMutationResult< Actions.fee.setUserToken.ReturnValue, Actions.fee.setUserToken.ErrorType, Actions.fee.setUserToken.Parameters, context > } /** * Hook for setting the user's default fee token. * * Note: This is a synchronous hook that waits for the transaction * to be included on a block before returning a response. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * * function App() { * const { mutate, isPending } = Hooks.fee.useSetUserTokenSync() * * return ( * * ) * } * ``` * * @param parameters - Parameters. * @returns Mutation result. */ export function useSetUserTokenSync< config extends Config = ResolvedRegister['config'], context = unknown, >( parameters: useSetUserTokenSync.Parameters = {}, ): useSetUserTokenSync.ReturnType { const { mutation } = parameters const config = useConfig(parameters) return useMutation({ ...mutation, async mutationFn(variables) { return Actions.fee.setUserTokenSync(config, variables as never) }, mutationKey: ['setUserTokenSync'], }) as never } export declare namespace useSetUserTokenSync { type Parameters< config extends Config = Config, context = unknown, > = ConfigParameter & { mutation?: | UseMutationParameters< Actions.fee.setUserTokenSync.ReturnValue, Actions.fee.setUserTokenSync.ErrorType, Actions.fee.setUserTokenSync.Parameters, context > | undefined } type ReturnType< config extends Config = Config, context = unknown, > = UseMutationResult< Actions.fee.setUserTokenSync.ReturnValue, Actions.fee.setUserTokenSync.ErrorType, Actions.fee.setUserTokenSync.Parameters, context > } /** * Hook for watching user token set events. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * * function App() { * Hooks.fee.useWatchSetUserToken({ * onUserTokenSet(args) { * console.log('User token set:', args) * }, * }) * * return
Watching for user token changes...
* } * ``` * * @param parameters - Parameters. */ export function useWatchSetUserToken< config extends Config = ResolvedRegister['config'], >(parameters: useWatchSetUserToken.Parameters = {}) { const { enabled = true, onUserTokenSet, ...rest } = parameters const config = useConfig({ config: parameters.config }) const configChainId = useChainId({ config }) const chainId = parameters.chainId ?? configChainId // biome-ignore lint/correctness/useExhaustiveDependencies: rest.x is explicitly listed useEffect(() => { if (!enabled) return if (!onUserTokenSet) return return Actions.fee.watchSetUserToken(config, { ...rest, chainId, onUserTokenSet, }) }, [ config, enabled, chainId, onUserTokenSet, rest.fromBlock, rest.onError, rest.poll, rest.pollingInterval, ]) } export declare namespace useWatchSetUserToken { type Parameters = UnionCompute< ExactPartial> & ConfigParameter & { enabled?: boolean | undefined } > }