import config from "config"; import { SnsConfig } from "./repositories/SnsEventRepository"; export type Environment = "testnet" | "mainnet"; export type LogLevel = "debug" | "info" | "warn" | "error"; export type Config = { environment: Environment; port: number; logLevel: LogLevel; dryRun: boolean; sns: SnsConfig; metadata?: { dir: string; }; jobs: { dir: string; }; chains: Record; enabledPlatforms: string[]; }; export type ChainRPCConfig = { name: string; network: string; chainId: number; rpcs: string[]; timeout?: number; retries?: number; rateLimit?: { period: number; limit: number; }; }; /* By setting NODE_CONFIG_ENV we can point to a different config directory. Default settings can be customized by definining NODE_ENV=staging|production. Some options may be overridable by env variables, see: config/custom-environment-variables.json For array values, you should use something like this: ETHEREUM_RPCS='["http://1.com","http://2.com"]' */ export const configuration = { environment: config.get("environment"), port: config.get("port") ?? 9090, logLevel: config.get("logLevel")?.toLowerCase() ?? "info", dryRun: config.get("dryRun") === "true" ? true : false, sns: config.get("sns"), metadata: { dir: config.get("metadata.dir"), }, jobs: { dir: config.get("jobs.dir"), }, chains: config.get>("chains"), enabledPlatforms: config.get("enabledPlatforms"), } as Config;