import type Database from 'better-sqlite3';
import type { AgentActionEvent, RiskLevel } from './schemas.js';
import type { EventBus } from './EventBus.js';
import type { AuditStore } from './AuditStore.js';
import { RiskClassifier } from './RiskClassifier.js';
import type { CustomRiskRule } from './RiskClassifier.js';
import { PolicyEngine } from './PolicyEngine.js';
import type { PolicyDecision } from './PolicyEngine.js';
export interface InterceptResult {
    allowed: boolean;
    riskLevel: RiskLevel;
    policyDecision: PolicyDecision;
    auditId: string;
}
interface StorageProvider {
    getDatabase(): Database.Database;
}
export interface SentinelDeps {
    storage: StorageProvider;
    eventBus: EventBus;
    auditStore: AuditStore;
    projectRoot?: string;
    customRules?: CustomRiskRule[];
}
export declare class SecuritySentinel {
    private static instance;
    private readonly classifier;
    private readonly policyEngine;
    private readonly eventBus;
    private readonly auditStore;
    private readonly db;
    private readonly projectRoot;
    private readonly recentDeleteStmt;
    private constructor();
    static getInstance(deps: SentinelDeps): SecuritySentinel;
    static resetInstance(): void;
    intercept(action: AgentActionEvent): InterceptResult;
    isImmutable(): boolean;
    getSentinelFiles(): ReadonlyArray<string>;
    getClassifier(): RiskClassifier;
    getPolicyEngine(): PolicyEngine;
    private normalizeAction;
    private normalizePath;
    private buildContext;
    private blockedDecision;
    private emitPolicyCheck;
    private recordAudit;
}
export declare function isSentinelProtectedPath(target: string): boolean;
export {};
//# sourceMappingURL=SecuritySentinel.d.ts.map