export type Slot = T | null; export type SlotGrid = readonly Slot[]; export type SlotResult = { status: "ok"; grid: Slot[]; } | { status: "rejected"; reason: "invalid-slot" | "slot-occupied" | "empty-slot"; }; /** @internal */ export declare function createSlots(size: number): Slot[]; /** @internal */ export declare function normalizeSlots(values: SlotGrid, size: number): Slot[]; /** @internal */ export declare function placeAt(grid: SlotGrid, index: number, value: T): SlotResult; /** @internal */ export declare function removeAt(grid: SlotGrid, index: number): SlotResult; /** @internal */ export declare function moveSlot(grid: SlotGrid, from: number, to: number): SlotResult; /** @internal */ export declare function firstEmpty(grid: SlotGrid): number | null; /** @internal */ export declare function insertFirst(grid: SlotGrid, value: T): SlotResult; /** @internal */ export declare function compactSlots(grid: SlotGrid): Slot[]; /** @internal */ export declare function countFilled(grid: SlotGrid): number; /** @internal */ export declare function indexOfSlot(grid: SlotGrid, match: (value: T, index: number) => boolean): number | null;