UNPKG

@visulima/ansi

Version:

ANSI escape codes for some terminal swag.

734 lines (733 loc) 39 kB
/** * Represents the reported setting of a terminal mode, typically received in response to a DECRQM (Request Mode) query. * The terminal responds with a DECRPM (Report Mode) sequence containing one of these values. * @see {@link requestMode} (DECRQM) for how to query a mode's state. * @see {@link reportMode} (DECRPM) for how a terminal might report these states. * @see {@link https://vt100.net/docs/vt510-rm/DECRPM.html} VT510 DECRPM Documentation. * @enum {number} */ declare enum ModeSetting { /** * Mode is not recognized by the terminal. * This indicates that the terminal does not support or understand the queried mode number. * (Parameter `Ps = 0` in DECRPM) */ NotRecognized = 0, /** * Mode is currently set. * (Parameter `Ps = 1` in DECRPM) */ Set = 1, /** * Mode is currently reset (not set). * (Parameter `Ps = 2` in DECRPM) */ Reset = 2, /** * Mode is permanently set and cannot be changed (e.g., by RM or SM sequences). * (Parameter `Ps = 3` in DECRPM) */ PermanentlySet = 3, /** * Mode is permanently reset and cannot be changed (e.g., by RM or SM sequences). * (Parameter `Ps = 4` in DECRPM) */ PermanentlyReset = 4 } /** * Checks if the reported mode setting indicates that the mode is not recognized by the terminal. * @param m The `ModeSetting` value reported by the terminal. * @returns `true` if the mode is {@link ModeSetting.NotRecognized}, `false` otherwise. */ declare const isModeNotRecognized: (m: ModeSetting) => boolean; /** * Checks if the reported mode setting indicates that the mode is currently set or permanently set. * @param m The `ModeSetting` value reported by the terminal. * @returns `true` if the mode is {@link ModeSetting.Set} or {@link ModeSetting.PermanentlySet}, `false` otherwise. */ declare const isModeSet: (m: ModeSetting) => boolean; /** * Checks if the reported mode setting indicates that the mode is currently reset or permanently reset. * @param m The `ModeSetting` value reported by the terminal. * @returns `true` if the mode is {@link ModeSetting.Reset} or {@link ModeSetting.PermanentlyReset}, `false` otherwise. */ declare const isModeReset: (m: ModeSetting) => boolean; /** * Checks if the reported mode setting indicates that the mode is permanently set and cannot be changed. * @param m The `ModeSetting` value reported by the terminal. * @returns `true` if the mode is {@link ModeSetting.PermanentlySet}, `false` otherwise. */ declare const isModePermanentlySet: (m: ModeSetting) => boolean; /** * Checks if the reported mode setting indicates that the mode is permanently reset and cannot be changed. * @param m The `ModeSetting` value reported by the terminal. * @returns `true` if the mode is {@link ModeSetting.PermanentlyReset}, `false` otherwise. */ declare const isModePermanentlyReset: (m: ModeSetting) => boolean; /** * Represents a standard ANSI terminal mode (e.g., IRM, KAM). These modes are controlled by * sequences like `CSI Pn h` (Set) and `CSI Pn l` (Reset), without a `?` prefix. * Discriminates on {@link Mode.isDecMode} being `false`, so the compiler rejects passing a * {@link DecMode} where an ANSI mode is required. * @see {@link Mode} * @see {@link createAnsiMode} to create instances. */ interface AnsiMode extends Mode { readonly isDecMode: false; } /** * Represents a private DEC terminal mode (e.g., DECTCEM, DECAWM). These modes are controlled by * sequences like `CSI ? Pn h` (Set) and `CSI ? Pn l` (Reset), identified by the `?` prefix. * Discriminates on {@link Mode.isDecMode} being `true`, so the compiler rejects passing an * {@link AnsiMode} where a DEC mode is required. * @see {@link Mode} * @see {@link createDecMode} to create instances. */ interface DecMode extends Mode { readonly isDecMode: true; } /** * Interface representing a terminal mode, characterized by its numeric code * and whether it's a standard ANSI mode or a private DEC mode. * * - Standard ANSI modes are controlled by `CSI Pn h` (Set Mode - SM) and `CSI Pn l` (Reset Mode - RM). * - Private DEC modes are controlled by `CSI ? Pn h` (DECSET) and `CSI ? Pn l` (DECRST). */ interface Mode { /** The numeric code of the terminal mode (e.g., `4` for Insert/Replace Mode, `25` for Text Cursor Enable Mode). */ readonly code: number; /** * Indicates if this is a private DEC mode. * - `true`: It's a DEC mode (sequence uses `?`, e.g., `CSI ?25h`). * - `false`: It's a standard ANSI mode (sequence does not use `?`, e.g., `CSI 4h`). */ readonly isDecMode: boolean; } /** * Factory function to create a standard ANSI mode object. * @param code The numeric code for the ANSI mode (e.g., `4` for Insert/Replace Mode). * @returns An `AnsiMode` object representing the specified ANSI mode. * @example * ```typescript * import { createAnsiMode, setMode, resetMode } from '@visulima/ansi'; * * const insertReplaceMode = createAnsiMode(4); // ANSI Mode 4: IRM * const srmMode = createAnsiMode(12); // ANSI Mode 12: SRM * * process.stdout.write(setMode(insertReplaceMode)); // CSI 4h * process.stdout.write(resetMode(srmMode)); // CSI 12l * ``` */ declare const createAnsiMode: (code: number) => AnsiMode; /** * Factory function to create a private DEC mode object. * @param code The numeric code for the DEC mode (e.g., `25` for Text Cursor Enable Mode DECTCEM). * @returns A `DecMode` object representing the specified DEC private mode. * @example * ```typescript * import { createDecMode, setMode, resetMode } from '@visulima/ansi'; * * const cursorVisibleMode = createDecMode(25); // DEC Mode 25: DECTCEM (Text Cursor Enable) * const originMode = createDecMode(6); // DEC Mode 6: DECOM (Origin Mode) * * process.stdout.write(setMode(cursorVisibleMode)); // CSI ?25h * process.stdout.write(resetMode(originMode)); // CSI ?6l * ``` */ declare const createDecMode: (code: number) => DecMode; /** * Generates the ANSI/DEC sequence to set one or more terminal modes. * (SM - Set Mode) * * - For standard ANSI modes, the format is `CSI Pn ; ... ; Pn h`. * - For private DEC modes, the format is `CSI ? Pn ; ... ; Pn h`. * * If a mix of ANSI and DEC modes are provided (e.g., `setMode(ansiMode1, decMode1, ansiMode2)`), * it produces two separate sequences concatenated (e.g., `CSI Pn(A1);Pn(A2)hCSI ?Pn(D1)h`). * The order of ANSI vs. DEC sequences in the output depends on the current implementation (ANSI first). * @param modes A list of {@link Mode} objects (either `AnsiMode` or `DecMode`) to set. * @returns The ANSI escape sequence(s) to set the specified modes. Returns an empty string if no modes are provided. * @see {@link https://vt100.net/docs/vt510-rm/SM.html Set Mode (SM) documentation} * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-Ps-space-letter} (DECSET related section) * @example * ```typescript * import { createAnsiMode, createDecMode, setMode, TextCursorEnableMode, OriginMode, InsertReplaceMode, LineFeedNewLineMode } from '@visulima/ansi'; * * // Set a single DEC mode * console.log(setMode(TextCursorEnableMode)); // CSI ?25h (assuming TextCursorEnableMode is DEC mode 25) * * // Set multiple ANSI modes * console.log(setMode(InsertReplaceMode, LineFeedNewLineMode)); // CSI 4;20h (assuming IRM is 4, LNM is 20) * * // Set a mix of modes * console.log(setMode(OriginMode, InsertReplaceMode)); // e.g., CSI 4hCSI ?6h (order of groups may vary) * ``` */ declare const setMode: (...modes: Mode[]) => string; /** Alias for {@link setMode}. Generates the SM (Set Mode) sequence. */ declare const SM: (...modes: Mode[]) => string; /** * Generates the ANSI/DEC sequence to reset one or more terminal modes. * (RM - Reset Mode) * * - For standard ANSI modes, the format is `CSI Pn ; ... ; Pn l`. * - For private DEC modes, the format is `CSI ? Pn ; ... ; Pn l`. * * If a mix of ANSI and DEC modes are provided (e.g., `resetMode(ansiMode1, decMode1, ansiMode2)`), * it produces two separate sequences concatenated (e.g., `CSI Pn(A1);Pn(A2)lCSI ?Pn(D1)l`). * The order of ANSI vs. DEC sequences in the output depends on the current implementation (ANSI first). * @param modes A list of {@link Mode} objects (either `AnsiMode` or `DecMode`) to reset. * @returns The ANSI escape sequence(s) to reset the specified modes. Returns an empty string if no modes are provided. * @see {@link https://vt100.net/docs/vt510-rm/RM.html Reset Mode (RM) documentation} * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-Ps-space-letter} (DECRST related section) * @example * ```typescript * import { createAnsiMode, createDecMode, resetMode, TextCursorEnableMode, OriginMode, InsertReplaceMode, LineFeedNewLineMode } from '@visulima/ansi'; * * // Reset a single DEC mode * console.log(resetMode(TextCursorEnableMode)); // CSI ?25l (assuming TextCursorEnableMode is DEC mode 25) * * // Reset multiple ANSI modes * console.log(resetMode(InsertReplaceMode, LineFeedNewLineMode)); // CSI 4;20l (assuming IRM is 4, LNM is 20) * * // Reset a mix of modes * console.log(resetMode(OriginMode, InsertReplaceMode)); // e.g., CSI 4lCSI ?6l (order of groups may vary) * ``` */ declare const resetMode: (...modes: Mode[]) => string; /** Alias for {@link resetMode}. Generates the RM (Reset Mode) sequence. */ declare const RM: (...modes: Mode[]) => string; /** * Generates the DECRQM (Request Mode) sequence to query the state of a specific terminal mode. * * The terminal is expected to respond with a DECRPM (Report Mode) sequence indicating the mode's current setting. * * - For a standard ANSI mode, the format is `CSI Pn $ p`. * - For a private DEC mode, the format is `CSI ? Pn $ p`. * @param mode The {@link Mode} object (either `AnsiMode` or `DecMode`) to query. * @returns The DECRQM escape sequence to request the mode state. * @see {@link https://vt100.net/docs/vt510-rm/DECRQM.html DECRQM documentation} * @see {@link reportMode} for the corresponding response sequence (DECRPM). * @see {@link ModeSetting} for possible reported states. * @example * ```typescript * import { requestMode, TextCursorEnableMode, InsertReplaceMode } from '@visulima/ansi'; * * // Request state of DEC Mode 25 (Text Cursor Enable) * process.stdout.write(requestMode(TextCursorEnableMode)); // Outputs: CSI ?25$p * * // Request state of ANSI Mode 4 (Insert/Replace Mode) * process.stdout.write(requestMode(InsertReplaceMode)); // Outputs: CSI 4$p * ``` */ declare const requestMode: (mode: Mode) => string; /** Alias for {@link requestMode}. Generates the DECRQM (Request Mode) sequence. */ declare const DECRQM: (mode: Mode) => string; /** * Generates the DECRPM (Report Mode) sequence, which is the terminal's response to a DECRQM request. * This sequence indicates the current setting of a queried mode. * * - For a standard ANSI mode, the format is `CSI Pn ; Ps $ y`. * - For a private DEC mode, the format is `CSI ? Pn ; Ps $ y`. * * Where `Pn` is the mode number and `Ps` is a value from {@link ModeSetting} (0-4). * * This function is typically used for testing or simulating terminal behavior, * as applications usually receive this sequence from the terminal, not generate it. * @param mode The {@link Mode} object (either `AnsiMode` or `DecMode`) whose state is being reported. * @param value The {@link ModeSetting} value indicating the current state of the mode. * @returns The DECRPM escape sequence reporting the mode state. * @see {@link https://vt100.net/docs/vt510-rm/DECRPM.html DECRPM documentation} * @see {@link requestMode} for the corresponding request sequence (DECRQM). * @example * ```typescript * import { reportMode, TextCursorEnableMode, InsertReplaceMode, ModeSetting, createDecMode } from '@visulima/ansi'; * * // Report that DEC Mode 25 (Text Cursor Enable) is Set * console.log(reportMode(TextCursorEnableMode, ModeSetting.Set)); // Outputs: CSI ?25;1$y * * // Report that ANSI Mode 4 (Insert/Replace Mode) is Reset * console.log(reportMode(InsertReplaceMode, ModeSetting.Reset)); // Outputs: CSI 4;2$y * * // Report that a hypothetical DEC mode 1049 is NotRecognized * const customDecMode = createDecMode(1049); * console.log(reportMode(customDecMode, ModeSetting.NotRecognized)); // Outputs: CSI ?1049;0$y * ``` */ declare const reportMode: (mode: Mode, value: ModeSetting) => string; /** Alias for {@link reportMode}. Generates the DECRPM (Report Mode) sequence. */ declare const DECRPM: (mode: Mode, value: ModeSetting) => string; /** * ANSI Mode 2: Keyboard Action Mode (KAM). * Controls locking of the keyboard. When locked, the keyboard cannot send data. * @see {@link https://vt100.net/docs/vt510-rm/KAM.html} */ declare const KeyboardActionMode: AnsiMode; /** Alias for {@link KeyboardActionMode}. */ declare const KAM: AnsiMode; /** Sequence to set Keyboard Action Mode: `CSI 2 h` */ declare const SetKeyboardActionMode: string; /** Sequence to reset Keyboard Action Mode: `CSI 2 l` */ declare const ResetKeyboardActionMode: string; /** Sequence to request Keyboard Action Mode state: `CSI 2 $ p` */ declare const RequestKeyboardActionMode: string; /** * ANSI Mode 4: Insert/Replace Mode (IRM). * Determines if new characters insert or replace existing ones. * @see {@link https://vt100.net/docs/vt510-rm/IRM.html} */ declare const InsertReplaceMode: Mode; /** Alias for {@link InsertReplaceMode}. */ declare const IRM: Mode; /** Sequence to set Insert/Replace Mode: `CSI 4 h` */ declare const SetInsertReplaceMode: string; /** Sequence to reset Insert/Replace Mode: `CSI 4 l` */ declare const ResetInsertReplaceMode: string; /** Sequence to request Insert/Replace Mode state: `CSI 4 $ p` */ declare const RequestInsertReplaceMode: string; /** * ANSI Mode 8: BiDirectional Support Mode (BDSM). * Determines if the terminal supports bidirectional text (implicit mode). * @see ECMA-48 7.2.1. */ declare const BiDirectionalSupportMode: AnsiMode; /** Alias for {@link BiDirectionalSupportMode}. */ declare const BDSM: AnsiMode; /** Sequence to set BiDirectional Support Mode: `CSI 8 h` */ declare const SetBiDirectionalSupportMode: string; /** Sequence to reset BiDirectional Support Mode: `CSI 8 l` */ declare const ResetBiDirectionalSupportMode: string; /** Sequence to request BiDirectional Support Mode state: `CSI 8 $ p` */ declare const RequestBiDirectionalSupportMode: string; /** * ANSI Mode 12: Send/Receive Mode (SRM) or Local Echo Mode. * Determines if the terminal echoes typed characters locally. * @see {@link https://vt100.net/docs/vt510-rm/SRM.html} */ declare const SendReceiveMode: AnsiMode; /** Alias for {@link SendReceiveMode}. */ declare const LocalEchoMode: AnsiMode; /** Alias for {@link SendReceiveMode}. */ declare const SRM: AnsiMode; /** Sequence to set Send/Receive Mode: `CSI 12 h` */ declare const SetSendReceiveMode: string; /** Sequence to reset Send/Receive Mode: `CSI 12 l` */ declare const ResetSendReceiveMode: string; /** Sequence to request Send/Receive Mode state: `CSI 12 $ p` */ declare const RequestSendReceiveMode: string; /** Alias for {@link SetSendReceiveMode}. */ declare const SetLocalEchoMode: string; /** Alias for {@link ResetSendReceiveMode}. */ declare const ResetLocalEchoMode: string; /** Alias for {@link RequestSendReceiveMode}. */ declare const RequestLocalEchoMode: string; /** * ANSI Mode 20: Line Feed/New Line Mode (LNM). * Determines how the terminal interprets line feed (LF), form feed (FF), and vertical tab (VT) characters. * - Set (New Line): LF, FF, VT cause CR+LF effect. * - Reset (Line Feed): LF, FF, VT move to next line, same column. * @see {@link https://vt100.net/docs/vt510-rm/LNM.html} */ declare const LineFeedNewLineMode: AnsiMode; /** Alias for {@link LineFeedNewLineMode}. */ declare const LNM: AnsiMode; /** Sequence to set Line Feed/New Line Mode: `CSI 20 h` */ declare const SetLineFeedNewLineMode: string; /** Sequence to reset Line Feed/New Line Mode: `CSI 20 l` */ declare const ResetLineFeedNewLineMode: string; /** Sequence to request Line Feed/New Line Mode state: `CSI 20 $ p` */ declare const RequestLineFeedNewLineMode: string; /** * DEC Private Mode 1: Cursor Keys Mode (DECCKM). * Determines if cursor keys send ANSI cursor sequences or application-specific sequences. * - Set: Application sequences (e.g., `ESC O A` for Up Arrow). * - Reset: ANSI sequences (e.g., `CSI A` for Up Arrow) (default). * @see {@link https://vt100.net/docs/vt510-rm/DECCKM.html} */ declare const CursorKeysMode: DecMode; /** Alias for {@link CursorKeysMode}. */ declare const DECCKM: DecMode; /** Sequence to set Cursor Keys Mode: `CSI ? 1 h` */ declare const SetCursorKeysMode: string; /** Sequence to reset Cursor Keys Mode: `CSI ? 1 l` */ declare const ResetCursorKeysMode: string; /** Sequence to request Cursor Keys Mode state: `CSI ? 1 $ p` */ declare const RequestCursorKeysMode: string; /** * DEC Private Mode 6: Origin Mode (DECOM). * Controls cursor addressing relative to home position or scrolling region top-left. * - Set: Relative to scrolling region. * - Reset: Relative to home position (default). * @see {@link https://vt100.net/docs/vt510-rm/DECOM.html} */ declare const OriginMode: DecMode; /** Alias for {@link OriginMode}. */ declare const DECOM: DecMode; /** Sequence to set Origin Mode: `CSI ? 6 h` */ declare const SetOriginMode: string; /** Sequence to reset Origin Mode: `CSI ? 6 l` */ declare const ResetOriginMode: string; /** Sequence to request Origin Mode state: `CSI ? 6 $ p` */ declare const RequestOriginMode: string; /** * DEC Private Mode 7: Auto Wrap Mode (DECAWM). * Determines if cursor wraps to next line upon reaching the right margin. * - Set: Auto-wrap enabled (default). * - Reset: Auto-wrap disabled (characters overwrite at right margin). * @see {@link https://vt100.net/docs/vt510-rm/DECAWM.html} */ declare const AutoWrapMode: DecMode; /** Alias for {@link AutoWrapMode}. */ declare const DECAWM: DecMode; /** Sequence to set Auto Wrap Mode: `CSI ? 7 h` */ declare const SetAutoWrapMode: string; /** Sequence to reset Auto Wrap Mode: `CSI ? 7 l` */ declare const ResetAutoWrapMode: string; /** Sequence to request Auto Wrap Mode state: `CSI ? 7 $ p` */ declare const RequestAutoWrapMode: string; /** * DEC Private Mode 9: X10 Mouse Reporting Mode. * Reports mouse button presses. Coordinates are single characters (limited range). * Format: `CSI M Cb Cx Cy` (Cb=button-1, Cx=X, Cy=Y). * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking} */ declare const X10MouseMode: DecMode; /** Sequence to set X10 Mouse Mode: `CSI ? 9 h` */ declare const SetX10MouseMode: string; /** Sequence to reset X10 Mouse Mode: `CSI ? 9 l` */ declare const ResetX10MouseMode: string; /** Sequence to request X10 Mouse Mode state: `CSI ? 9 $ p` */ declare const RequestX10MouseMode: string; /** * DEC Private Mode 25: Text Cursor Enable Mode (DECTCEM). * Controls visibility of the text cursor. * - Set: Cursor visible (default). * - Reset: Cursor invisible. * @see {@link https://vt100.net/docs/vt510-rm/DECTCEM.html} */ declare const TextCursorEnableMode: DecMode; /** Alias for {@link TextCursorEnableMode}. */ declare const DECTCEM: DecMode; /** Sequence to set Text Cursor Enable Mode (show cursor): `CSI ? 25 h` */ declare const SetTextCursorEnableMode: string; /** Sequence to reset Text Cursor Enable Mode (hide cursor): `CSI ? 25 l` */ declare const ResetTextCursorEnableMode: string; /** Sequence to request Text Cursor Enable Mode state: `CSI ? 25 $ p` */ declare const RequestTextCursorEnableMode: string; /** Alias for {@link SetTextCursorEnableMode} (shows cursor). */ declare const ShowCursor: string; /** Alias for {@link ResetTextCursorEnableMode} (hides cursor). */ declare const HideCursor: string; /** * DEC Private Mode 66: Numeric Keypad Mode (DECNKM). * Determines if keypad sends application or numeric sequences. * @see {@link https://vt100.net/docs/vt510-rm/DECNKM.html} */ declare const NumericKeypadMode: DecMode; /** Alias for {@link NumericKeypadMode}. */ declare const DECNKM: DecMode; /** Sequence to set Numeric Keypad Mode: `CSI ? 66 h` */ declare const SetNumericKeypadMode: string; /** Sequence to reset Numeric Keypad Mode: `CSI ? 66 l` */ declare const ResetNumericKeypadMode: string; /** Sequence to request Numeric Keypad Mode state: `CSI ? 66 $ p` */ declare const RequestNumericKeypadMode: string; /** * DEC Private Mode 67: Backarrow Key Mode (DECBKM). * Determines if backspace key sends backspace (ASCII 8) or delete (ASCII 127). * - Set: Sends delete character. * - Reset: Sends backspace character (default). * @see {@link https://vt100.net/docs/vt510-rm/DECBKM.html} */ declare const BackarrowKeyMode: DecMode; /** Alias for {@link BackarrowKeyMode}. */ declare const DECBKM: DecMode; /** Sequence to set Backarrow Key Mode: `CSI ? 67 h` */ declare const SetBackarrowKeyMode: string; /** Sequence to reset Backarrow Key Mode: `CSI ? 67 l` */ declare const ResetBackarrowKeyMode: string; /** Sequence to request Backarrow Key Mode state: `CSI ? 67 $ p` */ declare const RequestBackarrowKeyMode: string; /** * DEC Private Mode 69: Left/Right Margin Mode (DECLRMM). * Controls whether left and right margins can be set with DECSLRM. * @see {@link https://vt100.net/docs/vt510-rm/DECLRMM.html} */ declare const LeftRightMarginMode: DecMode; /** Alias for {@link LeftRightMarginMode}. */ declare const DECLRMM: DecMode; /** Sequence to set Left/Right Margin Mode: `CSI ? 69 h` */ declare const SetLeftRightMarginMode: string; /** Sequence to reset Left/Right Margin Mode: `CSI ? 69 l` */ declare const ResetLeftRightMarginMode: string; /** Sequence to request Left/Right Margin Mode state: `CSI ? 69 $ p` */ declare const RequestLeftRightMarginMode: string; /** * DEC Private Mode 1000: Normal Mouse Mode. * Reports mouse button presses and releases, including modifiers, wheel events, and extra buttons. * Uses X10-like encoding with extensions. * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking} */ declare const NormalMouseMode: DecMode; /** Sequence to set Normal Mouse Mode: `CSI ? 1000 h` */ declare const SetNormalMouseMode: string; /** Sequence to reset Normal Mouse Mode: `CSI ? 1000 l` */ declare const ResetNormalMouseMode: string; /** Sequence to request Normal Mouse Mode state: `CSI ? 1000 $ p` */ declare const RequestNormalMouseMode: string; /** * DEC Private Mode 1001: Highlight Mouse Tracking. * Reports button presses, releases, and highlighted cells. * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking} */ declare const HighlightMouseMode: DecMode; /** Sequence to set Highlight Mouse Tracking: `CSI ? 1001 h` */ declare const SetHighlightMouseMode: string; /** Sequence to reset Highlight Mouse Tracking: `CSI ? 1001 l` */ declare const ResetHighlightMouseMode: string; /** Sequence to request Highlight Mouse Tracking state: `CSI ? 1001 $ p` */ declare const RequestHighlightMouseMode: string; /** * DEC Private Mode 1002: Button Event Mouse Tracking (Cell Motion Mouse Tracking). * Reports button-down events and mouse motion while a button is pressed. * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking} */ declare const ButtonEventMouseMode: DecMode; /** Sequence to set Button Event Mouse Tracking: `CSI ? 1002 h` */ declare const SetButtonEventMouseMode: string; /** Sequence to reset Button Event Mouse Tracking: `CSI ? 1002 l` */ declare const ResetButtonEventMouseMode: string; /** Sequence to request Button Event Mouse Tracking state: `CSI ? 1002 $ p` */ declare const RequestButtonEventMouseMode: string; /** * DEC Private Mode 1003: Any Event Mouse Tracking (All Motion Mouse Tracking). * Reports all mouse movements, regardless of button state (includes hover). * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking} */ declare const AnyEventMouseMode: DecMode; /** Sequence to set Any Event Mouse Tracking: `CSI ? 1003 h` */ declare const SetAnyEventMouseMode: string; /** Sequence to reset Any Event Mouse Tracking: `CSI ? 1003 l` */ declare const ResetAnyEventMouseMode: string; /** Sequence to request Any Event Mouse Tracking state: `CSI ? 1003 $ p` */ declare const RequestAnyEventMouseMode: string; /** * DEC Private Mode 1004: Focus Event Mode. * Reports terminal focus (FocusIn `CSI I`) and blur (FocusOut `CSI O`) events. * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Focus-Tracking} */ declare const FocusEventMode: DecMode; /** Sequence to set Focus Event Mode: `CSI ? 1004 h` */ declare const SetFocusEventMode: string; /** Sequence to reset Focus Event Mode: `CSI ? 1004 l` */ declare const ResetFocusEventMode: string; /** Sequence to request Focus Event Mode state: `CSI ? 1004 $ p` */ declare const RequestFocusEventMode: string; /** * DEC Private Mode 1005: UTF-8 Extended Mouse Mode. * Mouse coordinates are UTF-8 encoded if they exceed 95. * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking} */ declare const Utf8ExtMouseMode: DecMode; /** Sequence to set UTF-8 Extended Mouse Mode: `CSI ? 1005 h` */ declare const SetUtf8ExtMouseMode: string; /** Sequence to reset UTF-8 Extended Mouse Mode: `CSI ? 1005 l` */ declare const ResetUtf8ExtMouseMode: string; /** Sequence to request UTF-8 Extended Mouse Mode state: `CSI ? 1005 $ p` */ declare const RequestUtf8ExtMouseMode: string; /** * DEC Private Mode 1006: SGR Extended Mouse Mode. * Mouse events reported with SGR parameters: `CSI < Cb ; Cx ; Py M` (press) / `m` (release). * Robust and recommended for modern applications. * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking} */ declare const SgrExtMouseMode: DecMode; /** Sequence to set SGR Extended Mouse Mode: `CSI ? 1006 h` */ declare const SetSgrExtMouseMode: string; /** Sequence to reset SGR Extended Mouse Mode: `CSI ? 1006 l` */ declare const ResetSgrExtMouseMode: string; /** Sequence to request SGR Extended Mouse Mode state: `CSI ? 1006 $ p` */ declare const RequestSgrExtMouseMode: string; /** * DEC Private Mode 1015: URXVT Extended Mouse Mode. * Uses an alternate encoding for mouse tracking. * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking} */ declare const UrxvtExtMouseMode: DecMode; /** Sequence to set URXVT Extended Mouse Mode: `CSI ? 1015 h` */ declare const SetUrxvtExtMouseMode: string; /** Sequence to reset URXVT Extended Mouse Mode: `CSI ? 1015 l` */ declare const ResetUrxvtExtMouseMode: string; /** Sequence to request URXVT Extended Mouse Mode state: `CSI ? 1015 $ p` */ declare const RequestUrxvtExtMouseMode: string; /** * DEC Private Mode 1016: SGR Pixel Extended Mouse Mode. * Similar to SGR Extended Mode, but reports pixel coordinates. * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking} */ declare const SgrPixelExtMouseMode: DecMode; /** Sequence to set SGR Pixel Extended Mouse Mode: `CSI ? 1016 h` */ declare const SetSgrPixelExtMouseMode: string; /** Sequence to reset SGR Pixel Extended Mouse Mode: `CSI ? 1016 l` */ declare const ResetSgrPixelExtMouseMode: string; /** Sequence to request SGR Pixel Extended Mouse Mode state: `CSI ? 1016 $ p` */ declare const RequestSgrPixelExtMouseMode: string; /** * DEC Private Mode 1006: SGR Extended Mouse Mode (alias for SgrExtMouseMode). * Mouse events reported with SGR parameters: `CSI < Cb ; Cx ; Py M` (press) / `m` (release). * Robust and recommended for modern applications. * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking} */ declare const SGRMouseMode: DecMode; /** * DEC Private Mode 1004: Send Focus Events Mode (alias for FocusEventMode). * Reports terminal focus (FocusIn `CSI I`) and blur (FocusOut `CSI O`) events. * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Focus-Tracking} */ declare const SendFocusEventsMode: DecMode; /** * DEC Private Mode 1035: Disable Modifiers Mode. * Disables modifier key reporting in mouse events. * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking} */ declare const DisableModifiersMode: DecMode; /** Sequence to set Disable Modifiers Mode: `CSI ? 1035 h` */ declare const SetDisableModifiersMode: string; /** Sequence to reset Disable Modifiers Mode: `CSI ? 1035 l` */ declare const ResetDisableModifiersMode: string; /** Sequence to request Disable Modifiers Mode state: `CSI ? 1035 $ p` */ declare const RequestDisableModifiersMode: string; /** * DEC Private Mode 1047: Alternate Screen Mode. * Switches to alternate screen buffer and clears it. * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-The-Alternate-Screen-Buffer} */ declare const AltScreenMode: DecMode; /** Sequence to set Alternate Screen Mode: `CSI ? 1047 h` */ declare const SetAltScreenMode: string; /** Sequence to reset Alternate Screen Mode: `CSI ? 1047 l` */ declare const ResetAltScreenMode: string; /** Sequence to request Alternate Screen Mode state: `CSI ? 1047 $ p` */ declare const RequestAltScreenMode: string; /** * DEC Private Mode 1048: Save Cursor Mode. * Saves current cursor position (like DECSC). * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-The-Alternate-Screen-Buffer} */ declare const SaveCursorMode: DecMode; /** Sequence to set Save Cursor Mode: `CSI ? 1048 h` */ declare const SetSaveCursorMode: string; /** Sequence to reset Save Cursor Mode: `CSI ? 1048 l` */ declare const ResetSaveCursorMode: string; /** Sequence to request Save Cursor Mode state: `CSI ? 1048 $ p` */ declare const RequestSaveCursorMode: string; /** * DEC Private Mode 1049: Alternate Screen Save Cursor Mode. * Saves cursor, switches to alternate screen buffer, and clears screen. * Widely used by full-screen applications. * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-The-Alternate-Screen-Buffer} */ declare const AltScreenSaveCursorMode: DecMode; /** Sequence to set Alternate Screen Save Cursor Mode: `CSI ? 1049 h` */ declare const SetAltScreenSaveCursorMode: string; /** Sequence to reset Alternate Screen Save Cursor Mode: `CSI ? 1049 l` */ declare const ResetAltScreenSaveCursorMode: string; /** Sequence to request Alternate Screen Save Cursor Mode state: `CSI ? 1049 $ p` */ declare const RequestAltScreenSaveCursorMode: string; /** * DEC Private Mode 2004: Bracketed Paste Mode. * Encloses pasted text with `ESC [ 200 ~` and `ESC [ 201 ~`. * Allows applications to distinguish pasted text from typed text. * @see {@link https://cirw.in/blog/bracketed-paste} * @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Bracketed-Paste-Mode} */ declare const BracketedPasteMode: DecMode; /** Sequence to set Bracketed Paste Mode: `CSI ? 2004 h` */ declare const SetBracketedPasteMode: string; /** Sequence to reset Bracketed Paste Mode: `CSI ? 2004 l` */ declare const ResetBracketedPasteMode: string; /** Sequence to request Bracketed Paste Mode state: `CSI ? 2004 $ p` */ declare const RequestBracketedPasteMode: string; /** * DEC Private Mode 2026: Synchronized Output Mode. * Helps synchronize output with the terminal, preventing issues like screen tearing or garbled output * when rapid updates occur. The exact mechanism can vary (e.g., batching updates, waiting for vsync). * @see {@link https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036} */ declare const SynchronizedOutputMode: DecMode; /** Sequence to set Synchronized Output Mode: `CSI ? 2026 h` */ declare const SetSynchronizedOutputMode: string; /** Sequence to reset Synchronized Output Mode: `CSI ? 2026 l` */ declare const ResetSynchronizedOutputMode: string; /** Sequence to request Synchronized Output Mode state: `CSI ? 2026 $ p` */ declare const RequestSynchronizedOutputMode: string; /** * DEC Private Mode 2027: Unicode Core Mode. * Determines whether the terminal should use Unicode grapheme clustering to calculate * the width of glyphs for each terminal cell. * @see {@link https://github.com/contour-terminal/terminal-unicode-core} */ declare const UnicodeCoreMode: DecMode; /** Sequence to set Unicode Core Mode: `CSI ? 2027 h` */ declare const SetUnicodeCoreMode: string; /** Sequence to reset Unicode Core Mode: `CSI ? 2027 l` */ declare const ResetUnicodeCoreMode: string; /** Sequence to request Unicode Core Mode state: `CSI ? 2027 $ p` */ declare const RequestUnicodeCoreMode: string; /** * DEC Private Mode 2027: Grapheme Clustering Mode. * Instructs the terminal to treat grapheme clusters as single units for rendering and cursor movement. * Important for correct display of complex scripts and emojis. * @deprecated Use {@link UnicodeCoreMode} instead. * @see {@link https://github.com/contour-terminal/terminal-unicode-core} */ declare const GraphemeClusteringMode: DecMode; /** @deprecated Use {@link SetUnicodeCoreMode} instead. */ declare const SetGraphemeClusteringMode: string; /** @deprecated Use {@link ResetUnicodeCoreMode} instead. */ declare const ResetGraphemeClusteringMode: string; /** @deprecated Use {@link RequestUnicodeCoreMode} instead. */ declare const RequestGraphemeClusteringMode: string; /** * DEC Private Mode 9001: Win32 Input Mode. * Relevant for Windows conPTY, influencing how keyboard input is processed and translated. * @see {@link https://github.com/microsoft/terminal/blob/main/doc/specs/%234999%20-%20Improved%20keyboard%20handling%20in%20Conpty.md} */ declare const Win32InputMode: DecMode; /** Sequence to set Win32 Input Mode: `CSI ? 9001 h` */ declare const SetWin32InputMode: string; /** Sequence to reset Win32 Input Mode: `CSI ? 9001 l` */ declare const ResetWin32InputMode: string; /** Sequence to request Win32 Input Mode state: `CSI ? 9001 $ p` */ declare const RequestWin32InputMode: string; /** * DEC Private Mode 2031: Light/Dark Mode. * Enables reporting the operating system's color scheme (light or dark) preference. * Reports the color scheme as DSR sequences encoded as follows: * - `CSI ? 997 ; 1 n` for dark mode * - `CSI ? 997 ; 2 n` for light mode * The color preference can also be requested via `CSI ? 996 n`. * @see {@link https://contour-terminal.org/vt-extensions/color-palette-update-notifications/} */ declare const LightDarkMode: DecMode; /** Sequence to set Light/Dark Mode: `CSI ? 2031 h` */ declare const SetLightDarkMode: string; /** Sequence to reset Light/Dark Mode: `CSI ? 2031 l` */ declare const ResetLightDarkMode: string; /** Sequence to request Light/Dark Mode state: `CSI ? 2031 $ p` */ declare const RequestLightDarkMode: string; /** * DEC Private Mode 2048: In-Band Resize Mode. * Reports terminal resize events as escape sequences. * This is useful for systems that do not support SIGWINCH like Windows. * The terminal sends: `CSI 48 ; cellsHeight ; cellsWidth ; pixelHeight ; pixelWidth t` * @see {@link https://gist.github.com/rockorager/e695fb2924d36b2bcf1fff4a3704bd83} */ declare const InBandResizeMode: DecMode; /** Sequence to set In-Band Resize Mode: `CSI ? 2048 h` */ declare const SetInBandResizeMode: string; /** Sequence to reset In-Band Resize Mode: `CSI ? 2048 l` */ declare const ResetInBandResizeMode: string; /** Sequence to request In-Band Resize Mode state: `CSI ? 2048 $ p` */ declare const RequestInBandResizeMode: string; export { AltScreenMode, AltScreenSaveCursorMode, AnsiMode, AnyEventMouseMode, AutoWrapMode, BDSM, BackarrowKeyMode, BiDirectionalSupportMode, BracketedPasteMode, ButtonEventMouseMode, CursorKeysMode, DECAWM, DECBKM, DECCKM, DECLRMM, DECNKM, DECOM, DECRPM, DECRQM, DECTCEM, DecMode, DisableModifiersMode, FocusEventMode, GraphemeClusteringMode, HideCursor, HighlightMouseMode, IRM, InBandResizeMode, InsertReplaceMode, KAM, KeyboardActionMode, LNM, LeftRightMarginMode, LightDarkMode, LineFeedNewLineMode, LocalEchoMode, Mode, ModeSetting, NormalMouseMode, NumericKeypadMode, OriginMode, RM, RequestAltScreenMode, RequestAltScreenSaveCursorMode, RequestAnyEventMouseMode, RequestAutoWrapMode, RequestBackarrowKeyMode, RequestBiDirectionalSupportMode, RequestBracketedPasteMode, RequestButtonEventMouseMode, RequestCursorKeysMode, RequestDisableModifiersMode, RequestFocusEventMode, RequestGraphemeClusteringMode, RequestHighlightMouseMode, RequestInBandResizeMode, RequestInsertReplaceMode, RequestKeyboardActionMode, RequestLeftRightMarginMode, RequestLightDarkMode, RequestLineFeedNewLineMode, RequestLocalEchoMode, RequestNormalMouseMode, RequestNumericKeypadMode, RequestOriginMode, RequestSaveCursorMode, RequestSendReceiveMode, RequestSgrExtMouseMode, RequestSgrPixelExtMouseMode, RequestSynchronizedOutputMode, RequestTextCursorEnableMode, RequestUnicodeCoreMode, RequestUrxvtExtMouseMode, RequestUtf8ExtMouseMode, RequestWin32InputMode, RequestX10MouseMode, ResetAltScreenMode, ResetAltScreenSaveCursorMode, ResetAnyEventMouseMode, ResetAutoWrapMode, ResetBackarrowKeyMode, ResetBiDirectionalSupportMode, ResetBracketedPasteMode, ResetButtonEventMouseMode, ResetCursorKeysMode, ResetDisableModifiersMode, ResetFocusEventMode, ResetGraphemeClusteringMode, ResetHighlightMouseMode, ResetInBandResizeMode, ResetInsertReplaceMode, ResetKeyboardActionMode, ResetLeftRightMarginMode, ResetLightDarkMode, ResetLineFeedNewLineMode, ResetLocalEchoMode, ResetNormalMouseMode, ResetNumericKeypadMode, ResetOriginMode, ResetSaveCursorMode, ResetSendReceiveMode, ResetSgrExtMouseMode, ResetSgrPixelExtMouseMode, ResetSynchronizedOutputMode, ResetTextCursorEnableMode, ResetUnicodeCoreMode, ResetUrxvtExtMouseMode, ResetUtf8ExtMouseMode, ResetWin32InputMode, ResetX10MouseMode, SGRMouseMode, SM, SRM, SaveCursorMode, SendFocusEventsMode, SendReceiveMode, SetAltScreenMode, SetAltScreenSaveCursorMode, SetAnyEventMouseMode, SetAutoWrapMode, SetBackarrowKeyMode, SetBiDirectionalSupportMode, SetBracketedPasteMode, SetButtonEventMouseMode, SetCursorKeysMode, SetDisableModifiersMode, SetFocusEventMode, SetGraphemeClusteringMode, SetHighlightMouseMode, SetInBandResizeMode, SetInsertReplaceMode, SetKeyboardActionMode, SetLeftRightMarginMode, SetLightDarkMode, SetLineFeedNewLineMode, SetLocalEchoMode, SetNormalMouseMode, SetNumericKeypadMode, SetOriginMode, SetSaveCursorMode, SetSendReceiveMode, SetSgrExtMouseMode, SetSgrPixelExtMouseMode, SetSynchronizedOutputMode, SetTextCursorEnableMode, SetUnicodeCoreMode, SetUrxvtExtMouseMode, SetUtf8ExtMouseMode, SetWin32InputMode, SetX10MouseMode, SgrExtMouseMode, SgrPixelExtMouseMode, ShowCursor, SynchronizedOutputMode, TextCursorEnableMode, UnicodeCoreMode, UrxvtExtMouseMode, Utf8ExtMouseMode, Win32InputMode, X10MouseMode, createAnsiMode, createDecMode, isModeNotRecognized, isModePermanentlyReset, isModePermanentlySet, isModeReset, isModeSet, reportMode, requestMode, resetMode, setMode };