import type { PermissionDecision, PermissionDecisionReason, PermissionMode } from "../../permission/index.js";
import type { PilotDeckToolErrorCode } from "../protocol/errors.js";

export type PilotDeckPermissionAuditRecord = {
  type: "permission";
  sessionId: string;
  turnId: string;
  toolCallId: string;
  toolName: string;
  mode: PermissionMode;
  decision: PermissionDecision["type"];
  reason: PermissionDecisionReason;
  createdAt: string;
};

export type PilotDeckToolAuditRecord = {
  type: "tool";
  sessionId: string;
  turnId: string;
  toolCallId: string;
  toolName: string;
  status: "success" | "error";
  errorCode?: PilotDeckToolErrorCode;
  startedAt: string;
  completedAt: string;
  durationMs: number;
};

export type PilotDeckToolAuditRecorder = {
  recordPermission(record: PilotDeckPermissionAuditRecord): void | Promise<void>;
  recordTool(record: PilotDeckToolAuditRecord): void | Promise<void>;
};