import { BoundingBox, Matrix4 } from '@vertexvis/geometry';
import { PropertyCategoryMap } from '@vertexvis/scene-view-protos/sceneview/protos/domain_pb';
import { UUID } from '@vertexvis/utils';
import { Timestamp } from 'google-protobuf/google/protobuf/timestamp_pb';
import { ColorMaterial } from '../scenes/colorMaterial';
import { PagingLinks } from '../types';
export interface DomainPropertyKey {
    name: string;
    category: PropertyCategoryMap[keyof PropertyCategoryMap];
}
export interface TimestampDomainPropertyValue {
    type: 'timestamp';
    value: Timestamp.AsObject;
}
export interface StringDomainPropertyValue {
    type: 'string';
    value: string;
}
export interface LongDomainPropertyValue {
    type: 'long';
    value: number;
}
export interface DoubleDomainPropertyValue {
    type: 'double';
    value: number;
}
export type DomainPropertyValue = StringDomainPropertyValue | LongDomainPropertyValue | DoubleDomainPropertyValue | TimestampDomainPropertyValue;
export interface DomainPropertyEntry {
    id: string;
    key?: DomainPropertyKey | null;
    value?: DomainPropertyValue | null;
}
export interface SceneItemMetadataResponse {
    paging: PagingLinks;
    entries: DomainPropertyEntry[];
}
export interface ListSceneItemMetadataOptions {
    cursor?: string;
    size?: number;
}
export interface GetSceneViewItemOptions {
    includeBoundingBox?: boolean;
    includeWorldTransform?: boolean;
    includeOverride?: boolean;
}
export interface SceneViewItemMaterialOverride {
    defaultMaterial: ColorMaterial;
    colorMaterial: ColorMaterial;
}
export interface SceneViewItemOverride {
    id: UUID.UUID;
    createdAt: Date;
    transform?: Matrix4.Matrix4 | null;
    isVisible?: boolean | null;
    isSelected?: boolean | null;
    isPhantom?: boolean | null;
    endItem?: boolean | null;
    materialOverride?: SceneViewItemMaterialOverride | null;
}
export interface SceneViewItem {
    id: UUID.UUID;
    suppliedId?: string | null;
    name?: string | null;
    parentId?: UUID.UUID;
    createdAt: Date;
    boundingBox?: BoundingBox.BoundingBox | null;
    override?: SceneViewItemOverride | null;
    worldTransform?: Matrix4.Matrix4 | null;
}
