import { FeatureRegistryEntry, FeatureTab } from './types'; /** * Feature visibility state */ export interface FeatureVisibility { featureId: string; isVisible: boolean; isAccessible: boolean; reason?: 'flag_disabled' | 'insufficient_permissions' | 'not_authenticated' | undefined; tabs: TabVisibility[]; } /** * Tab visibility state */ export interface TabVisibility { tabId: string; isVisible: boolean; isAccessible: boolean; reason?: 'flag_disabled' | 'insufficient_permissions' | undefined; } /** * Feature flag manifest entry */ export interface FeatureFlagManifestEntry { flag: string; featureId: string; tabId?: string; description?: string; } /** * Extract all feature flags from registered features * Returns a unique list of all flags used across features */ export declare function extractFeatureFlags(): string[]; /** * Generate a manifest of all feature flags with their associations * Useful for documentation and flag management */ export declare function generateFeatureFlagManifest(): FeatureFlagManifestEntry[]; /** * Generate flag keys constant from features * Useful for type-safe flag key generation */ export declare function generateFeatureFlagKeys(): Record; /** * Hook to get visibility status for all features */ export declare function useFeatureVisibility(): FeatureVisibility[]; /** * Hook to get only accessible features (visible AND accessible) */ export declare function useAccessibleFeatures(): FeatureRegistryEntry[]; /** * Hook to get only visible features (flag enabled, regardless of permissions) */ export declare function useVisibleFeatures(): FeatureRegistryEntry[]; /** * Hook to check if a specific feature is accessible */ export declare function useIsFeatureAccessible(featureId: string): { isAccessible: boolean; isVisible: boolean; reason?: FeatureVisibility['reason']; }; /** * Hook to check if a specific tab is accessible within a feature */ export declare function useIsTabAccessible(featureId: string, tabId: string): { isAccessible: boolean; isVisible: boolean; reason?: TabVisibility['reason']; }; /** * Hook to get accessible tabs for a feature */ export declare function useAccessibleTabs(featureId: string): FeatureTab[]; /** * Hook to get a callback for checking feature accessibility * Useful for programmatic checks without re-renders */ export declare function useFeatureAccessChecker(): (featureId: string) => boolean; /** * Hook to get all disabled features with reasons * Useful for debugging and admin dashboards */ export declare function useDisabledFeatures(): Array<{ featureId: string; featureName: string; reason: FeatureVisibility['reason']; }>;