thirdweb 5.72.0-nightly-f64e0253d7de6fdb6f56ab49315cc4cdcdd75b20-20241127000345 → 5.72.0-nightly-e87eb2ff35eea1b94ab7bdae3585d819879ec53c-20241128000350
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/extensions/erc721/__generated__/LoyaltyCard/events/TokensMinted.js +32 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/events/TokensMinted.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/events/TokensMintedWithSignature.js +33 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/events/TokensMintedWithSignature.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/read/nextTokenIdToMint.js +70 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/read/nextTokenIdToMint.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/read/supportsInterface.js +114 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/read/supportsInterface.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/read/tokenURI.js +114 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/read/tokenURI.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/read/totalMinted.js +70 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/read/totalMinted.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/write/cancel.js +117 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/write/cancel.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/write/initialize.js +202 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/write/initialize.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/write/mintTo.js +129 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/write/mintTo.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/write/mintWithSignature.js +171 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/write/mintWithSignature.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/write/revoke.js +117 -0
- package/dist/cjs/extensions/erc721/__generated__/LoyaltyCard/write/revoke.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/events/TokensUnwrapped.js +33 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/events/TokensUnwrapped.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/events/TokensWrapped.js +33 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/events/TokensWrapped.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/read/contractType.js +70 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/read/contractType.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/read/contractVersion.js +70 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/read/contractVersion.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/read/getWrappedContents.js +133 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/read/getWrappedContents.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/read/nextTokenIdToMint.js +70 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/read/nextTokenIdToMint.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/read/supportsInterface.js +114 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/read/supportsInterface.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/read/tokenURI.js +114 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/read/tokenURI.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/write/initialize.js +175 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/write/initialize.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/write/unwrap.js +124 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/write/unwrap.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/write/wrap.js +162 -0
- package/dist/cjs/extensions/erc721/__generated__/Multiwrap/write/wrap.js.map +1 -0
- package/dist/cjs/extensions/prebuilts/deploy-erc721.js +21 -6
- package/dist/cjs/extensions/prebuilts/deploy-erc721.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/events/TokensMinted.js +29 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/events/TokensMinted.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/events/TokensMintedWithSignature.js +30 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/events/TokensMintedWithSignature.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/read/nextTokenIdToMint.js +64 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/read/nextTokenIdToMint.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/read/supportsInterface.js +106 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/read/supportsInterface.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/read/tokenURI.js +106 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/read/tokenURI.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/read/totalMinted.js +64 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/read/totalMinted.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/write/cancel.js +110 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/write/cancel.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/write/initialize.js +195 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/write/initialize.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/write/mintTo.js +122 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/write/mintTo.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/write/mintWithSignature.js +164 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/write/mintWithSignature.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/write/revoke.js +110 -0
- package/dist/esm/extensions/erc721/__generated__/LoyaltyCard/write/revoke.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/events/TokensUnwrapped.js +30 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/events/TokensUnwrapped.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/events/TokensWrapped.js +30 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/events/TokensWrapped.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/read/contractType.js +64 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/read/contractType.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/read/contractVersion.js +64 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/read/contractVersion.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/read/getWrappedContents.js +125 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/read/getWrappedContents.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/read/nextTokenIdToMint.js +64 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/read/nextTokenIdToMint.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/read/supportsInterface.js +106 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/read/supportsInterface.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/read/tokenURI.js +106 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/read/tokenURI.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/write/initialize.js +168 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/write/initialize.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/write/unwrap.js +117 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/write/unwrap.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/write/wrap.js +155 -0
- package/dist/esm/extensions/erc721/__generated__/Multiwrap/write/wrap.js.map +1 -0
- package/dist/esm/extensions/prebuilts/deploy-erc721.js +15 -0
- package/dist/esm/extensions/prebuilts/deploy-erc721.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/events/TokensMinted.d.ts +54 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/events/TokensMinted.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/events/TokensMintedWithSignature.d.ts +95 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/events/TokensMintedWithSignature.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/read/nextTokenIdToMint.d.ts +44 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/read/nextTokenIdToMint.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/read/supportsInterface.d.ts +83 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/read/supportsInterface.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/read/tokenURI.d.ts +83 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/read/tokenURI.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/read/totalMinted.d.ts +44 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/read/totalMinted.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/write/cancel.d.ts +79 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/write/cancel.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/write/initialize.d.ts +142 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/write/initialize.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/write/mintTo.d.ts +86 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/write/mintTo.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/write/mintWithSignature.d.ts +128 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/write/mintWithSignature.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/write/revoke.d.ts +79 -0
- package/dist/types/extensions/erc721/__generated__/LoyaltyCard/write/revoke.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/events/TokensUnwrapped.d.ts +61 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/events/TokensUnwrapped.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/events/TokensWrapped.d.ts +77 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/events/TokensWrapped.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/read/contractType.d.ts +44 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/read/contractType.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/read/contractVersion.d.ts +44 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/read/contractVersion.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/read/getWrappedContents.d.ts +93 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/read/getWrappedContents.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/read/nextTokenIdToMint.d.ts +44 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/read/nextTokenIdToMint.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/read/supportsInterface.d.ts +83 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/read/supportsInterface.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/read/tokenURI.d.ts +83 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/read/tokenURI.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/write/initialize.d.ts +121 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/write/initialize.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/write/unwrap.d.ts +86 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/write/unwrap.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/write/wrap.d.ts +111 -0
- package/dist/types/extensions/erc721/__generated__/Multiwrap/write/wrap.d.ts.map +1 -0
- package/dist/types/extensions/prebuilts/deploy-erc721.d.ts +1 -1
- package/dist/types/extensions/prebuilts/deploy-erc721.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/extensions/erc721/__generated__/LoyaltyCard/events/TokensMinted.ts +47 -0
- package/src/extensions/erc721/__generated__/LoyaltyCard/events/TokensMintedWithSignature.ts +55 -0
- package/src/extensions/erc721/__generated__/LoyaltyCard/read/nextTokenIdToMint.ts +70 -0
- package/src/extensions/erc721/__generated__/LoyaltyCard/read/supportsInterface.ts +130 -0
- package/src/extensions/erc721/__generated__/LoyaltyCard/read/tokenURI.ts +123 -0
- package/src/extensions/erc721/__generated__/LoyaltyCard/read/totalMinted.ts +70 -0
- package/src/extensions/erc721/__generated__/LoyaltyCard/write/cancel.ts +135 -0
- package/src/extensions/erc721/__generated__/LoyaltyCard/write/initialize.ts +255 -0
- package/src/extensions/erc721/__generated__/LoyaltyCard/write/mintTo.ts +148 -0
- package/src/extensions/erc721/__generated__/LoyaltyCard/write/mintWithSignature.ts +209 -0
- package/src/extensions/erc721/__generated__/LoyaltyCard/write/revoke.ts +135 -0
- package/src/extensions/erc721/__generated__/Multiwrap/events/TokensUnwrapped.ts +55 -0
- package/src/extensions/erc721/__generated__/Multiwrap/events/TokensWrapped.ts +53 -0
- package/src/extensions/erc721/__generated__/Multiwrap/read/contractType.ts +70 -0
- package/src/extensions/erc721/__generated__/Multiwrap/read/contractVersion.ts +70 -0
- package/src/extensions/erc721/__generated__/Multiwrap/read/getWrappedContents.ts +146 -0
- package/src/extensions/erc721/__generated__/Multiwrap/read/nextTokenIdToMint.ts +70 -0
- package/src/extensions/erc721/__generated__/Multiwrap/read/supportsInterface.ts +130 -0
- package/src/extensions/erc721/__generated__/Multiwrap/read/tokenURI.ts +123 -0
- package/src/extensions/erc721/__generated__/Multiwrap/write/initialize.ts +216 -0
- package/src/extensions/erc721/__generated__/Multiwrap/write/unwrap.ts +146 -0
- package/src/extensions/erc721/__generated__/Multiwrap/write/wrap.ts +197 -0
- package/src/extensions/prebuilts/deploy-erc721.test.ts +70 -2
- package/src/extensions/prebuilts/deploy-erc721.ts +17 -1
- package/src/version.ts +1 -1
@@ -0,0 +1,216 @@
|
|
1
|
+
import type { AbiParameterToPrimitiveType } from "abitype";
|
2
|
+
import type {
|
3
|
+
BaseTransactionOptions,
|
4
|
+
WithOverrides,
|
5
|
+
} from "../../../../../transaction/types.js";
|
6
|
+
import { prepareContractCall } from "../../../../../transaction/prepare-contract-call.js";
|
7
|
+
import { encodeAbiParameters } from "../../../../../utils/abi/encodeAbiParameters.js";
|
8
|
+
import { once } from "../../../../../utils/promise/once.js";
|
9
|
+
import { detectMethod } from "../../../../../utils/bytecode/detectExtension.js";
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Represents the parameters for the "initialize" function.
|
13
|
+
*/
|
14
|
+
export type InitializeParams = WithOverrides<{
|
15
|
+
defaultAdmin: AbiParameterToPrimitiveType<{
|
16
|
+
type: "address";
|
17
|
+
name: "_defaultAdmin";
|
18
|
+
}>;
|
19
|
+
name: AbiParameterToPrimitiveType<{ type: "string"; name: "_name" }>;
|
20
|
+
symbol: AbiParameterToPrimitiveType<{ type: "string"; name: "_symbol" }>;
|
21
|
+
contractURI: AbiParameterToPrimitiveType<{
|
22
|
+
type: "string";
|
23
|
+
name: "_contractURI";
|
24
|
+
}>;
|
25
|
+
trustedForwarders: AbiParameterToPrimitiveType<{
|
26
|
+
type: "address[]";
|
27
|
+
name: "_trustedForwarders";
|
28
|
+
}>;
|
29
|
+
royaltyRecipient: AbiParameterToPrimitiveType<{
|
30
|
+
type: "address";
|
31
|
+
name: "_royaltyRecipient";
|
32
|
+
}>;
|
33
|
+
royaltyBps: AbiParameterToPrimitiveType<{
|
34
|
+
type: "uint256";
|
35
|
+
name: "_royaltyBps";
|
36
|
+
}>;
|
37
|
+
}>;
|
38
|
+
|
39
|
+
export const FN_SELECTOR = "0x754b8fe7" as const;
|
40
|
+
const FN_INPUTS = [
|
41
|
+
{
|
42
|
+
type: "address",
|
43
|
+
name: "_defaultAdmin",
|
44
|
+
},
|
45
|
+
{
|
46
|
+
type: "string",
|
47
|
+
name: "_name",
|
48
|
+
},
|
49
|
+
{
|
50
|
+
type: "string",
|
51
|
+
name: "_symbol",
|
52
|
+
},
|
53
|
+
{
|
54
|
+
type: "string",
|
55
|
+
name: "_contractURI",
|
56
|
+
},
|
57
|
+
{
|
58
|
+
type: "address[]",
|
59
|
+
name: "_trustedForwarders",
|
60
|
+
},
|
61
|
+
{
|
62
|
+
type: "address",
|
63
|
+
name: "_royaltyRecipient",
|
64
|
+
},
|
65
|
+
{
|
66
|
+
type: "uint256",
|
67
|
+
name: "_royaltyBps",
|
68
|
+
},
|
69
|
+
] as const;
|
70
|
+
const FN_OUTPUTS = [] as const;
|
71
|
+
|
72
|
+
/**
|
73
|
+
* Checks if the `initialize` method is supported by the given contract.
|
74
|
+
* @param availableSelectors An array of 4byte function selectors of the contract. You can get this in various ways, such as using "whatsabi" or if you have the ABI of the contract available you can use it to generate the selectors.
|
75
|
+
* @returns A boolean indicating if the `initialize` method is supported.
|
76
|
+
* @extension ERC721
|
77
|
+
* @example
|
78
|
+
* ```ts
|
79
|
+
* import { isInitializeSupported } from "thirdweb/extensions/erc721";
|
80
|
+
*
|
81
|
+
* const supported = isInitializeSupported(["0x..."]);
|
82
|
+
* ```
|
83
|
+
*/
|
84
|
+
export function isInitializeSupported(availableSelectors: string[]) {
|
85
|
+
return detectMethod({
|
86
|
+
availableSelectors,
|
87
|
+
method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
|
88
|
+
});
|
89
|
+
}
|
90
|
+
|
91
|
+
/**
|
92
|
+
* Encodes the parameters for the "initialize" function.
|
93
|
+
* @param options - The options for the initialize function.
|
94
|
+
* @returns The encoded ABI parameters.
|
95
|
+
* @extension ERC721
|
96
|
+
* @example
|
97
|
+
* ```ts
|
98
|
+
* import { encodeInitializeParams } from "thirdweb/extensions/erc721";
|
99
|
+
* const result = encodeInitializeParams({
|
100
|
+
* defaultAdmin: ...,
|
101
|
+
* name: ...,
|
102
|
+
* symbol: ...,
|
103
|
+
* contractURI: ...,
|
104
|
+
* trustedForwarders: ...,
|
105
|
+
* royaltyRecipient: ...,
|
106
|
+
* royaltyBps: ...,
|
107
|
+
* });
|
108
|
+
* ```
|
109
|
+
*/
|
110
|
+
export function encodeInitializeParams(options: InitializeParams) {
|
111
|
+
return encodeAbiParameters(FN_INPUTS, [
|
112
|
+
options.defaultAdmin,
|
113
|
+
options.name,
|
114
|
+
options.symbol,
|
115
|
+
options.contractURI,
|
116
|
+
options.trustedForwarders,
|
117
|
+
options.royaltyRecipient,
|
118
|
+
options.royaltyBps,
|
119
|
+
]);
|
120
|
+
}
|
121
|
+
|
122
|
+
/**
|
123
|
+
* Encodes the "initialize" function into a Hex string with its parameters.
|
124
|
+
* @param options - The options for the initialize function.
|
125
|
+
* @returns The encoded hexadecimal string.
|
126
|
+
* @extension ERC721
|
127
|
+
* @example
|
128
|
+
* ```ts
|
129
|
+
* import { encodeInitialize } from "thirdweb/extensions/erc721";
|
130
|
+
* const result = encodeInitialize({
|
131
|
+
* defaultAdmin: ...,
|
132
|
+
* name: ...,
|
133
|
+
* symbol: ...,
|
134
|
+
* contractURI: ...,
|
135
|
+
* trustedForwarders: ...,
|
136
|
+
* royaltyRecipient: ...,
|
137
|
+
* royaltyBps: ...,
|
138
|
+
* });
|
139
|
+
* ```
|
140
|
+
*/
|
141
|
+
export function encodeInitialize(options: InitializeParams) {
|
142
|
+
// we do a "manual" concat here to avoid the overhead of the "concatHex" function
|
143
|
+
// we can do this because we know the specific formats of the values
|
144
|
+
return (FN_SELECTOR +
|
145
|
+
encodeInitializeParams(options).slice(
|
146
|
+
2,
|
147
|
+
)) as `${typeof FN_SELECTOR}${string}`;
|
148
|
+
}
|
149
|
+
|
150
|
+
/**
|
151
|
+
* Prepares a transaction to call the "initialize" function on the contract.
|
152
|
+
* @param options - The options for the "initialize" function.
|
153
|
+
* @returns A prepared transaction object.
|
154
|
+
* @extension ERC721
|
155
|
+
* @example
|
156
|
+
* ```ts
|
157
|
+
* import { sendTransaction } from "thirdweb";
|
158
|
+
* import { initialize } from "thirdweb/extensions/erc721";
|
159
|
+
*
|
160
|
+
* const transaction = initialize({
|
161
|
+
* contract,
|
162
|
+
* defaultAdmin: ...,
|
163
|
+
* name: ...,
|
164
|
+
* symbol: ...,
|
165
|
+
* contractURI: ...,
|
166
|
+
* trustedForwarders: ...,
|
167
|
+
* royaltyRecipient: ...,
|
168
|
+
* royaltyBps: ...,
|
169
|
+
* overrides: {
|
170
|
+
* ...
|
171
|
+
* }
|
172
|
+
* });
|
173
|
+
*
|
174
|
+
* // Send the transaction
|
175
|
+
* await sendTransaction({ transaction, account });
|
176
|
+
* ```
|
177
|
+
*/
|
178
|
+
export function initialize(
|
179
|
+
options: BaseTransactionOptions<
|
180
|
+
| InitializeParams
|
181
|
+
| {
|
182
|
+
asyncParams: () => Promise<InitializeParams>;
|
183
|
+
}
|
184
|
+
>,
|
185
|
+
) {
|
186
|
+
const asyncOptions = once(async () => {
|
187
|
+
return "asyncParams" in options ? await options.asyncParams() : options;
|
188
|
+
});
|
189
|
+
|
190
|
+
return prepareContractCall({
|
191
|
+
contract: options.contract,
|
192
|
+
method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
|
193
|
+
params: async () => {
|
194
|
+
const resolvedOptions = await asyncOptions();
|
195
|
+
return [
|
196
|
+
resolvedOptions.defaultAdmin,
|
197
|
+
resolvedOptions.name,
|
198
|
+
resolvedOptions.symbol,
|
199
|
+
resolvedOptions.contractURI,
|
200
|
+
resolvedOptions.trustedForwarders,
|
201
|
+
resolvedOptions.royaltyRecipient,
|
202
|
+
resolvedOptions.royaltyBps,
|
203
|
+
] as const;
|
204
|
+
},
|
205
|
+
value: async () => (await asyncOptions()).overrides?.value,
|
206
|
+
accessList: async () => (await asyncOptions()).overrides?.accessList,
|
207
|
+
gas: async () => (await asyncOptions()).overrides?.gas,
|
208
|
+
gasPrice: async () => (await asyncOptions()).overrides?.gasPrice,
|
209
|
+
maxFeePerGas: async () => (await asyncOptions()).overrides?.maxFeePerGas,
|
210
|
+
maxPriorityFeePerGas: async () =>
|
211
|
+
(await asyncOptions()).overrides?.maxPriorityFeePerGas,
|
212
|
+
nonce: async () => (await asyncOptions()).overrides?.nonce,
|
213
|
+
extraGas: async () => (await asyncOptions()).overrides?.extraGas,
|
214
|
+
erc20Value: async () => (await asyncOptions()).overrides?.erc20Value,
|
215
|
+
});
|
216
|
+
}
|
@@ -0,0 +1,146 @@
|
|
1
|
+
import type { AbiParameterToPrimitiveType } from "abitype";
|
2
|
+
import type {
|
3
|
+
BaseTransactionOptions,
|
4
|
+
WithOverrides,
|
5
|
+
} from "../../../../../transaction/types.js";
|
6
|
+
import { prepareContractCall } from "../../../../../transaction/prepare-contract-call.js";
|
7
|
+
import { encodeAbiParameters } from "../../../../../utils/abi/encodeAbiParameters.js";
|
8
|
+
import { once } from "../../../../../utils/promise/once.js";
|
9
|
+
import { detectMethod } from "../../../../../utils/bytecode/detectExtension.js";
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Represents the parameters for the "unwrap" function.
|
13
|
+
*/
|
14
|
+
export type UnwrapParams = WithOverrides<{
|
15
|
+
tokenId: AbiParameterToPrimitiveType<{ type: "uint256"; name: "_tokenId" }>;
|
16
|
+
recipient: AbiParameterToPrimitiveType<{
|
17
|
+
type: "address";
|
18
|
+
name: "_recipient";
|
19
|
+
}>;
|
20
|
+
}>;
|
21
|
+
|
22
|
+
export const FN_SELECTOR = "0x7647691d" as const;
|
23
|
+
const FN_INPUTS = [
|
24
|
+
{
|
25
|
+
type: "uint256",
|
26
|
+
name: "_tokenId",
|
27
|
+
},
|
28
|
+
{
|
29
|
+
type: "address",
|
30
|
+
name: "_recipient",
|
31
|
+
},
|
32
|
+
] as const;
|
33
|
+
const FN_OUTPUTS = [] as const;
|
34
|
+
|
35
|
+
/**
|
36
|
+
* Checks if the `unwrap` method is supported by the given contract.
|
37
|
+
* @param availableSelectors An array of 4byte function selectors of the contract. You can get this in various ways, such as using "whatsabi" or if you have the ABI of the contract available you can use it to generate the selectors.
|
38
|
+
* @returns A boolean indicating if the `unwrap` method is supported.
|
39
|
+
* @extension ERC721
|
40
|
+
* @example
|
41
|
+
* ```ts
|
42
|
+
* import { isUnwrapSupported } from "thirdweb/extensions/erc721";
|
43
|
+
*
|
44
|
+
* const supported = isUnwrapSupported(["0x..."]);
|
45
|
+
* ```
|
46
|
+
*/
|
47
|
+
export function isUnwrapSupported(availableSelectors: string[]) {
|
48
|
+
return detectMethod({
|
49
|
+
availableSelectors,
|
50
|
+
method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
|
51
|
+
});
|
52
|
+
}
|
53
|
+
|
54
|
+
/**
|
55
|
+
* Encodes the parameters for the "unwrap" function.
|
56
|
+
* @param options - The options for the unwrap function.
|
57
|
+
* @returns The encoded ABI parameters.
|
58
|
+
* @extension ERC721
|
59
|
+
* @example
|
60
|
+
* ```ts
|
61
|
+
* import { encodeUnwrapParams } from "thirdweb/extensions/erc721";
|
62
|
+
* const result = encodeUnwrapParams({
|
63
|
+
* tokenId: ...,
|
64
|
+
* recipient: ...,
|
65
|
+
* });
|
66
|
+
* ```
|
67
|
+
*/
|
68
|
+
export function encodeUnwrapParams(options: UnwrapParams) {
|
69
|
+
return encodeAbiParameters(FN_INPUTS, [options.tokenId, options.recipient]);
|
70
|
+
}
|
71
|
+
|
72
|
+
/**
|
73
|
+
* Encodes the "unwrap" function into a Hex string with its parameters.
|
74
|
+
* @param options - The options for the unwrap function.
|
75
|
+
* @returns The encoded hexadecimal string.
|
76
|
+
* @extension ERC721
|
77
|
+
* @example
|
78
|
+
* ```ts
|
79
|
+
* import { encodeUnwrap } from "thirdweb/extensions/erc721";
|
80
|
+
* const result = encodeUnwrap({
|
81
|
+
* tokenId: ...,
|
82
|
+
* recipient: ...,
|
83
|
+
* });
|
84
|
+
* ```
|
85
|
+
*/
|
86
|
+
export function encodeUnwrap(options: UnwrapParams) {
|
87
|
+
// we do a "manual" concat here to avoid the overhead of the "concatHex" function
|
88
|
+
// we can do this because we know the specific formats of the values
|
89
|
+
return (FN_SELECTOR +
|
90
|
+
encodeUnwrapParams(options).slice(2)) as `${typeof FN_SELECTOR}${string}`;
|
91
|
+
}
|
92
|
+
|
93
|
+
/**
|
94
|
+
* Prepares a transaction to call the "unwrap" function on the contract.
|
95
|
+
* @param options - The options for the "unwrap" function.
|
96
|
+
* @returns A prepared transaction object.
|
97
|
+
* @extension ERC721
|
98
|
+
* @example
|
99
|
+
* ```ts
|
100
|
+
* import { sendTransaction } from "thirdweb";
|
101
|
+
* import { unwrap } from "thirdweb/extensions/erc721";
|
102
|
+
*
|
103
|
+
* const transaction = unwrap({
|
104
|
+
* contract,
|
105
|
+
* tokenId: ...,
|
106
|
+
* recipient: ...,
|
107
|
+
* overrides: {
|
108
|
+
* ...
|
109
|
+
* }
|
110
|
+
* });
|
111
|
+
*
|
112
|
+
* // Send the transaction
|
113
|
+
* await sendTransaction({ transaction, account });
|
114
|
+
* ```
|
115
|
+
*/
|
116
|
+
export function unwrap(
|
117
|
+
options: BaseTransactionOptions<
|
118
|
+
| UnwrapParams
|
119
|
+
| {
|
120
|
+
asyncParams: () => Promise<UnwrapParams>;
|
121
|
+
}
|
122
|
+
>,
|
123
|
+
) {
|
124
|
+
const asyncOptions = once(async () => {
|
125
|
+
return "asyncParams" in options ? await options.asyncParams() : options;
|
126
|
+
});
|
127
|
+
|
128
|
+
return prepareContractCall({
|
129
|
+
contract: options.contract,
|
130
|
+
method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
|
131
|
+
params: async () => {
|
132
|
+
const resolvedOptions = await asyncOptions();
|
133
|
+
return [resolvedOptions.tokenId, resolvedOptions.recipient] as const;
|
134
|
+
},
|
135
|
+
value: async () => (await asyncOptions()).overrides?.value,
|
136
|
+
accessList: async () => (await asyncOptions()).overrides?.accessList,
|
137
|
+
gas: async () => (await asyncOptions()).overrides?.gas,
|
138
|
+
gasPrice: async () => (await asyncOptions()).overrides?.gasPrice,
|
139
|
+
maxFeePerGas: async () => (await asyncOptions()).overrides?.maxFeePerGas,
|
140
|
+
maxPriorityFeePerGas: async () =>
|
141
|
+
(await asyncOptions()).overrides?.maxPriorityFeePerGas,
|
142
|
+
nonce: async () => (await asyncOptions()).overrides?.nonce,
|
143
|
+
extraGas: async () => (await asyncOptions()).overrides?.extraGas,
|
144
|
+
erc20Value: async () => (await asyncOptions()).overrides?.erc20Value,
|
145
|
+
});
|
146
|
+
}
|
@@ -0,0 +1,197 @@
|
|
1
|
+
import type { AbiParameterToPrimitiveType } from "abitype";
|
2
|
+
import type {
|
3
|
+
BaseTransactionOptions,
|
4
|
+
WithOverrides,
|
5
|
+
} from "../../../../../transaction/types.js";
|
6
|
+
import { prepareContractCall } from "../../../../../transaction/prepare-contract-call.js";
|
7
|
+
import { encodeAbiParameters } from "../../../../../utils/abi/encodeAbiParameters.js";
|
8
|
+
import { once } from "../../../../../utils/promise/once.js";
|
9
|
+
import { detectMethod } from "../../../../../utils/bytecode/detectExtension.js";
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Represents the parameters for the "wrap" function.
|
13
|
+
*/
|
14
|
+
export type WrapParams = WithOverrides<{
|
15
|
+
tokensToWrap: AbiParameterToPrimitiveType<{
|
16
|
+
type: "tuple[]";
|
17
|
+
name: "_tokensToWrap";
|
18
|
+
components: [
|
19
|
+
{ type: "address"; name: "assetContract" },
|
20
|
+
{ type: "uint8"; name: "tokenType" },
|
21
|
+
{ type: "uint256"; name: "tokenId" },
|
22
|
+
{ type: "uint256"; name: "amount" },
|
23
|
+
];
|
24
|
+
}>;
|
25
|
+
uriForWrappedToken: AbiParameterToPrimitiveType<{
|
26
|
+
type: "string";
|
27
|
+
name: "_uriForWrappedToken";
|
28
|
+
}>;
|
29
|
+
recipient: AbiParameterToPrimitiveType<{
|
30
|
+
type: "address";
|
31
|
+
name: "_recipient";
|
32
|
+
}>;
|
33
|
+
}>;
|
34
|
+
|
35
|
+
export const FN_SELECTOR = "0x29e471dd" as const;
|
36
|
+
const FN_INPUTS = [
|
37
|
+
{
|
38
|
+
type: "tuple[]",
|
39
|
+
name: "_tokensToWrap",
|
40
|
+
components: [
|
41
|
+
{
|
42
|
+
type: "address",
|
43
|
+
name: "assetContract",
|
44
|
+
},
|
45
|
+
{
|
46
|
+
type: "uint8",
|
47
|
+
name: "tokenType",
|
48
|
+
},
|
49
|
+
{
|
50
|
+
type: "uint256",
|
51
|
+
name: "tokenId",
|
52
|
+
},
|
53
|
+
{
|
54
|
+
type: "uint256",
|
55
|
+
name: "amount",
|
56
|
+
},
|
57
|
+
],
|
58
|
+
},
|
59
|
+
{
|
60
|
+
type: "string",
|
61
|
+
name: "_uriForWrappedToken",
|
62
|
+
},
|
63
|
+
{
|
64
|
+
type: "address",
|
65
|
+
name: "_recipient",
|
66
|
+
},
|
67
|
+
] as const;
|
68
|
+
const FN_OUTPUTS = [
|
69
|
+
{
|
70
|
+
type: "uint256",
|
71
|
+
name: "tokenId",
|
72
|
+
},
|
73
|
+
] as const;
|
74
|
+
|
75
|
+
/**
|
76
|
+
* Checks if the `wrap` method is supported by the given contract.
|
77
|
+
* @param availableSelectors An array of 4byte function selectors of the contract. You can get this in various ways, such as using "whatsabi" or if you have the ABI of the contract available you can use it to generate the selectors.
|
78
|
+
* @returns A boolean indicating if the `wrap` method is supported.
|
79
|
+
* @extension ERC721
|
80
|
+
* @example
|
81
|
+
* ```ts
|
82
|
+
* import { isWrapSupported } from "thirdweb/extensions/erc721";
|
83
|
+
*
|
84
|
+
* const supported = isWrapSupported(["0x..."]);
|
85
|
+
* ```
|
86
|
+
*/
|
87
|
+
export function isWrapSupported(availableSelectors: string[]) {
|
88
|
+
return detectMethod({
|
89
|
+
availableSelectors,
|
90
|
+
method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
|
91
|
+
});
|
92
|
+
}
|
93
|
+
|
94
|
+
/**
|
95
|
+
* Encodes the parameters for the "wrap" function.
|
96
|
+
* @param options - The options for the wrap function.
|
97
|
+
* @returns The encoded ABI parameters.
|
98
|
+
* @extension ERC721
|
99
|
+
* @example
|
100
|
+
* ```ts
|
101
|
+
* import { encodeWrapParams } from "thirdweb/extensions/erc721";
|
102
|
+
* const result = encodeWrapParams({
|
103
|
+
* tokensToWrap: ...,
|
104
|
+
* uriForWrappedToken: ...,
|
105
|
+
* recipient: ...,
|
106
|
+
* });
|
107
|
+
* ```
|
108
|
+
*/
|
109
|
+
export function encodeWrapParams(options: WrapParams) {
|
110
|
+
return encodeAbiParameters(FN_INPUTS, [
|
111
|
+
options.tokensToWrap,
|
112
|
+
options.uriForWrappedToken,
|
113
|
+
options.recipient,
|
114
|
+
]);
|
115
|
+
}
|
116
|
+
|
117
|
+
/**
|
118
|
+
* Encodes the "wrap" function into a Hex string with its parameters.
|
119
|
+
* @param options - The options for the wrap function.
|
120
|
+
* @returns The encoded hexadecimal string.
|
121
|
+
* @extension ERC721
|
122
|
+
* @example
|
123
|
+
* ```ts
|
124
|
+
* import { encodeWrap } from "thirdweb/extensions/erc721";
|
125
|
+
* const result = encodeWrap({
|
126
|
+
* tokensToWrap: ...,
|
127
|
+
* uriForWrappedToken: ...,
|
128
|
+
* recipient: ...,
|
129
|
+
* });
|
130
|
+
* ```
|
131
|
+
*/
|
132
|
+
export function encodeWrap(options: WrapParams) {
|
133
|
+
// we do a "manual" concat here to avoid the overhead of the "concatHex" function
|
134
|
+
// we can do this because we know the specific formats of the values
|
135
|
+
return (FN_SELECTOR +
|
136
|
+
encodeWrapParams(options).slice(2)) as `${typeof FN_SELECTOR}${string}`;
|
137
|
+
}
|
138
|
+
|
139
|
+
/**
|
140
|
+
* Prepares a transaction to call the "wrap" function on the contract.
|
141
|
+
* @param options - The options for the "wrap" function.
|
142
|
+
* @returns A prepared transaction object.
|
143
|
+
* @extension ERC721
|
144
|
+
* @example
|
145
|
+
* ```ts
|
146
|
+
* import { sendTransaction } from "thirdweb";
|
147
|
+
* import { wrap } from "thirdweb/extensions/erc721";
|
148
|
+
*
|
149
|
+
* const transaction = wrap({
|
150
|
+
* contract,
|
151
|
+
* tokensToWrap: ...,
|
152
|
+
* uriForWrappedToken: ...,
|
153
|
+
* recipient: ...,
|
154
|
+
* overrides: {
|
155
|
+
* ...
|
156
|
+
* }
|
157
|
+
* });
|
158
|
+
*
|
159
|
+
* // Send the transaction
|
160
|
+
* await sendTransaction({ transaction, account });
|
161
|
+
* ```
|
162
|
+
*/
|
163
|
+
export function wrap(
|
164
|
+
options: BaseTransactionOptions<
|
165
|
+
| WrapParams
|
166
|
+
| {
|
167
|
+
asyncParams: () => Promise<WrapParams>;
|
168
|
+
}
|
169
|
+
>,
|
170
|
+
) {
|
171
|
+
const asyncOptions = once(async () => {
|
172
|
+
return "asyncParams" in options ? await options.asyncParams() : options;
|
173
|
+
});
|
174
|
+
|
175
|
+
return prepareContractCall({
|
176
|
+
contract: options.contract,
|
177
|
+
method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
|
178
|
+
params: async () => {
|
179
|
+
const resolvedOptions = await asyncOptions();
|
180
|
+
return [
|
181
|
+
resolvedOptions.tokensToWrap,
|
182
|
+
resolvedOptions.uriForWrappedToken,
|
183
|
+
resolvedOptions.recipient,
|
184
|
+
] as const;
|
185
|
+
},
|
186
|
+
value: async () => (await asyncOptions()).overrides?.value,
|
187
|
+
accessList: async () => (await asyncOptions()).overrides?.accessList,
|
188
|
+
gas: async () => (await asyncOptions()).overrides?.gas,
|
189
|
+
gasPrice: async () => (await asyncOptions()).overrides?.gasPrice,
|
190
|
+
maxFeePerGas: async () => (await asyncOptions()).overrides?.maxFeePerGas,
|
191
|
+
maxPriorityFeePerGas: async () =>
|
192
|
+
(await asyncOptions()).overrides?.maxPriorityFeePerGas,
|
193
|
+
nonce: async () => (await asyncOptions()).overrides?.nonce,
|
194
|
+
extraGas: async () => (await asyncOptions()).overrides?.extraGas,
|
195
|
+
erc20Value: async () => (await asyncOptions()).overrides?.erc20Value,
|
196
|
+
});
|
197
|
+
}
|
@@ -8,8 +8,6 @@ import { deployERC721Contract } from "./deploy-erc721.js";
|
|
8
8
|
|
9
9
|
const account = TEST_ACCOUNT_B;
|
10
10
|
|
11
|
-
// skip this test suite if there is no secret key available to test with
|
12
|
-
// TODO: remove reliance on secret key during unit tests entirely
|
13
11
|
describe.runIf(process.env.TW_SECRET_KEY)("deployERC721", () => {
|
14
12
|
it("should deploy ERC721 open edition", async () => {
|
15
13
|
const address = await deployERC721Contract({
|
@@ -21,6 +19,7 @@ describe.runIf(process.env.TW_SECRET_KEY)("deployERC721", () => {
|
|
21
19
|
name: "OE",
|
22
20
|
},
|
23
21
|
});
|
22
|
+
|
24
23
|
expect(address).toBeDefined();
|
25
24
|
const deployedName = await name({
|
26
25
|
contract: getContract({
|
@@ -31,4 +30,73 @@ describe.runIf(process.env.TW_SECRET_KEY)("deployERC721", () => {
|
|
31
30
|
});
|
32
31
|
expect(deployedName).toBe("OE");
|
33
32
|
});
|
33
|
+
|
34
|
+
it("should deploy ERC721 drop", async () => {
|
35
|
+
const address = await deployERC721Contract({
|
36
|
+
client: TEST_CLIENT,
|
37
|
+
chain: ANVIL_CHAIN,
|
38
|
+
account,
|
39
|
+
type: "DropERC721",
|
40
|
+
params: {
|
41
|
+
name: "Drop",
|
42
|
+
symbol: "DRP",
|
43
|
+
},
|
44
|
+
});
|
45
|
+
|
46
|
+
expect(address).toBeDefined();
|
47
|
+
const deployedName = await name({
|
48
|
+
contract: getContract({
|
49
|
+
client: TEST_CLIENT,
|
50
|
+
chain: ANVIL_CHAIN,
|
51
|
+
address,
|
52
|
+
}),
|
53
|
+
});
|
54
|
+
expect(deployedName).toBe("Drop");
|
55
|
+
});
|
56
|
+
|
57
|
+
it("should deploy ERC721 token", async () => {
|
58
|
+
const address = await deployERC721Contract({
|
59
|
+
client: TEST_CLIENT,
|
60
|
+
chain: ANVIL_CHAIN,
|
61
|
+
account,
|
62
|
+
type: "TokenERC721",
|
63
|
+
params: {
|
64
|
+
name: "Token",
|
65
|
+
symbol: "TKN",
|
66
|
+
},
|
67
|
+
});
|
68
|
+
|
69
|
+
expect(address).toBeDefined();
|
70
|
+
const deployedName = await name({
|
71
|
+
contract: getContract({
|
72
|
+
client: TEST_CLIENT,
|
73
|
+
chain: ANVIL_CHAIN,
|
74
|
+
address,
|
75
|
+
}),
|
76
|
+
});
|
77
|
+
expect(deployedName).toBe("Token");
|
78
|
+
});
|
79
|
+
|
80
|
+
it("should deploy ERC721 loyalty card", async () => {
|
81
|
+
const address = await deployERC721Contract({
|
82
|
+
client: TEST_CLIENT,
|
83
|
+
chain: ANVIL_CHAIN,
|
84
|
+
account,
|
85
|
+
type: "LoyaltyCard",
|
86
|
+
params: {
|
87
|
+
name: "Loyalty",
|
88
|
+
symbol: "LOY",
|
89
|
+
},
|
90
|
+
});
|
91
|
+
|
92
|
+
expect(address).toBeDefined();
|
93
|
+
const deployedName = await name({
|
94
|
+
contract: getContract({
|
95
|
+
client: TEST_CLIENT,
|
96
|
+
chain: ANVIL_CHAIN,
|
97
|
+
address,
|
98
|
+
}),
|
99
|
+
});
|
100
|
+
expect(deployedName).toBe("Loyalty");
|
101
|
+
});
|
34
102
|
});
|
@@ -6,6 +6,7 @@ import { upload } from "../../storage/upload.js";
|
|
6
6
|
import type { FileOrBufferOrString } from "../../storage/upload/types.js";
|
7
7
|
import type { Prettify } from "../../utils/type-utils.js";
|
8
8
|
import type { ClientAndChainAndAccount } from "../../utils/types.js";
|
9
|
+
import { initialize as initLoyaltyCard } from "../erc721/__generated__/LoyaltyCard/write/initialize.js";
|
9
10
|
import { initialize as initDropERC721 } from "./__generated__/DropERC721/write/initialize.js";
|
10
11
|
import { initialize as initOpenEditionERC721 } from "./__generated__/OpenEditionERC721/write/initialize.js";
|
11
12
|
import { initialize as initTokenERC721 } from "./__generated__/TokenERC721/write/initialize.js";
|
@@ -16,7 +17,8 @@ import { initialize as initTokenERC721 } from "./__generated__/TokenERC721/write
|
|
16
17
|
export type ERC721ContractType =
|
17
18
|
| "DropERC721"
|
18
19
|
| "TokenERC721"
|
19
|
-
| "OpenEditionERC721"
|
20
|
+
| "OpenEditionERC721"
|
21
|
+
| "LoyaltyCard";
|
20
22
|
|
21
23
|
/**
|
22
24
|
* @extension DEPLOY
|
@@ -167,5 +169,19 @@ async function getInitializeTransaction(options: {
|
|
167
169
|
royaltyBps: params.royaltyBps || 0n,
|
168
170
|
trustedForwarders: params.trustedForwarders || [],
|
169
171
|
});
|
172
|
+
case "LoyaltyCard":
|
173
|
+
return initLoyaltyCard({
|
174
|
+
contract: implementationContract,
|
175
|
+
defaultAdmin: params.defaultAdmin || accountAddress,
|
176
|
+
name: params.name || "",
|
177
|
+
symbol: params.symbol || "",
|
178
|
+
contractURI,
|
179
|
+
royaltyRecipient: params.royaltyRecipient || accountAddress,
|
180
|
+
royaltyBps: params.royaltyBps || 0n,
|
181
|
+
trustedForwarders: params.trustedForwarders || [],
|
182
|
+
saleRecipient: params.saleRecipient || accountAddress,
|
183
|
+
platformFeeBps: params.platformFeeBps || 0n,
|
184
|
+
platformFeeRecipient: params.platformFeeRecipient || accountAddress,
|
185
|
+
});
|
170
186
|
}
|
171
187
|
}
|
package/src/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = "5.72.0-nightly-
|
1
|
+
export const version = "5.72.0-nightly-e87eb2ff35eea1b94ab7bdae3585d819879ec53c-20241128000350";
|