@0xfacet/sdk
Version:
A toolkit for Facet blockchain integration.
39 lines (38 loc) • 4.13 kB
TypeScript
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 {};