/**
 * Track keyboard state
 */
export declare function useKeyboard(options?: KeyboardOptions): KeyboardRef;
/**
 * Register a hotkey handler
 */
export declare function useHotkey(hotkey: string | string[], callback: HotkeyCallback, options?: HotkeyOptions): () => void;
/**
 * Check if a specific key is currently pressed
 */
export declare function useKeyPressed(key: string, options?: KeyboardOptions): {
  get: () => boolean
  subscribe: (fn: (pressed: boolean) => void) => () => void
};
/**
 * Detect key sequences (like Konami code)
 */
export declare function useKeySequence(sequence: string[], callback: () => void, options?: { timeout?: number; target?: Window | HTMLElement | Document | null }): () => void;
/**
 * Common keyboard shortcuts helper
 */
export declare const shortcuts: {
  save: 'ctrl+s';
  undo: 'ctrl+z';
  redo: 'ctrl+shift+z';
  copy: 'ctrl+c';
  paste: 'ctrl+v';
  cut: 'ctrl+x';
  selectAll: 'ctrl+a';
  find: 'ctrl+f';
  replace: 'ctrl+h';
  newTab: 'ctrl+t';
  closeTab: 'ctrl+w';
  refresh: 'ctrl+r';
  escape: 'escape';
  enter: 'enter';
  saveMac: 'meta+s';
  undoMac: 'meta+z';
  redoMac: 'meta+shift+z';
  copyMac: 'meta+c';
  pasteMac: 'meta+v';
  cutMac: 'meta+x'
};
/**
 * useKeyboard - Reactive keyboard input tracking
 *
 * Track keyboard state, handle hotkeys, and manage keyboard shortcuts.
 *
 * @example
 * ```ts
 * // Track all keyboard state
 * const keyboard = useKeyboard()
 * keyboard.subscribe(state => {
 *   if (state.ctrl && state.pressed.has('s')) {
 *     console.log('Ctrl+S pressed!')
 *   }
 * })
 *
 * // Simple hotkey
 * useHotkey('ctrl+s', (e) => {
 *   e.preventDefault()
 *   save()
 * })
 *
 * // Check if specific key is pressed
 * const isSpacePressed = useKeyPressed('Space')
 * ```
 */
export declare interface KeyboardState {
  pressed: Set<string>
  lastKey: string | null
  lastEvent: KeyboardEvent | null
  ctrl: boolean
  alt: boolean
  shift: boolean
  meta: boolean
  timestamp: number
}
export declare interface KeyboardOptions {
  target?: Window | HTMLElement | Document | null
  capture?: boolean
  passive?: boolean
}
export declare interface KeyboardRef {
  get: () => KeyboardState
  subscribe: (fn: (state: KeyboardState) => void) => () => void
  isPressed: (key: string) => boolean
  stop: () => void
}
export declare interface HotkeyOptions {
  target?: Window | HTMLElement | Document | null
  preventDefault?: boolean
  stopPropagation?: boolean
  ignoreRepeat?: boolean
  keyup?: boolean
  ignoreInputs?: boolean
}
// eslint-disable-next-line pickier/no-unused-vars
declare type HotkeyCallback = (event: KeyboardEvent) => void;
