/** * Per-group trigger state, packed into one byte. * * A "group" is one distinct set of source ids referenced by a trigger. Everything * any trigger needs to know about a group is which outcome landed *first*, whether * anything crit, and whether anything missed — so the whole turn state is one byte * per group and the state space stays small (12 codes per group, ~10 reachable). * * Layout: `first << 2 | anyCrit << 1 | anyMiss`, where `first` is one of * {@link FIRST_NONE} / {@link FIRST_HIT} / {@link FIRST_CRIT}. Readers decode with * `code >> 2`, `code & CRIT_BIT`, `code & MISS_BIT`. */ export declare const FIRST_NONE = 0; export declare const FIRST_HIT = 1; export declare const FIRST_CRIT = 2; export declare const CRIT_BIT = 2; export declare const MISS_BIT = 1; /** A group that has seen nothing yet: no first landing, no crit, no miss. */ export declare const START_CODE: number; export type StepOutcome = "hit" | "crit" | "miss"; /** Fold one source outcome into a group's state. */ export declare function advance(code: number, outcome: StepOutcome): number; //# sourceMappingURL=state.d.ts.map