-
Notifications
You must be signed in to change notification settings - Fork 4
/
merkle-envio.ts
73 lines (64 loc) · 1.7 KB
/
merkle-envio.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
import * as arbitrum from "../addresses/arbitrum";
import * as avalanche from "../addresses/avalanche";
import * as base from "../addresses/base";
import * as blast from "../addresses/blast";
import * as bsc from "../addresses/bsc";
import * as gnosis from "../addresses/gnosis";
import * as linea from "../addresses/linea";
import * as mainnet from "../addresses/mainnet";
import * as optimism from "../addresses/optimism";
import * as polygon from "../addresses/polygon";
import * as scroll from "../addresses/scroll";
import * as sepolia from "../addresses/sepolia";
import * as zksync from "../addresses/zksync";
const available = (v: { factory: unknown[] }) => {
return v.factory.length > 0;
};
const filter = (list: string[][], version: string) => {
return (
list
.filter((entry) => entry[2] === version)
.map((entry) => ({
address: entry[0]?.toLowerCase() || "",
alias: entry[1],
version: entry[2],
})) || []
);
};
export const chains = () => {
const list = [
arbitrum,
avalanche,
base,
blast,
bsc,
gnosis,
linea,
mainnet,
optimism,
polygon,
scroll,
sepolia,
zksync,
] as const;
/** Merging the linear and dynamic arrays with a spread operator will break mustache's template engine */
return list.map((item) => {
const V21 = {
factory: filter(item.factory, "V21"),
available: false,
};
V21.available = available(V21);
const V22 = {
factory: filter(item.factory, "V22"),
available: false,
};
V22.available = available(V22);
return {
id: item.chainId,
name: item.chain,
start_block: item.startBlock_merkle,
V21,
V22,
};
});
};