Skip to content

Commit 79bac63

Browse files
Build mock app config for mainnet (#1214)
Co-authored-by: Danny Delott <[email protected]>
1 parent 4268472 commit 79bac63

File tree

5 files changed

+63
-3
lines changed

5 files changed

+63
-3
lines changed

apps/hyperdrive-trading/.env.sample

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,11 @@ VITE_CUSTOM_CHAIN_CHAIN_ID=
1414
VITE_CAPSULE_API_KEY=
1515
VITE_CAPSULE_ENV=
1616
#
17-
# Sepolia
17+
# Sepolia, or
1818
VITE_SEPOLIA_RPC_URL=
19+
#
20+
# Mainnet
21+
VITE_MAINNET_RPC_URL=
1922
##################################################
2023

2124
# Used to screen ineligible addresses.

apps/hyperdrive-trading/src/ui/appconfig/useAppConfig.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {
22
AppConfig,
33
cloudChainAppConfig,
4+
mainnetAppConfig,
45
sepoliaAppConfig,
56
} from "@hyperdrive/appconfig";
67
import assertNever from "assert-never";
@@ -19,8 +20,7 @@ export function useAppConfig(): AppConfig {
1920
return cloudChainAppConfig;
2021

2122
case mainnet.id:
22-
// Return mainnet config when available
23-
return {} as AppConfig;
23+
return mainnetAppConfig;
2424

2525
case sepolia.id:
2626
return sepoliaAppConfig;
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { AppConfig } from "src/appconfig/AppConfig";
2+
export const mainnetAppConfig: AppConfig = {
3+
chainId: 1,
4+
tags: [
5+
{
6+
id: "yieldSource",
7+
description: "A hyperdrive market's yield source",
8+
},
9+
],
10+
tokens: [],
11+
hyperdrives: [],
12+
protocols: {
13+
maker: {
14+
id: "maker",
15+
name: "Maker",
16+
iconUrl: "https://cryptologos.cc/logos/maker-mkr-logo.png?v=024",
17+
},
18+
lido: {
19+
id: "lido",
20+
name: "Lido",
21+
iconUrl: "https://cryptologos.cc/logos/lido-dao-ldo-logo.png?v=029",
22+
},
23+
},
24+
};

packages/hyperdrive-appconfig/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
// appconfigs
22
export type { AppConfig, KnownTokenExtensions } from "src/appconfig/AppConfig";
3+
export { mainnetAppConfig } from "src/generated/1.appconfig";
34
export { sepoliaAppConfig } from "src/generated/11155111.appconfig";
45
export { cloudChainAppConfig } from "src/generated/42069.appconfig";
6+
57
// appconfig helpers
68
export { findBaseToken } from "src/appconfig/helpers/findBaseToken";
79
export { findHyperdriveConfig } from "src/appconfig/helpers/findHyperdriveConfig";
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import "dotenv/config";
2+
3+
import { getAppConfigFromRegistryAddresses } from "src/appconfig/getAppConfigFromRegistryAddresses";
4+
import { writeAppConfigToFile } from "src/appconfig/writeAppConfigToFile";
5+
import { fetchRegistryAddresses } from "src/registry/fetchRegistryAddresses";
6+
import { createPublicClient, http } from "viem";
7+
import { mainnet } from "viem/chains";
8+
9+
const mainnetNodeRpcUrl = process.env.MAINNET_NODE_RPC_URL as string;
10+
11+
const publicClient = createPublicClient({
12+
chain: mainnet,
13+
transport: http(mainnetNodeRpcUrl),
14+
});
15+
16+
fetchRegistryAddresses({
17+
registryAddress: "0x------mainnet registry address------",
18+
publicClient,
19+
}).then(async (addresses) => {
20+
const appConfig = await getAppConfigFromRegistryAddresses({
21+
addresses,
22+
chainId: mainnet.id,
23+
publicClient,
24+
});
25+
26+
writeAppConfigToFile({
27+
filename: `./src/generated/${mainnet.id}.appconfig.ts`,
28+
appConfig,
29+
appConfigName: "mainnetAppConfig",
30+
});
31+
});

0 commit comments

Comments
 (0)