@@ -3,32 +3,33 @@ pragma solidity ^0.8.13;
3
3
4
4
import "forge-std/Script.sol " ;
5
5
import {IMinter1155} from "@zoralabs/zora-1155-contracts/src/interfaces/IMinter1155.sol " ;
6
+ import {IZoraCreator1155PremintExecutor} from "@zoralabs/zora-1155-contracts/src/interfaces/IZoraCreator1155PremintExecutor.sol " ;
6
7
import {ZoraCreator1155PremintExecutorImpl} from "@zoralabs/zora-1155-contracts/src/delegation/ZoraCreator1155PremintExecutorImpl.sol " ;
7
8
import {ZoraCreator1155FactoryImpl} from "@zoralabs/zora-1155-contracts/src/factory/ZoraCreator1155FactoryImpl.sol " ;
8
- import {ZoraCreator1155Attribution, ContractCreationConfig, PremintConfig, TokenCreationConfig } from "@zoralabs/zora-1155-contracts/src/delegation/ZoraCreator1155Attribution.sol " ;
9
+ import {ZoraCreator1155Attribution, ContractCreationConfig, PremintConfigV2, TokenCreationConfigV2 } from "@zoralabs/zora-1155-contracts/src/delegation/ZoraCreator1155Attribution.sol " ;
9
10
import {ZoraCreator1155Impl} from "@zoralabs/zora-1155-contracts/src/nft/ZoraCreator1155Impl.sol " ;
10
11
11
12
contract DeploymentTestingUtils is Script {
12
- function signAndExecutePremint (address premintExecutorProxyAddress ) internal {
13
+ function signAndExecutePremint (address premintExecutorProxyAddress , address payoutRecipient ) internal {
13
14
console2.log ("preminter proxy " , premintExecutorProxyAddress);
14
15
15
16
(address creator , uint256 creatorPrivateKey ) = makeAddrAndKey ("creator " );
16
- ZoraCreator1155PremintExecutorImpl preminterAtProxy = ZoraCreator1155PremintExecutorImpl (premintExecutorProxyAddress);
17
+ IZoraCreator1155PremintExecutor preminterAtProxy = IZoraCreator1155PremintExecutor (premintExecutorProxyAddress);
17
18
18
19
IMinter1155 fixedPriceMinter = ZoraCreator1155FactoryImpl (address (preminterAtProxy.zora1155Factory ())).fixedPriceMinter ();
19
20
20
- PremintConfig memory premintConfig = PremintConfig ({
21
- tokenConfig: TokenCreationConfig ({
21
+ PremintConfigV2 memory premintConfig = PremintConfigV2 ({
22
+ tokenConfig: TokenCreationConfigV2 ({
22
23
tokenURI: "blah.token " ,
23
24
maxSupply: 10 ,
24
25
maxTokensPerAddress: 5 ,
25
26
pricePerToken: 0 ,
26
27
mintStart: 0 ,
27
28
mintDuration: 0 ,
28
- royaltyMintSchedule: 0 ,
29
29
royaltyBPS: 100 ,
30
- royaltyRecipient: creator,
31
- fixedPriceMinter: address (fixedPriceMinter)
30
+ payoutRecipient: payoutRecipient,
31
+ fixedPriceMinter: address (fixedPriceMinter),
32
+ createReferral: address (0 )
32
33
}),
33
34
uid: 100 ,
34
35
version: 0 ,
@@ -39,18 +40,31 @@ contract DeploymentTestingUtils is Script {
39
40
ContractCreationConfig memory contractConfig = ContractCreationConfig ({contractAdmin: creator, contractName: "blah " , contractURI: "blah.contract " });
40
41
address deterministicAddress = preminterAtProxy.getContractAddress (contractConfig);
41
42
42
- // sign the premint
43
- bytes32 digest = ZoraCreator1155Attribution.premintHashedTypeDataV4 (premintConfig, deterministicAddress, block .chainid );
43
+ uint256 quantityToMint = 1 ;
44
44
45
- ( uint8 v , bytes32 r , bytes32 s ) = vm. sign (creatorPrivateKey, digest) ;
45
+ address mintRecipient = creator ;
46
46
47
- uint256 quantityToMint = 1 ;
47
+ IZoraCreator1155PremintExecutor.MintArguments memory mintArguments = IZoraCreator1155PremintExecutor.MintArguments ({
48
+ mintRecipient: mintRecipient,
49
+ mintComment: "" ,
50
+ mintReferral: address (0 )
51
+ });
48
52
49
- bytes memory signature = abi.encodePacked (r, s, v );
53
+ bytes memory signature = signPremint (premintConfig, deterministicAddress, creatorPrivateKey );
50
54
51
55
// execute the premint
52
- uint256 tokenId = preminterAtProxy.premint {value: 0.000777 ether }(contractConfig, premintConfig, signature, quantityToMint, "" ) ;
56
+ uint256 tokenId = preminterAtProxy.premintV2 {value: 0.000777 ether }(contractConfig, premintConfig, signature, quantityToMint, mintArguments).tokenId ;
53
57
54
58
require (ZoraCreator1155Impl (deterministicAddress).delegatedTokenId (premintConfig.uid) == tokenId, "token id not created for uid " );
55
59
}
60
+
61
+ function signPremint (PremintConfigV2 memory premintConfig , address deterministicAddress , uint256 privateKey ) private view returns (bytes memory signature ) {
62
+ bytes32 signatureVersion = ZoraCreator1155Attribution.HASHED_VERSION_2;
63
+ bytes32 structHash = ZoraCreator1155Attribution.hashPremint (premintConfig);
64
+ // sign the premint
65
+ bytes32 digest = ZoraCreator1155Attribution.premintHashedTypeDataV4 (structHash, deterministicAddress, signatureVersion, block .chainid );
66
+
67
+ (uint8 v , bytes32 r , bytes32 s ) = vm.sign (privateKey, digest);
68
+ return abi.encodePacked (r, s, v);
69
+ }
56
70
}
0 commit comments