@zoralabs/protocol-sdk 0.5.13 → 0.5.15

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 (47) hide show
  1. package/.turbo/turbo-build.log +6 -6
  2. package/CHANGELOG.md +15 -0
  3. package/README.md +42 -2
  4. package/dist/apis/chain-constants.d.ts.map +1 -1
  5. package/dist/apis/generated/premint-api-types.d.ts +1 -1
  6. package/dist/apis/generated/premint-api-types.d.ts.map +1 -1
  7. package/dist/constants.d.ts +1 -0
  8. package/dist/constants.d.ts.map +1 -1
  9. package/dist/index.cjs +1534 -11490
  10. package/dist/index.cjs.map +1 -1
  11. package/dist/index.js +1493 -11466
  12. package/dist/index.js.map +1 -1
  13. package/dist/mint/mint-api-client.d.ts +14 -6
  14. package/dist/mint/mint-api-client.d.ts.map +1 -1
  15. package/dist/mint/mint-client.d.ts +3 -2
  16. package/dist/mint/mint-client.d.ts.map +1 -1
  17. package/dist/mints/mints-contracts.d.ts +124 -26
  18. package/dist/mints/mints-contracts.d.ts.map +1 -1
  19. package/dist/mints/mints-queries.d.ts.map +1 -1
  20. package/dist/premint/contract-types.d.ts +2 -28
  21. package/dist/premint/contract-types.d.ts.map +1 -1
  22. package/dist/premint/conversions.d.ts +15 -35
  23. package/dist/premint/conversions.d.ts.map +1 -1
  24. package/dist/premint/premint-api-client.d.ts +1 -1
  25. package/dist/premint/premint-api-client.d.ts.map +1 -1
  26. package/dist/premint/premint-client.d.ts +2717 -4
  27. package/dist/premint/premint-client.d.ts.map +1 -1
  28. package/dist/premint/preminter.d.ts +3 -17
  29. package/dist/premint/preminter.d.ts.map +1 -1
  30. package/package.json +2 -3
  31. package/src/apis/chain-constants.ts +8 -0
  32. package/src/apis/generated/premint-api-types.ts +1 -0
  33. package/src/constants.ts +36 -0
  34. package/src/mint/mint-api-client.ts +107 -45
  35. package/src/mint/mint-client.test.ts +113 -2
  36. package/src/mint/mint-client.ts +64 -23
  37. package/src/mints/mints-contracts.test.ts +3 -5
  38. package/src/mints/mints-contracts.ts +2 -2
  39. package/src/mints/mints-queries.ts +1 -2
  40. package/src/premint/contract-types.ts +4 -54
  41. package/src/premint/conversions.ts +2 -1
  42. package/src/premint/premint-api-client.ts +1 -1
  43. package/src/premint/premint-client.test.ts +17 -6
  44. package/src/premint/premint-client.ts +28 -23
  45. package/src/premint/preminter.test.ts +239 -143
  46. package/src/premint/preminter.ts +12 -55
  47. package/test-integration/premint-client.test.ts +2 -0
@@ -8,9 +8,9 @@ import {
8
8
  } from "@zoralabs/protocol-deployments";
9
9
  import { AbiParametersToPrimitiveTypes, ExtractAbiFunction } from "abitype";
10
10
  import {
11
- MintArguments as PremintMintArguments,
11
+ PremintMintArguments,
12
12
  PremintConfigV2,
13
- } from "src/premint/contract-types";
13
+ } from "@zoralabs/protocol-deployments";
14
14
  import { ContractCreationConfig } from "src/preminter";
15
15
  import { makeSimulateContractParamaters } from "src/utils";
