thirdweb 5.101.2-nightly-91750eddc6cc3eb20c36b74490d820b92ea5500f-20250529000432 → 5.102.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/cjs/bridge/Webhook.js +3 -1
  2. package/dist/cjs/bridge/Webhook.js.map +1 -1
  3. package/dist/cjs/cli/commands/stylus/builder.js +39 -12
  4. package/dist/cjs/cli/commands/stylus/builder.js.map +1 -1
  5. package/dist/cjs/cli/commands/stylus/create.js +31 -7
  6. package/dist/cjs/cli/commands/stylus/create.js.map +1 -1
  7. package/dist/cjs/engine/create-server-wallet.js +46 -0
  8. package/dist/cjs/engine/create-server-wallet.js.map +1 -0
  9. package/dist/cjs/engine/get-status.js +0 -54
  10. package/dist/cjs/engine/get-status.js.map +1 -1
  11. package/dist/cjs/engine/index.js +9 -2
  12. package/dist/cjs/engine/index.js.map +1 -1
  13. package/dist/cjs/engine/list-server-wallets.js +40 -0
  14. package/dist/cjs/engine/list-server-wallets.js.map +1 -0
  15. package/dist/cjs/engine/search-transactions.js +115 -0
  16. package/dist/cjs/engine/search-transactions.js.map +1 -0
  17. package/dist/cjs/engine/server-wallet.js +97 -17
  18. package/dist/cjs/engine/server-wallet.js.map +1 -1
  19. package/dist/cjs/engine/wait-for-tx-hash.js +59 -0
  20. package/dist/cjs/engine/wait-for-tx-hash.js.map +1 -0
  21. package/dist/cjs/insight/get-nfts.js +6 -1
  22. package/dist/cjs/insight/get-nfts.js.map +1 -1
  23. package/dist/cjs/pay/buyWithCrypto/getTransfer.js +1 -0
  24. package/dist/cjs/pay/buyWithCrypto/getTransfer.js.map +1 -1
  25. package/dist/cjs/pay/buyWithFiat/getQuote.js +1 -0
  26. package/dist/cjs/pay/buyWithFiat/getQuote.js.map +1 -1
  27. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.js +4 -10
  28. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.js.map +1 -1
  29. package/dist/cjs/utils/fetch.js +1 -0
  30. package/dist/cjs/utils/fetch.js.map +1 -1
  31. package/dist/cjs/version.js +1 -1
  32. package/dist/cjs/version.js.map +1 -1
  33. package/dist/esm/bridge/Webhook.js +3 -1
  34. package/dist/esm/bridge/Webhook.js.map +1 -1
  35. package/dist/esm/cli/commands/stylus/builder.js +39 -12
  36. package/dist/esm/cli/commands/stylus/builder.js.map +1 -1
  37. package/dist/esm/cli/commands/stylus/create.js +31 -7
  38. package/dist/esm/cli/commands/stylus/create.js.map +1 -1
  39. package/dist/esm/engine/create-server-wallet.js +43 -0
  40. package/dist/esm/engine/create-server-wallet.js.map +1 -0
  41. package/dist/esm/engine/get-status.js +0 -53
  42. package/dist/esm/engine/get-status.js.map +1 -1
  43. package/dist/esm/engine/index.js +5 -1
  44. package/dist/esm/engine/index.js.map +1 -1
  45. package/dist/esm/engine/list-server-wallets.js +37 -0
  46. package/dist/esm/engine/list-server-wallets.js.map +1 -0
  47. package/dist/esm/engine/search-transactions.js +112 -0
  48. package/dist/esm/engine/search-transactions.js.map +1 -0
  49. package/dist/esm/engine/server-wallet.js +96 -16
  50. package/dist/esm/engine/server-wallet.js.map +1 -1
  51. package/dist/esm/engine/wait-for-tx-hash.js +56 -0
  52. package/dist/esm/engine/wait-for-tx-hash.js.map +1 -0
  53. package/dist/esm/insight/get-nfts.js +6 -1
  54. package/dist/esm/insight/get-nfts.js.map +1 -1
  55. package/dist/esm/pay/buyWithCrypto/getTransfer.js +1 -0
  56. package/dist/esm/pay/buyWithCrypto/getTransfer.js.map +1 -1
  57. package/dist/esm/pay/buyWithFiat/getQuote.js +1 -0
  58. package/dist/esm/pay/buyWithFiat/getQuote.js.map +1 -1
  59. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.js +4 -10
  60. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.js.map +1 -1
  61. package/dist/esm/utils/fetch.js +1 -0
  62. package/dist/esm/utils/fetch.js.map +1 -1
  63. package/dist/esm/version.js +1 -1
  64. package/dist/esm/version.js.map +1 -1
  65. package/dist/types/bridge/Webhook.d.ts +3 -1
  66. package/dist/types/bridge/Webhook.d.ts.map +1 -1
  67. package/dist/types/cli/commands/stylus/builder.d.ts.map +1 -1
  68. package/dist/types/cli/commands/stylus/create.d.ts.map +1 -1
  69. package/dist/types/engine/create-server-wallet.d.ts +29 -0
  70. package/dist/types/engine/create-server-wallet.d.ts.map +1 -0
  71. package/dist/types/engine/get-status.d.ts +0 -23
  72. package/dist/types/engine/get-status.d.ts.map +1 -1
  73. package/dist/types/engine/index.d.ts +5 -1
  74. package/dist/types/engine/index.d.ts.map +1 -1
  75. package/dist/types/engine/list-server-wallets.d.ts +25 -0
  76. package/dist/types/engine/list-server-wallets.d.ts.map +1 -0
  77. package/dist/types/engine/search-transactions.d.ts +127 -0
  78. package/dist/types/engine/search-transactions.d.ts.map +1 -0
  79. package/dist/types/engine/server-wallet.d.ts +36 -0
  80. package/dist/types/engine/server-wallet.d.ts.map +1 -1
  81. package/dist/types/engine/wait-for-tx-hash.d.ts +25 -0
  82. package/dist/types/engine/wait-for-tx-hash.d.ts.map +1 -0
  83. package/dist/types/pay/buyWithCrypto/getTransfer.d.ts.map +1 -1
  84. package/dist/types/pay/buyWithFiat/getQuote.d.ts +1 -0
  85. package/dist/types/pay/buyWithFiat/getQuote.d.ts.map +1 -1
  86. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.d.ts.map +1 -1
  87. package/dist/types/utils/fetch.d.ts.map +1 -1
  88. package/dist/types/version.d.ts +1 -1
  89. package/dist/types/version.d.ts.map +1 -1
  90. package/package.json +3 -3
  91. package/src/bridge/Chains.test.ts +1 -1
  92. package/src/bridge/Webhook.ts +3 -1
  93. package/src/cli/commands/stylus/builder.ts +45 -12
  94. package/src/cli/commands/stylus/create.ts +33 -8
  95. package/src/engine/create-server-wallet.ts +57 -0
  96. package/src/engine/get-status.ts +0 -69
  97. package/src/engine/index.ts +13 -1
  98. package/src/engine/list-server-wallets.ts +46 -0
  99. package/src/engine/search-transactions.ts +132 -0
  100. package/src/engine/server-wallet.test.ts +54 -0
  101. package/src/engine/server-wallet.ts +104 -17
  102. package/src/engine/wait-for-tx-hash.ts +75 -0
  103. package/src/extensions/erc1155/read/getOwnedNFTs.test.ts +25 -0
  104. package/src/extensions/erc20/drop20.test.ts +91 -1
  105. package/src/insight/get-nfts.ts +6 -1
  106. package/src/pay/buyWithCrypto/getTransfer.ts +1 -0
  107. package/src/pay/buyWithFiat/getQuote.ts +1 -0
  108. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.tsx +3 -16
  109. package/src/utils/fetch.ts +1 -0
  110. package/src/version.ts +1 -1
