From 8970fd0f5e0feb85be9395790b7c8260af4e4bc5 Mon Sep 17 00:00:00 2001 From: 0xFirekeeper <0xFirekeeper@gmail.com> Date: Mon, 12 Oct 2026 21:34:23 +0700 Subject: [PATCH] [SDK] Support webhookOptions on server wallet enqueueTransaction Co-Authored-By: Claude Opus 4.8 --- .changeset/server-wallet-webhook-options.md | 5 +++++ packages/thirdweb/src/engine/server-wallet.ts | 21 ++++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 .changeset/server-wallet-webhook-options.md diff --git a/.changeset/server-wallet-webhook-options.md b/.changeset/server-wallet-webhook-options.md new file mode 100644 index 00000000000..ac14252d64b --- /dev/null +++ b/.changeset/server-wallet-webhook-options.md @@ -0,0 +1,5 @@ +--- +"thirdweb": minor +--- + +Add optional `webhookOptions` to server wallet `enqueueTransaction` and `enqueueBatchTransaction` diff --git a/packages/thirdweb/src/engine/server-wallet.ts b/packages/thirdweb/src/engine/server-wallet.ts index 69f935c22aa..b4619934175 100644 --- a/packages/thirdweb/src/engine/server-wallet.ts +++ b/packages/thirdweb/src/engine/server-wallet.ts @@ -3,6 +3,7 @@ import { type SendTransactionData, type SignMessageData, type SpecificExecutionOptions, + type WebhookOptions, sendTransaction, signMessage, signTypedData, @@ -57,9 +58,11 @@ export type ServerWallet = Account & { enqueueTransaction: (args: { transaction: PreparedTransaction; simulate?: boolean; + webhookOptions?: Array; }) => Promise<{ transactionId: string }>; enqueueBatchTransaction: (args: { transactions: PreparedTransaction[]; + webhookOptions?: Array; }) => Promise<{ transactionId: string }>; }; @@ -242,7 +245,10 @@ export function serverWallet(options: ServerWalletOptions): ServerWallet { } }; - const enqueueTx = async (transaction: SendTransactionOption[]) => { + const enqueueTx = async ( + transaction: SendTransactionOption[], + webhookOptions?: Array, + ) => { if (transaction.length === 0) { throw new Error("No transactions to enqueue"); } @@ -267,6 +273,7 @@ export function serverWallet(options: ServerWalletOptions): ServerWallet { gasLimit: t.gas ? Number(t.gas) : undefined, value: t.value?.toString(), })), + ...(webhookOptions ? { webhookOptions } : {}), }; const result = await sendTransaction({ @@ -302,6 +309,7 @@ export function serverWallet(options: ServerWalletOptions): ServerWallet { address: getAddress(), enqueueBatchTransaction: async (args: { transactions: PreparedTransaction[]; + webhookOptions?: Array; }) => { const serializedTransactions: SendTransactionOption[] = []; for (const transaction of args.transactions) { @@ -317,7 +325,10 @@ export function serverWallet(options: ServerWalletOptions): ServerWallet { value: value ?? undefined, }); } - const transactionIds = await enqueueTx(serializedTransactions); + const transactionIds = await enqueueTx( + serializedTransactions, + args.webhookOptions, + ); const transactionId = transactionIds[0]; if (!transactionId) { throw new Error("No transactionId returned from engine"); @@ -327,6 +338,7 @@ export function serverWallet(options: ServerWalletOptions): ServerWallet { enqueueTransaction: async (args: { transaction: PreparedTransaction; simulate?: boolean; + webhookOptions?: Array; }) => { let serializedTransaction: SendTransactionOption; if (args.simulate) { @@ -351,7 +363,10 @@ export function serverWallet(options: ServerWalletOptions): ServerWallet { value: value ?? undefined, }; } - const transactionIds = await enqueueTx([serializedTransaction]); + const transactionIds = await enqueueTx( + [serializedTransaction], + args.webhookOptions, + ); const transactionId = transactionIds[0]; if (!transactionId) { throw new Error("No transactionId returned from engine");