import type { ViolationSeverity } from '../../../domain/violation'; import type { EnforcerRuntime } from './enforcer.types'; export type EnforceMode = 'warn' | 'block'; export interface EnforceBlock { readonly engine: 'native' | 'opa' | 'enforcer'; readonly tool: string; readonly toolRuleId?: string; readonly runtime?: EnforcerRuntime; readonly config?: Readonly>; readonly configRef?: string; readonly severityMap?: Readonly>; readonly mode?: EnforceMode; } export interface CompilableRule { readonly id: string; readonly enforce?: EnforceBlock; readonly category?: string; readonly title?: string; readonly blocking?: boolean; readonly layer?: string; } export interface CompiledCheck { readonly kind: 'compiled'; readonly ruleId: string; readonly tool: string; readonly runtime: EnforcerRuntime; readonly toolRuleId: string; readonly mode: EnforceMode; readonly check: Readonly>; } export type FallbackKind = 'native' | 'skip'; export interface FallbackNotice { readonly kind: 'fallback'; readonly ruleId: string; readonly tool: string; readonly fallback: FallbackKind; readonly reason: string; } export type CompileOutcome = CompiledCheck | FallbackNotice; export interface CompiledRuleset { readonly compiled: readonly CompiledCheck[]; readonly fallbacks: readonly FallbackNotice[]; } export declare const BOUNDARY_RULE_CATEGORIES: ReadonlySet; export declare function compileRule(rule: CompilableRule): CompileOutcome; export declare function compileRuleset(rules: readonly CompilableRule[]): CompiledRuleset; export declare function toDependencyCruiserConfig(compiled: readonly CompiledCheck[]): { readonly forbidden: ReadonlyArray>>; };