24 lines
785 B
TypeScript
24 lines
785 B
TypeScript
export interface RotationDecisionTelemetryEvent {
|
|
readonly occurredAt: number;
|
|
readonly actorId: string;
|
|
readonly abilityId: string;
|
|
readonly targetId: string | null;
|
|
readonly profileId: string;
|
|
readonly ruleId: string;
|
|
readonly reason: string;
|
|
}
|
|
|
|
type RotationDecisionListener = (event: RotationDecisionTelemetryEvent) => void;
|
|
|
|
const listeners = new Set<RotationDecisionListener>();
|
|
|
|
export function subscribeRotationDecisions(listener: RotationDecisionListener): () => void {
|
|
listeners.add(listener);
|
|
return () => listeners.delete(listener);
|
|
}
|
|
|
|
/** Observational only: listeners cannot alter or delay the selected action. */
|
|
export function emitRotationDecision(event: RotationDecisionTelemetryEvent): void {
|
|
for (const listener of listeners) listener(event);
|
|
}
|