/**
 * Security Module
 *
 * Unified security layer for Code Buddy:
 * - Tool policies (hierarchical tool grouping and profiles)
 * - Approval modes (read-only, auto, full-access)
 * - Sandbox execution for commands
 * - Data redaction for sensitive information
 * - Permission configuration
 * - Command validation and sanitization
 */
export type { ToolGroup, PolicyProfile, PolicyAction, PolicyRule, PolicyCondition, ProfileDefinition, PolicyDecision, PolicyContext, PolicySource, PolicyConfig, PolicyEvents, } from './tool-policy/index.js';
export { ALL_TOOL_GROUPS, DEFAULT_POLICY_CONFIG, getParentGroup, isChildGroup, TOOL_GROUPS, getToolGroups, getToolsInGroup, isToolInGroup, registerToolGroups, unregisterToolGroups, getAllRegisteredTools, getGroupStats, PROFILES, getProfile, getProfileNames, getProfileRules, formatProfile, getProfileComparison, PolicyResolver, resolveMultiple, filterByPolicy, getAllowedTools, PolicyManager, getPolicyManager, resetPolicyManager, isToolAllowed, toolRequiresConfirmation, isToolDenied, } from './tool-policy/index.js';
export type { PatternType, ApprovalDecision, ApprovalPattern, PatternSource, AllowlistCheckResult, ApprovalPromptOptions, ApprovalPromptResult, AllowlistConfig, AllowlistEvents, } from './bash-allowlist/index.js';
export { DEFAULT_ALLOWLIST_CONFIG, DEFAULT_SAFE_PATTERNS, DEFAULT_DENY_PATTERNS, matchPattern, matchApprovalPattern, findBestMatch, validatePattern, suggestPattern, extractBaseCommand, isPatternDangerous, AllowlistStore, getAllowlistStore, resetAllowlistStore, ApprovalFlowManager, getApprovalFlowManager, resetApprovalFlowManager, } from './bash-allowlist/index.js';
export { ApprovalModeManager, getApprovalModeManager, resetApprovalModeManager } from './approval-modes.js';
export type { ApprovalMode, OperationType, OperationRequest, ApprovalResult, ApprovalModeConfig } from './approval-modes.js';
export { SandboxManager, getSandboxManager, resetSandboxManager, type SandboxConfig, type SandboxResult, } from './sandbox.js';
export { CredentialManager, getCredentialManager, getApiKey, setApiKey } from './credential-manager.js';
export type { CredentialConfig, StoredCredentials } from './credential-manager.js';
export { getSecurityModeManager, SecurityModeManager } from './security-modes.js';
export type { SecurityMode } from './security-modes.js';
export { PermissionManager, getPermissionManager, resetPermissionManager, type PermissionConfig, type PermissionCheckResult, } from './permission-config.js';
export { DataRedactionEngine, getDataRedactionEngine, resetDataRedactionEngine, redactSecrets, containsSecrets, type RedactionPattern, type RedactionCategory, type RedactionResult, type RedactionMatch, type RedactionStats, type RedactionConfig, } from './data-redaction.js';
export type { AuditSeverity, AuditCategory, AuditFinding, AuditResult, SecurityAuditConfig, } from './security-audit.js';
export { SecurityAuditor, getSecurityAuditor, resetSecurityAuditor, DEFAULT_SECURITY_AUDIT_CONFIG, } from './security-audit.js';
import { EventEmitter } from 'events';
import { ApprovalMode, ApprovalResult, OperationRequest } from './approval-modes.js';
import { SandboxResult } from './sandbox.js';
import { SecurityMode } from './security-modes.js';
import { RedactionResult } from './data-redaction.js';
export interface SecurityConfig {
    /** Enable security features */
    enabled: boolean;
    /** Approval mode */
    approvalMode: ApprovalMode;
    /** Security mode */
    securityMode: SecurityMode;
    /** Enable sandbox */
    sandboxEnabled: boolean;
    /** Enable redaction */
    redactionEnabled: boolean;
    /** Log security events */
    logEvents: boolean;
}
export interface SecurityEvent {
    timestamp: number;
    type: 'approval' | 'sandbox' | 'redaction' | 'validation' | 'blocked';
    action: string;
    result: 'allowed' | 'blocked' | 'confirmed' | 'redacted';
    details?: Record<string, unknown>;
}
export interface SecurityStats {
    totalOperations: number;
    autoApproved: number;
    userConfirmed: number;
    blocked: number;
    redacted: number;
    sandboxed: number;
}
export interface SecuritySummary {
    config: SecurityConfig;
    stats: SecurityStats;
    recentEvents: SecurityEvent[];
    approvalModeStatus: string;
    securityModeStatus: string;
}
export declare class SecurityManager extends EventEmitter {
    private config;
    private events;
    private stats;
    private maxEvents;
    constructor(config?: Partial<SecurityConfig>);
    /**
     * Initialize security systems
     */
    initialize(): void;
    /**
     * Check if an operation should be approved
     */
    checkApproval(request: OperationRequest): ApprovalResult;
    /**
     * Execute command in sandbox
     */
    sandboxExecute(command: string): Promise<SandboxResult>;
    /**
     * Redact sensitive data
     */
    redact(text: string): RedactionResult;
    /**
     * Validate a command for dangerous patterns
     */
    validateCommand(command: string): {
        safe: boolean;
        warnings: string[];
    };
    /**
     * Get security summary
     */
    getSummary(): SecuritySummary;
    /**
     * Get statistics
     */
    getStats(): SecurityStats;
    /**
     * Get recent events
     */
    getEvents(limit?: number): SecurityEvent[];
    /**
     * Reset statistics
     */
    resetStats(): void;
    /**
     * Update configuration
     */
    updateConfig(config: Partial<SecurityConfig>): void;
    /**
     * Format security dashboard
     */
    formatDashboard(): string;
    private recordEvent;
}
export declare function getSecurityManager(config?: Partial<SecurityConfig>): SecurityManager;
export declare function initializeSecurityManager(config?: Partial<SecurityConfig>): SecurityManager;
export declare function resetSecurityManager(): void;
