/**
 * Storage provider interface for image uploads
 * Allows extending apps to implement custom storage providers
 */
export interface StorageProvider {
  /**
   * Upload a file and return its public URL
   * @param key - The storage key/path for the file
   * @param blob - The file blob to upload
   * @param options - Additional upload options
   * @returns The public URL of the uploaded file
   */
  upload(key: string, blob: Blob, options?: StorageUploadOptions): Promise<string>
}

export interface StorageUploadOptions {
  /**
   * Access level for the uploaded file
   * @default 'public'
   */
  access?: 'public' | 'private'
  /**
   * Content type of the file
   */
  contentType?: string
}

/**
 * Storage provider type
 */
export type StorageProviderType = 'vercel-blob' | 'fly-io' | 'custom'
