Files
sre-06-oracles/packages/nextjs/utils/configUpdater.ts
2026-01-23 20:20:58 +07:00

41 lines
1.3 KiB
TypeScript

import fs from "fs";
import path from "path";
const CONFIG_PATH = path.join(process.cwd(), "..", "hardhat", "scripts", "oracle-bot", "config.json");
export type ConfigKey = "PROBABILITY_OF_SKIPPING_REPORT" | "PRICE_VARIANCE";
export async function updateConfigValue(key: ConfigKey, value: number, nodeAddress?: string): Promise<void> {
try {
// Read the current config
const configContent = await fs.promises.readFile(CONFIG_PATH, "utf-8");
const config = JSON.parse(configContent);
// Validate the value
if (typeof value !== "number" || value < 0) {
throw new Error("Value must be a non-negative number");
}
if (key === "PROBABILITY_OF_SKIPPING_REPORT" && value > 1) {
throw new Error("Skip probability must be between 0 and 1");
}
if (nodeAddress) {
// Update node-specific config
if (!config.NODE_CONFIGS[nodeAddress]) {
config.NODE_CONFIGS[nodeAddress] = { ...config.NODE_CONFIGS.default };
}
config.NODE_CONFIGS[nodeAddress][key] = value;
} else {
// Update default config
config.NODE_CONFIGS.default[key] = value;
}
// Write back to file with proper formatting
await fs.promises.writeFile(CONFIG_PATH, JSON.stringify(config, null, 2));
} catch (error) {
console.error("Error updating config:", error);
throw error;
}
}