useWriteContractSponsored hook to initiate transactions on smart contracts with the transaction gas fees sponsored by a
paymaster.
It uses the useWriteContract hook from wagmi
under the hood.
Import
import { useWriteContractSponsored } from "@abstract-foundation/agw-react";
Usage
import { useWriteContractSponsored } from "@abstract-foundation/agw-react";
import { getGeneralPaymasterInput } from "viem/zksync";
import type { Abi } from "viem";
const contractAbi: Abi = [
/* Your contract ABI here */
];
export default function App() {
const { writeContractSponsored, data, error, isSuccess, isPending } =
useWriteContractSponsored();
const handleWriteContract = () => {
writeContractSponsored({
abi: contractAbi,
address: "0xC4822AbB9F05646A9Ce44EFa6dDcda0Bf45595AA",
functionName: "mint",
args: ["0x273B3527BF5b607dE86F504fED49e1582dD2a1C6", BigInt(1)],
paymaster: "0x5407B5040dec3D339A9247f3654E59EEccbb6391",
paymasterInput: getGeneralPaymasterInput({
innerInput: "0x",
}),
});
};
return (
<div>
<button onClick={handleWriteContract} disabled={isPending}>
{isPending ? "Processing..." : "Execute Sponsored Transaction"}
</button>
{isSuccess && <div>Transaction Hash: {data}</div>}
{error && <div>Error: {error.message}</div>}
</div>
);
}
Returns
Returns aUseWriteContractSponsoredReturnType<Config, unknown>.
Show properties
Show properties
function
Synchronous function to submit a transaction to a smart contract with gas
fees sponsored by a paymaster.
function
Asynchronous function to submit a transaction to a smart contract with gas
fees sponsored by a paymaster.
Hex | undefined
The transaction hash of the sponsored transaction.
WriteContractErrorType | null
The error if the transaction failed.
boolean
Indicates if the transaction was successful.
boolean
Indicates if the transaction is currently pending.
unknown
Additional context information about the transaction.
number
The number of times the transaction has failed.
WriteContractErrorType | null
The reason for the transaction failure, if any.
boolean
Indicates if the transaction resulted in an error.
boolean
Indicates if the hook is in an idle state (no transaction has been initiated).
boolean
Indicates if the transaction processing is paused.
() => void
A function to clean the mutation internal state (i.e., it resets the mutation
to its initial state).
'idle' | 'pending' | 'success' | 'error'
The current status of the transaction.
'idle'initial status prior to the mutation function executing.'pending'if the mutation is currently executing.'error'if the last mutation attempt resulted in an error.'success'if the last mutation attempt was successful.
number
The timestamp when the transaction was submitted.
TransactionRequest | undefined
The submitted transaction details.
WriteContractSponsoredVariables<Abi, string, readonly unknown[], Config, number> | undefined
The variables used for the contract write operation.