@@ -3,6 +3,7 @@ import { existsSync, readFileSync } from "node:fs";
3
3
  import { join } from "node:path";
4
4
  import open from "open";
5
5
  import ora, {} from "ora";
6
+ import prompts from "prompts";
6
7
  import { parse } from "toml";
7
8
  import { createThirdwebClient } from "../../../client/client.js";
8
9
  import { upload } from "../../../storage/upload.js";
@@ -76,14 +77,42 @@ async function buildStylus(spinner, secretKey) {
76
77
  }
77
78
  spinner.succeed("ABI generated.");
78
79
  // Step 4: Process the output
79
- const contractName = extractContractNameFromExportAbi(abiContent);
80
- if (!contractName) {
80
+ const parts = abiContent.split(/======= <stdin>:/g).filter(Boolean);
81
+ const contractNames = extractContractNamesFromExportAbi(abiContent);
82
+ let selectedContractName;
83
+ let selectedAbiContent;
84
+ if (contractNames.length === 1) {
85
+ selectedContractName = contractNames[0]?.replace(/^I/, "");
86
+ selectedAbiContent = parts[0];
87
+ }
88
+ else {
89
+ const response = await prompts({
90
+ type: "select",
91
+ name: "contract",
92
+ message: "Select entrypoint:",
93
+ choices: contractNames.map((name, idx) => ({
94
+ title: name,
95
+ value: idx,
96
+ })),
97
+ });
98
+ const selectedIndex = response.contract;
99
+ if (typeof selectedIndex !== "number") {
100
+ spinner.fail("No contract selected.");
101
+ process.exit(1);
102
+ }
103
+ selectedContractName = contractNames[selectedIndex]?.replace(/^I/, "");
104
+ selectedAbiContent = parts[selectedIndex];
105
+ }
106
+ if (!selectedAbiContent) {
107
+ throw new Error("Entrypoint not found");
108
+ }
109
+ if (!selectedContractName) {
81
110
  spinner.fail("Error: Could not determine contract name from ABI output.");
82
111
  process.exit(1);
83
112
  }
84
113
  let cleanedAbi = "";
85
114
  try {
86
- const jsonMatch = abiContent.match(/\[.*\]/s);
115
+ const jsonMatch = selectedAbiContent.match(/\[.*\]/s);
87
116
  if (jsonMatch) {
88
117
  cleanedAbi = jsonMatch[0];
89
118
  }
@@ -106,7 +135,7 @@ async function buildStylus(spinner, secretKey) {
106
135
  },
107
136
  settings: {
108
137
  compilationTarget: {
109
- "src/main.rs": contractName,
138
+ "src/main.rs": selectedContractName,
110
139
  },
111
140
  },
112
141
  sources: {},
@@ -129,12 +158,12 @@ async function buildStylus(spinner, secretKey) {
129
158
  client,
130
159
  files: [
131
160
  {
132
- name: contractName,
161
+ name: selectedContractName,
133
162
  metadataUri,
134
163
  bytecodeUri,
135
164
  analytics: {
136
165
  command: "publish-stylus",
137
- contract_name: contractName,
166
+ contract_name: selectedContractName,
138
167
  cli_version: "",
139
168
  project_type: "stylus",
140
169
  },
@@ -154,12 +183,10 @@ async function buildStylus(spinner, secretKey) {
154
183
  process.exit(1);
155
184
  }
156
185
  }
157
- function extractContractNameFromExportAbi(abiRawOutput) {
158
- const match = abiRawOutput.match(/<stdin>:(I[A-Za-z0-9_]+)/);
159
- if (match?.[1]) {
160
- return match[1].replace(/^I/, "");
161
- }
162
- return null;
186
+ function extractContractNamesFromExportAbi(abiRawOutput) {
187
+ return [...abiRawOutput.matchAll(/<stdin>:(I?[A-Za-z0-9_]+)/g)]
188
+ .map((m) => m[1])
189
+ .filter((name) => typeof name === "string");
163
190
  }
164
191
  function getUrl(hash, command) {
165
192
  const url = new URL(`${THIRDWEB_URL}/contracts/${command}/${encodeURIComponent(hash.replace("ipfs://", ""))}`);
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../../src/cli/commands/stylus/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../../src/cli/commands/stylus/builder.ts"],"names":[],"mappings":"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"}
@@ -32,15 +32,39 @@ export async function createStylusProject() {
32
32
  message: "Project name:",
33
33
  initial: "my-stylus-project",
34
34
  });
35
- spinner.start(`Creating new Stylus project: ${projectName}...`);
36
- const newProject = spawnSync("cargo", ["stylus", "new", projectName], {
37
- stdio: "inherit",
35
+ // Step 4: Select project type
36
+ const { projectType } = await prompts({
37
+ type: "select",
38
+ name: "projectType",
39
+ message: "Select a template:",
40
+ choices: [
41
+ { title: "Default", value: "default" },
42
+ { title: "ERC20", value: "erc20" },
43
+ ],
38
44
  });
39
- if (newProject.status !== 0) {
40
- spinner.fail("Failed to create Stylus project.");
41
- process.exit(1);
45
+ // Step 5: Create the project
46
+ if (projectType === "default") {
47
+ spinner.start(`Creating new Stylus project: ${projectName}...`);
48
+ const newProject = spawnSync("cargo", ["stylus", "new", projectName], {
49
+ stdio: "inherit",
50
+ });
51
+ if (newProject.status !== 0) {
52
+ spinner.fail("Failed to create Stylus project.");
53
+ process.exit(1);
54
+ }
55
+ }
56
+ else if (projectType === "erc20") {
57
+ const repoUrl = "git@github.com:thirdweb-example/stylus-erc20-template.git";
58
+ spinner.start(`Creating new ERC20 Stylus project: ${projectName}...`);
59
+ const clone = spawnSync("git", ["clone", repoUrl, projectName], {
60
+ stdio: "inherit",
61
+ });
62
+ if (clone.status !== 0) {
63
+ spinner.fail("Failed to create Stylus project.");
64
+ process.exit(1);
65
+ }
42
66
  }
43
67
  spinner.succeed("Project created successfully.");
44
- console.log(`\n✅ Done! cd into your project: ${projectName}`);
68
+ console.log(`\n✅ cd into your project: ${projectName}`);
45
69
  }
46
70
  //# sourceMappingURL=create.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../../src/cli/commands/stylus/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;IAEtB,oCAAoC;IACpC,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IACrD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,8BAA8B;IAC9B,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE;QACzE,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAErC,SAAS,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;QACvC,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,wBAAwB,CAAC,EAAE;QAC/D,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IAEH,6BAA6B;IAC7B,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,OAAO,CAAC;QACpC,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,mBAAmB;KAC7B,CAAC,CAAC;IACH,OAAO,CAAC,KAAK,CAAC,gCAAgC,WAAW,KAAK,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE;QACpE,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IACH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC,mCAAmC,WAAW,EAAE,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../../src/cli/commands/stylus/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { createAccount } from "@thirdweb-dev/engine";
2
+ import { stringify } from "viem";
3
+ import { getThirdwebBaseUrl } from "../utils/domains.js";
4
+ import { getClientFetch } from "../utils/fetch.js";
5
+ /**
6
+ * Create a server wallet.
7
+ * @param params - The parameters for the server wallet.
8
+ * @param params.client - The thirdweb client to use.
9
+ * @param params.label - The label for the server wallet.
10
+ * @returns The server wallet signer address and the predicted smart account address.
11
+ * @engine
12
+ * @example
13
+ * ```ts
14
+ * import { Engine } from "thirdweb";
15
+ *
16
+ * const serverWallet = await Engine.createServerWallet({
17
+ * client,
18
+ * label: "My Server Wallet",
19
+ * });
20
+ * console.log(serverWallet.address);
21
+ * console.log(serverWallet.smartAccountAddress);
22
+ * ```
23
+ */
24
+ export async function createServerWallet(params) {
25
+ const { client, label } = params;
26
+ const result = await createAccount({
27
+ baseUrl: getThirdwebBaseUrl("engineCloud"),
28
+ bodySerializer: stringify,
29
+ fetch: getClientFetch(client),
30
+ body: {
31
+ label,
32
+ },
33
+ });
34
+ if (result.error) {
35
+ throw new Error(`Error creating server wallet with label ${label}: ${stringify(result.error)}`);
36
+ }
37
+ const data = result.data?.result;
38
+ if (!data) {
39
+ throw new Error(`No server wallet created with label ${label}`);
40
+ }
41
+ return data;
42
+ }
43
+ //# sourceMappingURL=create-server-wallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-server-wallet.js","sourceRoot":"","sources":["../../../src/engine/create-server-wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAOnD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAA8B;IACrE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;QACjC,OAAO,EAAE,kBAAkB,CAAC,aAAa,CAAC;QAC1C,cAAc,EAAE,SAAS;QACzB,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC;QAC7B,IAAI,EAAE;YACJ,KAAK;SACN;KACF,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,2CAA2C,KAAK,KAAK,SAAS,CAC5D,MAAM,CAAC,KAAK,CACb,EAAE,CACJ,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;IAEjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -54,57 +54,4 @@ export async function getTransactionStatus(args) {
54
54
  id: data.id,
55
55
  };
56
56
  }
57
- /**
58
- * Wait for a transaction to be submitted onchain and return the transaction hash.
59
- * @param args - The arguments for the transaction.
60
- * @param args.client - The thirdweb client to use.
61
- * @param args.transactionId - The id of the transaction to wait for.
62
- * @param args.timeoutInSeconds - The timeout in seconds.
63
- * @engine
64
- * @example
65
- * ```ts
66
- * import { Engine } from "thirdweb";
67
- *
68
- * const { transactionHash } = await Engine.waitForTransactionHash({
69
- * client,
70
- * transactionId, // the transaction id returned from enqueueTransaction
71
- * });
72
- * ```
73
- */
74
- export async function waitForTransactionHash(args) {
75
- const startTime = Date.now();
76
- const TIMEOUT_IN_MS = args.timeoutInSeconds
77
- ? args.timeoutInSeconds * 1000
78
- : 5 * 60 * 1000; // 5 minutes in milliseconds
79
- while (Date.now() - startTime < TIMEOUT_IN_MS) {
80
- const executionResult = await getTransactionStatus(args);
81
- const status = executionResult.status;
82
- switch (status) {
83
- case "FAILED": {
84
- throw new Error(`Transaction failed: ${executionResult.error || "Unknown error"}`);
85
- }
86
- case "CONFIRMED": {
87
- const onchainStatus = executionResult && "onchainStatus" in executionResult
88
- ? executionResult.onchainStatus
89
- : null;
90
- if (onchainStatus === "REVERTED") {
91
- const revertData = "revertData" in executionResult
92
- ? executionResult.revertData
93
- : undefined;
94
- throw new Error(`Transaction reverted: ${revertData?.errorName || ""} ${revertData?.errorArgs ? stringify(revertData.errorArgs) : ""}`);
95
- }
96
- return {
97
- transactionHash: executionResult.transactionHash,
98
- client: args.client,
99
- chain: executionResult.chain,
100
- };
101
- }
102
- default: {
103
- // wait for the transaction to be confirmed
104
- await new Promise((resolve) => setTimeout(resolve, 1000));
105
- }
106
- }
107
- }
108
- throw new Error(`Transaction timed out after ${TIMEOUT_IN_MS / 1000} seconds`);
109
- }
110
57
  //# sourceMappingURL=get-status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-status.js","sourceRoot":"","sources":["../../../src/engine/get-status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-status.js","sourceRoot":"","sources":["../../../src/engine/get-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAiD7C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAG1C;IACC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IACvC,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC;QAC5C,OAAO,EAAE,kBAAkB,CAAC,aAAa,CAAC;QAC1C,cAAc,EAAE,SAAS;QACzB,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC;QAC7B,IAAI,EAAE;YACJ,OAAO,EAAE;gBACP;oBACE,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,CAAC,aAAa,CAAC;oBACvB,SAAS,EAAE,IAAI;iBAChB;aACF;SACF;KACF,CAAC,CAAC;IAEH,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,mCAAmC,aAAa,KAAK,SAAS,CAC5D,YAAY,CAAC,KAAK,CACnB,EAAE,CACJ,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IAE1D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,eAAe,aAAa,YAAY,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,eAAgD,CAAC;IAC9E,OAAO;QACL,GAAG,eAAe;QAClB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS;QAC5B,EAAE,EAAE,IAAI,CAAC,EAAE;KACZ,CAAC;AACJ,CAAC"}
@@ -1,3 +1,7 @@
1
1
  export { serverWallet, } from "./server-wallet.js";
2
- export { getTransactionStatus, waitForTransactionHash, } from "./get-status.js";
2
+ export { getTransactionStatus, } from "./get-status.js";
3
+ export { waitForTransactionHash } from "./wait-for-tx-hash.js";
4
+ export { searchTransactions, } from "./search-transactions.js";
5
+ export { createServerWallet, } from "./create-server-wallet.js";
6
+ export { getServerWallets, } from "./list-server-wallets.js";
3
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GAGvB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,GAGrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EACL,kBAAkB,GAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,GAEnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,gBAAgB,GAEjB,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { listAccounts } from "@thirdweb-dev/engine";
2
+ import { stringify } from "viem";
3
+ import { getThirdwebBaseUrl } from "../utils/domains.js";
4
+ import { getClientFetch } from "../utils/fetch.js";
5
+ /**
6
+ * List all server wallets.
7
+ * @param params - The parameters for the server wallet.
8
+ * @param params.client - The thirdweb client to use.
9
+ * @returns an array of server wallets with their signer address and predicted smart account address.
10
+ * @engine
11
+ * @example
12
+ * ```ts
13
+ * import { Engine } from "thirdweb";
14
+ *
15
+ * const serverWallets = await Engine.getServerWallets({
16
+ * client,
17
+ * });
18
+ * console.log(serverWallets);
19
+ * ```
20
+ */
21
+ export async function getServerWallets(params) {
22
+ const { client } = params;
23
+ const result = await listAccounts({
24
+ baseUrl: getThirdwebBaseUrl("engineCloud"),
25
+ bodySerializer: stringify,
26
+ fetch: getClientFetch(client),
27
+ });
28
+ if (result.error) {
29
+ throw new Error(`Error listing server wallets: ${stringify(result.error)}`);
30
+ }
31
+ const data = result.data?.result;
32
+ if (!data) {
33
+ throw new Error("No server wallets found");
34
+ }
35
+ return data;
36
+ }
37
+ //# sourceMappingURL=list-server-wallets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-server-wallets.js","sourceRoot":"","sources":["../../../src/engine/list-server-wallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMnD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAA4B;IACjE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAChC,OAAO,EAAE,kBAAkB,CAAC,aAAa,CAAC;QAC1C,cAAc,EAAE,SAAS;QACzB,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC;KAC9B,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,iCAAiC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;IAEjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,112 @@
1
+ import { searchTransactions as engineSearchTransactions, } from "@thirdweb-dev/engine";
2
+ import { getThirdwebBaseUrl } from "../utils/domains.js";
3
+ import { getClientFetch } from "../utils/fetch.js";
4
+ import { stringify } from "../utils/json.js";
5
+ /**
6
+ * Search for transactions by their ids.
7
+ * @param args - The arguments for the search.
8
+ * @param args.client - The thirdweb client to use.
9
+ * @param args.transactionIds - The ids of the transactions to search for.
10
+ * @engine
11
+ * @example
12
+ * ## Search for transactions by their ids
13
+ *
14
+ * ```ts
15
+ * import { Engine } from "thirdweb";
16
+ *
17
+ * const transactions = await Engine.searchTransactions({
18
+ * client,
19
+ * filters: [
20
+ * {
21
+ * field: "id",
22
+ * values: ["1", "2", "3"],
23
+ * },
24
+ * ],
25
+ * });
26
+ * console.log(transactions);
27
+ * ```
28
+ *
29
+ * ## Search for transactions by chain id
30
+ *
31
+ * ```ts
32
+ * import { Engine } from "thirdweb";
33
+ *
34
+ * const transactions = await Engine.searchTransactions({
35
+ * client,
36
+ * filters: [
37
+ * {
38
+ * field: "chainId",
39
+ * values: ["1", "137"],
40
+ * },
41
+ * ],
42
+ * });
43
+ * console.log(transactions);
44
+ * ```
45
+ *
46
+ * ## Search for transactions by sender wallet address
47
+ *
48
+ * ```ts
49
+ * import { Engine } from "thirdweb";
50
+ *
51
+ * const transactions = await Engine.searchTransactions({
52
+ * client,
53
+ * filters: [
54
+ * {
55
+ * field: "from",
56
+ * values: ["0x1234567890123456789012345678901234567890"],
57
+ * },
58
+ * ],
59
+ * });
60
+ * console.log(transactions);
61
+ * ```
62
+ *
63
+ * ## Combined search
64
+ *
65
+ * ```ts
66
+ * import { Engine } from "thirdweb";
67
+ *
68
+ * const transactions = await Engine.searchTransactions({
69
+ * client,
70
+ * filters: [
71
+ * {
72
+ * filters: [
73
+ * {
74
+ * field: "from",
75
+ * values: ["0x1234567890123456789012345678901234567890"],
76
+ * },
77
+ * {
78
+ * field: "chainId",
79
+ * values: ["8453"],
80
+ * },
81
+ * ],
82
+ * operation: "AND",
83
+ * },
84
+ * ],
85
+ * pageSize: 100,
86
+ * page: 0,
87
+ * });
88
+ * console.log(transactions);
89
+ * ```
90
+ */
91
+ export async function searchTransactions(args) {
92
+ const { client, filters, pageSize = 100, page = 1 } = args;
93
+ const searchResult = await engineSearchTransactions({
94
+ baseUrl: getThirdwebBaseUrl("engineCloud"),
95
+ bodySerializer: stringify,
96
+ fetch: getClientFetch(client),
97
+ body: {
98
+ filters,
99
+ limit: pageSize,
100
+ page,
101
+ },
102
+ });
103
+ if (searchResult.error) {
104
+ throw new Error(`Error searching for transaction with filters ${stringify(filters)}: ${stringify(searchResult.error)}`);
105
+ }
106
+ const data = searchResult.data?.result;
107
+ if (!data) {
108
+ throw new Error(`No transactions found with filters ${stringify(filters)}`);
109
+ }
110
+ return data;
111
+ }
112
+ //# sourceMappingURL=search-transactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-transactions.js","sourceRoot":"","sources":["../../../src/engine/search-transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,IAAI,wBAAwB,GAC/C,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAS7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqFG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAA4B;IACnE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,GAAG,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;IAC3D,MAAM,YAAY,GAAG,MAAM,wBAAwB,CAAC;QAClD,OAAO,EAAE,kBAAkB,CAAC,aAAa,CAAC;QAC1C,cAAc,EAAE,SAAS;QACzB,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC;QAC7B,IAAI,EAAE;YACJ,OAAO;YACP,KAAK,EAAE,QAAQ;YACf,IAAI;SACL;KACF,CAAC,CAAC;IAEH,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,gDAAgD,SAAS,CAAC,OAAO,CAAC,KAAK,SAAS,CAC9E,YAAY,CAAC,KAAK,CACnB,EAAE,CACJ,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;IAEvC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,sCAAsC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -6,7 +6,7 @@ import { toHex } from "../utils/encoding/hex.js";
6
6
  import { getClientFetch } from "../utils/fetch.js";
7
7
  import { stringify } from "../utils/json.js";
8
8
  import { resolvePromisedValue } from "../utils/promise/resolve-promised-value.js";
9
- import { waitForTransactionHash } from "./get-status.js";
9
+ import { waitForTransactionHash } from "./wait-for-tx-hash.js";
10
10
  /**
11
11
  * Create a server wallet for sending transactions and signing messages via engine (v3+).
12
12
  * @param options - The server wallet options.
@@ -53,6 +53,37 @@ import { waitForTransactionHash } from "./get-status.js";
53
53
  * console.log("Transaction sent:", transactionHash);
54
54
  * ```
55
55
  *
56
+ * ### Sending a batch of transactions
57
+ * ```ts
58
+ * // prepare the transactions
59
+ * const transaction1 = claimTo({
60
+ * contract,
61
+ * to: firstRecipient,
62
+ * quantity: 1n,
63
+ * });
64
+ * const transaction2 = claimTo({
65
+ * contract,
66
+ * to: secondRecipient,
67
+ * quantity: 1n,
68
+ * });
69
+ *
70
+ *
71
+ * // enqueue the transactions in a batch
72
+ * const { transactionId } = await myServerWallet.enqueueBatchTransaction({
73
+ * transactions: [transaction1, transaction2],
74
+ * });
75
+ * ```
76
+ *
77
+ * ### Polling for the batch of transactions to be submitted onchain
78
+ * ```ts
79
+ * // optionally poll for the transaction to be submitted onchain
80
+ * const { transactionHash } = await Engine.waitForTransactionHash({
81
+ * client,
82
+ * transactionId,
83
+ * });
84
+ * console.log("Transaction sent:", transactionHash);
85
+ * ```
86
+ *
56
87
  * ### Getting the execution status of a transaction
57
88
  * ```ts
58
89
  * const executionResult = await Engine.getTransactionStatus({
@@ -79,15 +110,27 @@ export function serverWallet(options) {
79
110
  };
80
111
  };
81
112
  const enqueueTx = async (transaction) => {
113
+ if (transaction.length === 0) {
114
+ throw new Error("No transactions to enqueue");
115
+ }
116
+ const firstTransaction = transaction[0];
117
+ if (!firstTransaction) {
118
+ throw new Error("No transactions to enqueue");
119
+ }
120
+ const chainId = firstTransaction.chainId;
121
+ // Validate all transactions are on the same chain
122
+ for (let i = 1; i < transaction.length; i++) {
123
+ if (transaction[i]?.chainId !== chainId) {
124
+ throw new Error(`All transactions in batch must be on the same chain. Expected ${chainId}, got ${transaction[i]?.chainId} at index ${i}`);
125
+ }
126
+ }
82
127
  const body = {
83
- executionOptions: getExecutionOptions(transaction.chainId),
84
- params: [
85
- {
86
- to: transaction.to ?? undefined,
87
- data: transaction.data,
88
- value: transaction.value?.toString(),
89
- },
90
- ],
128
+ executionOptions: getExecutionOptions(chainId),
129
+ params: transaction.map((t) => ({
130
+ to: t.to ?? undefined,
131
+ data: t.data,
132
+ value: t.value?.toString(),
133
+ })),
91
134
  };
92
135
  const result = await sendTransaction({
93
136
  baseUrl: getThirdwebBaseUrl("engineCloud"),
@@ -103,11 +146,7 @@ export function serverWallet(options) {
103
146
  if (!data) {
104
147
  throw new Error("No data returned from engine");
105
148
  }
106
- const transactionId = data.transactions?.[0]?.id;
107
- if (!transactionId) {
108
- throw new Error("No transactionId returned from engine");
109
- }
110
- return transactionId;
149
+ return data.transactions.map((t) => t.id);
111
150
  };
112
151
  return {
113
152
  address,
@@ -135,11 +174,52 @@ export function serverWallet(options) {
135
174
  value: value ?? undefined,
136
175
  };
137
176
  }
138
- const transactionId = await enqueueTx(serializedTransaction);
177
+ const transactionIds = await enqueueTx([serializedTransaction]);
178
+ const transactionId = transactionIds[0];
179
+ if (!transactionId) {
180
+ throw new Error("No transactionId returned from engine");
181
+ }
182
+ return { transactionId };
183
+ },
184
+ enqueueBatchTransaction: async (args) => {
185
+ const serializedTransactions = [];
186
+ for (const transaction of args.transactions) {
187
+ const [to, data, value] = await Promise.all([
188
+ transaction.to ? resolvePromisedValue(transaction.to) : null,
189
+ encode(transaction),
190
+ transaction.value ? resolvePromisedValue(transaction.value) : null,
191
+ ]);
192
+ serializedTransactions.push({
193
+ chainId: transaction.chain.id,
194
+ data,
195
+ to: to ?? undefined,
196
+ value: value ?? undefined,
197
+ });
198
+ }
199
+ const transactionIds = await enqueueTx(serializedTransactions);
200
+ const transactionId = transactionIds[0];
201
+ if (!transactionId) {
202
+ throw new Error("No transactionId returned from engine");
203
+ }
139
204
  return { transactionId };
140
205
  },
141
206
  sendTransaction: async (transaction) => {
142
- const transactionId = await enqueueTx(transaction);
207
+ const transactionIds = await enqueueTx([transaction]);
208
+ const transactionId = transactionIds[0];
209
+ if (!transactionId) {
210
+ throw new Error("No transactionId returned from engine");
211
+ }
212
+ return waitForTransactionHash({
213
+ client,
214
+ transactionId,
215
+ });
216
+ },
217
+ sendBatchTransaction: async (transactions) => {
218
+ const transactionIds = await enqueueTx(transactions);
219
+ const transactionId = transactionIds[0];
220
+ if (!transactionId) {
221
+ throw new Error("No transactionId returned from engine");
222
+ }
143
223
  return waitForTransactionHash({
144
224
  client,
145
225
  transactionId,