UNPKG

@0xfacet/sdk

Version:

A toolkit for Facet blockchain integration.

39 lines (38 loc) 4.13 kB
import { MutateOptions } from "@tanstack/react-query"; import { Config, ResolvedRegister } from "@wagmi/core"; import { Abi, ContractFunctionArgs, ContractFunctionName, WriteContractErrorType } from "viem"; import { UseMutationParameters, UseMutationReturnType, WriteContractData, WriteContractVariables } from "wagmi/query"; import { BridgeAndCallConfig } from "../types"; type ConfigParameter<config extends Config = Config> = { config?: Config | config | undefined; }; type UseBridgeAndCallParameters<config extends Config = Config, context = unknown> = ConfigParameter<config> & { mutation?: UseMutationParameters<WriteContractData, WriteContractErrorType, BridgeAndCallVariables<Abi, string, readonly unknown[], config, config["chains"][number]["id"]>, context> | undefined; }; type BridgeAndCallVariables<abi extends Abi | readonly unknown[] = Abi, functionName extends ContractFunctionName<abi, "nonpayable" | "payable"> = ContractFunctionName<abi, "nonpayable" | "payable">, args extends ContractFunctionArgs<abi, "nonpayable" | "payable", functionName> = ContractFunctionArgs<abi, "nonpayable" | "payable", functionName>, config extends Config = Config, chainId extends config["chains"][number]["id"] = config["chains"][number]["id"], allFunctionNames = ContractFunctionName<abi, "nonpayable" | "payable">> = WriteContractVariables<abi, functionName, args, config, chainId, allFunctionNames> & { ethValue: bigint; bridgeAndCallConfig?: BridgeAndCallConfig; }; export type BridgeAndCallMutate<config extends Config, context = unknown> = <const abi extends Abi | readonly unknown[], functionName extends ContractFunctionName<abi, "nonpayable" | "payable">, args extends ContractFunctionArgs<abi, "nonpayable" | "payable", functionName>, chainId extends config["chains"][number]["id"]>(variables: BridgeAndCallVariables<abi, functionName, args, config, chainId>, options?: MutateOptions<WriteContractData, WriteContractErrorType, BridgeAndCallVariables<abi, functionName, args, config, chainId, functionName>, context> | undefined) => void; export type BridgeAndCallMutateAsync<config extends Config, context = unknown> = <const abi extends Abi | readonly unknown[], functionName extends ContractFunctionName<abi, "nonpayable" | "payable">, args extends ContractFunctionArgs<abi, "nonpayable" | "payable", functionName>, chainId extends config["chains"][number]["id"]>(variables: BridgeAndCallVariables<abi, functionName, args, config, chainId>, options?: MutateOptions<WriteContractData, WriteContractErrorType, BridgeAndCallVariables<abi, functionName, args, config, chainId, functionName>, context> | undefined) => Promise<WriteContractData>; type UseBridgeAndCallReturnType<config extends Config = Config, context = unknown> = UseMutationReturnType<WriteContractData, WriteContractErrorType, BridgeAndCallVariables<Abi, string, readonly unknown[], config, config["chains"][number]["id"]>, context> & { bridgeAndCall: BridgeAndCallMutate<config, context>; bridgeAndCallAsync: BridgeAndCallMutateAsync<config, context>; }; /** * React hook that provides functionality to bridge and write to a Facet contract. * * @template config - The wagmi Config type, defaults to ResolvedRegister["config"] * @template context - The context type for the mutation, defaults to unknown * * @param {UseBridgeAndCallParameters<config, context>} parameters - Configuration options * @param {Config | config | undefined} [parameters.config] - Optional wagmi configuration * @param {UseMutationParameters} [parameters.mutation] - Optional react-query mutation parameters * * @returns {UseBridgeAndCallReturnType<config, context>} Object containing: * - bridgeAndCall: Function to execute the contract write (non-async) * - bridgeAndCallAsync: Function to execute the contract write (async) * - Additional react-query mutation properties (isLoading, isSuccess, etc.) */ export declare function useBridgeAndCall<config extends Config = ResolvedRegister["config"], context = unknown>(parameters?: UseBridgeAndCallParameters<config, context>): UseBridgeAndCallReturnType<config, context>; export {};