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
Copy
import { useWriteContractSponsored } from "@abstract-foundation/agw-react";
Usage
Copy
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
Synchronous function to submit a transaction to a smart contract with gas
fees sponsored by a paymaster.
Asynchronous function to submit a transaction to a smart contract with gas
fees sponsored by a paymaster.
The transaction hash of the sponsored transaction.
The error if the transaction failed.
Indicates if the transaction was successful.
Indicates if the transaction is currently pending.
Additional context information about the transaction.
The number of times the transaction has failed.
The reason for the transaction failure, if any.
Indicates if the transaction resulted in an error.
Indicates if the hook is in an idle state (no transaction has been initiated).
Indicates if the transaction processing is paused.
A function to clean the mutation internal state (i.e., it resets the mutation
to its initial state).
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.
The timestamp when the transaction was submitted.
The submitted transaction details.
variables
WriteContractSponsoredVariables<Abi, string, readonly unknown[], Config, number> | undefined
The variables used for the contract write operation.