@zoralabs/protocol-sdk 0.7.2-ALLOWLIST.0 → 0.7.2

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 (63) hide show
  1. package/.turbo/turbo-build.log +15 -0
  2. package/CHANGELOG.md +2 -2
  3. package/dist/apis/http-api-base.d.ts.map +1 -1
  4. package/dist/constants.d.ts +27 -0
  5. package/dist/constants.d.ts.map +1 -1
  6. package/dist/create/1155-create-helper.d.ts +0 -1
  7. package/dist/create/1155-create-helper.d.ts.map +1 -1
  8. package/dist/create/token-setup.d.ts +4 -3
  9. package/dist/create/token-setup.d.ts.map +1 -1
  10. package/dist/create/types.d.ts +4 -24
  11. package/dist/create/types.d.ts.map +1 -1
  12. package/dist/index.cjs +127 -237
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.d.ts +0 -2
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +128 -238
  17. package/dist/index.js.map +1 -1
  18. package/dist/mint/mint-queries.d.ts +1 -3
  19. package/dist/mint/mint-queries.d.ts.map +1 -1
  20. package/dist/mint/mint-transactions.d.ts +3 -5
  21. package/dist/mint/mint-transactions.d.ts.map +1 -1
  22. package/dist/mint/subgraph-mint-getter.d.ts +2 -1
  23. package/dist/mint/subgraph-mint-getter.d.ts.map +1 -1
  24. package/dist/mint/subgraph-queries.d.ts +14 -27
  25. package/dist/mint/subgraph-queries.d.ts.map +1 -1
  26. package/dist/mint/types.d.ts +11 -22
  27. package/dist/mint/types.d.ts.map +1 -1
  28. package/dist/mints/mints-contracts.d.ts +16 -0
  29. package/dist/mints/mints-contracts.d.ts.map +1 -1
  30. package/dist/premint/premint-client.d.ts +8 -0
  31. package/dist/premint/premint-client.d.ts.map +1 -1
  32. package/package.json +1 -2
  33. package/src/apis/http-api-base.ts +0 -12
  34. package/src/constants.ts +36 -0
  35. package/src/create/1155-create-helper.test.ts +325 -0
  36. package/src/create/1155-create-helper.ts +0 -17
  37. package/src/create/token-setup.ts +19 -116
  38. package/src/create/types.ts +4 -32
  39. package/src/index.ts +0 -4
  40. package/src/mint/mint-client.test.ts +263 -0
  41. package/src/mint/mint-queries.ts +0 -6
  42. package/src/mint/mint-transactions.ts +8 -74
  43. package/src/mint/subgraph-mint-getter.ts +41 -17
  44. package/src/mint/subgraph-queries.ts +36 -39
  45. package/src/mint/types.ts +12 -38
  46. package/src/mints/mints-contracts.test.ts +529 -0
  47. package/src/mints/mints-eth-unwrapper-and-caller.test.ts +467 -0
  48. package/src/mints/mints-queries.test.ts +105 -0
  49. package/src/premint/premint-client.test.ts +290 -0
  50. package/src/premint/preminter.test.ts +866 -0
  51. package/test-integration/setup-test-contracts.ts +96 -0
  52. package/tsconfig.build.json +10 -0
  53. package/tsup.config.ts +12 -0
  54. package/dist/allow-list/allow-list-client.d.ts +0 -25
  55. package/dist/allow-list/allow-list-client.d.ts.map +0 -1
  56. package/dist/allow-list/types.d.ts +0 -14
  57. package/dist/allow-list/types.d.ts.map +0 -1
  58. package/dist/apis/generated/allow-list-api-types.d.ts +0 -288
  59. package/dist/apis/generated/allow-list-api-types.d.ts.map +0 -1
  60. package/src/allow-list/allow-list-client.ts +0 -102
  61. package/src/allow-list/types.ts +0 -15
  62. package/src/apis/generated/allow-list-api-types.ts +0 -288
  63. package/yarn-error.log +0 -8602
