Skip to content

Commit 16d8dc6

Browse files
committed
refactor: extracted deployment-specific wagmi configs
1 parent 9030b51 commit 16d8dc6

File tree

7 files changed

+99
-105
lines changed

7 files changed

+99
-105
lines changed

contracts/package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@
2525
"deploy-local": "hardhat deploy --tags Arbitration,HomeArbitrable --network localhost",
2626
"simulate": "hardhat simulate:all",
2727
"simulate-local": "hardhat simulate:all --network localhost",
28-
"viem:generate": "NODE_NO_WARNINGS=1 wagmi generate",
28+
"viem:generate-devnet": "NODE_NO_WARNINGS=1 wagmi generate -c wagmi.config.devnet.ts",
29+
"viem:generate-testnet": "NODE_NO_WARNINGS=1 wagmi generate -c wagmi.config.testnet.ts",
30+
"viem:generate-mainnet": "NODE_NO_WARNINGS=1 wagmi generate -c wagmi.config.mainnet.ts",
31+
"viem:generate-hardhat": "NODE_NO_WARNINGS=1 wagmi generate -c wagmi.config.hardhat.ts",
2932
"viem:test": "NODE_NO_WARNINGS=1 NODE_OPTIONS=--experimental-fetch ts-node ./scripts/viem-test.ts",
3033
"bot:keeper": "NODE_NO_WARNINGS=1 NODE_OPTIONS=--experimental-fetch hardhat run ./scripts/keeperBot.ts",
3134
"bot:relayer-from-chiado": "NODE_NO_WARNINGS=1 NODE_OPTIONS=--experimental-fetch hardhat run ./scripts/disputeRelayerBotFromChiado.ts",

contracts/tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
"./scripts",
66
"./test",
77
"./typechain-types",
8-
"./deploy"
8+
"./deploy",
9+
"./viem"
910
],
1011
"files": [
1112
"./hardhat.config.ts"

contracts/wagmi.config.devnet.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { Config, defineConfig } from "@wagmi/cli";
2+
import IHomeGateway from "@kleros/kleros-v2-contracts/artifacts/src/gateway/interfaces/IHomeGateway.sol/IHomeGateway.json" assert { type: "json" };
3+
import { getAbi, readArtifacts, merge } from "./scripts/wagmiHelpers";
4+
5+
const getConfig = async (): Promise<Config> => {
6+
const arbitrumSepoliaContracts = await readArtifacts("arbitrumSepolia", "arbitrumSepoliaDevnet");
7+
arbitrumSepoliaContracts.forEach((c) => console.log("✔ Found arbitrumSepolia artifact: %s", c.name));
8+
let contracts = arbitrumSepoliaContracts;
9+
10+
const chiadoContracts = await readArtifacts("gnosisChiado", "chiadoDevnet"); // renaming the Hardhat network improves this but breaks many other scripts
11+
chiadoContracts.forEach((c) => console.log("✔ Found chiado artifact: %s", c.name));
12+
contracts = merge(contracts, chiadoContracts);
13+
14+
const sepoliaContracts = await readArtifacts("sepolia", "sepoliaDevnet");
15+
sepoliaContracts.forEach((c) => console.log("✔ Found sepolia artifact: %s", c.name));
16+
contracts = merge(contracts, sepoliaContracts);
17+
18+
return {
19+
out: "viem/generated.devnet.ts",
20+
contracts: [
21+
...contracts,
22+
{
23+
name: "IHomeGateway",
24+
abi: getAbi(IHomeGateway),
25+
},
26+
],
27+
};
28+
};
29+
30+
export default defineConfig(getConfig);

contracts/wagmi.config.hardhat.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import { defineConfig } from "@wagmi/cli";
22
import { hardhat } from "@wagmi/cli/plugins";
33

4+
// Useful for contracts which are not deployed yet
45
export default defineConfig({
56
out: "viem/generated.hardhat.ts",
6-
contracts: [],
77
plugins: [
88
hardhat({
99
project: ".",
10+
namePrefix: "Hardhat",
11+
exclude: ["Initializable.json", "UpgradedByRewrite.json"], // These artifacts crash the wagmi cli name generator
1012
}),
1113
],
1214
});

contracts/wagmi.config.mainnet.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { Config, defineConfig } from "@wagmi/cli";
2+
import IHomeGateway from "@kleros/kleros-v2-contracts/artifacts/src/gateway/interfaces/IHomeGateway.sol/IHomeGateway.json" assert { type: "json" };
3+
import { getAbi, readArtifacts, merge } from "./scripts/wagmiHelpers";
4+
5+
const getConfig = async (): Promise<Config> => {
6+
const arbitrumContracts = await readArtifacts("arbitrum");
7+
arbitrumContracts.forEach((c) => console.log("✔ Found arbitrum artifact: %s", c.name));
8+
let contracts = arbitrumContracts;
9+
10+
const gnosisContracts = await readArtifacts("gnosis", "gnosischain");
11+
gnosisContracts.forEach((c) => console.log("✔ Found gnosis artifact: %s", c.name));
12+
contracts = merge(contracts, gnosisContracts);
13+
14+
const mainnetContracts = await readArtifacts("mainnet");
15+
mainnetContracts.forEach((c) => console.log("✔ Found mainnet artifact: %s", c.name));
16+
contracts = merge(contracts, mainnetContracts);
17+
18+
return {
19+
out: "viem/generated.mainnet.ts",
20+
contracts: [
21+
...contracts,
22+
{
23+
name: "IHomeGateway",
24+
abi: getAbi(IHomeGateway),
25+
},
26+
],
27+
};
28+
};
29+
30+
export default defineConfig(getConfig);

contracts/wagmi.config.testnet.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { Config, defineConfig } from "@wagmi/cli";
2+
import IHomeGateway from "@kleros/kleros-v2-contracts/artifacts/src/gateway/interfaces/IHomeGateway.sol/IHomeGateway.json" assert { type: "json" };
3+
import { getAbi, readArtifacts, merge } from "./scripts/wagmiHelpers";
4+
5+
const getConfig = async (): Promise<Config> => {
6+
const arbitrumSepoliaContracts = await readArtifacts("arbitrumSepolia");
7+
arbitrumSepoliaContracts.forEach((c) => console.log("✔ Found arbitrumSepolia artifact: %s", c.name));
8+
let contracts = arbitrumSepoliaContracts;
9+
10+
const chiadoContracts = await readArtifacts("gnosisChiado", "chiado"); // renaming the Hardhat network improves this but breaks many other scripts
11+
chiadoContracts.forEach((c) => console.log("✔ Found chiado artifact: %s", c.name));
12+
contracts = merge(contracts, chiadoContracts);
13+
14+
const sepoliaContracts = await readArtifacts("sepolia");
15+
sepoliaContracts.forEach((c) => console.log("✔ Found sepolia artifact: %s", c.name));
16+
contracts = merge(contracts, sepoliaContracts);
17+
18+
return {
19+
out: "viem/generated.testnet.ts",
20+
contracts: [
21+
...contracts,
22+
{
23+
name: "IHomeGateway",
24+
abi: getAbi(IHomeGateway),
25+
},
26+
],
27+
};
28+
};
29+
30+
export default defineConfig(getConfig);

contracts/wagmi.config.ts

Lines changed: 0 additions & 102 deletions
This file was deleted.

0 commit comments

Comments
 (0)