| title | useWriteContractSponsored |
|---|---|
| description | Hook for interacting with smart contracts using paymasters to cover gas fees. |
Use the 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 { useWriteContractSponsored } from "@abstract-foundation/agw-react";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 a UseWriteContractSponsoredReturnType<Config, unknown>.
'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.
<ResponseField name="submittedTransaction" type="TransactionRequest | undefined"
The submitted transaction details.
<ResponseField name="variables" type="WriteContractSponsoredVariables<Abi, string, readonly unknown[], Config, number> | undefined"
The variables used for the contract write operation.