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 claiming accumulated rewards. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * * function App() { * const { mutate: claim } = Hooks.reward.useClaim() * * return ( * * ) * } * ``` * * @param parameters - Parameters. * @returns Mutation result. */ export function useClaim< config extends Config = ResolvedRegister['config'], context = unknown, >( parameters: useClaim.Parameters = {}, ): useClaim.ReturnType { const { mutation } = parameters const config = useConfig(parameters) return useMutation({ ...mutation, async mutationFn(variables) { return Actions.reward.claim(config, variables as never) }, mutationKey: ['claim'], }) as never } export declare namespace useClaim { type Parameters< config extends Config = Config, context = unknown, > = ConfigParameter & { mutation?: | UseMutationParameters< Actions.reward.claim.ReturnValue, Actions.reward.claim.ErrorType, Actions.reward.claim.Parameters, context > | undefined } type ReturnType< config extends Config = Config, context = unknown, > = UseMutationResult< Actions.reward.claim.ReturnValue, Actions.reward.claim.ErrorType, Actions.reward.claim.Parameters, context > } /** * Hook for claiming accumulated rewards and waiting for confirmation. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * * function App() { * const { mutate: claimSync } = Hooks.reward.useClaimSync() * * return ( * * ) * } * ``` * * @param parameters - Parameters. * @returns Mutation result. */ export function useClaimSync< config extends Config = ResolvedRegister['config'], context = unknown, >( parameters: useClaimSync.Parameters = {}, ): useClaimSync.ReturnType { const { mutation } = parameters const config = useConfig(parameters) return useMutation({ ...mutation, async mutationFn(variables) { return Actions.reward.claimSync(config, variables as never) }, mutationKey: ['claimSync'], }) as never } export declare namespace useClaimSync { type Parameters< config extends Config = Config, context = unknown, > = ConfigParameter & { mutation?: | UseMutationParameters< Actions.reward.claimSync.ReturnValue, Actions.reward.claimSync.ErrorType, Actions.reward.claimSync.Parameters, context > | undefined } type ReturnType< config extends Config = Config, context = unknown, > = UseMutationResult< Actions.reward.claimSync.ReturnValue, Actions.reward.claimSync.ErrorType, Actions.reward.claimSync.Parameters, context > } /** * Hook for getting the global reward per token value. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * * function App() { * const { data, isLoading } = Hooks.reward.useGetGlobalRewardPerToken({ * token: '0x20c0000000000000000000000000000000000001', * }) * * if (isLoading) return
Loading...
* return
Value: {data?.toString()}
* } * ``` * * @param parameters - Parameters. * @returns Query result with global reward per token value. */ export function useGetGlobalRewardPerToken< config extends Config = ResolvedRegister['config'], selectData = Actions.reward.getGlobalRewardPerToken.ReturnValue, >( parameters: useGetGlobalRewardPerToken.Parameters = {}, ): useGetGlobalRewardPerToken.ReturnValue { const config = useConfig(parameters) const chainId = useChainId({ config }) const options = Actions.reward.getGlobalRewardPerToken.queryOptions(config, { ...parameters, chainId: parameters.chainId ?? chainId, } as never) return useQuery(options) as never } export declare namespace useGetGlobalRewardPerToken { export type Parameters< config extends Config = ResolvedRegister['config'], selectData = Actions.reward.getGlobalRewardPerToken.ReturnValue, > = ConfigParameter & QueryParameter< Actions.reward.getGlobalRewardPerToken.ReturnValue, Actions.reward.getGlobalRewardPerToken.ErrorType, selectData, Actions.reward.getGlobalRewardPerToken.QueryKey > & ExactPartial> export type ReturnValue< selectData = Actions.reward.getGlobalRewardPerToken.ReturnValue, > = UseQueryReturnType } /** * Hook for getting the reward information for a specific account. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * * function App() { * const { data, isLoading } = Hooks.reward.useUserRewardInfo({ * token: '0x20c0000000000000000000000000000000000001', * account: '0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC', * }) * * if (isLoading) return
Loading...
* return ( *
*
Recipient: {data?.rewardRecipient}
*
Reward per token: {data?.rewardPerToken.toString()}
*
Reward balance: {data?.rewardBalance.toString()}
*
* ) * } * ``` * * @param parameters - Parameters. * @returns Query result with reward information (recipient, rewardPerToken, rewardBalance). */ export function useUserRewardInfo< config extends Config = ResolvedRegister['config'], selectData = Actions.reward.getUserRewardInfo.ReturnValue, >( parameters: useUserRewardInfo.Parameters = {}, ): useUserRewardInfo.ReturnValue { const config = useConfig(parameters) const chainId = useChainId({ config }) const options = Actions.reward.getUserRewardInfo.queryOptions(config, { ...parameters, chainId: parameters.chainId ?? chainId, } as never) return useQuery(options) as never } export declare namespace useUserRewardInfo { export type Parameters< config extends Config = ResolvedRegister['config'], selectData = Actions.reward.getUserRewardInfo.ReturnValue, > = ConfigParameter & QueryParameter< Actions.reward.getUserRewardInfo.ReturnValue, Actions.reward.getUserRewardInfo.ErrorType, selectData, Actions.reward.getUserRewardInfo.QueryKey > & ExactPartial> export type ReturnValue< selectData = Actions.reward.getUserRewardInfo.ReturnValue, > = UseQueryReturnType } /** * Hook for setting the reward recipient for a token holder. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * * function App() { * const { mutate: setRecipient } = Hooks.reward.useSetRecipient() * * return ( * * ) * } * ``` * * @param parameters - Parameters. * @returns Mutation result. */ export function useSetRecipient< config extends Config = ResolvedRegister['config'], context = unknown, >( parameters: useSetRecipient.Parameters = {}, ): useSetRecipient.ReturnType { const { mutation } = parameters const config = useConfig(parameters) return useMutation({ ...mutation, async mutationFn(variables) { return Actions.reward.setRecipient(config, variables as never) }, mutationKey: ['setRecipient'], }) as never } export declare namespace useSetRecipient { type Parameters< config extends Config = Config, context = unknown, > = ConfigParameter & { mutation?: | UseMutationParameters< Actions.reward.setRecipient.ReturnValue, Actions.reward.setRecipient.ErrorType, Actions.reward.setRecipient.Parameters, context > | undefined } type ReturnType< config extends Config = Config, context = unknown, > = UseMutationResult< Actions.reward.setRecipient.ReturnValue, Actions.reward.setRecipient.ErrorType, Actions.reward.setRecipient.Parameters, context > } /** * Hook for setting the reward recipient and waiting for confirmation. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * * function App() { * const { mutate: setRecipientSync } = Hooks.reward.useSetRecipientSync() * * return ( * * ) * } * ``` * * @param parameters - Parameters. * @returns Mutation result. */ export function useSetRecipientSync< config extends Config = ResolvedRegister['config'], context = unknown, >( parameters: useSetRecipientSync.Parameters = {}, ): useSetRecipientSync.ReturnType { const { mutation } = parameters const config = useConfig(parameters) return useMutation({ ...mutation, async mutationFn(variables) { return Actions.reward.setRecipientSync(config, variables as never) }, mutationKey: ['setRecipientSync'], }) as never } export declare namespace useSetRecipientSync { type Parameters< config extends Config = Config, context = unknown, > = ConfigParameter & { mutation?: | UseMutationParameters< Actions.reward.setRecipientSync.ReturnValue, Actions.reward.setRecipientSync.ErrorType, Actions.reward.setRecipientSync.Parameters, context > | undefined } type ReturnType< config extends Config = Config, context = unknown, > = UseMutationResult< Actions.reward.setRecipientSync.ReturnValue, Actions.reward.setRecipientSync.ErrorType, Actions.reward.setRecipientSync.Parameters, context > } /** * Hook for distributing rewards. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * * function App() { * const { mutate: distribute } = Hooks.reward.useDistribute() * * return ( * * ) * } * ``` * * @param parameters - Parameters. * @returns Mutation result. */ export function useDistribute< config extends Config = ResolvedRegister['config'], context = unknown, >( parameters: useDistribute.Parameters = {}, ): useDistribute.ReturnType { const { mutation } = parameters const config = useConfig(parameters) return useMutation({ ...mutation, async mutationFn(variables) { return Actions.reward.distribute(config, variables as never) }, mutationKey: ['distribute'], }) as never } export declare namespace useDistribute { type Parameters< config extends Config = Config, context = unknown, > = ConfigParameter & { mutation?: | UseMutationParameters< Actions.reward.distribute.ReturnValue, Actions.reward.distribute.ErrorType, Actions.reward.distribute.Parameters, context > | undefined } type ReturnType< config extends Config = Config, context = unknown, > = UseMutationResult< Actions.reward.distribute.ReturnValue, Actions.reward.distribute.ErrorType, Actions.reward.distribute.Parameters, context > } /** * Hook for distributing rewards and waiting for confirmation. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * * function App() { * const { mutate: distributeSync } = Hooks.reward.useDistributeSync() * * return ( * * ) * } * ``` * * @param parameters - Parameters. * @returns Mutation result. */ export function useDistributeSync< config extends Config = ResolvedRegister['config'], context = unknown, >( parameters: useDistributeSync.Parameters = {}, ): useDistributeSync.ReturnType { const { mutation } = parameters const config = useConfig(parameters) return useMutation({ ...mutation, async mutationFn(variables) { return Actions.reward.distributeSync(config, variables as never) }, mutationKey: ['distributeSync'], }) as never } export declare namespace useDistributeSync { type Parameters< config extends Config = Config, context = unknown, > = ConfigParameter & { mutation?: | UseMutationParameters< Actions.reward.distributeSync.ReturnValue, Actions.reward.distributeSync.ErrorType, Actions.reward.distributeSync.Parameters, context > | undefined } type ReturnType< config extends Config = Config, context = unknown, > = UseMutationResult< Actions.reward.distributeSync.ReturnValue, Actions.reward.distributeSync.ErrorType, Actions.reward.distributeSync.Parameters, context > } /** * Hook for watching reward distributed events. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * * function App() { * Hooks.reward.useWatchRewardDistributed({ * token: '0x20c0000000000000000000000000000000000001', * onRewardDistributed(args) { * console.log('Reward distributed:', args) * }, * }) * * return
Watching for reward distributed events...
* } * ``` * * @param parameters - Parameters. */ export function useWatchRewardDistributed< config extends Config = ResolvedRegister['config'], >(parameters: useWatchRewardDistributed.Parameters = {}) { const { enabled = true, onRewardDistributed, token, ...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 (!onRewardDistributed) return if (!token) return return Actions.reward.watchRewardDistributed(config, { ...rest, chainId, onRewardDistributed, token, }) }, [ config, enabled, chainId, token, onRewardDistributed, rest.fromBlock, rest.onError, rest.poll, rest.pollingInterval, ]) } export declare namespace useWatchRewardDistributed { type Parameters = UnionCompute< ExactPartial> & ConfigParameter & { enabled?: boolean | undefined } > } /** * Hook for watching reward recipient set events. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * * function App() { * Hooks.reward.useWatchRewardRecipientSet({ * token: '0x20c0000000000000000000000000000000000001', * onRewardRecipientSet(args) { * console.log('Reward recipient set:', args) * }, * }) * * return
Watching for reward recipient set events...
* } * ``` * * @param parameters - Parameters. */ export function useWatchRewardRecipientSet< config extends Config = ResolvedRegister['config'], >(parameters: useWatchRewardRecipientSet.Parameters = {}) { const { enabled = true, onRewardRecipientSet, token, ...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 (!onRewardRecipientSet) return if (!token) return return Actions.reward.watchRewardRecipientSet(config, { ...rest, chainId, onRewardRecipientSet, token, }) }, [ config, enabled, chainId, token, onRewardRecipientSet, rest.fromBlock, rest.onError, rest.poll, rest.pollingInterval, ]) } export declare namespace useWatchRewardRecipientSet { type Parameters = UnionCompute< ExactPartial> & ConfigParameter & { enabled?: boolean | undefined } > }