import { ChiaPartnerClient, type PartnerEnvironment, } from "@chiahealth/partner"; import { join } from "node:path"; import { FileSettlementSummaryStore } from "./file-stores.js"; import { syncSettlementSummaries } from "./settlement-traversal.js"; assertAbsent([ "CHIA_RUNTIME_KEY", "CHIA_WEBHOOK_SECRET_CURRENT", "CHIA_WEBHOOK_SECRET_RETIRING", ]); const environment = process.env.CHIA_ENVIRONMENT as PartnerEnvironment; if (environment !== "sandbox" && environment !== "production") throw new Error("CHIA_ENVIRONMENT is required"); if (!process.env.CHIA_FINANCE_KEY) throw new Error("CHIA_FINANCE_KEY is required"); if (!process.env.CHIA_API_ORIGIN) throw new Error("CHIA_API_ORIGIN is required"); const finance = new ChiaPartnerClient({ environment, apiOrigin: process.env.CHIA_API_ORIGIN, financeKey: process.env.CHIA_FINANCE_KEY, }); const financeStateDir = process.env.PARTNER_FINANCE_STATE_DIR ?? "./.finance-state"; const financeStore = await FileSettlementSummaryStore.open( join(financeStateDir, "settlement-summaries.json"), ); await syncSettlementSummaries(finance, financeStore); function assertAbsent(names: readonly string[]): void { const present = names.filter((name) => Boolean(process.env[name])); if (present.length) { throw new Error(`finance role refuses non-finance credentials: ${present.join(", ")}`); } }