| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- /**
- * mavi network preference (this browser).
- * Used for balance, send, and test fund.
- */
- export type MaviNetworkId = "private-anvil" | "public-anvil";
- export type MaviNetwork = {
- id: MaviNetworkId;
- label: string;
- /** Short label for badges */
- shortLabel: string;
- rpcUrl: string;
- chainId: number;
- /** Dev fund from anvil #0 only makes sense on local anvils */
- canFund: boolean;
- hint: string;
- };
- export const MAVI_NETWORKS: Record<MaviNetworkId, MaviNetwork> = {
- "private-anvil": {
- id: "private-anvil",
- label: "Private local (anvil)",
- shortLabel: "Private :8545",
- rpcUrl: "http://127.0.0.1:8545",
- chainId: 31337,
- canFund: true,
- hint: "Permissioned stand-in — docker compose private-anvil",
- },
- "public-anvil": {
- id: "public-anvil",
- label: "Public local (anvil)",
- shortLabel: "Public :8546",
- rpcUrl: "http://127.0.0.1:8546",
- chainId: 31338,
- canFund: true,
- hint: "Anchor stand-in — docker compose public-anvil",
- },
- };
- const KEY = "mavi_network_v1";
- export function listMaviNetworks(): MaviNetwork[] {
- return Object.values(MAVI_NETWORKS);
- }
- export function readNetworkId(): MaviNetworkId {
- if (typeof window === "undefined") return "private-anvil";
- try {
- const v = window.localStorage.getItem(KEY);
- if (v === "private-anvil" || v === "public-anvil") return v;
- } catch {
- /* ignore */
- }
- return "private-anvil";
- }
- export function getActiveNetwork(): MaviNetwork {
- return MAVI_NETWORKS[readNetworkId()];
- }
- export function setNetworkId(id: MaviNetworkId): void {
- if (typeof window === "undefined") return;
- try {
- window.localStorage.setItem(KEY, id);
- window.dispatchEvent(new Event("mavi-network"));
- } catch {
- /* ignore */
- }
- }
|