type UploadStatus = 'pending' | 'ready' | 'uploading' | 'completed' | 'error'; interface UploadItem { id: string; file: File; relativePath?: string; folderPath: string; folderNo?: string; status: UploadStatus; progress: number; previewUrl?: string; error?: string; info?: string; uploadedAt?: Date; response?: UploadedFileResponse; } interface UploadedFileResponse { file_no: string; name: string; url: string; file_size: number; folder_no?: string; path?: string; width?: number | null; height?: number | null; format?: string; workspace_no?: string; } interface UploadSuccessFile { id: string; previewUrl?: string; file_no: string; name: string; url: string; input_file_size: number; output_file_size: number; path?: string; width?: number | null; height?: number | null; format?: string; workspace_no?: string; uploadedAt?: string; } interface ThemeOptions { appearance?: 'light' | 'dark' | 'system'; accentColor?: string; borderRadius?: number; fontFamily?: string; dropzoneBackground?: string; dropzoneBorder?: string; } type IconRenderer = string | HTMLElement | (() => string | HTMLElement); interface IconSet { upload?: IconRenderer; success?: IconRenderer; error?: IconRenderer; remove?: IconRenderer; close?: IconRenderer; } interface LabelSet { title?: string; description?: string; selectButton?: string; selectFolderButton?: string; uploadButton?: string; uploading?: string; uploadComplete?: string; uploadFailed?: string; retry?: string; remove?: string; addMore?: string; done?: string; clear?: string; cancel?: string; dropzoneTitle?: string; duplicateFileExists?: string; duplicateFilesExist?: string; duplicateFileError?: string; invalidApiKey?: string; } interface UploaderClassNames { root?: string; triggerButton?: string; dropzone?: string; uploadButton?: string; fileList?: string; modal?: string; summary?: string; header?: string; } interface UploadSourceOption { id: string; label: string; icon?: IconRenderer; kind?: 'device' | 'camera' | 'facebook' | 'google-drive' | (string & {}); action?: () => void; disabled?: boolean; } interface UploadSettings { pretransformations?: string; tags?: string[]; random_suffix?: boolean; custom_id?: string; } type Palette = 'at-blue' | 'at-purple' | 'at-red' | 'at-orange' | 'at-green' | 'at-turquoise' | 'at-gray'; interface CreateUploaderOptions { apiKey: string; target: string | HTMLElement; container?: string | HTMLElement; uploadBaseUrl?: string; assetDeliveryBaseUrl?: string; width?: string | number; folderPath?: string; autoUpload?: boolean; allowMultiple?: boolean; accept?: string[]; parallelUploads?: number; type?: 'button' | 'inline'; theme?: 'light' | 'dark' | 'system'; palette?: Palette; classNames?: UploaderClassNames; sources?: string | string[]; fileLayout?: 'list' | 'grid'; showGridFileName?: boolean; labels?: LabelSet; uploadSettings?: UploadSettings; onSourceSelect?: (source: UploadSourceOption) => void; onProgress?: (progress: number, items: UploadItem[]) => void; onFileProgress?: (item: UploadItem) => void; onError?: (error: Error, context?: unknown) => void; onSuccess?: (files: UploadSuccessFile[]) => void; } interface UploaderInstance { openFileDialog: () => void; startUpload: () => Promise; reset: () => void; destroy: () => void; updateOptions: (options: Partial) => void; getState: () => { items: UploadItem[]; isUploading: boolean; progress: number; duplicates: string[]; }; } interface PresignPayload { folder_no?: string; path?: string; files: Array<{ name: string; contentType: string; size: number; }>; } interface CompleteUploadPayload { uploaded: Array<{ file_no: string; key: string; name: string; size: number; contentType: string; folder_no?: string; }>; } interface ApiFolderRequest { name: string; parent_folder_no?: string; } interface PresignedFile { file_no: string; key: string; uploadUrl: string; expiresIn: number; folder_no?: string; } interface PresignResponse { presigned: PresignedFile[]; duplicates?: string[]; } interface CompleteUploadResponse { files: UploadedFileResponse[]; } interface IngestSuccessResponse { success: true; isDuplicate?: boolean; file_no: string; name: string; url: string; file_size: number; format?: string; width?: number | null; height?: number | null; created_at: string | Date; path: string; workspace_no: string; folder_no?: string; } interface IngestErrorResponse { success: false; errorCode?: string; message?: string; } type AppRunnerResponse = IngestSuccessResponse | IngestErrorResponse; declare class AutorenderAuthError extends Error { constructor(message: string); } declare class AutorenderUploadError extends Error { statusCode: number; constructor(message: string, statusCode: number); } declare class AutorenderNetworkError extends Error { constructor(message: string); } declare function createUploader(options: CreateUploaderOptions): UploaderInstance; declare function registerAutorenderUploaderElement(): void; export { type ApiFolderRequest, type AppRunnerResponse, AutorenderAuthError, AutorenderNetworkError, AutorenderUploadError, type CompleteUploadPayload, type CompleteUploadResponse, type CreateUploaderOptions, type IconRenderer, type IconSet, type IngestErrorResponse, type IngestSuccessResponse, type LabelSet, type Palette, type PresignPayload, type PresignResponse, type PresignedFile, type ThemeOptions, type UploadItem, type UploadSettings, type UploadSourceOption, type UploadStatus, type UploadSuccessFile, type UploadedFileResponse, type UploaderClassNames, type UploaderInstance, createUploader, registerAutorenderUploaderElement };