//! Vim mode key resolvers.
//!
//! Implements Vim-style key handling policy for each mode:
//! - Normal: count prefixes, register selection, operator entry
//! - Insert: character insertion, escape handling
//! - `CommandLine`: input capture for `:`, `/`, `?`
//! - Delete/Yank/Change: dedicated operator modes
//!
//! # Architecture (Epic #415, #417)
//!
//! Each operator has its own dedicated mode and resolver:
//! - `VimDeleteResolver` for `vim:delete` mode
//! - `VimYankResolver` for `vim:yank` mode
//! - `VimChangeResolver` for `vim:change` mode
//!
//! Benefits:
//! - Mode carries operator semantics (no runtime lookup)
//! - Each resolver is focused (~300 lines)
//! - Statusline shows "DELETE"/"YANK"/"CHANGE"

mod case;
mod change;
mod commandline;
mod delete;
mod insert;
mod normal;
pub mod operator_common;
mod replace;
mod visual;
mod window;
mod yank;

// Dedicated operator resolvers (Epic #415)
pub use {change::VimChangeResolver, delete::VimDeleteResolver, yank::VimYankResolver};

// Case operator resolver (#666)
pub use case::VimCaseResolver;

// Replace mode resolver (#666)
pub use replace::VimReplaceResolver;

// Window mode resolver (Epic #438)
pub use window::VimWindowResolver;

// Visual mode resolver (#465 - Bug fix: Visual mode key handling)
pub use visual::VimVisualResolver;

// Other resolvers
pub use {
    commandline::VimCommandLineResolver, insert::VimInsertResolver, normal::VimNormalResolver,
};

#[cfg(test)]
mod tests;
