export interface S3UploadResult {
  key: string;
  url: string;
  bucket: string;
}

export interface S3UploadOptions {
  contentType: string;
  metadata?: Record<string, string>;
  acl?: 'private' | 'public-read' | 'public-read-write';
}

export interface S3DownloadOptions {
  expiresIn?: number;
  responseContentType?: string;
  responseContentDisposition?: string;
}

export interface S3FileInfo {
  key: string;
  bucket: string;
  size: number;
  lastModified: Date;
  contentType: string;
  etag: string;
}

export interface S3DeleteResult {
  deleted: boolean;
  key: string;
}

export interface S3ListResult {
  files: S3FileInfo[];
  continuationToken?: string;
  isTruncated: boolean;
}