@@ -0,0 +1,96 @@
1
+ import {
2
+ createCollectorClient,
3
+ createCreatorClient,
4
+ getPremintCollectionAddress,
5
+ } from "src";
6
+ import {
7
+ LocalAccount,
8
+ createPublicClient,
9
+ createWalletClient,
10
+ http,
11
+ parseEther,
12
+ } from "viem";
13
+ import { privateKeyToAccount } from "viem/accounts";
14
+ import { zoraSepolia } from "viem/chains";
15
+
16
+ const publicClient = createPublicClient({
17
+ chain: zoraSepolia,
18
+ transport: http(),
19
+ });
20
+
21
+ const walletClient = createWalletClient({
22
+ chain: zoraSepolia,
23
+ transport: http(),
24
+ });
25
+
26
+ const creatorClient = createCreatorClient({
27
+ chainId: zoraSepolia.id,
28
+ publicClient,
29
+ });
30
+
31
+ const collectorClient = createCollectorClient({
32
+ chainId: zoraSepolia.id,
33
+ publicClient,
34
+ });
35
+
36
+ export const createPremintsOnContract = async ({
37
+ creatorAccount,
38
+ }: {
39
+ creatorAccount: LocalAccount;
40
+ }) => {
41
+ const collectionAddress = await getPremintCollectionAddress({
42
+ publicClient,
43
+ contract: {
44
+ contractAdmin: creatorAccount.address,
45
+ contractName: "testContract",
46
+ contractURI:
47
+ "ipfs://bafkreiainxen4b4wz4ubylvbhons6rembxdet4a262nf2lziclqvv7au3e",
48
+ },
49
+ });
50
+
51
+ console.log({ collectionAddress });
52
+
53
+ const { typedDataDefinition, submit } = await creatorClient.createPremint({
54
+ contract: {
55
+ contractAdmin: creatorAccount.address,
56
+ contractName: "testContract",
57
+ contractURI:
58
+ "ipfs://bafkreiainxen4b4wz4ubylvbhons6rembxdet4a262nf2lziclqvv7au3e",
59
+ },
60
+ token: {
61
+ payoutRecipient: creatorAccount.address,
62
+ tokenURI:
63
+ "ipfs://bafkreice23maski3x52tsfqgxstx3kbiifnt5jotg3a5ynvve53c4soi2u",
64
+ pricePerToken: parseEther("0.001"),
65
+ },
66
+ });
67
+
68
+ const signature = await walletClient.signTypedData({
69
+ account: creatorAccount,
70
+ ...typedDataDefinition,
71
+ });
72
+
73
+ await submit({
74
+ signature,
75
+ });
76
+
77
+ const mints = await collectorClient.getTokensOfContract({
78
+ tokenContract: collectionAddress,
79
+ });
80
+
81
+ console.log({ mints: mints.map((x) => x.mintable) });
82
+ };
83
+
84
+ const setupTestContracts = async () => {
85
+ const creatorAccount = privateKeyToAccount(
86
+ // random private key created by cast
87
+ "0x0d32fcabfe28c779974a77dc635163f062be2bc0b10eea62994235617b44092f",
88
+ );
89
+
90
+ // create 2 premints on a contract
91
+ await createPremintsOnContract({
92
+ creatorAccount,
93
+ });
94
+ };
95
+
96
+ setupTestContracts();
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "zoralabs-tsconfig/tsconfig.json",
3
+ "compilerOptions": {
4
+ "lib": ["es2021", "DOM"],
5
+ "baseUrl": ".",
6
+ "outDir": "dist"
7
+ },
8
+ "exclude": ["node_modules/**", "dist/**", "**/*test.ts"],
9
+ "include": ["src/**/*.ts"],
10
+ }
package/tsup.config.ts ADDED
@@ -0,0 +1,12 @@
1
+ import { defineConfig } from "tsup";
2
+
3
+ export default defineConfig({
4
+ entry: ["src/index.ts"],
5
+ sourcemap: true,
6
+ clean: true,
7
+ tsconfig: "tsconfig.build.json",
8
+ dts: false,
9
+ format: ["cjs", "esm"],
10
+ onSuccess:
11
+ "tsc --project tsconfig.build.json --emitDeclarationOnly --declaration --declarationMap",
12
+ });
@@ -1,25 +0,0 @@
1
- import { IHttpClient } from "src/apis/http-api-base";
2
- import { AllowList } from "./types";
3
- export declare const createAllowList: ({ allowList, httpClient, }: {
4
- allowList: AllowList;
5
- httpClient?: IHttpClient | undefined;
6
- baseUrl?: string | undefined;
7
- }) => Promise<string>;
8
- export declare const getAllowListEntry: ({ merkleRoot, address, httpClient, }: {
9
- merkleRoot: string;
10
- httpClient?: IHttpClient | undefined;
11
- address: string;
12
- }) => Promise<{
13
- accessAllowed: number | undefined;
14
- allowListEntry: {
15
- maxCanMint: number;
16
- price: bigint;
17
- proof: `0x${string}`[];
18
- } | undefined;
19
- }>;
20
- export interface IAllowListClient {
21
- createAllowList: typeof createAllowList;
22
- getAllowListEntry: typeof getAllowListEntry;
23
- }
24
- export declare const defaultAllowListClient: () => IAllowListClient;
25
- //# sourceMappingURL=allow-list-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"allow-list-client.d.ts","sourceRoot":"","sources":["../../src/allow-list/allow-list-client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEZ,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAuBpC,eAAO,MAAM,eAAe;eAIf,SAAS;;;qBAmBrB,CAAC;AAQF,eAAO,MAAM,iBAAiB;gBAKhB,MAAM;;aAET,MAAM;;;;;;;;EAwBhB,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;CAC7C;AAED,eAAO,MAAM,sBAAsB,QAAO,gBAGxC,CAAC"}
@@ -1,14 +0,0 @@
1
- import { Address, Hex } from "viem";
2
- export type AllowList = {
3
- entries: {
4
- user: Address;
5
- price: bigint;
6
- maxCanMint: number;
7
- }[];
8
- };
9
- export type AllowListEntry = {
10
- maxCanMint: number;
11
- price: bigint;
12
- proof: Hex[];
13
- };
14
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/allow-list/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEpC,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE;QACP,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,EAAE,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,GAAG,EAAE,CAAC;CACd,CAAC"}
@@ -1,288 +0,0 @@
1
- /**
2
- * This file was auto-generated by openapi-typescript.
3
- * Do not make direct changes to the file.
4
- */
5
- export interface paths {
6
- "/_health": {
7
- parameters: {
8
- query?: never;
9
- header?: never;
10
- path?: never;
11
- cookie?: never;
12
- };
13
- /** Health */
14
- get: operations["health__health_get"];
15
- put?: never;
16
- post?: never;
17
- delete?: never;
18
- options?: never;
19
- head?: never;
20
- patch?: never;
21
- trace?: never;
22
- };
23
- "/allowlist": {
24
- parameters: {
25
- query?: never;
26
- header?: never;
27
- path?: never;
28
- cookie?: never;
29
- };
30
- get?: never;
31
- put?: never;
32
- /**
33
- * Add Allowlist
34
- * @description This route adds a new allowlist
35
- */
36
- post: operations["add_allowlist_allowlist_post"];
37
- delete?: never;
38
- options?: never;
39
- head?: never;
40
- patch?: never;
41
- trace?: never;
42
- };
43
- "/allowed": {
44
- parameters: {
45
- query?: never;
46
- header?: never;
47
- path?: never;
48
- cookie?: never;
49
- };
50
- /** Allowed */
51
- get: operations["allowed_allowed_get"];
52
- put?: never;
53
- post?: never;
54
- delete?: never;
55
- options?: never;
56
- head?: never;
57
- patch?: never;
58
- trace?: never;
59
- };
60
- "/allowlist/{root}": {
61
- parameters: {
62
- query?: never;
63
- header?: never;
64
- path?: never;
65
- cookie?: never;
66
- };
67
- /** Allowlist */
68
- get: operations["allowlist_allowlist__root__get"];
69
- put?: never;
70
- post?: never;
71
- delete?: never;
72
- options?: never;
73
- head?: never;
74
- patch?: never;
75
- trace?: never;
76
- };
77
- "/allowlist/{root}/count": {
78
- parameters: {
79
- query?: never;
80
- header?: never;
81
- path?: never;
82
- cookie?: never;
83
- };
84
- /** Allowlist Count */
85
- get: operations["allowlist_count_allowlist__root__count_get"];
86
- put?: never;
87
- post?: never;
88
- delete?: never;
89
- options?: never;
90
- head?: never;
91
- patch?: never;
92
- trace?: never;
93
- };
94
- }
95
- export type webhooks = Record<string, never>;
96
- export interface components {
97
- schemas: {
98
- /**
99
- * AllowlistEntry
100
- * @description Currently matches zora-nft-drops model
101
- */
102
- AllowlistEntry: {
103
- /** User */
104
- user: string;
105
- /** Price */
106
- price: string;
107
- /** Maxcanmint */
108
- maxCanMint: number;
109
- };
110
- /** AllowlistRequest */
111
- AllowlistRequest: {
112
- /** Entries */
113
- entries: components["schemas"]["AllowlistEntry"][];
114
- /** Contract */
115
- contract?: string;
116
- };
117
- /** HTTPValidationError */
118
- HTTPValidationError: {
119
- /** Detail */
120
- detail?: components["schemas"]["ValidationError"][];
121
- };
122
- /** ValidationError */
123
- ValidationError: {
124
- /** Location */
125
- loc: (string | number)[];
126
- /** Message */
127
- msg: string;
128
- /** Error Type */
129
- type: string;
130
- };
131
- };
132
- responses: never;
133
- parameters: never;
134
- requestBodies: never;
135
- headers: never;
136
- pathItems: never;
137
- }
138
- export type $defs = Record<string, never>;
139
- export interface operations {
140
- health__health_get: {
141
- parameters: {
142
- query?: never;
143
- header?: never;
144
- path?: never;
145
- cookie?: never;
146
- };
147
- requestBody?: never;
148
- responses: {
149
- /** @description Successful Response */
150
- 200: {
151
- headers: {
152
- [name: string]: unknown;
153
- };
154
- content: {
155
- "application/json": unknown;
156
- };
157
- };
158
- };
159
- };
160
- add_allowlist_allowlist_post: {
161
- parameters: {
162
- query?: never;
163
- header?: never;
164
- path?: never;
165
- cookie?: never;
166
- };
167
- requestBody: {
168
- content: {
169
- "application/json": components["schemas"]["AllowlistRequest"];
170
- };
171
- };
172
- responses: {
173
- /** @description Successful Response */
174
- 200: {
175
- headers: {
176
- [name: string]: unknown;
177
- };
178
- content: {
179
- "application/json": unknown;
180
- };
181
- };
182
- /** @description Validation Error */
183
- 422: {
184
- headers: {
185
- [name: string]: unknown;
186
- };
187
- content: {
188
- "application/json": components["schemas"]["HTTPValidationError"];
189
- };
190
- };
191
- };
192
- };
193
- allowed_allowed_get: {
194
- parameters: {
195
- query: {
196
- user: string;
197
- root: string;
198
- };
199
- header?: never;
200
- path?: never;
201
- cookie?: never;
202
- };
203
- requestBody?: never;
204
- responses: {
205
- /** @description Successful Response */
206
- 200: {
207
- headers: {
208
- [name: string]: unknown;
209
- };
210
- content: {
211
- "application/json": unknown;
212
- };
213
- };
214
- /** @description Validation Error */
215
- 422: {
216
- headers: {
217
- [name: string]: unknown;
218
- };
219
- content: {
220
- "application/json": components["schemas"]["HTTPValidationError"];
221
- };
222
- };
223
- };
224
- };
225
- allowlist_allowlist__root__get: {
226
- parameters: {
227
- query?: never;
228
- header?: never;
229
- path: {
230
- root: string;
231
- };
232
- cookie?: never;
233
- };
234
- requestBody?: never;
235
- responses: {
236
- /** @description Successful Response */
237
- 200: {
238
- headers: {
239
- [name: string]: unknown;
240
- };
241
- content: {
242
- "application/json": unknown;
243
- };
244
- };
245
- /** @description Validation Error */
246
- 422: {
247
- headers: {
248
- [name: string]: unknown;
249
- };
250
- content: {
251
- "application/json": components["schemas"]["HTTPValidationError"];
252
- };
253
- };
254
- };
255
- };
256
- allowlist_count_allowlist__root__count_get: {
257
- parameters: {
258
- query?: never;
259
- header?: never;
260
- path: {
261
- root: string;
262
- };
263
- cookie?: never;
264
- };
265
- requestBody?: never;
266
- responses: {
267
- /** @description Successful Response */
268
- 200: {
269
- headers: {
270
- [name: string]: unknown;
271
- };
272
- content: {
273
- "application/json": unknown;
274
- };
275
- };
276
- /** @description Validation Error */
277
- 422: {
278
- headers: {
279
- [name: string]: unknown;
280
- };
281
- content: {
282
- "application/json": components["schemas"]["HTTPValidationError"];
283
- };
284
- };
285
- };
286
- };
287
- }
288
- //# sourceMappingURL=allow-list-api-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"allow-list-api-types.d.ts","sourceRoot":"","sources":["../../../src/apis/generated/allow-list-api-types.ts"],"names":[],"mappings":"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"}
@@ -1,102 +0,0 @@
1
- import {
2
- IHttpClient,
3
- httpClient as defaultHttpClient,
4
- } from "src/apis/http-api-base";
5
- import { paths } from "../apis/generated/allow-list-api-types";
6
- import { Hex } from "viem";
7
- import { AllowList } from "./types";
8
-
9
- type AllowListCreateType = paths["/allowlist"]["post"];
10
- type AllowListCreateParameters =
11
- AllowListCreateType["requestBody"]["content"]["application/json"];
12
- type AllowListCreateResponse = {
13
- existing?: {
14
- entries: AllowListCreateParameters["entries"];
15
- root: string;
16
- added: string;
17
- };
18
- success: boolean;
19
- root: string;
20
- associated_id?: string;
21
- };
22
-
23
- const ALLOW_LIST_API_BASE = "http://allowlist.zora.co/";
24
- type AllowListAllowedResponse = {
25
- maxCanMint: number;
26
- price: string;
27
- proof: string[];
28
- }[];
29
-
30
- export const createAllowList = async ({
31
- allowList,
32
- httpClient = defaultHttpClient,
33
- }: {
34
- allowList: AllowList;
35
- httpClient?: IHttpClient;
36
- baseUrl?: string;
37
- }) => {
38
- const { post, retries } = httpClient;
39
-
40
- const data: AllowListCreateParameters = {
41
- entries: allowList.entries.map((entry) => ({
42
- user: entry.user,
43
- maxCanMint: entry.maxCanMint,
44
- price: entry.price.toString(),
45
- })),
46
- };
47
-
48
- return (
49
- await retries(() =>
50
- post<AllowListCreateResponse>(`${ALLOW_LIST_API_BASE}allowlist`, data),
51
- )
52
- ).root;
53
- };
54
-
55
- function padHex(value: string): Hex {
56
- if (value.startsWith("0x")) return value as Hex;
57
-
58
- return `0x${value}`;
59
- }
60
-
61
- export const getAllowListEntry = async ({
62
- merkleRoot,
63
- address,
64
- httpClient = defaultHttpClient,
65
- }: {
66
- merkleRoot: string;
67
- httpClient?: IHttpClient;
68
- address: string;
69
- }) => {
70
- const { retries, get } = httpClient;
71
-
72
- const response = await retries(() =>
73
- get<AllowListAllowedResponse>(
74
- `${ALLOW_LIST_API_BASE}allowed?user=${address}&root=${merkleRoot}`,
75
- ),
76
- );
77
-
78
- const entries = response?.map((x) => ({
79
- maxCanMint: x.maxCanMint,
80
- price: BigInt(x.price),
81
- proof: x.proof.map(padHex),
82
- }));
83
-
84
- const entry = entries?.sort(
85
- (a, b) => Number(a.price) - Number(b.price) || b.maxCanMint - a.maxCanMint,
86
- )[0];
87
-
88
- return {
89
- accessAllowed: entry && entry?.proof?.length,
90
- allowListEntry: entry,
91
- };
92
- };
93
-
94
- export interface IAllowListClient {
95
- createAllowList: typeof createAllowList;
96
- getAllowListEntry: typeof getAllowListEntry;
97
- }
98
-
99
- export const defaultAllowListClient = (): IAllowListClient => ({
100
- createAllowList,
101
- getAllowListEntry,
102
- });
@@ -1,15 +0,0 @@
1
- import { Address, Hex } from "viem";
2
-
3
- export type AllowList = {
4
- entries: {
5
- user: Address;
6
- price: bigint;
7
- maxCanMint: number;
8
- }[];
9
- };
10
-
11
- export type AllowListEntry = {
12
- maxCanMint: number;
13
- price: bigint;
14
- proof: Hex[];
15
- };