import { type TCard } from '../types/index.js'; /** * Pure utility functions for zone operations. * These return new arrays instead of mutating, making them safe for use in reducers. */ /** * Shuffle an array of cards using Fisher-Yates. Returns a new array. */ export declare function shuffleCards(cards: TCard[]): TCard[]; /** * Draw cards from the top of a zone (end of array). * Returns [drawnCards, remainingCards]. */ export declare function drawCards(cards: TCard[], count: number): [TCard[], TCard[]]; /** * Add a card to a zone. Returns a new array. */ export declare function addCard(cards: TCard[], card: TCard): TCard[]; /** * Add multiple cards to a zone. Returns a new array. */ export declare function addCards(cards: TCard[], newCards: TCard[]): TCard[]; /** * Remove a card by ID from a zone. Returns a new array. */ export declare function removeCard(cards: TCard[], cardId: string): TCard[]; /** * Find a card by ID in a zone. */ export declare function findCard(cards: TCard[], cardId: string): TCard | undefined; /** * Cut a deck at the given index. Returns a new array with bottom portion on top. */ export declare function cutDeck(cards: TCard[], index: number): TCard[]; export type Zone = { name: string; cards: TCard[]; addCard(card: TCard): void; removeCard(card: TCard): void; shuffle(): void; }; export declare class StandardZone implements Zone { name: string; cards: TCard[]; constructor(name: string, cards?: TCard[]); addCard(card: TCard): void; removeCard(card: TCard): void; shuffle(): void; } export declare class Deck extends StandardZone { constructor(cards?: TCard[]); drawCard(): TCard | undefined; drawCards(count: number): TCard[]; } export declare class Hand extends StandardZone { constructor(cards?: TCard[]); } export declare class DiscardPile extends StandardZone { constructor(cards?: TCard[]); } export declare class PlayArea extends StandardZone { constructor(cards?: TCard[]); }