pub mod achievement; pub mod error; pub mod game_state; pub mod klondike_adapter; pub mod scoring; pub mod spider; // Re-export the upstream types that cross the solitaire_core API boundary so // downstream crates (engine, wasm) can import from one place without a direct // `klondike` / `card_game` dep. // // `KlondikePileStack`, `SkipCards` and `TableauStack` are intentionally NOT // re-exported — they are only used internally (in `klondike_adapter.rs` and // when decoding instructions to piles in `instruction_to_piles`) and do not // appear in any public method signature. pub use card_game::{Card, Deck, Rank, SolveError, Suit}; pub use klondike::{ DrawStockConfig, Foundation, Klondike, KlondikeInstruction, KlondikePile, Tableau, }; // Solvability check API (delegates to `card_game::Session::solve`); replaces the // former `solitaire_data::solver` wrapper module. pub use game_state::{ DEFAULT_SOLVE_MOVES_BUDGET, DEFAULT_SOLVE_STATES_BUDGET, SessionRecording, SolveOutcome, }; // Spider rules (second `card_game::Game` implementation; engine UI is a // later phase — nothing outside solitaire_core consumes these yet). pub use spider::{ RunLength, Spider, SpiderConfig, SpiderGameState, SpiderInstruction, SpiderIter, SpiderMove, SpiderScoring, SpiderStats, SpiderSuits, SpiderTableau, }; /// All four foundation slots, in slot order. /// /// Canonical iteration source for `Foundation` — upstream `klondike` has no /// `Foundation::ALL` (unlike `Suit::SUITS` / `Rank::RANKS` in `card_game`), /// and inherent impls cannot be added to a foreign type, so the workspace /// const lives here. Use this instead of hand-rolling `[Foundation; 4]` /// arrays; scattered copies can silently diverge. pub const FOUNDATIONS: [Foundation; 4] = [ Foundation::Foundation1, Foundation::Foundation2, Foundation::Foundation3, Foundation::Foundation4, ]; /// All seven tableau columns, in column order (left to right on screen). /// /// Canonical iteration source for `Tableau` — see [`FOUNDATIONS`] for why /// this lives here rather than upstream. pub const TABLEAUS: [Tableau; 7] = [ Tableau::Tableau1, Tableau::Tableau2, Tableau::Tableau3, Tableau::Tableau4, Tableau::Tableau5, Tableau::Tableau6, Tableau::Tableau7, ]; #[cfg(test)] mod proptest_tests;