export type StorageErrorCode = 'storage/unauthenticated' | 'storage/unauthorized' | 'storage/object-not-found' | 'storage/object-already-exists' | 'storage/invalid-path' | 'storage/invalid-file' | 'storage/invalid-format' | 'storage/invalid-metadata' | 'storage/invalid-checksum' | 'storage/quota-exceeded' | 'storage/upload-session-expired' | 'storage/retry-limit-exceeded' | 'storage/canceled' | 'storage/conflict' | 'storage/network-error' | 'storage/server-error'; export interface StorageMetadata { name: string; bucket: string; generation: string; metageneration: string; fullPath: string; size: number; timeCreated: string; updated: string; md5Hash?: string; cacheControl?: string; contentDisposition?: string; contentEncoding?: string; contentLanguage?: string; contentType?: string; customMetadata?: Record; downloadTokens?: string; } export interface UploadMetadata { md5Hash?: string; cacheControl?: string; contentDisposition?: string; contentEncoding?: string; contentLanguage?: string; contentType?: string; customMetadata?: Record; } export type SettableMetadata = UploadMetadata; export type StringFormat = 'raw' | 'base64' | 'base64url' | 'data_url'; export type TaskState = 'running' | 'paused' | 'success' | 'canceled' | 'error'; export interface UploadTaskSnapshot { bytesTransferred: number; totalBytes: number; state: TaskState; metadata?: StorageMetadata; task: any; ref: any; } export interface UploadResult { bytesTransferred: number; totalBytes: number; state: TaskState; metadata?: StorageMetadata; ref: any; } export interface ListOptions { maxResults?: number; pageToken?: string; } export interface ListResult { items: any[]; prefixes: any[]; nextPageToken?: string; }