75 lines
2.1 KiB
TypeScript
75 lines
2.1 KiB
TypeScript
import { createConfig } from "ponder";
|
|
import KraikenAbi from "./abis/Kraiken.json";
|
|
import StakeAbi from "./abis/Stake.json";
|
|
|
|
// Network configurations
|
|
const networks = {
|
|
// Local development (Anvil fork)
|
|
local: {
|
|
chainId: 31337,
|
|
rpc: "http://127.0.0.1:8545",
|
|
contracts: {
|
|
kraiken: "0x56186c1E64cA8043dEF78d06AfF222212eA5df71", // DeployLocal 2025-09-23
|
|
stake: "0x056E4a859558A3975761ABd7385506BC4D8A8E60", // DeployLocal 2025-09-23
|
|
startBlock: 31425917, // DeployLocal broadcast block
|
|
},
|
|
},
|
|
// Base Sepolia testnet
|
|
baseSepolia: {
|
|
chainId: 84532,
|
|
rpc: process.env.PONDER_RPC_URL_BASE_SEPOLIA || "https://sepolia.base.org",
|
|
contracts: {
|
|
kraiken: "0x22c264Ecf8D4E49D1E3CabD8DD39b7C4Ab51C1B8",
|
|
stake: "0xe28020BCdEeAf2779dd47c670A8eFC2973316EE2",
|
|
startBlock: 20940337,
|
|
},
|
|
},
|
|
// Base mainnet
|
|
base: {
|
|
chainId: 8453,
|
|
rpc: process.env.PONDER_RPC_URL_BASE || "https://base.llamarpc.com",
|
|
contracts: {
|
|
kraiken: "0x45caa5929f6ee038039984205bdecf968b954820",
|
|
stake: "0xed70707fab05d973ad41eae8d17e2bcd36192cfc",
|
|
startBlock: 26038614,
|
|
},
|
|
},
|
|
};
|
|
|
|
// Select network based on environment variable
|
|
const NETWORK = process.env.PONDER_NETWORK || "local";
|
|
const selectedNetwork = networks[NETWORK as keyof typeof networks];
|
|
|
|
if (!selectedNetwork) {
|
|
throw new Error(`Invalid network: ${NETWORK}. Valid options: ${Object.keys(networks).join(", ")}`);
|
|
}
|
|
|
|
export default createConfig({
|
|
chains: {
|
|
[NETWORK]: {
|
|
id: selectedNetwork.chainId,
|
|
rpc: selectedNetwork.rpc,
|
|
},
|
|
},
|
|
contracts: {
|
|
Kraiken: {
|
|
abi: KraikenAbi.abi,
|
|
chain: NETWORK,
|
|
address: selectedNetwork.contracts.kraiken as `0x${string}`,
|
|
startBlock: selectedNetwork.contracts.startBlock,
|
|
},
|
|
Stake: {
|
|
abi: StakeAbi.abi,
|
|
chain: NETWORK,
|
|
address: selectedNetwork.contracts.stake as `0x${string}`,
|
|
startBlock: selectedNetwork.contracts.startBlock,
|
|
},
|
|
},
|
|
blocks: {
|
|
StatsBlock: {
|
|
chain: NETWORK,
|
|
interval: 1,
|
|
startBlock: selectedNetwork.contracts.startBlock,
|
|
},
|
|
},
|
|
});
|