import type { LoadedConfig, PolicyCheckId, PolicyPoint, ToolName } from "./config.js";
import type { CompiledContext } from "./context.js";
import type { DispatchCollection, DispatchManifest } from "./dispatch.js";
import type { GitState, PushAssessment } from "./git.js";
import type { ProjectOverlay, ProfileSelection } from "./profiles.js";
import type { ReconcileReport } from "./reconcile.js";
import type { SpecialistSelection } from "./specialists.js";
import type { PhaseRecord } from "./state.js";
export interface PolicyFinding {
    point: PolicyPoint;
    checkId: PolicyCheckId;
    severity: "warn" | "block";
    message: string;
}
export interface PolicyEvaluation {
    point: PolicyPoint;
    result: "allowed" | "review-required" | "blocked";
    findings: PolicyFinding[];
}
export interface PolicyContext {
    config: LoadedConfig;
    selection: ProfileSelection;
    overlay: ProjectOverlay | null;
    compiledContext?: CompiledContext;
    specialist?: SpecialistSelection;
    taskType?: string;
    fileArea?: string;
    role?: string;
    tool?: ToolName;
    latestPhase?: PhaseRecord | null;
    latestDispatch?: DispatchManifest | null;
    latestCollection?: DispatchCollection | null;
    latestReconcile?: ReconcileReport | null;
    gitState?: GitState;
    pushAssessment?: PushAssessment;
}
export declare function evaluatePolicyPoint(point: PolicyPoint, context: PolicyContext): PolicyEvaluation;
export declare function evaluatePolicyPoints(points: PolicyPoint[], context: PolicyContext): PolicyEvaluation[];
//# sourceMappingURL=policies.d.ts.map