@zoralabs/protocol-sdk 0.2.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.
Files changed (70) hide show
  1. package/.turbo/turbo-build.log +15 -0
  2. package/CHANGELOG.md +47 -0
  3. package/README.md +163 -0
  4. package/dist/anvil.d.ts +16 -0
  5. package/dist/anvil.d.ts.map +1 -0
  6. package/dist/apis/chain-constants.d.ts +21 -0
  7. package/dist/apis/chain-constants.d.ts.map +1 -0
  8. package/dist/apis/client-base.d.ts +15 -0
  9. package/dist/apis/client-base.d.ts.map +1 -0
  10. package/dist/apis/generated/discover-api-types.d.ts +2131 -0
  11. package/dist/apis/generated/discover-api-types.d.ts.map +1 -0
  12. package/dist/apis/generated/premint-api-types.d.ts +356 -0
  13. package/dist/apis/generated/premint-api-types.d.ts.map +1 -0
  14. package/dist/apis/http-api-base.d.ts +26 -0
  15. package/dist/apis/http-api-base.d.ts.map +1 -0
  16. package/dist/constants.d.ts +4 -0
  17. package/dist/constants.d.ts.map +1 -0
  18. package/dist/create/1155-create-helper.d.ts +63 -0
  19. package/dist/create/1155-create-helper.d.ts.map +1 -0
  20. package/dist/create/1155-create-helper.test.d.ts +2 -0
  21. package/dist/create/1155-create-helper.test.d.ts.map +1 -0
  22. package/dist/index.cjs +1006 -0
  23. package/dist/index.cjs.map +1 -0
  24. package/dist/index.d.ts +6 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +984 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/mint/mint-api-client.d.ts +20 -0
  29. package/dist/mint/mint-api-client.d.ts.map +1 -0
  30. package/dist/mint/mint-client.d.ts +237 -0
  31. package/dist/mint/mint-client.d.ts.map +1 -0
  32. package/dist/mint/mint-client.test.d.ts +2 -0
  33. package/dist/mint/mint-client.test.d.ts.map +1 -0
  34. package/dist/premint/premint-api-client.d.ts +19 -0
  35. package/dist/premint/premint-api-client.d.ts.map +1 -0
  36. package/dist/premint/premint-client.d.ts +320 -0
  37. package/dist/premint/premint-client.d.ts.map +1 -0
  38. package/dist/premint/premint-client.test.d.ts +2 -0
  39. package/dist/premint/premint-client.test.d.ts.map +1 -0
  40. package/dist/premint/preminter.d.ts +25 -0
  41. package/dist/premint/preminter.d.ts.map +1 -0
  42. package/dist/premint/preminter.test.d.ts +2 -0
  43. package/dist/premint/preminter.test.d.ts.map +1 -0
  44. package/dist/preminter.d.ts +25 -0
  45. package/dist/preminter.d.ts.map +1 -0
  46. package/dist/preminter.test.d.ts +451 -0
  47. package/dist/preminter.test.d.ts.map +1 -0
  48. package/package.json +28 -0
  49. package/src/anvil.ts +84 -0
  50. package/src/apis/chain-constants.ts +101 -0
  51. package/src/apis/client-base.ts +29 -0
  52. package/src/apis/generated/discover-api-types.ts +2138 -0
  53. package/src/apis/generated/premint-api-types.ts +363 -0
  54. package/src/apis/http-api-base.ts +93 -0
  55. package/src/constants.ts +10 -0
  56. package/src/create/1155-create-helper.test.ts +90 -0
  57. package/src/create/1155-create-helper.ts +342 -0
  58. package/src/index.ts +9 -0
  59. package/src/mint/mint-api-client.ts +52 -0
  60. package/src/mint/mint-client.test.ts +117 -0
  61. package/src/mint/mint-client.ts +218 -0
  62. package/src/premint/premint-api-client.ts +57 -0
  63. package/src/premint/premint-client.test.ts +196 -0
  64. package/src/premint/premint-client.ts +619 -0
  65. package/src/premint/preminter.test.ts +502 -0
  66. package/src/premint/preminter.ts +72 -0
  67. package/src/preminter.test.ts +510 -0
  68. package/src/preminter.ts +72 -0
  69. package/tsconfig.json +25 -0
  70. package/tsup.config.js +10 -0
