import { useMutation } from "@tanstack/solid-query"; import type { Config, ResolvedRegister, WriteContractErrorType, } from "@wagmi/core"; import { writeContractMutationOptions, type WriteContractData, type WriteContractVariables } from "@wagmi/core/query"; import { type Accessor } from "solid-js"; import type { Abi } from "viem"; import type { ConfigParameter, UseMutationParameters, UseMutationReturnType, } from "../types/index.js"; import { useConfig } from "./useConfig.js"; export type UseWriteContractParameters< config extends Config = Config, context = unknown > = ConfigParameter & { mutation?: | UseMutationParameters< WriteContractData, WriteContractErrorType, WriteContractVariables< Abi, string, readonly unknown[], config, config["chains"][number]["id"] >, context > | undefined; }; export type UseWriteContractReturnType< config extends Config = Config, context = unknown > = UseMutationReturnType< WriteContractData, WriteContractErrorType, WriteContractVariables< Abi, string, readonly unknown[], config, config["chains"][number]["id"] >, context > export function useWriteContract< config extends Config = ResolvedRegister["config"], context = unknown >( params: Accessor> = () => ({}) ): UseWriteContractReturnType { const config = useConfig(); const mutationOptions = writeContractMutationOptions(config()); const mut= useMutation(() => { const mutation = params?.().mutation; return { ...(mutation ?? {}), ...mutationOptions, }; }); return mut as UseWriteContractReturnType; }