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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
//! JSON-RPC client for `LocalharnessRegistry` — read AND write.
//!
//! Hand-rolled instead of pulling alloy: the apex chrome only needs a
//! handful of methods (`eth_call`, `eth_chainId`, `eth_gasPrice`,
//! `eth_getTransactionCount`, `eth_estimateGas`,
//! `eth_sendRawTransaction`, `eth_getTransactionReceipt`) and we
//! already have `reqwest` in the bundle. Avoiding alloy also sidesteps
//! the `serde::__private` compat snag we hit during the M6 spike.
//!
//! `REGISTRY_ADDRESS` is a baked-in non-zero constant; the historical
//! per-view "registry pending deploy" zero-address guards (which could
//! never fire) are gone — every read view goes straight to the chain
//! via the crate-internal `read_view` (`selector ++ words`) helper.
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
/// Active-chain RPC endpoint (default Moderato testnet; `mainnet` feature →
/// Tempo mainnet). Sourced from [`chain::ACTIVE`].
pub const RPC_URL: &str = ACTIVE.rpc_url;
/// `LocalharnessRegistry` Diamond address on the active chain (default the
/// Moderato deployment; `mainnet` feature → the mainnet diamond). Sourced from
/// [`chain::ACTIVE`].
///
/// The diamond proxy holds the storage; `register / ownerOfName / idOfName / …`
/// selectors dispatch to per-facet addresses. Owner (deployer/admin):
/// `0x313b1659F5037080aA0C113D386C5954F348EF1e`.
pub const REGISTRY_ADDRESS: &str = ACTIVE.diamond;
/// Active-chain id — used in EIP-155 v computation. Sourced from [`chain::ACTIVE`].
pub const CHAIN_ID: u64 = ACTIVE.chain_id;
// `BOOTSTRAP_FAUCET_ADDRESS` (the dormant BootstrapFaucet.sol breadcrumb —
// unusable on Tempo Moderato, which refuses EOA↔contract native value
// transfers) was removed as dead code; all distribution flows through
// [`LOCALHARNESS_TOKEN_ADDRESS`].
/// `LocalharnessCredits` — TIP-20-shaped credit token (currency =
/// "credits", explicitly NOT USD so it's NOT fee-token-eligible).
/// Replaces the standalone `LocalharnessToken.sol` at
/// `0xcC8A300658…` (orphaned — old balances do not migrate; testnet
/// reset).
///
/// Deployed 2026-05-26 alongside `CreditsFacet` on the diamond. The
/// diamond holds ISSUER_ROLE on this token, so the only path to
/// fresh supply is through the facet's `claimDaily()`. Owner can
/// tune the per-day allowance via `setDailyAllowance` on the diamond.
///
/// name: "localharness credits", symbol: "LH", decimals: 18. Address sourced
/// from [`chain::ACTIVE`] (default Moderato; `mainnet` feature → mainnet $LH).
pub const LOCALHARNESS_TOKEN_ADDRESS: &str = ACTIVE.lh_token;
// Shared test helpers re-exported for the facet submodules' own test mods. The
// `use` precedes the module so `test_support` stays the file's LAST item (Rust
// resolves the re-export regardless of order) — clippy's items-after-test-module
// lint fires on anything declared after a `#[cfg(test)] mod`.
pub use *;