forked from ourzora/zora-protocol
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwagmi.config.ts
107 lines (96 loc) · 2.61 KB
/
wagmi.config.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import { defineConfig } from "@wagmi/cli";
import { Abi } from "viem";
import { readdirSync, readFileSync } from "fs";
import * as abis from "@zoralabs/zora-1155-contracts";
type Address = `0x${string}`;
type Addresses = {
[contractName: string]: {
address: {
[chainId: number]: Address;
};
abi: Abi;
};
};
const getAddresses = () => {
const addresses: Addresses = {};
const addressesFiles = readdirSync("./addresses");
const addAddress = ({
contractName,
chainId,
address,
abi,
}: {
contractName: string;
chainId: number;
address?: Address;
abi: Abi;
}) => {
if (!address) return;
if (!addresses[contractName]) {
addresses[contractName] = {
address: {},
abi,
};
}
addresses[contractName]!.address[chainId] = address;
};
for (const addressesFile of addressesFiles) {
const jsonAddress = JSON.parse(
readFileSync(`./addresses/${addressesFile}`, "utf-8")
) as {
FIXED_PRICE_SALE_STRATEGY: Address;
MERKLE_MINT_SALE_STRATEGY: Address;
REDEEM_MINTER_FACTORY: Address;
"1155_IMPL": Address;
FACTORY_IMPL: Address;
FACTORY_PROXY: Address;
PREMINTER_PROXY?: Address;
};
const chainId = parseInt(addressesFile.split(".")[0]);
addAddress({
contractName: "ZoraCreatorFixedPriceSaleStrategy",
chainId,
address: jsonAddress.FIXED_PRICE_SALE_STRATEGY,
abi: abis.zoraCreatorFixedPriceSaleStrategyABI,
});
addAddress({
contractName: "ZoraCreatorMerkleMinterStrategy",
chainId,
address: jsonAddress.MERKLE_MINT_SALE_STRATEGY,
abi: abis.zoraCreatorMerkleMinterStrategyABI,
});
addAddress({
contractName: "ZoraCreator1155FactoryImpl",
chainId,
address: jsonAddress.FACTORY_PROXY,
abi: abis.zoraCreator1155FactoryImplABI,
});
addAddress({
contractName: "ZoraCreatorRedeemMinterFactory",
chainId,
address: jsonAddress.REDEEM_MINTER_FACTORY,
abi: abis.zoraCreatorRedeemMinterFactoryABI,
});
addAddress({
contractName: "ZoraCreator1155PremintExecutorImpl",
chainId,
address: jsonAddress.PREMINTER_PROXY,
abi: abis.zoraCreator1155PremintExecutorImplABI,
});
}
return addresses;
};
export default defineConfig({
out: "package/wagmiGenerated.ts",
contracts: [
...Object.entries(getAddresses()).map(([contractName, addressConfig]) => ({
abi: addressConfig.abi,
address: addressConfig.address,
name: contractName,
})),
{
abi: abis.zoraCreator1155ImplABI,
name: "ZoraCreator1155Impl",
},
],
});