/**
 * Centralized Feature Flags System
 *
 * Provides runtime configuration for enabling/disabling features across the application.
 * Supports environment variable overrides and persistent configuration.
 *
 * Usage:
 *   import { getFeatureFlags, isFeatureEnabled } from '@/config/feature-flags';
 *
 *   if (isFeatureEnabled('VOICE_CONTROL')) {
 *     // Voice control logic
 *   }
 */
import { EventEmitter } from 'events';
/**
 * Feature flag definition
 */
export interface FeatureFlag {
    name: string;
    enabled: boolean;
    description: string;
    category: FeatureCategory;
    requiresConfig?: boolean;
    envOverride?: string;
    experimental?: boolean;
    deprecated?: boolean;
}
export type FeatureCategory = 'core' | 'ai' | 'ui' | 'security' | 'optimization' | 'integration' | 'experimental';
/**
 * Feature flags configuration
 */
export interface FeatureFlagsConfig {
    version: string;
    flags: Record<string, FeatureFlag>;
}
export declare class FeatureFlagsManager extends EventEmitter {
    private flags;
    private configPath;
    private userConfigPath;
    constructor(configDir?: string);
    /**
     * Load feature flags from config files and environment variables
     */
    private loadFlags;
    /**
     * Load configuration from file
     */
    private loadConfigFile;
    /**
     * Save configuration to file
     */
    saveConfig(userLevel?: boolean): void;
    /**
     * Check if a feature is enabled
     */
    isEnabled(flagName: string): boolean;
    /**
     * Get feature flag details
     */
    getFlag(flagName: string): FeatureFlag | undefined;
    /**
     * Get all feature flags
     */
    getAllFlags(): Map<string, FeatureFlag>;
    /**
     * Get flags by category
     */
    getFlagsByCategory(category: FeatureCategory): FeatureFlag[];
    /**
     * Get experimental flags
     */
    getExperimentalFlags(): FeatureFlag[];
    /**
     * Get deprecated flags
     */
    getDeprecatedFlags(): FeatureFlag[];
    /**
     * Enable a feature flag
     */
    enableFlag(flagName: string): void;
    /**
     * Disable a feature flag
     */
    disableFlag(flagName: string): void;
    /**
     * Toggle a feature flag
     */
    toggleFlag(flagName: string): boolean;
    /**
     * Register a new feature flag
     */
    registerFlag(flag: FeatureFlag): void;
    /**
     * Reload configuration from disk
     */
    reload(): void;
    /**
     * Get feature flags summary
     */
    getSummary(): {
        total: number;
        enabled: number;
        disabled: number;
        experimental: number;
        deprecated: number;
        byCategory: Record<FeatureCategory, number>;
    };
    /**
     * Format flags for display
     */
    formatFlags(options?: {
        category?: FeatureCategory;
        onlyEnabled?: boolean;
        onlyDisabled?: boolean;
        experimental?: boolean;
    }): string;
    /**
     * Dispose manager
     */
    dispose(): void;
}
export declare function getFeatureFlags(configDir?: string): FeatureFlagsManager;
export declare function resetFeatureFlags(): void;
/**
 * Quick check if a feature is enabled
 */
export declare function isFeatureEnabled(flagName: string): boolean;
/**
 * Quick enable a feature
 */
export declare function enableFeature(flagName: string): void;
/**
 * Quick disable a feature
 */
export declare function disableFeature(flagName: string): void;
