/** * Every key, as a pure reducer: UI state, data and a key in; new UI state and at * most one effect out (operator-console/AC-4, operator-console/AC-27..AC-38, * operator-console/AC-40..AC-42, operator-console/AC-45..AC-52). * * It reads no file and runs nothing, so every key path is a unit test. Letters on * the dashboard are always actions and never start typing (operator-console/AC-46), * so no typed sentence can trigger one. Actions that stop, forget or start work go * through a `y`/`n` confirm; approve does not (operator-console/AC-29). * * @module */ import type { Effect, KeyName, OperatorData, UiState } from './model.js'; export interface Step { ui: UiState; effect: Effect | null; } /** `r`'s count: a whole number of at least 1, checked before it reaches argv. */ export declare function validCount(v: string): string | undefined; export declare function onKey(ui: UiState, data: OperatorData, key: KeyName): Step; /** Selections kept inside each panel's rows after a refresh shrank them. */ export declare function clampSelection(ui: UiState, data: OperatorData): UiState; //# sourceMappingURL=keys.d.ts.map