export interface ComboPointsConfig { max: number; expireAfterSeconds?: number; } /** Complete serializable state for {@link ComboPoints}; `remaining: null` means no expiry is running. */ export interface ComboPointsSnapshot { points: number; remaining: number | null; max: number; expireAfterSeconds: number | null; } export interface ComboPoints { points(): number; gain(amount?: number): number; spend(amount: number): boolean; spendAll(): number; tick(dtSeconds: number): void; expiresIn(): number | null; clear(): void; /** The whole builder as plain data — save it, ship it to a host, diff it in a test. */ snapshot(): ComboPointsSnapshot; /** Adopt a snapshot, replacing points, expiry, and tuning. */ restore(state: ComboPointsSnapshot): void; } /** * Build and spend finisher points — the combo-point economy behind rogue-style builders and spenders. * * @capability combo-points build up and spend finisher/combo points */ export declare function createComboPoints(config: ComboPointsConfig): ComboPoints;