import type {
  ApprovalId,
  AuditRecordId,
  CorrelationId,
  DecisionId,
  PrincipalId,
  ProjectId,
} from "./ids.js";

export type AuditDisposition = "allowed" | "denied" | "failed";

export interface AuditRecord {
  readonly id: AuditRecordId;
  readonly occurredAt: string;
  readonly principalId: PrincipalId;
  readonly action: string;
  readonly targetType: string;
  readonly targetId: string;
  readonly projectId?: ProjectId;
  readonly disposition: AuditDisposition;
  readonly policyId?: string;
  readonly policyRevision?: number;
  readonly decisionId?: DecisionId;
  readonly approvalId?: ApprovalId;
  readonly correlationId: CorrelationId;
  readonly safeMetadata: Readonly<Record<string, string | number | boolean | null>>;
}
