@zoralabs/protocol-sdk 0.5.17 → 0.6.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.
- package/.turbo/turbo-build.log +6 -6
- package/CHANGELOG.md +13 -0
- package/README.md +1 -416
- package/dist/create/1155-create-helper.d.ts +16 -55
- package/dist/create/1155-create-helper.d.ts.map +1 -1
- package/dist/create/contract-setup.d.ts +14 -0
- package/dist/create/contract-setup.d.ts.map +1 -0
- package/dist/create/token-setup.d.ts +27 -0
- package/dist/create/token-setup.d.ts.map +1 -0
- package/dist/create/types.d.ts +45 -0
- package/dist/create/types.d.ts.map +1 -0
- package/dist/index.cjs +1273 -857
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1233 -831
- package/dist/index.js.map +1 -1
- package/dist/mint/mint-client.d.ts +4083 -43
- package/dist/mint/mint-client.d.ts.map +1 -1
- package/dist/mint/subgraph-mint-getter.d.ts +17 -0
- package/dist/mint/subgraph-mint-getter.d.ts.map +1 -0
- package/dist/mint/types.d.ts +79 -0
- package/dist/mint/types.d.ts.map +1 -0
- package/dist/mints/mints-contracts.d.ts +24 -24
- package/dist/premint/contract-types.d.ts +4 -4
- package/dist/premint/contract-types.d.ts.map +1 -1
- package/dist/premint/conversions.d.ts +3 -1
- package/dist/premint/conversions.d.ts.map +1 -1
- package/dist/premint/premint-api-client.d.ts +27 -14
- package/dist/premint/premint-api-client.d.ts.map +1 -1
- package/dist/premint/premint-client.d.ts +62 -46
- package/dist/premint/premint-client.d.ts.map +1 -1
- package/dist/premint/preminter.d.ts +19 -7
- package/dist/premint/preminter.d.ts.map +1 -1
- package/dist/sdk.d.ts +43 -0
- package/dist/sdk.d.ts.map +1 -0
- package/dist/utils.d.ts +17 -6870
- package/dist/utils.d.ts.map +1 -1
- package/package.json +3 -2
- package/src/create/1155-create-helper.test.ts +235 -56
- package/src/create/1155-create-helper.ts +141 -309
- package/src/create/contract-setup.ts +88 -0
- package/src/create/token-setup.ts +379 -0
- package/src/create/types.ts +57 -0
- package/src/index.ts +5 -1
- package/src/mint/mint-client.test.ts +50 -61
- package/src/mint/mint-client.ts +321 -157
- package/src/mint/{mint-api-client.ts → subgraph-mint-getter.ts} +2 -25
- package/src/mint/types.ts +122 -0
- package/src/mints/mints-contracts.test.ts +1 -1
- package/src/mints/mints-contracts.ts +4 -4
- package/src/premint/contract-types.ts +4 -4
- package/src/premint/conversions.ts +12 -2
- package/src/premint/premint-api-client.ts +55 -43
- package/src/premint/premint-client.test.ts +75 -65
- package/src/premint/premint-client.ts +126 -153
- package/src/premint/preminter.test.ts +4 -5
- package/src/premint/preminter.ts +63 -13
- package/src/sdk.ts +98 -0
- package/src/utils.ts +30 -23
- package/test-integration/premint-client.test.ts +8 -8
- package/dist/mint/mint-api-client.d.ts +0 -35
- package/dist/mint/mint-api-client.d.ts.map +0 -1
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,OAAO,EACP,OAAO,EACP,KAAK,EACL,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,IAAI,gBAAgB,EAChC,0BAA0B,EAC1B,kBAAkB,EACnB,MAAM,MAAM,CAAC;AAEd,eAAO,MAAM,sBAAsB,ihBAgB1B,CAAC;AAEV,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;AAElE,MAAM,MAAM,YAAY,GAAG;IACzB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,YAAY;;;EAKlE;AAED,wBAAgB,sBAAsB,CAAC,EACrC,aAAa,EACb,aAAa,GACd,EAAE;IACD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC;CAClC,GAAG,OAAO,CAKV;AAED,MAAM,MAAM,QAAQ,CAAC,IAAI,IAAI;KAC1B,QAAQ,IAAI,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;CAC3C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zoralabs/protocol-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"repository": "https://github.com/ourzora/zora-protocol",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
"lint": "prettier --check 'src/**/*.ts' 'test-integration/**/*.ts'"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@zoralabs/protocol-deployments": "*"
|
|
28
|
+
"@zoralabs/protocol-deployments": "*",
|
|
29
|
+
"semver": "^7.6.2"
|
|
29
30
|
},
|
|
30
31
|
"peerDependencies": {
|
|
31
32
|
"viem": "^2.11.1"
|
|
@@ -1,38 +1,37 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
create1155CreatorClient,
|
|
5
|
-
getTokenIdFromCreateReceipt,
|
|
6
|
-
} from "./1155-create-helper";
|
|
1
|
+
import { describe, expect, vi } from "vitest";
|
|
2
|
+
import { getTokenIdFromCreateReceipt } from "./1155-create-helper";
|
|
7
3
|
import { anvilTest } from "src/anvil";
|
|
4
|
+
import { createCreatorClient } from "src/sdk";
|
|
5
|
+
import { zoraCreator1155ImplABI } from "@zoralabs/protocol-deployments";
|
|
6
|
+
import { makePrepareMint1155TokenParams } from "src/mint/mint-client";
|
|
7
|
+
import { waitForSuccess } from "src/test-utils";
|
|
8
|
+
import { parseEther } from "viem";
|
|
9
|
+
import { SalesConfigAndTokenInfo } from "src/mint/types";
|
|
8
10
|
|
|
9
11
|
const demoTokenMetadataURI = "ipfs://DUMMY/token.json";
|
|
10
12
|
const demoContractMetadataURI = "ipfs://DUMMY/contract.json";
|
|
11
13
|
|
|
12
14
|
describe("create-helper", () => {
|
|
13
15
|
anvilTest(
|
|
14
|
-
"creates a new contract
|
|
15
|
-
async ({
|
|
16
|
-
viemClients: { testClient, publicClient, walletClient, chain },
|
|
17
|
-
}) => {
|
|
16
|
+
"creates a new 1155 contract and token",
|
|
17
|
+
async ({ viemClients: { publicClient, walletClient, chain } }) => {
|
|
18
18
|
const addresses = await walletClient.getAddresses();
|
|
19
19
|
const creatorAddress = addresses[0]!;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
});
|
|
24
|
-
const creatorClient = create1155CreatorClient({
|
|
25
|
-
chain,
|
|
20
|
+
|
|
21
|
+
const creatorClient = createCreatorClient({
|
|
22
|
+
chainId: chain.id,
|
|
26
23
|
publicClient: publicClient,
|
|
27
24
|
});
|
|
28
|
-
const { request } = await creatorClient.
|
|
25
|
+
const { parameters: request } = await creatorClient.create1155({
|
|
29
26
|
contract: {
|
|
30
27
|
name: "testContract",
|
|
31
28
|
uri: demoContractMetadataURI,
|
|
32
29
|
},
|
|
33
|
-
|
|
30
|
+
token: {
|
|
31
|
+
tokenMetadataURI: demoTokenMetadataURI,
|
|
32
|
+
mintToCreatorCount: 1,
|
|
33
|
+
},
|
|
34
34
|
account: creatorAddress,
|
|
35
|
-
mintToCreatorCount: 1,
|
|
36
35
|
});
|
|
37
36
|
const { request: simulationResponse } =
|
|
38
37
|
await publicClient.simulateContract(request);
|
|
@@ -45,26 +44,31 @@ describe("create-helper", () => {
|
|
|
45
44
|
20 * 1000,
|
|
46
45
|
);
|
|
47
46
|
anvilTest(
|
|
48
|
-
"creates a new contract,
|
|
47
|
+
"creates a new contract, then can create a new token on this existing contract",
|
|
49
48
|
async ({ viemClients: { publicClient, walletClient, chain } }) => {
|
|
50
49
|
const addresses = await walletClient.getAddresses();
|
|
51
50
|
const creatorAccount = addresses[0]!;
|
|
52
51
|
|
|
53
|
-
const creatorClient =
|
|
54
|
-
chain,
|
|
52
|
+
const creatorClient = createCreatorClient({
|
|
53
|
+
chainId: chain.id,
|
|
55
54
|
publicClient: publicClient,
|
|
56
55
|
});
|
|
57
56
|
|
|
58
|
-
const {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
57
|
+
const {
|
|
58
|
+
parameters: request,
|
|
59
|
+
collectionAddress: contractAddress,
|
|
60
|
+
contractExists,
|
|
61
|
+
} = await creatorClient.create1155({
|
|
62
|
+
contract: {
|
|
63
|
+
name: "testContract2",
|
|
64
|
+
uri: demoContractMetadataURI,
|
|
65
|
+
},
|
|
66
|
+
token: {
|
|
64
67
|
tokenMetadataURI: demoTokenMetadataURI,
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
+
mintToCreatorCount: 3,
|
|
69
|
+
},
|
|
70
|
+
account: creatorAccount,
|
|
71
|
+
});
|
|
68
72
|
expect(contractAddress).to.be.equal(
|
|
69
73
|
"0xb1A8928dF830C21eD682949Aa8A83C1C215194d3",
|
|
70
74
|
);
|
|
@@ -77,23 +81,33 @@ describe("create-helper", () => {
|
|
|
77
81
|
expect(firstTokenId).to.be.equal(1n);
|
|
78
82
|
expect(receipt).not.toBeNull();
|
|
79
83
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
// creator should have mint to creator count balance
|
|
85
|
+
expect(
|
|
86
|
+
await publicClient.readContract({
|
|
87
|
+
address: contractAddress,
|
|
88
|
+
abi: zoraCreator1155ImplABI,
|
|
89
|
+
functionName: "balanceOf",
|
|
90
|
+
args: [creatorAccount, firstTokenId!],
|
|
91
|
+
}),
|
|
92
|
+
).toBe(3n);
|
|
93
|
+
|
|
94
|
+
const newTokenOnExistingContract = await creatorClient.create1155({
|
|
95
|
+
contract: {
|
|
96
|
+
name: "testContract2",
|
|
97
|
+
uri: demoContractMetadataURI,
|
|
98
|
+
},
|
|
99
|
+
token: {
|
|
86
100
|
tokenMetadataURI: demoTokenMetadataURI,
|
|
87
|
-
|
|
88
|
-
mintToCreatorCount: 1,
|
|
101
|
+
mintToCreatorCount: 2,
|
|
89
102
|
},
|
|
90
|
-
|
|
91
|
-
|
|
103
|
+
account: creatorAccount,
|
|
104
|
+
});
|
|
105
|
+
expect(newTokenOnExistingContract.collectionAddress).to.be.equal(
|
|
92
106
|
"0xb1A8928dF830C21eD682949Aa8A83C1C215194d3",
|
|
93
107
|
);
|
|
94
108
|
expect(newTokenOnExistingContract.contractExists).to.be.true;
|
|
95
109
|
const { request: simulateRequest } = await publicClient.simulateContract(
|
|
96
|
-
newTokenOnExistingContract.
|
|
110
|
+
newTokenOnExistingContract.parameters,
|
|
97
111
|
);
|
|
98
112
|
const newHash = await walletClient.writeContract(simulateRequest);
|
|
99
113
|
const newReceipt = await publicClient.waitForTransactionReceipt({
|
|
@@ -107,37 +121,202 @@ describe("create-helper", () => {
|
|
|
107
121
|
);
|
|
108
122
|
anvilTest(
|
|
109
123
|
"creates a new token with a create referral address",
|
|
110
|
-
async ({
|
|
111
|
-
viemClients: { testClient, publicClient, walletClient, chain },
|
|
112
|
-
}) => {
|
|
124
|
+
async ({ viemClients: { publicClient, walletClient, chain } }) => {
|
|
113
125
|
const addresses = await walletClient.getAddresses();
|
|
114
126
|
const creatorAddress = addresses[0]!;
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
const creatorClient = create1155CreatorClient({
|
|
120
|
-
chain,
|
|
127
|
+
const createReferral = addresses[1]!;
|
|
128
|
+
|
|
129
|
+
const creatorClient = createCreatorClient({
|
|
130
|
+
chainId: chain.id,
|
|
121
131
|
publicClient: publicClient,
|
|
122
132
|
});
|
|
123
|
-
const { request } = await creatorClient.
|
|
133
|
+
const { parameters: request } = await creatorClient.create1155({
|
|
124
134
|
contract: {
|
|
125
135
|
name: "testContract",
|
|
126
136
|
uri: demoContractMetadataURI,
|
|
127
137
|
},
|
|
128
|
-
|
|
138
|
+
token: {
|
|
139
|
+
tokenMetadataURI: demoTokenMetadataURI,
|
|
140
|
+
createReferral,
|
|
141
|
+
},
|
|
129
142
|
account: creatorAddress,
|
|
130
|
-
mintToCreatorCount: 1,
|
|
131
|
-
createReferral: creatorAddress,
|
|
132
143
|
});
|
|
133
144
|
const { request: simulationResponse } =
|
|
134
145
|
await publicClient.simulateContract(request);
|
|
135
146
|
const hash = await walletClient.writeContract(simulationResponse);
|
|
136
147
|
const receipt = await publicClient.waitForTransactionReceipt({ hash });
|
|
137
148
|
expect(receipt).not.toBeNull();
|
|
138
|
-
console.log(receipt);
|
|
139
149
|
expect(receipt.to).to.equal("0xa72724cc3dcef210141a1b84c61824074151dc99");
|
|
140
150
|
expect(getTokenIdFromCreateReceipt(receipt)).to.be.equal(2n);
|
|
151
|
+
|
|
152
|
+
expect(
|
|
153
|
+
await publicClient.readContract({
|
|
154
|
+
abi: zoraCreator1155ImplABI,
|
|
155
|
+
address: "0xa72724cc3dcef210141a1b84c61824074151dc99",
|
|
156
|
+
functionName: "createReferrals",
|
|
157
|
+
args: [2n],
|
|
158
|
+
}),
|
|
159
|
+
).to.be.equal(createReferral);
|
|
160
|
+
},
|
|
161
|
+
20 * 1000,
|
|
162
|
+
);
|
|
163
|
+
|
|
164
|
+
anvilTest(
|
|
165
|
+
"creates a new 1155 free mint that can be minted",
|
|
166
|
+
async ({
|
|
167
|
+
viemClients: { testClient, publicClient, walletClient, chain },
|
|
168
|
+
}) => {
|
|
169
|
+
const addresses = await walletClient.getAddresses();
|
|
170
|
+
const creatorAddress = addresses[0]!;
|
|
171
|
+
|
|
172
|
+
const creatorClient = createCreatorClient({
|
|
173
|
+
chainId: chain.id,
|
|
174
|
+
publicClient: publicClient,
|
|
175
|
+
});
|
|
176
|
+
const {
|
|
177
|
+
parameters: request,
|
|
178
|
+
collectionAddress,
|
|
179
|
+
newTokenId,
|
|
180
|
+
newToken,
|
|
181
|
+
minter,
|
|
182
|
+
} = await creatorClient.create1155({
|
|
183
|
+
contract: {
|
|
184
|
+
name: "testContract",
|
|
185
|
+
uri: demoContractMetadataURI,
|
|
186
|
+
},
|
|
187
|
+
token: {
|
|
188
|
+
tokenMetadataURI: demoTokenMetadataURI,
|
|
189
|
+
},
|
|
190
|
+
account: creatorAddress,
|
|
191
|
+
});
|
|
192
|
+
const { request: createSimulation } =
|
|
193
|
+
await publicClient.simulateContract(request);
|
|
194
|
+
await waitForSuccess(
|
|
195
|
+
await walletClient.writeContract(createSimulation),
|
|
196
|
+
publicClient,
|
|
197
|
+
);
|
|
198
|
+
|
|
199
|
+
const salesConfigAndTokenInfo: SalesConfigAndTokenInfo = {
|
|
200
|
+
mintFeePerQuantity: parseEther("0.000777"),
|
|
201
|
+
salesConfig: {
|
|
202
|
+
saleType: "fixedPrice",
|
|
203
|
+
address: minter,
|
|
204
|
+
pricePerToken: newToken.salesConfig.pricePerToken,
|
|
205
|
+
// these dont matter
|
|
206
|
+
maxTokensPerAddress: 0n,
|
|
207
|
+
saleEnd: "",
|
|
208
|
+
saleStart: "",
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
const quantityToMint = 5n;
|
|
213
|
+
|
|
214
|
+
// now try to mint a free mint
|
|
215
|
+
const minterAddress = addresses[1]!;
|
|
216
|
+
|
|
217
|
+
await testClient.setBalance({
|
|
218
|
+
address: minterAddress,
|
|
219
|
+
value: parseEther("10"),
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
const mintParams = makePrepareMint1155TokenParams({
|
|
223
|
+
tokenContract: collectionAddress,
|
|
224
|
+
chainId: chain.id,
|
|
225
|
+
minterAccount: minterAddress,
|
|
226
|
+
tokenId: newTokenId,
|
|
227
|
+
salesConfigAndTokenInfo,
|
|
228
|
+
quantityToMint,
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
const { request: collectSimulation } =
|
|
232
|
+
await publicClient.simulateContract(mintParams);
|
|
233
|
+
await waitForSuccess(
|
|
234
|
+
await walletClient.writeContract(collectSimulation),
|
|
235
|
+
publicClient,
|
|
236
|
+
);
|
|
237
|
+
},
|
|
238
|
+
20 * 1000,
|
|
239
|
+
);
|
|
240
|
+
|
|
241
|
+
anvilTest(
|
|
242
|
+
"creates a new 1155 paid mint that can be minted",
|
|
243
|
+
async ({
|
|
244
|
+
viemClients: { testClient, publicClient, walletClient, chain },
|
|
245
|
+
}) => {
|
|
246
|
+
const addresses = await walletClient.getAddresses();
|
|
247
|
+
const creatorAddress = addresses[0]!;
|
|
248
|
+
|
|
249
|
+
const creatorClient = createCreatorClient({
|
|
250
|
+
chainId: chain.id,
|
|
251
|
+
publicClient: publicClient,
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
const pricePerToken = parseEther("0.01");
|
|
255
|
+
|
|
256
|
+
const {
|
|
257
|
+
parameters: request,
|
|
258
|
+
collectionAddress,
|
|
259
|
+
newTokenId,
|
|
260
|
+
newToken,
|
|
261
|
+
minter,
|
|
262
|
+
} = await creatorClient.create1155({
|
|
263
|
+
contract: {
|
|
264
|
+
name: "testContract",
|
|
265
|
+
uri: demoContractMetadataURI,
|
|
266
|
+
},
|
|
267
|
+
token: {
|
|
268
|
+
tokenMetadataURI: demoTokenMetadataURI,
|
|
269
|
+
salesConfig: {
|
|
270
|
+
pricePerToken,
|
|
271
|
+
},
|
|
272
|
+
},
|
|
273
|
+
account: creatorAddress,
|
|
274
|
+
});
|
|
275
|
+
const { request: createSimulation } =
|
|
276
|
+
await publicClient.simulateContract(request);
|
|
277
|
+
await waitForSuccess(
|
|
278
|
+
await walletClient.writeContract(createSimulation),
|
|
279
|
+
publicClient,
|
|
280
|
+
);
|
|
281
|
+
|
|
282
|
+
const salesConfigAndTokenInfo: SalesConfigAndTokenInfo = {
|
|
283
|
+
mintFeePerQuantity: parseEther("0.000777"),
|
|
284
|
+
salesConfig: {
|
|
285
|
+
saleType: "fixedPrice",
|
|
286
|
+
address: minter,
|
|
287
|
+
pricePerToken: newToken.salesConfig.pricePerToken,
|
|
288
|
+
// these dont matter
|
|
289
|
+
maxTokensPerAddress: 0n,
|
|
290
|
+
saleEnd: "",
|
|
291
|
+
saleStart: "",
|
|
292
|
+
},
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
const quantityToMint = 5n;
|
|
296
|
+
|
|
297
|
+
// now try to mint a free mint
|
|
298
|
+
const minterAddress = addresses[1]!;
|
|
299
|
+
|
|
300
|
+
await testClient.setBalance({
|
|
301
|
+
address: minterAddress,
|
|
302
|
+
value: parseEther("10"),
|
|
303
|
+
});
|
|
304
|
+
|
|
305
|
+
const mintParams = makePrepareMint1155TokenParams({
|
|
306
|
+
tokenContract: collectionAddress,
|
|
307
|
+
chainId: chain.id,
|
|
308
|
+
minterAccount: minterAddress,
|
|
309
|
+
tokenId: newTokenId,
|
|
310
|
+
salesConfigAndTokenInfo,
|
|
311
|
+
quantityToMint,
|
|
312
|
+
});
|
|
313
|
+
|
|
314
|
+
const { request: collectSimulation } =
|
|
315
|
+
await publicClient.simulateContract(mintParams);
|
|
316
|
+
await waitForSuccess(
|
|
317
|
+
await walletClient.writeContract(collectSimulation),
|
|
318
|
+
publicClient,
|
|
319
|
+
);
|
|
141
320
|
},
|
|
142
321
|
20 * 1000,
|
|
143
322
|
);
|