export type StorageBackendKindLite = 'LOCAL' | 'ONEDRIVE' | 'S3' | 'GOOGLE_DRIVE';

export interface UploadInput {
  organizationId: string;
  userId: string;
  bindingId: string;
  path: string; // 相对路径（含目录 + 文件名）
  content: Buffer;
  mimeType?: string;
}

export interface UploadResult {
  fileId: string;
  externalId?: string;
  sizeBytes: number;
  sha256: string;
}

export interface DownloadInput {
  organizationId: string;
  fileId: string;
}

export interface ListInput {
  bindingId: string;
  organizationId: string;
  prefix?: string;
  limit?: number;
}

export interface StorageAdapter {
  readonly kind: StorageBackendKindLite;
  isConfigured(config: Record<string, unknown>, encryptedSecret: string | null): boolean;
  upload(args: { config: Record<string, unknown>; encryptedSecret: string | null; path: string; content: Buffer }): Promise<{ externalId?: string }>;
  download(args: { config: Record<string, unknown>; encryptedSecret: string | null; path: string; externalId?: string }): Promise<Buffer>;
}
