import type { CausationId, CorrelationId, OperationId } from "@awp/contracts";

export interface TraceContext {
  readonly correlationId: CorrelationId;
  readonly causationId?: CausationId;
  readonly operationId?: OperationId;
}
export interface DiagnosticEvent {
  readonly name: string;
  readonly occurredAt: string;
  readonly context: TraceContext;
  readonly attributes: Readonly<Record<string, string | number | boolean>>;
}
export interface DiagnosticSink {
  emit(event: DiagnosticEvent): void;
}
export const noOpDiagnosticSink: DiagnosticSink = { emit: () => undefined };
