/**
 * UI State Types
 *
 * Defines the types for the UI state machine used in input validation
 * and state management across the application.
 */
/**
 * All possible UI states the application can be in.
 * These are mutually exclusive - only one can be active at a time.
 */
export type UIState = 'idle' | 'command-palette' | 'confirm-dialog' | 'selection-dialog' | 'progress' | 'help' | 'config' | 'setup' | 'batch-menu' | 'login-dialog' | 'account-view' | 'first-launch' | 'rollback-dialog';
/**
 * All possible tab IDs in the application
 */
export type TabId = 'home' | 'servers' | 'plugins' | 'updates' | 'logs' | 'stats' | 'health' | 'recommendations' | 'performance';
/**
 * Loading states for various operations
 */
export interface LoadingStates {
    sync: boolean;
    backup: boolean;
    download: boolean;
    updates: boolean;
    servers: boolean;
    plugins: boolean;
    logs: boolean;
}
/**
 * Context provided with the current UI state
 */
export interface StateContext {
    /** Current UI state */
    state: UIState;
    /** Active tab ID (when in idle state) */
    activeTab: TabId;
    /** Loading states for various operations */
    loading: LoadingStates;
    /** Whether the current operation can be cancelled (for progress state) */
    canCancel?: boolean;
    /** Whether network is online */
    online: boolean;
    /** Whether debug mode is enabled */
    debugEnabled: boolean;
}
/**
 * Input to derive the current UI state
 */
export interface UIStateInput {
    showHelp: boolean;
    showConfig: boolean;
    showCommandPalette: boolean;
    showConfirmDialog: boolean;
    workflowType: 'sync' | 'backup' | 'download' | 'migrate' | null;
    showBatchMenu: boolean;
    showSetup: boolean;
    downloadStep: 'config-prompt' | 'type' | 'version' | 'destination' | 'progress';
    syncLoading: boolean;
    backupLoading: boolean;
    downloadLoading: boolean;
    updatesLoading: boolean;
    serversLoading: boolean;
    pluginsLoading: boolean;
    logsLoading: boolean;
    activeTab: TabId;
    online: boolean;
    debugEnabled: boolean;
    canCancel?: boolean;
    showFirstLaunchPrompt?: boolean;
    showLoginDialog?: boolean;
    showAccountView?: boolean;
    showRollbackDialog?: boolean;
}
/**
 * Derive the current UI state from component state
 *
 * Priority order (first match wins):
 * 1. Progress states (loading workflows)
 * 2. Dialog states (setup, batch, confirm, selection)
 * 3. Overlay states (help, config, command palette)
 * 4. Idle state
 */
export declare function deriveUIState(input: UIStateInput): StateContext;
/**
 * Check if any workflow is currently loading
 */
export declare function isAnyWorkflowLoading(loading: LoadingStates): boolean;
/**
 * Check if any data loading is in progress
 */
export declare function isAnyDataLoading(loading: LoadingStates): boolean;
/**
 * Check if the UI is in a state that should block most input
 */
export declare function isInputBlocked(state: UIState): boolean;
//# sourceMappingURL=types.d.ts.map