import { MediaAsset, MediaListParams, MediaListResult, MediaUploadOptions } from './models/media-asset.model';

export abstract class MediaRepository {
  abstract list(params?: MediaListParams): Promise<MediaListResult>;
  abstract upload(file: File, options?: MediaUploadOptions): Promise<MediaAsset>;
  abstract remove(id: string): Promise<void>;
  abstract update(id: string, patch: Partial<Pick<MediaAsset, 'altText' | 'tags' | 'folder' | 'caption' | 'description' | 'decorative'>>): Promise<MediaAsset>;
  abstract listFolders(): Promise<string[]>;
}
