import { AssetStore } from "./assetStore.js"; //#region src/ai-editor/mediaCatalog.d.ts interface CatalogRecord { id: string; sourceId: string; kind: "video" | "image" | "record"; title: string; description: string; sourceUrl: string; mediaUrl?: string; occurredAt?: string; durationSeconds?: number; thumbnailUrl?: string; tags?: string[]; metadata?: Record; media?: { assetId: string; src: string; bytes: number; sha256: string; mimeType: string; importedAt: string; }; } interface CatalogSearchResult { records: CatalogRecord[]; summary: string; warnings?: string[]; } /** Source adapters own remote URL validation, download limits, and credentials. */ interface MediaCatalogSource { id: string; name: string; search(input: Record, context: { signal: AbortSignal; }): Promise; load(record: CatalogRecord, context: { signal: AbortSignal; }): Promise<{ bytes: Buffer | Uint8Array; mimeType: string; filename: string; durationSeconds?: number; }>; } interface CatalogSearchInput { query?: string; sourceId?: string; kind?: CatalogRecord["kind"]; from?: string; to?: string; limit?: number; } type RequestContext = { signal?: AbortSignal; authorize?: () => void; }; interface MediaCatalog { sources(): { id: string; name: string; }[]; discover(sourceId: string, input: Record, context?: RequestContext): Promise; searchCached(input?: CatalogSearchInput): Promise; get(id: string): Promise; import(id: string, context?: RequestContext): Promise; } /** Local starter implementation; customers can supply the same MediaCatalog interface. */ declare function createMediaCatalog(options: { root: string; sources: MediaCatalogSource[]; assets?: AssetStore; }): MediaCatalog; //#endregion export { CatalogRecord, CatalogSearchInput, CatalogSearchResult, MediaCatalog, MediaCatalogSource, createMediaCatalog }; //# sourceMappingURL=mediaCatalog.d.ts.map