import type { PersonControls } from "./animationHelper";
import type { ChoreoBuilder } from "./choreoDSL";
/** Score event emitted on the score bus. */
export type ScoreEvent = {
    score: number;
    at: number;
};
type ScoreHandler = (e: ScoreEvent) => void;
declare class ScoreBus {
    private target;
    push(score: number): void;
    subscribe(handler: ScoreHandler): () => void;
}
/** Shared score event bus. */
export declare const scoreBus: ScoreBus;
export type ScoreListenerOptions = {
    minIntervalMs?: number;
    dedupeWindowMs?: number;
    roundTo?: number;
};
/** Subscribe to score events with throttling + dedup. */
export declare function onScore(handler: (score: number) => void, opts?: ScoreListenerOptions): () => void;
/** Map a score to a reaction choreography. */
export declare function reactionForScore(score: number, rng?: () => number): ChoreoBuilder;
/** Play intro choreography for actors. */
export declare function playIntro(actors: PersonControls[]): Promise<void>;
/** Emit a score event for testing. */
export declare const simulateScore: (score: number) => void;
/** Attach score reactions to actors. */
export declare function attachScoreReactions(actors: PersonControls[], opts?: ScoreListenerOptions, rng?: () => number): () => void;
export {};
