Interface VideoEditorAssetStore

    interface VideoEditorAssetStore {
        "[dispose]": () => void;
        create: <T extends "asset:media:av" | "asset:effect:video" | "asset:font">(
            init:
                | Extract<Schema.VideoEffectAsset, { type: T }>
                | Extract<Schema.MediaAsset, { type: T }>
                | Extract<Schema.FontAsset, { type: T }>,
            options?: { source?: string | Blob },
        ) => AssetsByType[T];
        createFile: (
            asset: MediaAsset,
            stream: ReadableStream<Uint8Array<ArrayBufferLike>>,
            options: {
                onProgress?: (progress: number) => void;
                signal?: AbortSignal | null;
                size?: number;
            },
        ) => Promise<void>;
        createMediaAsset: (source: string | Blob) => Promise<MediaAsset>;
        delete: (key: string) => Promise<void>;
        dispose: () => void;
        getAsset: <T extends AnyAsset | undefined>(id: string) => T;
        getFile: (
            key: string,
            name?: string,
            options?: FilePropertyBag,
        ) => Promise<File>;
        getOrCreateFile: (
            asset: MediaAsset,
            source: string | Blob | undefined,
            requestInit?: { signal?: AbortSignal | null },
        ) => Promise<File>;
        has: (id: string) => boolean;
        loaders: AssetLoader[];
        on: <T extends AssetEventType>(
            type: T,
            listener: (event: VideoEditorEvents[T]) => void,
            options?: AddEventListenerOptions,
        ) => () => void;
        values: () => Iterable<AnyAsset>;
    }

    Implemented by

    Index
    "[dispose]": () => void
    create: <T extends "asset:media:av" | "asset:effect:video" | "asset:font">(
        init:
            | Extract<Schema.VideoEffectAsset, { type: T }>
            | Extract<Schema.MediaAsset, { type: T }>
            | Extract<Schema.FontAsset, { type: T }>,
        options?: { source?: string | Blob },
    ) => AssetsByType[T]
    createFile: (
        asset: MediaAsset,
        stream: ReadableStream<Uint8Array<ArrayBufferLike>>,
        options: {
            onProgress?: (progress: number) => void;
            signal?: AbortSignal | null;
            size?: number;
        },
    ) => Promise<void>

    Save a new file from an asset source stream

    createMediaAsset: (source: string | Blob) => Promise<MediaAsset>
    delete: (key: string) => Promise<void>

    Delete an asset form the store

    dispose: () => void
    getAsset: <T extends AnyAsset | undefined>(id: string) => T
    getFile: (
        key: string,
        name?: string,
        options?: FilePropertyBag,
    ) => Promise<File>

    Get an asset as a File instance

    getOrCreateFile: (
        asset: MediaAsset,
        source: string | Blob | undefined,
        requestInit?: { signal?: AbortSignal | null },
    ) => Promise<File>
    has: (id: string) => boolean
    loaders: AssetLoader[]
    on: <T extends AssetEventType>(
        type: T,
        listener: (event: VideoEditorEvents[T]) => void,
        options?: AddEventListenerOptions,
    ) => () => void
    values: () => Iterable<AnyAsset>