import { Contract } from '@ethersproject/contracts' import { MutationFunction, UseMutationOptions, UseMutationResult } from 'react-query' export type MaybeContract = C | null | undefined export type ContractMethodName = keyof C['callStatic'] & string export type ContractMethodParams< C extends Contract = Contract, N extends ContractMethodName = ContractMethodName, > = Parameters // export type UseQueryContractArrayKey = any> = // | [MaybeContract, N, (any) => void, ContractMethodParams] // | [MaybeContract, N, (any) => void] export type UseQueryContractObjectKey< C extends Contract = Contract, N extends ContractMethodName = ContractMethodName, TVariable = any, > = { contract: MaybeContract methodName: N variables?: TVariable callback?: ({ variables, data }: { variables: TVariable; data: any }) => void } export type UseQueryContractSerializeKeys = { address: string interfaceFormat: string[] methodName: string callData: string } export type UseQueryContractKey = any, TVariable = any> = // | UseQueryContractArrayKey UseQueryContractObjectKey