import type { IsoTimestamp, AssetIndexerCoreFields } from '../../common/index.ts';
export interface AssetDomainRecords {
    ":asset.title?": AssetTitleProvidedRecord;
    ":asset.rawTypes?": AssetRawTypesProvidedRecord;
    ":asset.types?": AssetTypesProvidedRecord;
    ":asset.assignees?": AssetAssigneesProvidedRecord;
    ":asset.refs?": AssetRefsProvidedRecord;
    ":asset.tags?": AssetTagsProvidedRecord;
    ":asset.fileRefs?": AssetFileRefsProvidedRecord;
    ":asset.created?": AssetCreatedProvidedRecord;
    ":asset.modified?": AssetModifiedProvidedRecord;
    ":asset.status?": AssetDomainStatusProvidedRecord;
    ":asset.icon?": AssetDomainIconProvidedRecord;
    ":asset.deadlines?": AssetDomainDeadlinesProvidedRecord;
    ":asset.publish?": AssetDomainPublishProvidedRecord;
    ":asset.published?": AssetDomainPublishedProvidedRecord;
    ":asset.duration?": AssetDomainDurationProvidedRecord;
    ":asset.locations?": AssetDomainLocationsProvidedRecord;
    ":asset.controllers?": AssetDomainControllersProvidedRecord;
    ":asset.embedding?": AssetDomainEmbeddingProvidedRecord;
    ":asset.media?": AssetDomainMediaProvidedRecord;
    ":asset.presence?": AssetDomainPresenceProvidedRecord;
    ":asset.comments?": AssetCommentsRecord;
    ":asset.record?": AssetRecordProvidedRecord;
}
export interface AssetTitleProvidedRecord {
    value?: string | null;
}
export interface AssetRawTypesProvidedRecord {
    value?: string[];
}
export interface AssetTypesProvidedRecord {
    value?: string[];
}
export interface AssetAssigneesProvidedRecord {
    value?: string[];
}
export interface AssetRefsProvidedRecord {
    value?: AssetRef[];
}
interface AssetRef {
    id: string;
    key: string;
    value: string;
}
export interface AssetTagsProvidedRecord {
    value?: string[];
}
export interface AssetFileRefsProvidedRecord {
    value?: string[];
}
export interface AssetCreatedProvidedRecord {
    time?: string;
    user?: string;
    origin?: string;
}
export interface AssetModifiedProvidedRecord {
    time?: string;
    user?: string;
    users?: string[];
}
export interface AssetDomainStatusProvidedRecord {
    messages?: AssetDomainStatusProvidedMessage[];
}
export interface AssetDomainStatusProvidedMessage {
    id: string;
    msg: string;
    level: number;
    code?: string;
    expose?: boolean | null;
    index?: number | null;
}
export interface AssetDomainIconProvidedRecord {
    value?: string | null;
}
export interface AssetDomainDeadlinesProvidedRecord {
    value?: IsoTimestamp[];
}
export interface AssetDomainPublishProvidedRecord {
    value?: string[];
}
export interface AssetDomainPublishedProvidedRecord {
    [publishedRecordId: string]: IsoTimestamp;
}
export interface AssetDomainDurationProvidedRecord {
    value?: number | null;
}
export interface AssetDomainLocationsProvidedRecord {
    value?: Array<{
        lat: number;
        lon: number;
    }>;
}
export interface AssetDomainControllersProvidedRecord {
    value?: string[];
}
export interface AssetDomainEmbeddingProvidedRecord {
    value?: string[];
}
export interface AssetDomainMediaProvidedRecord {
    [key: string]: unknown;
}
export interface AssetDomainPresenceProvidedRecord {
    value?: string[];
}
export interface AssetCommentsRecord {
    /**
     * IDs of comment assets associated with the asset.
     */
    value?: string[];
}
/**
 * Elasticsearch indexed record for an asset.
 * Extends core fields with dynamic properties from panels and schemas.
 */
export interface AssetRecordProvidedRecord extends AssetIndexerCoreFields {
    /** Dynamic properties from panels and schemas (keys defined by property.index.path) */
    [dynamicProperty: string]: unknown;
}
export {};
