export type DownedPhase = "alive" | "downed" | "dead"; export interface DownedConfig { bleedoutSeconds: number; reviveSeconds?: number; reviveHealthFraction?: number; banner?: { expireSeconds: number; }; } export interface DownedEntry { phase: DownedPhase; bleedoutRemaining: number; reviveProgress: number; bannerRemaining: number | null; } export type DownedEventKind = "downed" | "revived" | "reviving" | "died" | "banner.created" | "banner.expired" | "respawned"; export interface DownedEvent { kind: DownedEventKind; instanceId: string; reason?: string; reviveHealthFraction?: number; } export interface DownedState { down(instanceId: string): DownedEvent | null; revive(instanceId: string, dt: number): DownedEvent | null; interruptRevive(instanceId: string): void; finish(instanceId: string, reason?: string): DownedEvent | null; tick(dt: number): DownedEvent[]; respawnFromBanner(instanceId: string): DownedEvent | null; phase(instanceId: string): DownedPhase; get(instanceId: string): DownedEntry | null; clear(instanceId: string): void; snapshot(): Record; } /** * A downed/bleed-out state that ticks toward death and that teammates can revive before the timer runs out. * * @capability downed-revive a downed/bleed-out state teammates can revive before death */ export declare function createDownedState(config: DownedConfig): DownedState;