import type { AssetType, AssetManifest } from '../core/types'; import { EventBus } from '../core/EventBus'; import type { World } from '../ecs/World'; export interface AssetMetadata { id: string; name: string; type: AssetType; /** Relative path inside project. */ path: string; size: number; mimeType: string; tags: string[]; thumbnailDataUrl?: string; createdAt: number; modifiedAt: number; } export interface AssetFolder { name: string; path: string; children: (AssetFolder | AssetMetadata)[]; } export declare class AssetManager { readonly events: EventBus; private assets; private blobStore; private objectUrls; register(meta: AssetMetadata, blob?: Blob): void; remove(id: string): void; get(id: string): AssetMetadata | undefined; getBlob(id: string): Blob | undefined; getAll(): AssetMetadata[]; getByType(type: AssetType): AssetMetadata[]; search(query: string): AssetMetadata[]; getObjectUrl(id: string): string | null; private revokeObjectUrl; importFile(file: File, folder?: string): Promise; importFiles(files: FileList | File[], folder?: string): Promise; private inferType; private generateImageThumbnail; toManifest(): AssetManifest; getFolderTree(): AssetFolder; clear(): void; /** Get assets not referenced by any entity in the given world. */ findUnused(world: World): AssetMetadata[]; }