import type { IsoTimestamp } from './index.ts';
export interface AssetIndexerCoreFields {
    id: string;
    title?: string;
    description?: string;
    created?: IsoTimestamp;
    createdBy?: string;
    createdByTitle?: string;
    origin?: string;
    modified?: IsoTimestamp;
    modifiedBy?: string;
    modifiedByAll?: string[];
    modifiedByTitle?: string;
    duration?: number;
    tags?: string[];
    deadlines?: IsoTimestamp[];
    deadlinesCount?: number;
    deadlines_date_range?: Array<{
        gte: IsoTimestamp;
        lte: IsoTimestamp;
    }>;
    assignees?: string[];
    assigneesCount?: number;
    locations?: Array<{
        lat: number;
        lon: number;
    }>;
    locationsCount?: number;
    types?: string[];
    primaryType?: string;
    rawTypes?: string[];
    status?: {
        messages?: Array<{
            code?: string;
            level?: number;
        }>;
    };
    published?: IsoTimestamp[];
    publishedCount?: number;
    storage?: {
        files?: string[];
        replicas?: string[];
        locations?: string[];
        zones?: string[];
        uploading?: boolean;
        size?: number;
        filesCount?: number;
        replicasCount?: number;
        locationsCount?: number;
    };
    refs?: number;
    refsByType?: Record<string, number>;
    recurrence_date_range?: {
        gte: IsoTimestamp;
        lte: IsoTimestamp | null;
    };
    media_date_range?: {
        gte: IsoTimestamp;
        lte: IsoTimestamp;
    };
    ingestschedule_date_range?: {
        gte: IsoTimestamp;
        lte: IsoTimestamp | null;
    };
    ingestschedule?: {
        type?: string;
        sources?: string[];
        routes?: string[];
    };
    username?: string;
    user?: string;
    "note.text"?: string;
    subtitles?: string;
    graphics?: string;
    story?: {
        content?: string;
        graphics?: string[];
    };
    storyboard?: {
        content?: unknown[];
    };
    /**
     * These fields are populated from the provided `{id}:asset.media?` record as
     * configured in the `asset.media` record. Due to the dynamic nature of that record,
     * it's hard to type these fields more specifically. For now we only list a few
     * (probably) expected fields.
     */
    media?: {
        audio?: unknown;
        video?: unknown;
        timecode?: unknown;
        language?: unknown;
        transcribe?: unknown;
    };
    embedding?: Array<{
        vector: number[];
    }>;
}
