/** * Approvals Module - v1.0.0 * Policy-based exec approval system with queue, expiry, history, and callbacks. */ export type ExecApprovalPolicy = 'always' | 'elevated-only' | 'never' | 'allowlist'; export interface ExecApprovalRequest { id: string; command: string; elevated: boolean; requestedAt: number; expiresAt: number; status: 'pending' | 'approved' | 'denied' | 'expired'; approvedBy?: string; reason?: string; } export interface ExecApprovalHistory { request: ExecApprovalRequest; resolvedAt: number; } export type ApprovalRequestCallback = (request: ExecApprovalRequest) => void; export declare class ExecApprovalManager { private policy; private pending; private history; private allowedCommands; private expiryMs; private onRequestCallback?; private expiryTimer?; constructor(options?: { policy?: ExecApprovalPolicy; expiryMs?: number; allowedCommands?: string[]; onRequest?: ApprovalRequestCallback; }); getPolicy(): ExecApprovalPolicy; setPolicy(p: ExecApprovalPolicy): void; addAllowedCommand(cmd: string): void; removeAllowedCommand(cmd: string): void; getAllowedCommands(): string[]; needsApproval(command: string, elevated: boolean): boolean; private isAllowed; request(command: string, elevated?: boolean): ExecApprovalRequest; approve(id: string, approver: string): ExecApprovalRequest; deny(id: string, approver: string, reason?: string): ExecApprovalRequest; getPending(): ExecApprovalRequest[]; getHistory(): ExecApprovalHistory[]; getRequest(id: string): ExecApprovalRequest | undefined; private expirePending; /** Force expire check (for testing) */ checkExpiry(): void; destroy(): void; } //# sourceMappingURL=approvals.d.ts.map