@@ -0,0 +1,15 @@
1
+ $ tsup
2
+ CLI Building entry: src/index.ts
3
+ CLI Using tsconfig: tsconfig.json
4
+ CLI tsup v7.2.0
5
+ CLI Using tsup config: /home/runner/work/zora-protocol/zora-protocol/packages/protocol-sdk/tsup.config.js
6
+ CLI Target: es2021
7
+ CLI Cleaning output folder
8
+ CJS Build start
9
+ ESM Build start
10
+ CJS dist/index.cjs 31.18 KB
11
+ CJS dist/index.cjs.map 56.54 KB
12
+ CJS ⚡️ Build success in 21ms
13
+ ESM dist/index.js 28.64 KB
14
+ ESM dist/index.js.map 56.31 KB
15
+ ESM ⚡️ Build success in 22ms
package/CHANGELOG.md ADDED
@@ -0,0 +1,47 @@
1
+ # @zoralabs/premint-sdk
2
+
3
+ ## 0.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - b62e471: created new package `protocol-deployments` that includes the deployed contract addresses.
8
+
9
+ - 1155-contracts js no longer exports deployed addresses, just the abis
10
+ - premint-sdk imports deployed addresses from `protocol-deployments
11
+
12
+ - Updated dependencies [4d79b49]
13
+ - Updated dependencies [b62e471]
14
+ - Updated dependencies [7d1a4c1]
15
+ - @zoralabs/protocol-deployments@0.0.2
16
+
17
+ ## 0.1.0
18
+
19
+ ### Minor Changes
20
+
21
+ - 4afa879: Added new premint api that abstracts out calls to the chain signature and submission logic around submitting a premint. This change also incorporates test helpers for premints and introduces docs and an api client for the zora api's premint module.
22
+
23
+ ### Patch Changes
24
+
25
+ - Updated dependencies [4afa879]
26
+ - @zoralabs/zora-1155-contracts@2.3.0
27
+
28
+ ## 0.0.2-premint-api.2
29
+
30
+ ### Patch Changes
31
+
32
+ - c29e080: Update retry and error reporting
33
+
34
+ ## 0.0.2-premint-api.1
35
+
36
+ ### Patch Changes
37
+
38
+ - 6eaf7bb: add retries
39
+
40
+ ## 0.0.2-premint-api.0
41
+
42
+ ### Patch Changes
43
+
44
+ - Updated dependencies [8395b8e]
45
+ - Updated dependencies [aae756b]
46
+ - Updated dependencies [cf184b3]
47
+ - @zoralabs/zora-1155-contracts@2.1.1-premint-api.0
package/README.md ADDED
@@ -0,0 +1,163 @@
1
+ # Premint SDK
2
+
3
+ Protocol SDK allows users to manage zora mints and collects.
4
+
5
+ ## Installing
6
+
7
+ [viem](https://viem.sh/) is a peerDependency of protocol-sdk. If not already installed, it needs to be installed alongside the protocol sdk.
8
+
9
+ - `npm install viem`
10
+ - `npm install `
11
+
12
+ ### Creating a mint from an on-chain contract:
13
+
14
+ ```ts
15
+ import { MintAPI } from "@zoralabs/protocol-sdk";
16
+ import type { Address, WalletClient } from "viem";
17
+
18
+ async function mintNFT(
19
+ walletClient: WalletClient,
20
+ address: Address,
21
+ tokenId: bigint,
22
+ ) {
23
+ const mintAPI = new MintAPI(walletClient.chain);
24
+ await mintAPI.mintNFT({
25
+ walletClient,
26
+ address,
27
+ tokenId,
28
+ mintArguments: {
29
+ quantityToMint: 23,
30
+ mintComment: "Helo",
31
+ },
32
+ });
33
+ }
34
+ ```
35
+
36
+ ### Creating a premint:
37
+
38
+ ```ts
39
+ import { PremintAPI } from "@zoralabs/protocol-sdk";
40
+ import type { Address, WalletClient } from "viem";
41
+
42
+ async function makePremint(walletClient: WalletClient) {
43
+ // Create premint API object passing in the current wallet chain (only zora and zora testnet are supported currently).
44
+ const premintAPI = new PremintAPI(walletClient.chain);
45
+
46
+ // Create premint
47
+ const premint = await premintAPI.createPremint({
48
+ // Extra step to check the signature on-chain before attempting to sign
49
+ checkSignature: true,
50
+ // Collection information that this premint NFT will exist in once minted.
51
+ collection: {
52
+ contractAdmin: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
53
+ contractName: "Testing Contract",
54
+ contractURI:
55
+ "ipfs://bafkreiainxen4b4wz4ubylvbhons6rembxdet4a262nf2lziclqvv7au3e",
56
+ },
57
+ // WalletClient doing the signature
58
+ walletClient,
59
+ // Token information, falls back to defaults set in DefaultMintArguments.
60
+ token: {
61
+ tokenURI:
62
+ "ipfs://bafkreice23maski3x52tsfqgxstx3kbiifnt5jotg3a5ynvve53c4soi2u",
63
+ },
64
+ });
65
+
66
+ console.log(`created ZORA premint, link: ${premint.url}`);
67
+ return premint;
68
+ }
69
+ ```
70
+
71
+ ### Updating a premint:
72
+
73
+ ```ts
74
+ import { PremintAPI } from "@zoralabs/premint-sdk";
75
+ import type { Address, WalletClient } from "viem";
76
+
77
+ async function updatePremint(walletClient: WalletClient) {
78
+ // Create premint API object passing in the current wallet chain (only zora and zora testnet are supported currently).
79
+ const premintAPI = new PremintAPI(walletClient.chain);
80
+
81
+ // Create premint
82
+ const premint = await premintAPI.updatePremint({
83
+ // Extra step to check the signature on-chain before attempting to sign
84
+ collection: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
85
+ uid: 23,
86
+ // WalletClient doing the signature
87
+ walletClient,
88
+ // Token information, falls back to defaults set in DefaultMintArguments.
89
+ token: {
90
+ tokenURI:
91
+ "ipfs://bafkreice23maski3x52tsfqgxstx3kbiifnt5jotg3a5ynvve53c4soi2u",
92
+ },
93
+ });
94
+
95
+ console.log(`updated ZORA premint, link: ${premint.url}`);
96
+ return premint;
97
+ }
98
+ ```
99
+
100
+ ### Deleting a premint:
101
+
102
+ ```ts
103
+ import { PremintAPI } from "@zoralabs/premint-sdk";
104
+ import type { Address, WalletClient } from "viem";
105
+
106
+ async function deletePremint(walletClient: WalletClient) {
107
+ // Create premint API object passing in the current wallet chain (only zora and zora testnet are supported currently).
108
+ const premintAPI = new PremintAPI(walletClient.chain);
109
+
110
+ // Create premint
111
+ const premint = await premintAPI.deletePremint({
112
+ // Extra step to check the signature on-chain before attempting to sign
113
+ collection: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
114
+ uid: 23,
115
+ // WalletClient doing the signature
116
+ walletClient,
117
+ });
118
+
119
+ console.log(`updated ZORA premint, link: ${premint.url}`);
120
+ return premint;
121
+ }
122
+ ```
123
+
124
+ ### Executing a premint:
125
+
126
+ ```ts
127
+ import { PremintAPI } from "@zoralabs/premint-sdk";
128
+ import type { Address, WalletClient } from "viem";
129
+
130
+ async function executePremint(
131
+ walletClient: WalletClient,
132
+ premintAddress: Address,
133
+ premintUID: number,
134
+ ) {
135
+ const premintAPI = new PremintAPI(walletClient.chain);
136
+
137
+ return await premintAPI.executePremintWithWallet({
138
+ data: premintAPI.getPremintData(premintAddress, premintUID),
139
+ walletClient,
140
+ mintArguments: {
141
+ quantityToMint: 1,
142
+ },
143
+ });
144
+ }
145
+ ```
146
+
147
+ ### Deleting a premint:
148
+
149
+ ```js
150
+ import {PremintAPI} from '@zoralabs/premint-sdk';
151
+ import type {Address, WalletClient} from 'viem';
152
+
153
+ async function deletePremint(walletClient: WalletClient, collection: Address, uid: number) {
154
+ const premintAPI = new PremintAPI(walletClient.chain);
155
+
156
+ return await premintAPI.deletePremint({
157
+ walletClient,
158
+ uid,
159
+ collection
160
+ });
161
+ }
162
+
163
+ ```
@@ -0,0 +1,16 @@
1
+ import { PublicClient, TestClient, WalletClient } from "viem";
2
+ export interface AnvilViemClientsTest {
3
+ viemClients: {
4
+ walletClient: WalletClient;
5
+ publicClient: PublicClient;
6
+ testClient: TestClient;
7
+ };
8
+ }
9
+ export declare const anvilTest: import("@vitest/runner/dist/tasks-e594cd24").e<{
10
+ viemClients: {
11
+ walletClient: WalletClient;
12
+ publicClient: PublicClient;
13
+ testClient: TestClient;
14
+ };
15
+ }>;
16
+ //# sourceMappingURL=anvil.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anvil.d.ts","sourceRoot":"","sources":["../src/anvil.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EACZ,UAAU,EACV,YAAY,EAKb,MAAM,MAAM,CAAC;AAGd,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE;QACX,YAAY,EAAE,YAAY,CAAC;QAC3B,YAAY,EAAE,YAAY,CAAC;QAC3B,UAAU,EAAE,UAAU,CAAC;KACxB,CAAC;CACH;AAUD,eAAO,MAAM,SAAS;;sBAdJ,YAAY;sBACZ,YAAY;oBACd,UAAU;;EAiExB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { components } from "./generated/premint-api-types";
2
+ export type NetworkConfig = {
3
+ chainId: number;
4
+ zoraPathChainName: string;
5
+ zoraBackendChainName: components["schemas"]["ChainName"];
6
+ isTestnet: boolean;
7
+ subgraphUrl: string;
8
+ };
9
+ export declare const REWARD_PER_TOKEN: bigint;
10
+ export declare const BackendChainNamesLookup: {
11
+ readonly ZORA_MAINNET: "ZORA-MAINNET";
12
+ readonly ZORA_GOERLI: "ZORA-GOERLI";
13
+ readonly OPTIMISM_MAINNET: "OPTIMISM-MAINNET";
14
+ readonly OPTIMISM_GOERLI: "OPTIMISM-GOERLI";
15
+ readonly ETHEREUM_MAINNET: "ETHEREUM-MAINNET";
16
+ readonly ETHEREUM_GOERLI: "ETHEREUM-GOERLI";
17
+ readonly BASE_MAINNET: "BASE-MAINNET";
18
+ readonly BASE_GOERLI: "BASE-GOERLI";
19
+ };
20
+ export declare const networkConfigByChain: Record<number, NetworkConfig>;
21
+ //# sourceMappingURL=chain-constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-constants.d.ts","sourceRoot":"","sources":["../../src/apis/chain-constants.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAIhE,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;IACzD,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAyB,CAAC;AAEvD,eAAO,MAAM,uBAAuB;;;;;;;;;CAS1B,CAAC;AAEX,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAgE9D,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { Chain, PublicClient } from "viem";
2
+ import { NetworkConfig } from "./chain-constants";
3
+ export declare abstract class ClientBase {
4
+ network: NetworkConfig;
5
+ chain: Chain;
6
+ constructor(chain: Chain);
7
+ /**
8
+ * Getter for public client that instantiates a publicClient as needed
9
+ *
10
+ * @param publicClient Optional viem public client
11
+ * @returns Existing public client or makes a new one for the given chain as needed.
12
+ */
13
+ protected getPublicClient(publicClient?: PublicClient): PublicClient;
14
+ }
15
+ //# sourceMappingURL=client-base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-base.d.ts","sourceRoot":"","sources":["../../src/apis/client-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,YAAY,EAA4B,MAAM,MAAM,CAAC;AACrE,OAAO,EAAE,aAAa,EAAwB,MAAM,mBAAmB,CAAC;AAExE,8BAAsB,UAAU;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;gBAED,KAAK,EAAE,KAAK;IASxB;;;;;OAKG;IACH,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,YAAY;CAMrE"}