UNPKG

@wagmi/core

Version:

VanillaJS library for Ethereum

79 lines (70 loc) 2.6 kB
import type { QueryOptions } from '@tanstack/query-core' import { type GetTransactionConfirmationsErrorType, type GetTransactionConfirmationsParameters, type GetTransactionConfirmationsReturnType, getTransactionConfirmations, } from '../actions/getTransactionConfirmations.js' import type { Config } from '../createConfig.js' import type { ScopeKeyParameter } from '../types/properties.js' import type { UnionExactPartial } from '../types/utils.js' import { filterQueryOptions } from './utils.js' export type GetTransactionConfirmationsOptions< config extends Config, chainId extends | config['chains'][number]['id'] | undefined = config['chains'][number]['id'], > = UnionExactPartial<GetTransactionConfirmationsParameters<config, chainId>> & ScopeKeyParameter export function getTransactionConfirmationsQueryOptions< config extends Config, chainId extends | config['chains'][number]['id'] | undefined = config['chains'][number]['id'], >( config: config, options: GetTransactionConfirmationsOptions<config, chainId> = {} as any, ) { return { async queryFn({ queryKey }) { const { hash, transactionReceipt, scopeKey: _, ...parameters } = queryKey[1] if (!hash && !transactionReceipt) throw new Error('hash or transactionReceipt is required') const confirmations = await getTransactionConfirmations(config, { hash, transactionReceipt, ...(parameters as any), }) return confirmations ?? null }, queryKey: getTransactionConfirmationsQueryKey(options), } as const satisfies QueryOptions< GetTransactionConfirmationsQueryFnData, GetTransactionConfirmationsErrorType, GetTransactionConfirmationsData, GetTransactionConfirmationsQueryKey<config, chainId> > } export type GetTransactionConfirmationsQueryFnData = GetTransactionConfirmationsReturnType export type GetTransactionConfirmationsData = GetTransactionConfirmationsQueryFnData export function getTransactionConfirmationsQueryKey< config extends Config, chainId extends | config['chains'][number]['id'] | undefined = config['chains'][number]['id'], >(options: GetTransactionConfirmationsOptions<config, chainId> = {} as any) { return ['transactionConfirmations', filterQueryOptions(options)] as const } export type GetTransactionConfirmationsQueryKey< config extends Config, chainId extends | config['chains'][number]['id'] | undefined = config['chains'][number]['id'], > = ReturnType<typeof getTransactionConfirmationsQueryKey<config, chainId>>