import type { InterruptEffect } from "../symbolTable.js"; import type { ScopeInfo, TypeCheckerContext } from "./types.js"; /** * Enforce a `raises` clause on a function TYPE. When a function value flows into * a function type that declares a `raises` clause, the value may not raise more * than the clause allows. Assignability stays purely structural; this pass owns * the effect comparison so the message can name the offending effect. * * The pass reads top-down: `valueFlows` says WHERE a function value meets a * function type; `targetAllowed` + `exceedances` say what counts as too much; * `functionValueEffects` (its own file) says what a given value raises. */ type EffectMap = Record; export declare function checkFunctionTypeRaises(scopes: ScopeInfo[], interruptEffectsByFunction: EffectMap, ctx: TypeCheckerContext): void; /** Run both `raises`-enforcement passes: declared clauses on `def`/`node` * (`checkRaisesDeclarations`) and clauses on function types (this file). */ export declare function checkAllRaises(scopes: ScopeInfo[], interruptEffectsByFunction: EffectMap, ctx: TypeCheckerContext): void; export {};