import type { EffectiveRule } from '../model/methodology-resolver.js'; export interface RulePolicyRequest { targetRuleType: string; disposition: 'enabled' | 'disabled' | 'replaced'; severityOverride?: 'error' | 'warning' | 'info'; replacementRuleType?: string; rationaleText: string; authority?: string; approvalReference?: string; } export interface RulePolicyRefusal { code: 'unknown-rule' | 'invariant-not-tailorable' | 'missing-rationale' | 'missing-replacement' | 'replacement-not-resolvable'; message: string; } /** * Check a tailoring decision against the rule it targets. * * Returns the refusal rather than throwing, so the caller can send it back to * the editor as a diagnostic the user can act on. */ export declare function checkRulePolicy(request: RulePolicyRequest, effectiveRules: readonly EffectiveRule[]): RulePolicyRefusal | undefined; /** * Render the `RulePolicy` usage. * * The target is named by narrowing the reference's TYPE — `ref :>> targetRule : * X` — not by binding a value. Session 3 established that binding a value to a * `constraint def` is not portable: SysIDE rejects it, because a value must be * a feature and a definition is not. */ export declare function renderRulePolicy(request: RulePolicyRequest, indent?: string): string; /** * Insert the rendered policy into a methodology definition's body. * * Appends inside the `MethodologyDefinition` usage the file declares, before * its closing brace. Returns undefined when no such usage is found, so the * caller reports a diagnostic instead of writing a policy into open space where * it would parse but never apply. */ export declare function insertRulePolicy(source: string, policy: string): string | undefined; //# sourceMappingURL=rule-policy-writer.d.ts.map