16
16
  import {
@@ -1,8 +1,7 @@
1
1
  import { Address } from "viem";
2
- import { gql } from "graphql-request";
3
2
 
4
3
  export const getMintsAccountBalanceWithPriceQuery = (account: Address) => {
5
- const query = gql`
4
+ const query = `
6
5
  query GetMintAccountBalances($account: String!) {
7
6
  mintAccountBalances(where: { account: $account }) {
8
7
  balance
@@ -1,57 +1,7 @@
1
- import { ExtractAbiFunction, AbiParametersToPrimitiveTypes } from "abitype";
2
- import { zoraCreator1155PremintExecutorImplABI as preminterAbi } from "@zoralabs/protocol-deployments";
3
-
4
- type PremintV1Inputs = ExtractAbiFunction<
5
- typeof preminterAbi,
6
- "premintV1"
7
- >["inputs"];
8
-
9
- type PremintV1HashDataTypes = AbiParametersToPrimitiveTypes<PremintV1Inputs>;
10
-
11
- export type ContractCreationConfig = PremintV1HashDataTypes[0];
12
-
13
- export type PremintConfigV1 = PremintV1HashDataTypes[1];
14
- export type TokenCreationConfigV1 = PremintConfigV1["tokenConfig"];
15
-
16
- export type MintArguments = PremintV1HashDataTypes[4];
17
-
18
- type PremintV2Inputs = ExtractAbiFunction<
19
- typeof preminterAbi,
20
- "premintV2"
21
- >["inputs"];
22
-
23
- type PremintV2HashDataTypes = AbiParametersToPrimitiveTypes<PremintV2Inputs>;
24
-
25
- export type PremintConfigV2 = PremintV2HashDataTypes[1];
26
- export type TokenCreationConfigV2 = PremintConfigV2["tokenConfig"];
1
+ import { PremintConfigVersion as PremintConfigVersionOrig } from "@zoralabs/protocol-deployments";
27
2
 
28
3
  export enum PremintConfigVersion {
29
- V1 = "1",
30
- V2 = "2",
4
+ V1 = PremintConfigVersionOrig.V1,
5
+ V2 = PremintConfigVersionOrig.V2,
6
+ V3 = PremintConfigVersionOrig.V3,
31
7
  }
32
-
33
- export type PremintConfigForVersion<T extends PremintConfigVersion> =
34
- T extends PremintConfigVersion.V1 ? PremintConfigV1 : PremintConfigV2;
35
-
36
- export type PremintConfigWithVersion<T extends PremintConfigVersion> = {
37
- premintConfig: PremintConfigForVersion<T>;
38
- premintConfigVersion: T;
39
- };
40
-
41
- export type PremintConfigAndVersion =
42
- | PremintConfigWithVersion<PremintConfigVersion.V1>
43
- | PremintConfigWithVersion<PremintConfigVersion.V2>;
44
-
45
- export type PremintConfig = PremintConfigV1 | PremintConfigV2;
46
- export type TokenCreationConfig = TokenCreationConfigV1 | TokenCreationConfigV2;
47
-
48
- export type PremintConfigForTokenCreationConfig<T extends TokenCreationConfig> =
49
- T extends TokenCreationConfigV1 ? PremintConfigV1 : PremintConfigV2;
50
-
51
- export type TokenConfigForVersion<T extends PremintConfigVersion> =
52
- PremintConfigForVersion<T>["tokenConfig"];
53
-
54
- export type TokenConfigWithVersion<T extends PremintConfigVersion> = {
55
- tokenConfig: TokenConfigForVersion<T>;
56
- premintConfigVersion: T;
57
- };
@@ -8,7 +8,7 @@ import {
8
8
  PremintConfigV2,
9
9
  PremintConfigVersion,
10
10
  PremintConfigWithVersion,
11
- } from "./contract-types";
11
+ } from "@zoralabs/protocol-deployments";
12
12
  import { PremintSignatureGetResponse } from "./premint-api-client";
13
13
 
14
14
  export const convertCollectionFromApi = (
@@ -16,6 +16,7 @@ export const convertCollectionFromApi = (
16
16
  ): ContractCreationConfig => ({
17
17
  ...collection,
18
18
  contractAdmin: collection.contractAdmin as Address,
19
+ additionalAdmins: [],
19
20
  });
20
21
 
21
22
  /**
@@ -11,7 +11,7 @@ import {
11
11
  PremintConfigAndVersion,
12
12
  PremintConfigVersion,
13
13
  PremintConfigWithVersion,
14
- } from "./contract-types";
14
+ } from "@zoralabs/protocol-deployments";
15
15
  import { Address, Hex } from "viem";
16
16
  import {
17
17
  PremintSignatureRequestBody,
@@ -1,10 +1,16 @@
1
- import { foundry } from "viem/chains";
1
+ import { foundry, zoraSepolia } from "viem/chains";
2
2
  import { describe, expect, vi } from "vitest";
3
3
 
4
4
  import { createPremintClient } from "./premint-client";
5
- import { anvilTest } from "src/anvil";
6
5
  import { PremintConfigVersion } from "./contract-types";
7
6
  import { getDefaultFixedPriceMinterAddress } from "./preminter";
7
+ import { forkUrls, makeAnvilTest } from "src/anvil";
8
+
9
+ const anvilTest = makeAnvilTest({
10
+ forkUrl: forkUrls.zoraSepolia,
11
+ forkBlockNumber: 8869648,
12
+ anvilChainId: zoraSepolia.id,
13
+ });
8
14
 
9
15
  describe("ZoraCreator1155Premint - v1 signatures", () => {
10
16
  anvilTest(
@@ -32,6 +38,7 @@ describe("ZoraCreator1155Premint - v1 signatures", () => {
32
38
  contractName: "Testing Contract",
33
39
  contractURI:
34
40
  "ipfs://bafkreiainxen4b4wz4ubylvbhons6rembxdet4a262nf2lziclqvv7au3e",
41
+ additionalAdmins: [],
35
42
  },
36
43
  tokenCreationConfig: {
37
44
  tokenURI:
@@ -47,6 +54,7 @@ describe("ZoraCreator1155Premint - v1 signatures", () => {
47
54
  contractName: "Testing Contract",
48
55
  contractURI:
49
56
  "ipfs://bafkreiainxen4b4wz4ubylvbhons6rembxdet4a262nf2lziclqvv7au3e",
57
+ additionalAdmins: [],
50
58
  },
51
59
  premintConfig: {
52
60
  deleted: false,
@@ -68,7 +76,7 @@ describe("ZoraCreator1155Premint - v1 signatures", () => {
68
76
  },
69
77
  premintConfigVersion: PremintConfigVersion.V1,
70
78
  signature:
71
- "0x70fc1d6e862c42f2b0e4a062f4eb973cc8692df58a24b71b4fe91ae7baa5a26d2c99b1b8ab61f64ff431bf30b0897877b11b7405542c90b89b041808f1561a6c1c",
79
+ "0x4d191dd60d428adfe507932a1758bee8ac5bbb77dcd3c05840c237416a3a25035bb8cc7c62177a4e9acb5f40c4032cdb3dbfefdd1575f2c3b4c57945b2076e2e1c",
72
80
  };
73
81
 
74
82
  expect(premintClient.apiClient.postSignature).toHaveBeenCalledWith(
@@ -95,6 +103,7 @@ describe("ZoraCreator1155Premint - v1 signatures", () => {
95
103
  contractName: "Testing Contract",
96
104
  contractURI:
97
105
  "ipfs://bafkreiainxen4b4wz4ubylvbhons6rembxdet4a262nf2lziclqvv7au3e",
106
+ additionalAdmins: [],
98
107
  },
99
108
  premintConfig: {
100
109
  deleted: false,
@@ -116,7 +125,7 @@ describe("ZoraCreator1155Premint - v1 signatures", () => {
116
125
  },
117
126
  premintConfigVersion: PremintConfigVersion.V1,
118
127
  signature:
119
- "0x70fc1d6e862c42f2b0e4a062f4eb973cc8692df58a24b71b4fe91ae7baa5a26d2c99b1b8ab61f64ff431bf30b0897877b11b7405542c90b89b041808f1561a6c1c",
128
+ "0x4d191dd60d428adfe507932a1758bee8ac5bbb77dcd3c05840c237416a3a25035bb8cc7c62177a4e9acb5f40c4032cdb3dbfefdd1575f2c3b4c57945b2076e2e1c",
120
129
  });
121
130
 
122
131
  premintClient.apiClient.postSignature = vi.fn();
@@ -189,6 +198,7 @@ describe("ZoraCreator1155Premint - v2 signatures", () => {
189
198
  contractName: "Testing Contract Premint V2",
190
199
  contractURI:
191
200
  "ipfs://bafkreiainxen4b4wz4ubylvbhons6rembxdet4a262nf2lziclqvv7au3e",
201
+ additionalAdmins: [],
192
202
  },
193
203
  premintConfigVersion: PremintConfigVersion.V2,
194
204
  tokenCreationConfig: {
@@ -206,11 +216,12 @@ describe("ZoraCreator1155Premint - v2 signatures", () => {
206
216
  contractName: "Testing Contract Premint V2",
207
217
  contractURI:
208
218
  "ipfs://bafkreiainxen4b4wz4ubylvbhons6rembxdet4a262nf2lziclqvv7au3e",
219
+ additionalAdmins: [],
209
220
  },
210
221
  premintConfig: {
211
222
  deleted: false,
212
223
  tokenConfig: {
213
- fixedPriceMinter: "0x04E2516A2c207E84a1839755675dfd8eF6302F0a",
224
+ fixedPriceMinter: "0x6d28164C3CE04A190D5F9f0f8881fc807EAD975A",
214
225
  maxSupply: 18446744073709551615n,
215
226
  maxTokensPerAddress: 0n,
216
227
  mintDuration: 604800n,
@@ -227,7 +238,7 @@ describe("ZoraCreator1155Premint - v2 signatures", () => {
227
238
  },
228
239
  premintConfigVersion: PremintConfigVersion.V2,
229
240
  signature:
230
- "0x8be7932b0b31bdb7fc9269b756e0d0c9514519f083d86576e23b73c033d8ed8440ea363bc8bba0ec5c30eb6bbdf796163a324201bc7520965037102518fb5e991c",
241
+ "0x5cc8c0ab240920282cf936d8b5eb1dd151a91ad78cc4e89f8ddeae6ea432ce7904a38e145b734bdd438f18d457451cb1ae28beb2c44bda71d58638dfcc071e1b1c",
231
242
  };
232
243
 
233
244
  expect(premintClient.apiClient.postSignature).toHaveBeenCalledWith(
@@ -5,19 +5,16 @@ import type {
5
5
  Chain,
6
6
  Hex,
7
7
  PublicClient,
8
- SimulateContractParameters,
9
8
  TransactionReceipt,
10
9
  WalletClient,
11
10
  } from "viem";
12
11
  import { zoraCreator1155PremintExecutorImplABI } from "@zoralabs/protocol-deployments";
13
12
  import {
14
13
  getPremintCollectionAddress,
15
- premintTypedDataDefinition,
16
14
  isValidSignature,
17
15
  isAuthorizedToCreatePremint,
18
16
  getPremintExecutorAddress,
19
17
  applyUpdateToPremint,
20
- markPremintDeleted,
21
18
  makeNewPremint,
22
19
  supportsPremintVersion,
23
20
  getPremintMintCosts,
@@ -28,13 +25,14 @@ import {
28
25
  PremintConfigVersion,
29
26
  ContractCreationConfig,
30
27
  TokenConfigForVersion,
31
- PremintConfigWithVersion,
32
28
  TokenCreationConfigV1,
33
29
  TokenCreationConfigV2,
34
30
  TokenCreationConfig,
35
31
  PremintConfigForVersion,
36
- MintArguments,
37
- } from "./contract-types";
32
+ PremintConfigWithVersion,
33
+ PremintMintArguments,
34
+ premintTypedDataDefinition,
35
+ } from "@zoralabs/protocol-deployments";
38
36
  import { PremintAPIClient } from "./premint-api-client";
39
37
  import type { DecodeEventLogReturnType } from "viem";
40
38
  import { OPEN_EDITION_MINT_SIZE } from "../constants";
@@ -92,21 +90,28 @@ const makeTokenConfigWithDefaults = <T extends PremintConfigVersion>({
92
90
  creatorAccount,
93
91
  }: {
94
92
  chainId: number;
95
- premintConfigVersion: PremintConfigVersion;
93
+ premintConfigVersion: T;
96
94
  tokenCreationConfig: Partial<TokenConfigForVersion<T>> & { tokenURI: string };
97
95
  creatorAccount: Address;
98
96
  }): TokenConfigForVersion<T> => {
97
+ if (premintConfigVersion === PremintConfigVersion.V3) {
98
+ throw new Error("PremintV3 not supported in SDK");
99
+ }
100
+
99
101
  const fixedPriceMinter =
100
- tokenCreationConfig.fixedPriceMinter ||
101
- getDefaultFixedPriceMinterAddress(chainId);
102
+ (
103
+ tokenCreationConfig as
104
+ | Partial<TokenCreationConfigV1>
105
+ | Partial<TokenCreationConfigV2>
106
+ ).fixedPriceMinter || getDefaultFixedPriceMinterAddress(chainId);
102
107
 
103
108
  if (premintConfigVersion === PremintConfigVersion.V1) {
104
109
  return {
105
110
  fixedPriceMinter,
106
111
  ...defaultTokenConfigV1MintArguments(),
107
112
  royaltyRecipient: creatorAccount,
108
- ...tokenCreationConfig,
109
- };
113
+ ...(tokenCreationConfig as Partial<TokenCreationConfigV1>),
114
+ } as TokenCreationConfigV1;
110
115
  } else if (premintConfigVersion === PremintConfigVersion.V2) {
111
116
  return {
112
117
  fixedPriceMinter,
@@ -265,7 +270,11 @@ class PremintClient {
265
270
  uid: uid,
266
271
  });
267
272
 
268
- const deletedPremint = markPremintDeleted(premintConfig);
273
+ const deletedPremint = {
274
+ ...premintConfig,
275
+ version: premintConfig.version + 1,
276
+ deleted: true,
277
+ };
269
278
 
270
279
  return await this.signAndSubmitPremint({
271
280
  walletClient,
@@ -363,6 +372,7 @@ class PremintClient {
363
372
 
364
373
  const premintConfig = makeNewPremint({
365
374
  tokenConfig: makeTokenConfigWithDefaults({
375
+ // @ts-ignore
366
376
  premintConfigVersion: actualVersion,
367
377
  tokenCreationConfig,
368
378
  creatorAccount:
@@ -511,16 +521,7 @@ class PremintClient {
511
521
  platformReferral?: Address;
512
522
  mintRecipient?: Address;
513
523
  };
514
- }): Promise<
515
- SimulateContractParameters<
516
- typeof zoraCreator1155PremintExecutorImplABI,
517
- "premintV1" | "premintV2",
518
- any,
519
- any,
520
- any,
521
- Account | Address
522
- >
523
- > {
524
+ }) {
524
525
  if (mintArguments && mintArguments?.quantityToMint < 1) {
525
526
  throw new Error("Quantity to mint cannot be below 1");
526
527
  }
@@ -537,6 +538,10 @@ class PremintClient {
537
538
 
538
539
  const numberToMint = BigInt(mintArguments?.quantityToMint || 1);
539
540
 
541
+ if (premintConfigVersion === PremintConfigVersion.V3) {
542
+ throw new Error("PremintV3 not supported in premint SDK");
543
+ }
544
+
540
545
  const value = (
541
546
  await getPremintMintCosts({
542
547
  tokenContract,
@@ -546,7 +551,7 @@ class PremintClient {
546
551
  })
547
552
  ).totalCost;
548
553
 
549
- const mintArgumentsContract: MintArguments = {
554
+ const mintArgumentsContract: PremintMintArguments = {
550
555
  mintComment: mintArguments?.mintComment || "",
551
556
  mintRecipient:
552
557
  mintArguments?.mintRecipient ||