thirdweb 5.93.4 → 5.93.5-nightly-e0e31826a8ed11041372f66b3b75fda293a2a05d-20250326035818
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.
- package/dist/cjs/contract/deployment/utils/bootstrap.js +4 -1
- package/dist/cjs/contract/deployment/utils/bootstrap.js.map +1 -1
- package/dist/cjs/exports/extensions/dynamic-contracts.js +11 -0
- package/dist/cjs/exports/extensions/dynamic-contracts.js.map +1 -0
- package/dist/cjs/extensions/dynamic-contracts/__generated__/IExtensionManager/write/addExtension.js +151 -0
- package/dist/cjs/extensions/dynamic-contracts/__generated__/IExtensionManager/write/addExtension.js.map +1 -0
- package/dist/cjs/extensions/dynamic-contracts/__generated__/IExtensionManager/write/removeExtension.js +117 -0
- package/dist/cjs/extensions/dynamic-contracts/__generated__/IExtensionManager/write/removeExtension.js.map +1 -0
- package/dist/cjs/extensions/dynamic-contracts/write/installPublishedExtension.js +60 -0
- package/dist/cjs/extensions/dynamic-contracts/write/installPublishedExtension.js.map +1 -0
- package/dist/cjs/extensions/dynamic-contracts/write/uninstallExtension.js +29 -0
- package/dist/cjs/extensions/dynamic-contracts/write/uninstallExtension.js.map +1 -0
- package/dist/cjs/extensions/prebuilts/deploy-marketplace.js +56 -60
- package/dist/cjs/extensions/prebuilts/deploy-marketplace.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/deploy-published.js +19 -0
- package/dist/cjs/extensions/prebuilts/deploy-published.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/get-required-transactions.js +90 -0
- package/dist/cjs/extensions/prebuilts/get-required-transactions.js.map +1 -1
- package/dist/cjs/extensions/thirdweb/write/publish.js +1 -1
- package/dist/cjs/react/web/ui/PayEmbed.js +1 -0
- package/dist/cjs/react/web/ui/PayEmbed.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/esm/contract/deployment/utils/bootstrap.js +4 -1
- package/dist/esm/contract/deployment/utils/bootstrap.js.map +1 -1
- package/dist/esm/exports/extensions/dynamic-contracts.js +6 -0
- package/dist/esm/exports/extensions/dynamic-contracts.js.map +1 -0
- package/dist/esm/extensions/dynamic-contracts/__generated__/IExtensionManager/write/addExtension.js +144 -0
- package/dist/esm/extensions/dynamic-contracts/__generated__/IExtensionManager/write/addExtension.js.map +1 -0
- package/dist/esm/extensions/dynamic-contracts/__generated__/IExtensionManager/write/removeExtension.js +110 -0
- package/dist/esm/extensions/dynamic-contracts/__generated__/IExtensionManager/write/removeExtension.js.map +1 -0
- package/dist/esm/extensions/dynamic-contracts/write/installPublishedExtension.js +57 -0
- package/dist/esm/extensions/dynamic-contracts/write/installPublishedExtension.js.map +1 -0
- package/dist/esm/extensions/dynamic-contracts/write/uninstallExtension.js +26 -0
- package/dist/esm/extensions/dynamic-contracts/write/uninstallExtension.js.map +1 -0
- package/dist/esm/extensions/prebuilts/deploy-marketplace.js +56 -60
- package/dist/esm/extensions/prebuilts/deploy-marketplace.js.map +1 -1
- package/dist/esm/extensions/prebuilts/deploy-published.js +19 -0
- package/dist/esm/extensions/prebuilts/deploy-published.js.map +1 -1
- package/dist/esm/extensions/prebuilts/get-required-transactions.js +89 -0
- package/dist/esm/extensions/prebuilts/get-required-transactions.js.map +1 -1
- package/dist/esm/extensions/thirdweb/write/publish.js +1 -1
- package/dist/esm/react/web/ui/PayEmbed.js +1 -0
- package/dist/esm/react/web/ui/PayEmbed.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/types/contract/deployment/utils/bootstrap.d.ts.map +1 -1
- package/dist/types/exports/extensions/dynamic-contracts.d.ts +6 -0
- package/dist/types/exports/extensions/dynamic-contracts.d.ts.map +1 -0
- package/dist/types/extensions/dynamic-contracts/__generated__/IExtensionManager/write/addExtension.d.ts +113 -0
- package/dist/types/extensions/dynamic-contracts/__generated__/IExtensionManager/write/addExtension.d.ts.map +1 -0
- package/dist/types/extensions/dynamic-contracts/__generated__/IExtensionManager/write/removeExtension.d.ts +79 -0
- package/dist/types/extensions/dynamic-contracts/__generated__/IExtensionManager/write/removeExtension.d.ts.map +1 -0
- package/dist/types/extensions/dynamic-contracts/write/installPublishedExtension.d.ts +30 -0
- package/dist/types/extensions/dynamic-contracts/write/installPublishedExtension.d.ts.map +1 -0
- package/dist/types/extensions/dynamic-contracts/write/uninstallExtension.d.ts +26 -0
- package/dist/types/extensions/dynamic-contracts/write/uninstallExtension.d.ts.map +1 -0
- package/dist/types/extensions/prebuilts/deploy-marketplace.d.ts.map +1 -1
- package/dist/types/extensions/prebuilts/deploy-published.d.ts.map +1 -1
- package/dist/types/extensions/prebuilts/get-required-transactions.d.ts +26 -0
- package/dist/types/extensions/prebuilts/get-required-transactions.d.ts.map +1 -1
- package/dist/types/extensions/thirdweb/write/publish.d.ts +1 -1
- package/dist/types/react/web/ui/PayEmbed.d.ts +1 -0
- package/dist/types/react/web/ui/PayEmbed.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/bridge/Buy.test.ts +1 -1
- package/src/bridge/Routes.test.ts +1 -1
- package/src/bridge/Sell.test.ts +1 -1
- package/src/bridge/Status.test.ts +1 -1
- package/src/contract/deployment/deploy-dynamic.test.ts +52 -0
- package/src/contract/deployment/utils/bootstrap.ts +5 -1
- package/src/exports/extensions/dynamic-contracts.ts +11 -0
- package/src/extensions/dynamic-contracts/__generated__/IExtensionManager/write/addExtension.ts +193 -0
- package/src/extensions/dynamic-contracts/__generated__/IExtensionManager/write/removeExtension.ts +140 -0
- package/src/extensions/dynamic-contracts/write/installPublishedExtension.test.ts +61 -0
- package/src/extensions/dynamic-contracts/write/installPublishedExtension.ts +85 -0
- package/src/extensions/dynamic-contracts/write/uninstallExtension.test.ts +64 -0
- package/src/extensions/dynamic-contracts/write/uninstallExtension.ts +35 -0
- package/src/extensions/prebuilts/deploy-marketplace.ts +78 -81
- package/src/extensions/prebuilts/deploy-published.ts +24 -0
- package/src/extensions/prebuilts/get-required-transactions.test.ts +14 -0
- package/src/extensions/prebuilts/get-required-transactions.ts +138 -0
- package/src/extensions/thirdweb/write/publish.ts +1 -1
- package/src/react/web/ui/PayEmbed.tsx +1 -0
- package/src/version.ts +1 -1
@@ -1,5 +1,8 @@
|
|
1
|
+
import type { Abi, AbiFunction } from "abitype";
|
2
|
+
import { toFunctionSelector, toFunctionSignature } from "viem";
|
1
3
|
import type { Chain } from "../../chains/types.js";
|
2
4
|
import type { ThirdwebClient } from "../../client/client.js";
|
5
|
+
import { resolveContractAbi } from "../../contract/actions/resolve-abi.js";
|
3
6
|
import { getDeployedCreate2Factory } from "../../contract/deployment/utils/create-2-factory.js";
|
4
7
|
import { getDeployedInfraContract } from "../../contract/deployment/utils/infra.js";
|
5
8
|
import { getDeployedInfraContractFromMetadata } from "../../contract/deployment/utils/infra.js";
|
@@ -19,6 +22,15 @@ type DeployTransactionType =
|
|
19
22
|
| "extension"
|
20
23
|
| "proxy";
|
21
24
|
|
25
|
+
/**
|
26
|
+
* @internal
|
27
|
+
*/
|
28
|
+
type DynamicContractExtension = {
|
29
|
+
extensionName: string;
|
30
|
+
extensionVersion: string;
|
31
|
+
publisherAddress: string;
|
32
|
+
};
|
33
|
+
|
22
34
|
/**
|
23
35
|
* @internal
|
24
36
|
*/
|
@@ -131,6 +143,10 @@ async function getTransactionsForImplementation(options: {
|
|
131
143
|
return getTransactionsForMaketplaceV3(options);
|
132
144
|
}
|
133
145
|
|
146
|
+
if (deployMetadata.routerType === "dynamic") {
|
147
|
+
return getTransactionsForDynamicContract(options);
|
148
|
+
}
|
149
|
+
|
134
150
|
const constructorParams =
|
135
151
|
implementationConstructorParams ??
|
136
152
|
(await getAllDefaultConstructorParamsForImplementation({
|
@@ -211,6 +227,54 @@ async function getTransactionsForMaketplaceV3(options: {
|
|
211
227
|
return transactions;
|
212
228
|
}
|
213
229
|
|
230
|
+
async function getTransactionsForDynamicContract(options: {
|
231
|
+
chain: Chain;
|
232
|
+
client: ThirdwebClient;
|
233
|
+
deployMetadata: FetchDeployMetadataResult;
|
234
|
+
}): Promise<DeployTransactionResult[]> {
|
235
|
+
const { chain, client } = options;
|
236
|
+
const WETHAdress = await computePublishedContractAddress({
|
237
|
+
chain,
|
238
|
+
client,
|
239
|
+
contractId: "WETH9",
|
240
|
+
});
|
241
|
+
const wethTx = await getDeployedInfraContract({
|
242
|
+
chain,
|
243
|
+
client,
|
244
|
+
contractId: "WETH9",
|
245
|
+
}).then((c) =>
|
246
|
+
c ? null : ({ type: "infra", contractId: "WETH9" } as const),
|
247
|
+
);
|
248
|
+
const extensions: (DeployTransactionResult | null)[] = options.deployMetadata
|
249
|
+
.defaultExtensions
|
250
|
+
? await Promise.all(
|
251
|
+
options.deployMetadata.defaultExtensions.map((e) => {
|
252
|
+
return getDeployedInfraContract({
|
253
|
+
chain,
|
254
|
+
client,
|
255
|
+
contractId: e.extensionName,
|
256
|
+
publisher: e.publisherAddress,
|
257
|
+
version: e.extensionVersion || "latest",
|
258
|
+
constructorParams: { _nativeTokenWrapper: WETHAdress },
|
259
|
+
}).then((c) =>
|
260
|
+
c
|
261
|
+
? null
|
262
|
+
: ({ type: "extension", contractId: e.extensionName } as const),
|
263
|
+
);
|
264
|
+
}),
|
265
|
+
)
|
266
|
+
: [];
|
267
|
+
// hacky assumption: if we need to deploy any of the extensions, we also need to deploy the implementation
|
268
|
+
const transactions = [...extensions, wethTx].filter((e) => e !== null);
|
269
|
+
if (transactions.length) {
|
270
|
+
transactions.push({
|
271
|
+
type: "implementation",
|
272
|
+
contractId: options.deployMetadata.name,
|
273
|
+
});
|
274
|
+
}
|
275
|
+
return transactions;
|
276
|
+
}
|
277
|
+
|
214
278
|
/**
|
215
279
|
* Gets the default constructor parameters required for contract implementation deployment
|
216
280
|
* @param args - The arguments object
|
@@ -226,6 +290,7 @@ export async function getAllDefaultConstructorParamsForImplementation(args: {
|
|
226
290
|
chain: Chain;
|
227
291
|
client: ThirdwebClient;
|
228
292
|
contractId: string;
|
293
|
+
defaultExtensions?: DynamicContractExtension[];
|
229
294
|
}) {
|
230
295
|
const { chain, client } = args;
|
231
296
|
const isZkSync = await isZkSyncChain(chain);
|
@@ -251,8 +316,81 @@ export async function getAllDefaultConstructorParamsForImplementation(args: {
|
|
251
316
|
contractId: "WETH9",
|
252
317
|
}),
|
253
318
|
]);
|
319
|
+
|
320
|
+
const defaultExtensionInput = args.defaultExtensions
|
321
|
+
? await generateExtensionInput({
|
322
|
+
defaultExtensions: args.defaultExtensions,
|
323
|
+
chain,
|
324
|
+
client,
|
325
|
+
forwarder,
|
326
|
+
nativeTokenWrapper: weth,
|
327
|
+
})
|
328
|
+
: [];
|
329
|
+
|
254
330
|
return {
|
255
331
|
trustedForwarder: forwarder,
|
256
332
|
nativeTokenWrapper: weth,
|
333
|
+
extensions: defaultExtensionInput,
|
257
334
|
};
|
258
335
|
}
|
336
|
+
|
337
|
+
async function generateExtensionInput(args: {
|
338
|
+
defaultExtensions: DynamicContractExtension[];
|
339
|
+
chain: Chain;
|
340
|
+
client: ThirdwebClient;
|
341
|
+
forwarder: string;
|
342
|
+
nativeTokenWrapper: string;
|
343
|
+
}) {
|
344
|
+
const { defaultExtensions, chain, client, forwarder, nativeTokenWrapper } =
|
345
|
+
args;
|
346
|
+
|
347
|
+
const deployedExtensions = await Promise.all(
|
348
|
+
defaultExtensions.map((e) =>
|
349
|
+
getDeployedInfraContract({
|
350
|
+
chain,
|
351
|
+
client,
|
352
|
+
contractId: e.extensionName,
|
353
|
+
publisher: e.publisherAddress,
|
354
|
+
version: e.extensionVersion || "latest",
|
355
|
+
constructorParams: { forwarder, nativeTokenWrapper },
|
356
|
+
}).then((c) => ({
|
357
|
+
name: e.extensionName,
|
358
|
+
metadataURI: "",
|
359
|
+
implementation: c,
|
360
|
+
})),
|
361
|
+
),
|
362
|
+
);
|
363
|
+
|
364
|
+
const extensionInput = await Promise.all(
|
365
|
+
deployedExtensions.map(async (e) => {
|
366
|
+
if (!e.implementation) {
|
367
|
+
throw new Error("Extension not deployed");
|
368
|
+
}
|
369
|
+
return resolveContractAbi(e.implementation)
|
370
|
+
.then(generateExtensionFunctionsFromAbi)
|
371
|
+
.then((c) => ({
|
372
|
+
metadata: {
|
373
|
+
...e,
|
374
|
+
implementation: e.implementation?.address,
|
375
|
+
},
|
376
|
+
functions: c,
|
377
|
+
}));
|
378
|
+
}),
|
379
|
+
);
|
380
|
+
|
381
|
+
return extensionInput;
|
382
|
+
}
|
383
|
+
|
384
|
+
export function generateExtensionFunctionsFromAbi(abi: Abi): Array<{
|
385
|
+
functionSelector: `0x${string}`;
|
386
|
+
functionSignature: string;
|
387
|
+
}> {
|
388
|
+
const functions = abi.filter(
|
389
|
+
(item) => item.type === "function" && !item.name.startsWith("_"),
|
390
|
+
) as AbiFunction[];
|
391
|
+
|
392
|
+
return functions.map((fn) => ({
|
393
|
+
functionSelector: toFunctionSelector(fn),
|
394
|
+
functionSignature: toFunctionSignature(fn),
|
395
|
+
}));
|
396
|
+
}
|
package/src/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = "5.93.
|
1
|
+
export const version = "5.93.5-nightly-e0e31826a8ed11041372f66b3b75fda293a2a05d-20250326035818";
|