import * as react_jsx_runtime from 'react/jsx-runtime';
import * as React$1 from 'react';
import { ReactNode } from 'react';

interface UndoAction$1 {
    id: string;
    type: 'create' | 'update' | 'delete' | 'transfer' | 'approve';
    entityType: string;
    entityId: string;
    description: string;
    undoFunction: () => Promise<void>;
    createdAt: Date;
    expiresAt: Date;
    priority: 'low' | 'normal' | 'high' | 'critical';
    icon?: ReactNode;
    metadata?: Record<string, any>;
}
interface UndoContextType {
    actions: UndoAction$1[];
    addAction: (action: Omit<UndoAction$1, 'id' | 'createdAt' | 'expiresAt'>) => string;
    undoAction: (actionId: string) => Promise<void>;
    dismissAction: (actionId: string) => void;
    clearExpired: () => void;
    getActionsByType: (type: string) => UndoAction$1[];
}
declare function useUndo(): UndoContextType;
interface UndoProviderProps {
    children: ReactNode;
    defaultTimeoutMs?: number;
    maxActions?: number;
}
declare function UndoProvider({ children, defaultTimeoutMs, // 10 seconds default
maxActions }: UndoProviderProps): react_jsx_runtime.JSX.Element;
declare function useUndoAction(): {
    createUndoableAction: (description: string, undoFunction: () => Promise<void>, options: {
        type?: UndoAction$1["type"];
        entityType: string;
        entityId: string;
        priority?: UndoAction$1["priority"];
        icon?: ReactNode;
        timeoutMs?: number;
    }) => string;
};

interface CommandItem {
    id: string;
    title: string;
    description?: string;
    icon?: React$1.ElementType;
    category?: string;
    keywords?: string[];
    action: () => void;
    shortcut?: string;
}
interface CommandPaletteProps {
    items: CommandItem[];
    placeholder?: string;
    emptyMessage?: string;
    recentLabel?: string;
    maxRecent?: number;
}
declare function CommandPalette({ items, placeholder, emptyMessage, recentLabel, maxRecent }: CommandPaletteProps): react_jsx_runtime.JSX.Element | null;

/**
 * BIRHAUS Core Types
 */
interface UndoAction {
    id: string;
    type: 'create' | 'update' | 'delete' | 'transfer' | 'approve';
    entityType: string;
    entityId: string;
    description: string;
    undoFunction: () => Promise<void>;
    createdAt: Date;
    expiresAt: Date;
    priority: 'low' | 'normal' | 'high' | 'critical';
    icon?: React.ReactNode;
    metadata?: Record<string, any>;
}
interface CognitiveLoadMetrics {
    visibleChoices: number;
    primaryNavItems: number;
    contextualActions: number;
    primaryActions: number;
    formFields: number;
    tableColumns: number;
    violatesMillersLaw: boolean;
    violatesFourThreeOne: boolean;
    cognitiveLoadScore: number;
}
interface BirthausComplianceReport {
    score: number;
    violations: Array<{
        principle: number;
        description: string;
        severity: 'low' | 'medium' | 'high' | 'critical';
        suggestion: string;
    }>;
    metrics: CognitiveLoadMetrics;
    performance: {
        TTI: number;
        FCP: number;
        CLS: number;
    };
    accessibility: {
        score: number;
        violations: string[];
    };
}

/**
 * BIRHAUS Constants
 *
 * Core limits and configuration values that enforce BIRHAUS principles
 */
declare const BIRHAUS_LIMITS: {
    readonly MAX_VISIBLE_CHOICES: 7;
    readonly MIN_VISIBLE_CHOICES: 5;
    readonly MAX_PRIMARY_NAV_ITEMS: 4;
    readonly MAX_CONTEXTUAL_ACTIONS: 3;
    readonly MAX_PRIMARY_ACTIONS: 1;
    readonly MAX_FIELDS_PER_STEP: 5;
    readonly MAX_FORM_STEPS: 4;
    readonly MAX_TTI: 2000;
    readonly MAX_FCP: 1000;
    readonly MAX_CLS: 0.1;
    readonly DEFAULT_TABLE_COLUMNS: 7;
    readonly MAX_TABLE_ROWS_BEFORE_VIRTUALIZATION: 100;
    readonly DEFAULT_UNDO_TIMEOUT: 10000;
    readonly MAX_UNDO_ACTIONS: 5;
    readonly MIN_TOUCH_TARGET: 44;
    readonly MIN_CONTRAST_RATIO: 4.5;
    readonly DEFAULT_TRANSITION_DURATION: 150;
    readonly REDUCE_MOTION_DURATION: 0;
};

export { BIRHAUS_LIMITS, type BirthausComplianceReport, type CognitiveLoadMetrics, CommandPalette, type UndoAction, UndoProvider, useUndo, useUndoAction };
