@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.
- package/.turbo/turbo-build.log +6 -6
- package/CHANGELOG.md +15 -0
- package/README.md +42 -2
- package/dist/apis/chain-constants.d.ts.map +1 -1
- package/dist/apis/generated/premint-api-types.d.ts +1 -1
- package/dist/apis/generated/premint-api-types.d.ts.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/index.cjs +1534 -11490
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1493 -11466
- package/dist/index.js.map +1 -1
- package/dist/mint/mint-api-client.d.ts +14 -6
- package/dist/mint/mint-api-client.d.ts.map +1 -1
- package/dist/mint/mint-client.d.ts +3 -2
- package/dist/mint/mint-client.d.ts.map +1 -1
- package/dist/mints/mints-contracts.d.ts +124 -26
- package/dist/mints/mints-contracts.d.ts.map +1 -1
- package/dist/mints/mints-queries.d.ts.map +1 -1
- package/dist/premint/contract-types.d.ts +2 -28
- package/dist/premint/contract-types.d.ts.map +1 -1
- package/dist/premint/conversions.d.ts +15 -35
- package/dist/premint/conversions.d.ts.map +1 -1
- package/dist/premint/premint-api-client.d.ts +1 -1
- package/dist/premint/premint-api-client.d.ts.map +1 -1
- package/dist/premint/premint-client.d.ts +2717 -4
- package/dist/premint/premint-client.d.ts.map +1 -1
- package/dist/premint/preminter.d.ts +3 -17
- package/dist/premint/preminter.d.ts.map +1 -1
- package/package.json +2 -3
- package/src/apis/chain-constants.ts +8 -0
- package/src/apis/generated/premint-api-types.ts +1 -0
- package/src/constants.ts +36 -0
- package/src/mint/mint-api-client.ts +107 -45
- package/src/mint/mint-client.test.ts +113 -2
- package/src/mint/mint-client.ts +64 -23
- package/src/mints/mints-contracts.test.ts +3 -5
- package/src/mints/mints-contracts.ts +2 -2
- package/src/mints/mints-queries.ts +1 -2
- package/src/premint/contract-types.ts +4 -54
- package/src/premint/conversions.ts +2 -1
- package/src/premint/premint-api-client.ts +1 -1
- package/src/premint/premint-client.test.ts +17 -6
- package/src/premint/premint-client.ts +28 -23
- package/src/premint/preminter.test.ts +239 -143
- package/src/premint/preminter.ts +12 -55
- package/test-integration/premint-client.test.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"premint-client.d.ts","sourceRoot":"","sources":["../../src/premint/premint-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EACP,OAAO,EACP,KAAK,EACL,GAAG,EACH,YAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"premint-client.d.ts","sourceRoot":"","sources":["../../src/premint/premint-client.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6EF;AAED,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,UAAU,EACV,YAAY,GACb,EAAE;IACD,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,UAAU,CAAC,EAAE,WAAW,CAAC;CAC1B,iBAEA"}
|
|
@@ -1,22 +1,9 @@
|
|
|
1
1
|
import { Address } from "abitype";
|
|
2
2
|
import { zoraCreator1155ImplABI } from "@zoralabs/protocol-deployments";
|
|
3
|
-
import {
|
|
4
|
-
import { ContractCreationConfig, PremintConfig, PremintConfigForTokenCreationConfig, PremintConfigV1, PremintConfigV2, PremintConfigVersion, PremintConfigWithVersion, TokenCreationConfig } from "
|
|
3
|
+
import { Hex, PublicClient, GetEventArgs } from "viem";
|
|
4
|
+
import { ContractCreationConfig, PremintConfig, PremintConfigForTokenCreationConfig, PremintConfigV1, PremintConfigV2, PremintConfigVersion, PremintConfigWithVersion, TokenCreationConfig } from "@zoralabs/protocol-deployments";
|
|
5
5
|
import { MintCosts } from "src/mint/mint-client";
|
|
6
|
-
export declare const getPremintExecutorAddress: () =>
|
|
7
|
-
/**
|
|
8
|
-
* Creates a typed data definition for a premint config. Works for all versions of the premint config by specifying the premintConfigVersion.
|
|
9
|
-
*
|
|
10
|
-
* @param params.verifyingContract the address of the 1155 contract
|
|
11
|
-
* @param params.chainId the chain id the premint is signed for
|
|
12
|
-
* @param params.premintConfigVersion the version of the premint config
|
|
13
|
-
* @param params.premintConfig the premint config
|
|
14
|
-
* @returns
|
|
15
|
-
*/
|
|
16
|
-
export declare const premintTypedDataDefinition: <T extends PremintConfigVersion>({ verifyingContract, chainId, premintConfigVersion: version, premintConfig, }: {
|
|
17
|
-
verifyingContract: Address;
|
|
18
|
-
chainId: number;
|
|
19
|
-
} & PremintConfigWithVersion<T>) => TypedDataDefinition;
|
|
6
|
+
export declare const getPremintExecutorAddress: () => `0x${string}`;
|
|
20
7
|
export type IsValidSignatureReturn = {
|
|
21
8
|
isAuthorized: boolean;
|
|
22
9
|
recoveredAddress?: Address;
|
|
@@ -94,7 +81,6 @@ export declare function getPremintCollectionAddress({ collection, publicClient,
|
|
|
94
81
|
collection: ContractCreationConfig;
|
|
95
82
|
publicClient: PublicClient;
|
|
96
83
|
}): Promise<Address>;
|
|
97
|
-
export declare function markPremintDeleted<T extends PremintConfig>(premintConfig: T): T;
|
|
98
84
|
export declare function applyUpdateToPremint({ uid, version, tokenConfig, tokenConfigUpdates, }: {
|
|
99
85
|
tokenConfig: TokenCreationConfig;
|
|
100
86
|
tokenConfigUpdates: Partial<TokenCreationConfig>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preminter.d.ts","sourceRoot":"","sources":["../../src/premint/preminter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAEL,sBAAsB,
|
|
1
|
+
{"version":3,"file":"preminter.d.ts","sourceRoot":"","sources":["../../src/premint/preminter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zoralabs/protocol-sdk",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.15",
|
|
4
4
|
"repository": "https://github.com/ourzora/zora-protocol",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -31,12 +31,11 @@
|
|
|
31
31
|
"viem": "^2.9.19"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"abitype": "^1.0.2",
|
|
35
34
|
"@lavamoat/preinstall-always-fail": "2.0.0",
|
|
36
35
|
"@reservoir0x/relay-sdk": "^0.3.8",
|
|
37
36
|
"@reservoir0x/reservoir-sdk": "^2.0.11",
|
|
37
|
+
"abitype": "^1.0.2",
|
|
38
38
|
"graphql-prettier": "^1.0.6",
|
|
39
|
-
"graphql-request": "^6.1.0",
|
|
40
39
|
"typescript": "^5.2.2",
|
|
41
40
|
"vite": "^4.5.0",
|
|
42
41
|
"vitest": "^0.34.6",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
arbitrum,
|
|
3
3
|
base,
|
|
4
|
+
baseSepolia,
|
|
4
5
|
foundry,
|
|
5
6
|
mainnet,
|
|
6
7
|
optimism,
|
|
@@ -74,6 +75,13 @@ export const networkConfigByChain: Record<number, NetworkConfig> = {
|
|
|
74
75
|
zoraBackendChainName: "BASE-MAINNET",
|
|
75
76
|
subgraphUrl: getSubgraph("zora-create-base-mainnet", "stable"),
|
|
76
77
|
},
|
|
78
|
+
[baseSepolia.id]: {
|
|
79
|
+
chainId: baseSepolia.id,
|
|
80
|
+
isTestnet: true,
|
|
81
|
+
zoraCollectPathChainName: "bsep",
|
|
82
|
+
zoraBackendChainName: "BASE-SEPOLIA",
|
|
83
|
+
subgraphUrl: getSubgraph("zora-create-base-sepolia", "stable"),
|
|
84
|
+
},
|
|
77
85
|
[foundry.id]: {
|
|
78
86
|
chainId: foundry.id,
|
|
79
87
|
isTestnet: true,
|
package/src/constants.ts
CHANGED
|
@@ -15,3 +15,39 @@ export const zora721Abi = parseAbi([
|
|
|
15
15
|
"function mintWithRewards(address recipient, uint256 quantity, string calldata comment, address mintReferral) external payable",
|
|
16
16
|
"function zoraFeeForAmount(uint256 amount) public view returns (address, uint256)",
|
|
17
17
|
] as const);
|
|
18
|
+
|
|
19
|
+
export const NFT_SALE_QUERY = `
|
|
20
|
+
fragment SaleStrategy on SalesStrategyConfig {
|
|
21
|
+
type
|
|
22
|
+
fixedPrice {
|
|
23
|
+
address
|
|
24
|
+
pricePerToken
|
|
25
|
+
saleEnd
|
|
26
|
+
saleStart
|
|
27
|
+
maxTokensPerAddress
|
|
28
|
+
}
|
|
29
|
+
erc20Minter {
|
|
30
|
+
address
|
|
31
|
+
pricePerToken
|
|
32
|
+
currency
|
|
33
|
+
saleEnd
|
|
34
|
+
saleStart
|
|
35
|
+
maxTokensPerAddress
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
query ($id: ID!) {
|
|
40
|
+
zoraCreateToken(id: $id) {
|
|
41
|
+
id
|
|
42
|
+
contract {
|
|
43
|
+
mintFeePerQuantity
|
|
44
|
+
salesStrategies(where: {type_in: ["FIXED_PRICE", "ERC_20_MINTER"]}) {
|
|
45
|
+
...SaleStrategy
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
salesStrategies(where: {type_in: ["FIXED_PRICE", "ERC_20_MINTER"]}) {
|
|
49
|
+
...SaleStrategy
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
`;
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
import { Address } from "viem";
|
|
1
2
|
import {
|
|
2
3
|
httpClient as defaultHttpClient,
|
|
3
4
|
IHttpClient,
|
|
4
5
|
} from "../apis/http-api-base";
|
|
5
6
|
import { NetworkConfig, networkConfigByChain } from "src/apis/chain-constants";
|
|
6
7
|
import { GenericTokenIdTypes } from "src/types";
|
|
7
|
-
import {
|
|
8
|
+
import { NFT_SALE_QUERY } from "src/constants";
|
|
9
|
+
|
|
10
|
+
export type SaleType = "fixedPrice" | "erc20";
|
|
8
11
|
|
|
9
12
|
type FixedPriceSaleStrategyResult = {
|
|
10
13
|
address: Address;
|
|
@@ -14,12 +17,48 @@ type FixedPriceSaleStrategyResult = {
|
|
|
14
17
|
maxTokensPerAddress: string;
|
|
15
18
|
};
|
|
16
19
|
|
|
17
|
-
type
|
|
18
|
-
|
|
20
|
+
type ERC20SaleStrategyResult = FixedPriceSaleStrategyResult & {
|
|
21
|
+
currency: Address;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
type SalesStrategyResult =
|
|
25
|
+
| {
|
|
26
|
+
type: "FIXED_PRICE";
|
|
27
|
+
fixedPrice: FixedPriceSaleStrategyResult;
|
|
28
|
+
}
|
|
29
|
+
| {
|
|
30
|
+
type: "ERC_20_MINTER";
|
|
31
|
+
erc20Minter: ERC20SaleStrategyResult;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
type TokenQueryResult = {
|
|
35
|
+
tokenId?: string;
|
|
36
|
+
salesStrategies?: SalesStrategyResult[];
|
|
37
|
+
contract: {
|
|
38
|
+
mintFeePerQuantity: "string";
|
|
39
|
+
salesStrategies: SalesStrategyResult[];
|
|
40
|
+
};
|
|
19
41
|
};
|
|
20
42
|
|
|
43
|
+
type SaleStrategy<T extends SaleType> = {
|
|
44
|
+
saleType: T;
|
|
45
|
+
address: Address;
|
|
46
|
+
pricePerToken: bigint;
|
|
47
|
+
saleEnd: string;
|
|
48
|
+
saleStart: string;
|
|
49
|
+
maxTokensPerAddress: bigint;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
type FixedPriceSaleStrategy = SaleStrategy<"fixedPrice">;
|
|
53
|
+
|
|
54
|
+
type ERC20SaleStrategy = SaleStrategy<"erc20"> & {
|
|
55
|
+
currency: Address;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
type SaleStrategies = FixedPriceSaleStrategy | ERC20SaleStrategy;
|
|
59
|
+
|
|
21
60
|
export type SalesConfigAndTokenInfo = {
|
|
22
|
-
|
|
61
|
+
salesConfig: SaleStrategies;
|
|
23
62
|
mintFeePerQuantity: bigint;
|
|
24
63
|
};
|
|
25
64
|
|
|
@@ -42,40 +81,16 @@ export class MintAPIClient {
|
|
|
42
81
|
async getSalesConfigAndTokenInfo({
|
|
43
82
|
tokenAddress,
|
|
44
83
|
tokenId,
|
|
84
|
+
saleType,
|
|
45
85
|
}: {
|
|
46
86
|
tokenAddress: Address;
|
|
47
87
|
tokenId?: GenericTokenIdTypes;
|
|
88
|
+
saleType?: SaleType;
|
|
48
89
|
}): Promise<SalesConfigAndTokenInfo> {
|
|
49
90
|
const { retries, post } = this.httpClient;
|
|
50
91
|
return retries(async () => {
|
|
51
92
|
const response = await post<any>(this.networkConfig.subgraphUrl, {
|
|
52
|
-
query:
|
|
53
|
-
fragment SaleStrategy on SalesStrategyConfig {
|
|
54
|
-
type
|
|
55
|
-
fixedPrice {
|
|
56
|
-
address
|
|
57
|
-
pricePerToken
|
|
58
|
-
saleEnd
|
|
59
|
-
saleStart
|
|
60
|
-
maxTokensPerAddress
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
query ($id: ID!) {
|
|
65
|
-
zoraCreateToken(id: $id) {
|
|
66
|
-
id
|
|
67
|
-
contract {
|
|
68
|
-
mintFeePerQuantity
|
|
69
|
-
salesStrategies(where: {type: "FIXED_PRICE"}) {
|
|
70
|
-
...SaleStrategy
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
salesStrategies(where: {type: "FIXED_PRICE"}) {
|
|
74
|
-
...SaleStrategy
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
`,
|
|
93
|
+
query: NFT_SALE_QUERY,
|
|
79
94
|
variables: {
|
|
80
95
|
id:
|
|
81
96
|
tokenId !== undefined
|
|
@@ -85,31 +100,78 @@ export class MintAPIClient {
|
|
|
85
100
|
},
|
|
86
101
|
});
|
|
87
102
|
|
|
88
|
-
const token = response.data?.zoraCreateToken;
|
|
103
|
+
const token = response.data?.zoraCreateToken as TokenQueryResult;
|
|
89
104
|
|
|
90
105
|
if (!token) {
|
|
91
106
|
throw new Error("Cannot find a token to mint");
|
|
92
107
|
}
|
|
93
108
|
|
|
94
|
-
const
|
|
95
|
-
tokenId !== undefined
|
|
109
|
+
const allStrategies =
|
|
110
|
+
(typeof tokenId !== "undefined"
|
|
96
111
|
? token.salesStrategies
|
|
97
|
-
: token.contract.salesStrategies;
|
|
112
|
+
: token.contract.salesStrategies) || [];
|
|
98
113
|
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
114
|
+
const saleStrategies = allStrategies.sort((a, b) =>
|
|
115
|
+
BigInt(
|
|
116
|
+
a.type === "ERC_20_MINTER"
|
|
117
|
+
? a.erc20Minter.saleEnd
|
|
118
|
+
: a.fixedPrice.saleEnd,
|
|
119
|
+
) >
|
|
120
|
+
BigInt(
|
|
121
|
+
b.type === "FIXED_PRICE"
|
|
122
|
+
? b.fixedPrice.saleEnd
|
|
123
|
+
: b.erc20Minter.saleEnd,
|
|
102
124
|
)
|
|
103
|
-
|
|
125
|
+
? 1
|
|
126
|
+
: -1,
|
|
127
|
+
);
|
|
104
128
|
|
|
105
|
-
|
|
106
|
-
|
|
129
|
+
let targetStrategy: SalesStrategyResult | undefined;
|
|
130
|
+
|
|
131
|
+
if (!saleType) {
|
|
132
|
+
targetStrategy = saleStrategies[0];
|
|
133
|
+
if (!targetStrategy) {
|
|
134
|
+
throw new Error("Cannot find sale strategy");
|
|
135
|
+
}
|
|
136
|
+
} else {
|
|
137
|
+
const mappedSaleType =
|
|
138
|
+
saleType === "erc20" ? "ERC_20_MINTER" : "FIXED_PRICE";
|
|
139
|
+
targetStrategy = saleStrategies.find(
|
|
140
|
+
(strategy: SalesStrategyResult) => strategy.type === mappedSaleType,
|
|
141
|
+
);
|
|
142
|
+
if (!targetStrategy) {
|
|
143
|
+
throw new Error(`Cannot find sale strategy for ${mappedSaleType}`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if (targetStrategy.type === "FIXED_PRICE") {
|
|
148
|
+
return {
|
|
149
|
+
salesConfig: {
|
|
150
|
+
saleType: "fixedPrice",
|
|
151
|
+
...targetStrategy.fixedPrice,
|
|
152
|
+
maxTokensPerAddress: BigInt(
|
|
153
|
+
targetStrategy.fixedPrice.maxTokensPerAddress,
|
|
154
|
+
),
|
|
155
|
+
pricePerToken: BigInt(targetStrategy.fixedPrice.pricePerToken),
|
|
156
|
+
},
|
|
157
|
+
mintFeePerQuantity: BigInt(token.contract.mintFeePerQuantity),
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
if (targetStrategy.type === "ERC_20_MINTER") {
|
|
161
|
+
return {
|
|
162
|
+
salesConfig: {
|
|
163
|
+
saleType: "erc20",
|
|
164
|
+
...targetStrategy.erc20Minter,
|
|
165
|
+
maxTokensPerAddress: BigInt(
|
|
166
|
+
targetStrategy.erc20Minter.maxTokensPerAddress,
|
|
167
|
+
),
|
|
168
|
+
pricePerToken: BigInt(targetStrategy.erc20Minter.pricePerToken),
|
|
169
|
+
},
|
|
170
|
+
mintFeePerQuantity: BigInt(token.contract.mintFeePerQuantity),
|
|
171
|
+
};
|
|
107
172
|
}
|
|
108
173
|
|
|
109
|
-
|
|
110
|
-
fixedPrice,
|
|
111
|
-
mintFeePerQuantity: BigInt(token.contract.mintFeePerQuantity),
|
|
112
|
-
};
|
|
174
|
+
throw new Error("Invalid saleType");
|
|
113
175
|
});
|
|
114
176
|
}
|
|
115
177
|
}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { describe, expect } from "vitest";
|
|
1
2
|
import { Address, parseAbi, parseEther } from "viem";
|
|
2
3
|
import { zora } from "viem/chains";
|
|
3
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
zoraCreator1155ImplABI,
|
|
6
|
+
erc20MinterAddress,
|
|
7
|
+
} from "@zoralabs/protocol-deployments";
|
|
4
8
|
import { createMintClient } from "./mint-client";
|
|
5
|
-
import { zoraCreator1155ImplABI } from "@zoralabs/protocol-deployments";
|
|
6
9
|
import { anvilTest, forkUrls, makeAnvilTest } from "src/anvil";
|
|
7
10
|
|
|
8
11
|
const erc721ABI = parseAbi([
|
|
@@ -111,4 +114,112 @@ describe("mint-helper", () => {
|
|
|
111
114
|
},
|
|
112
115
|
12 * 1000,
|
|
113
116
|
);
|
|
117
|
+
|
|
118
|
+
makeAnvilTest({
|
|
119
|
+
forkUrl: forkUrls.zoraMainnet,
|
|
120
|
+
forkBlockNumber: 14484183,
|
|
121
|
+
})(
|
|
122
|
+
"mints an 1155 token with an ERC20 token",
|
|
123
|
+
async ({ viemClients }) => {
|
|
124
|
+
const { testClient, walletClient, publicClient } = viemClients;
|
|
125
|
+
|
|
126
|
+
const targetContract: Address =
|
|
127
|
+
"0x689bc305456c38656856d12469aed282fbd89fe0";
|
|
128
|
+
const targetTokenId = 16n;
|
|
129
|
+
|
|
130
|
+
const minter = createMintClient({ chain: zora });
|
|
131
|
+
|
|
132
|
+
const mockCollector = "0xb6b701878a1f80197dF2c209D0BDd292EA73164D";
|
|
133
|
+
await testClient.impersonateAccount({
|
|
134
|
+
address: mockCollector,
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
const erc20Currency = "0xa6b280b42cb0b7c4a4f789ec6ccc3a7609a1bc39";
|
|
138
|
+
const erc20PricePerToken = 1000000000000000000n;
|
|
139
|
+
|
|
140
|
+
const erc20Abi = parseAbi([
|
|
141
|
+
"function balanceOf(address) public view returns (uint256)",
|
|
142
|
+
"function approve(address spender, uint256 amount) public returns (bool)",
|
|
143
|
+
"function allowance(address owner, address spender) public view returns (uint256)",
|
|
144
|
+
]);
|
|
145
|
+
|
|
146
|
+
const beforeERC20Balance = await publicClient.readContract({
|
|
147
|
+
abi: erc20Abi,
|
|
148
|
+
address: erc20Currency,
|
|
149
|
+
functionName: "balanceOf",
|
|
150
|
+
args: [mockCollector],
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
const { request } = await publicClient.simulateContract({
|
|
154
|
+
account: mockCollector,
|
|
155
|
+
address: erc20Currency,
|
|
156
|
+
abi: erc20Abi,
|
|
157
|
+
functionName: "approve",
|
|
158
|
+
args: [erc20MinterAddress[7777777], erc20PricePerToken],
|
|
159
|
+
});
|
|
160
|
+
const approveHash = await walletClient.writeContract(request);
|
|
161
|
+
const approveTxReciept = await publicClient.waitForTransactionReceipt({
|
|
162
|
+
hash: approveHash,
|
|
163
|
+
});
|
|
164
|
+
expect(approveTxReciept).to.not.be.null;
|
|
165
|
+
|
|
166
|
+
const beforeAllowance = await publicClient.readContract({
|
|
167
|
+
abi: erc20Abi,
|
|
168
|
+
address: erc20Currency,
|
|
169
|
+
functionName: "allowance",
|
|
170
|
+
args: [mockCollector, erc20MinterAddress[7777777]],
|
|
171
|
+
});
|
|
172
|
+
expect(beforeAllowance).to.be.equal(erc20PricePerToken);
|
|
173
|
+
|
|
174
|
+
const params = await minter.makePrepareMintTokenParams({
|
|
175
|
+
minterAccount: mockCollector,
|
|
176
|
+
tokenId: targetTokenId,
|
|
177
|
+
tokenAddress: targetContract,
|
|
178
|
+
mintArguments: {
|
|
179
|
+
mintToAddress: mockCollector,
|
|
180
|
+
quantityToMint: 1,
|
|
181
|
+
},
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
const beforeCollector1155Balance = await publicClient.readContract({
|
|
185
|
+
abi: zoraCreator1155ImplABI,
|
|
186
|
+
address: targetContract,
|
|
187
|
+
functionName: "balanceOf",
|
|
188
|
+
args: [mockCollector, targetTokenId],
|
|
189
|
+
});
|
|
190
|
+
expect(beforeCollector1155Balance).to.be.equal(0n);
|
|
191
|
+
|
|
192
|
+
const simulationResult = await publicClient.simulateContract(params);
|
|
193
|
+
const hash = await walletClient.writeContract(simulationResult.request);
|
|
194
|
+
const receipt = await publicClient.waitForTransactionReceipt({ hash });
|
|
195
|
+
expect(receipt).to.not.be.null;
|
|
196
|
+
|
|
197
|
+
const afterAllowance = await publicClient.readContract({
|
|
198
|
+
abi: erc20Abi,
|
|
199
|
+
address: erc20Currency,
|
|
200
|
+
functionName: "allowance",
|
|
201
|
+
args: [mockCollector, erc20MinterAddress[7777777]],
|
|
202
|
+
});
|
|
203
|
+
expect(afterAllowance).to.be.equal(0n);
|
|
204
|
+
|
|
205
|
+
const afterERC20Balance = await publicClient.readContract({
|
|
206
|
+
abi: erc20Abi,
|
|
207
|
+
address: erc20Currency,
|
|
208
|
+
functionName: "balanceOf",
|
|
209
|
+
args: [mockCollector],
|
|
210
|
+
});
|
|
211
|
+
expect(beforeERC20Balance - afterERC20Balance).to.be.equal(
|
|
212
|
+
erc20PricePerToken,
|
|
213
|
+
);
|
|
214
|
+
|
|
215
|
+
const afterCollector1155Balance = await publicClient.readContract({
|
|
216
|
+
abi: zoraCreator1155ImplABI,
|
|
217
|
+
address: targetContract,
|
|
218
|
+
functionName: "balanceOf",
|
|
219
|
+
args: [mockCollector, targetTokenId],
|
|
220
|
+
});
|
|
221
|
+
expect(afterCollector1155Balance).to.be.equal(1n);
|
|
222
|
+
},
|
|
223
|
+
12 * 1000,
|
|
224
|
+
);
|
|
114
225
|
});
|
package/src/mint/mint-client.ts
CHANGED
|
@@ -10,15 +10,21 @@ import {
|
|
|
10
10
|
Account,
|
|
11
11
|
SimulateContractParameters,
|
|
12
12
|
} from "viem";
|
|
13
|
-
import { IHttpClient } from "../apis/http-api-base";
|
|
14
|
-
import { MintAPIClient, SalesConfigAndTokenInfo } from "./mint-api-client";
|
|
15
13
|
import {
|
|
14
|
+
erc20MinterABI,
|
|
15
|
+
erc20MinterAddress,
|
|
16
16
|
zoraCreator1155ImplABI,
|
|
17
17
|
zoraCreatorFixedPriceSaleStrategyAddress,
|
|
18
18
|
} from "@zoralabs/protocol-deployments";
|
|
19
|
-
import {
|
|
19
|
+
import { IHttpClient } from "src/apis/http-api-base";
|
|
20
20
|
import { zora721Abi } from "src/constants";
|
|
21
|
+
import { GenericTokenIdTypes } from "src/types";
|
|
21
22
|
import { makeSimulateContractParamaters } from "src/utils";
|
|
23
|
+
import {
|
|
24
|
+
MintAPIClient,
|
|
25
|
+
SalesConfigAndTokenInfo,
|
|
26
|
+
SaleType,
|
|
27
|
+
} from "./mint-api-client";
|
|
22
28
|
|
|
23
29
|
class MintError extends Error {}
|
|
24
30
|
class MintInactiveError extends Error {}
|
|
@@ -33,6 +39,7 @@ type MintArguments = {
|
|
|
33
39
|
mintComment?: string;
|
|
34
40
|
mintReferral?: Address;
|
|
35
41
|
mintToAddress: Address;
|
|
42
|
+
saleType?: SaleType;
|
|
36
43
|
};
|
|
37
44
|
|
|
38
45
|
class MintClient {
|
|
@@ -98,6 +105,7 @@ async function makePrepareMintTokenParams({
|
|
|
98
105
|
apiClient,
|
|
99
106
|
tokenId,
|
|
100
107
|
tokenAddress,
|
|
108
|
+
mintArguments,
|
|
101
109
|
...rest
|
|
102
110
|
}: {
|
|
103
111
|
publicClient: PublicClient;
|
|
@@ -112,12 +120,14 @@ async function makePrepareMintTokenParams({
|
|
|
112
120
|
const salesConfigAndTokenInfo = await apiClient.getSalesConfigAndTokenInfo({
|
|
113
121
|
tokenId,
|
|
114
122
|
tokenAddress,
|
|
123
|
+
saleType: mintArguments.saleType,
|
|
115
124
|
});
|
|
116
125
|
|
|
117
126
|
if (tokenId === undefined) {
|
|
118
127
|
return makePrepareMint721TokenParams({
|
|
119
128
|
salesConfigAndTokenInfo,
|
|
120
129
|
tokenAddress,
|
|
130
|
+
mintArguments,
|
|
121
131
|
...rest,
|
|
122
132
|
});
|
|
123
133
|
}
|
|
@@ -126,6 +136,7 @@ async function makePrepareMintTokenParams({
|
|
|
126
136
|
salesConfigAndTokenInfo,
|
|
127
137
|
tokenAddress,
|
|
128
138
|
tokenId,
|
|
139
|
+
mintArguments,
|
|
129
140
|
...rest,
|
|
130
141
|
});
|
|
131
142
|
}
|
|
@@ -177,7 +188,7 @@ export function getMintCosts({
|
|
|
177
188
|
const mintFeeForTokens =
|
|
178
189
|
salesConfigAndTokenInfo.mintFeePerQuantity * quantityToMint;
|
|
179
190
|
const tokenPurchaseCost =
|
|
180
|
-
BigInt(salesConfigAndTokenInfo.
|
|
191
|
+
BigInt(salesConfigAndTokenInfo.salesConfig.pricePerToken) * quantityToMint;
|
|
181
192
|
|
|
182
193
|
return {
|
|
183
194
|
mintFee: mintFeeForTokens,
|
|
@@ -206,23 +217,53 @@ async function makePrepareMint1155TokenParams({
|
|
|
206
217
|
quantityToMint: mintQuantity,
|
|
207
218
|
}).totalCost;
|
|
208
219
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
220
|
+
switch (salesConfigAndTokenInfo.salesConfig.saleType) {
|
|
221
|
+
case "fixedPrice":
|
|
222
|
+
const fixedPriceArgs = mintArguments;
|
|
223
|
+
|
|
224
|
+
return makeSimulateContractParamaters({
|
|
225
|
+
abi: zoraCreator1155ImplABI,
|
|
226
|
+
functionName: "mintWithRewards",
|
|
227
|
+
account: minterAccount,
|
|
228
|
+
value: mintValue,
|
|
229
|
+
address: tokenAddress,
|
|
230
|
+
/* args: minter, tokenId, quantity, minterArguments, mintReferral */
|
|
231
|
+
args: [
|
|
232
|
+
(salesConfigAndTokenInfo.salesConfig.address ||
|
|
233
|
+
zoraCreatorFixedPriceSaleStrategyAddress[999999999]) as Address,
|
|
234
|
+
BigInt(tokenId),
|
|
235
|
+
mintQuantity,
|
|
236
|
+
encodeAbiParameters(parseAbiParameters("address, string"), [
|
|
237
|
+
fixedPriceArgs.mintToAddress,
|
|
238
|
+
fixedPriceArgs.mintComment || "",
|
|
239
|
+
]),
|
|
240
|
+
fixedPriceArgs.mintReferral || zeroAddress,
|
|
241
|
+
],
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
case "erc20":
|
|
245
|
+
const erc20Args = mintArguments;
|
|
246
|
+
|
|
247
|
+
return makeSimulateContractParamaters({
|
|
248
|
+
abi: erc20MinterABI,
|
|
249
|
+
functionName: "mint",
|
|
250
|
+
account: minterAccount,
|
|
251
|
+
address: (salesConfigAndTokenInfo?.salesConfig.address ||
|
|
252
|
+
erc20MinterAddress[999999999]) as Address,
|
|
253
|
+
/* args: mintTo, quantity, tokenAddress, tokenId, totalValue, currency, mintReferral, comment */
|
|
254
|
+
args: [
|
|
255
|
+
mintArguments.mintToAddress,
|
|
256
|
+
mintQuantity,
|
|
257
|
+
tokenAddress,
|
|
258
|
+
BigInt(tokenId),
|
|
259
|
+
salesConfigAndTokenInfo.salesConfig.pricePerToken,
|
|
260
|
+
salesConfigAndTokenInfo.salesConfig.currency,
|
|
261
|
+
erc20Args.mintReferral || zeroAddress,
|
|
262
|
+
erc20Args.mintComment || "",
|
|
263
|
+
],
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
default:
|
|
267
|
+
throw new MintError("Unsupported sale type");
|
|
268
|
+
}
|
|
228
269
|
}
|
|
@@ -11,6 +11,8 @@ import {
|
|
|
11
11
|
zoraMints1155Address,
|
|
12
12
|
zoraMintsManagerImplABI,
|
|
13
13
|
zoraMintsManagerImplAddress,
|
|
14
|
+
PremintMintArguments,
|
|
15
|
+
premintTypedDataDefinition,
|
|
14
16
|
} from "@zoralabs/protocol-deployments";
|
|
15
17
|
import {
|
|
16
18
|
Address,
|
|
@@ -30,11 +32,7 @@ import {
|
|
|
30
32
|
makePermitToCollectPremintOrNonPremint,
|
|
31
33
|
} from "./mints-contracts";
|
|
32
34
|
import { getPremintCollectionAddress } from "src/premint/preminter";
|
|
33
|
-
import {
|
|
34
|
-
MintArguments as PremintMintArguments,
|
|
35
|
-
PremintConfigVersion,
|
|
36
|
-
} from "src/premint/contract-types";
|
|
37
|
-
import { premintTypedDataDefinition } from "src/premint/preminter";
|
|
35
|
+
import { PremintConfigVersion } from "src/premint/contract-types";
|
|
38
36
|
import { zora } from "viem/chains";
|
|
39
37
|
import {
|
|
40
38
|
fixedPriceMinterMinterArguments,
|