/**
 * Interface de stockage de fichiers (ADR-001) : MinIO n'est JAMAIS importé
 * ailleurs que dans son implémentation (règle ESLint) — le reste de l'API
 * dépend de cette interface. R3 : la bibliothèque de documents l'utilise ;
 * les téléchargements sont STREAMÉS par l'API (MinIO n'est pas exposé).
 */
export const FILE_STORAGE = Symbol('FILE_STORAGE');

export interface FileStorage {
  /** Lève une exception si le stockage est injoignable. */
  healthCheck(): Promise<void>;
  putObject(key: string, body: Buffer, contentType: string): Promise<void>;
  getObjectStream(key: string): Promise<NodeJS.ReadableStream>;
  removeObject(key: string): Promise<void>;
}
