export type TypeCheckDiagnostic = { /** Stable AG#### diagnostic code — suppress one line with * `// @tc-ignore AG####`, or match on it programmatically instead of * parsing the message. */ code: string; severity: "error" | "warning"; message: string; loc?: { line: number; col: number; start: number; end: number; }; /** Structured payload of the diagnostic (the values that were rendered * into the message, e.g. `expected` / `actual` type strings). */ params: Record; }; export type TypeCheckReport = { errors: TypeCheckDiagnostic[]; warnings: TypeCheckDiagnostic[]; }; export declare function typeCheckSource(source: string, sourcePath?: string): TypeCheckReport; export type EffectsByExport = Record; /** * Map each EXPORTED node/function in `source` to the transitive list of * interrupt effects it can raise. Reads the propagated map typeCheck * returns (same data raises-checking enforces — see lib/cli/policy.ts * for the precedent). Bare `interrupt(...)` sites surface as the * "unknown" sentinel — the envelope is fail-closed by design. Type * errors in `source` do not prevent extraction; parse failures throw. */ export declare function getEffectsFromSource(source: string): EffectsByExport; /** * The same map, for a file that exists on disk. Prefer this whenever a real * path is available. * * The string form above cannot resolve relative imports, so their effects * never propagate and the list comes back short. That is documented * behavior for `getEffects`, but wrong for splice eligibility, where an * empty list reads as "safe to run at compile time". */ export declare function getEffectsFromFile(filePath: string): EffectsByExport;