import type { Visibility } from '../api/types/Viewpoint';
import type { RenderMode } from '../utils/constants';
import type { BcfCameraOrthogonal, BcfCameraPerspective } from '../types/BcfCamera';
export type CameraData = {
    perspective_camera?: BcfCameraPerspective;
    orthogonal_camera?: BcfCameraOrthogonal;
};
export type AutodeskCommonCamera = {
    Type: string;
    Version: number;
    UnitsToMetersScaleFactor: number;
    WorldUpDirection: [number, number, number];
    WorldFrontDirection: [number, number, number];
    WorldRightDirection: [number, number, number];
    Position: [number, number, number];
    ViewDirection: [number, number, number];
    UpDirection: [number, number, number];
    Projection: string;
    VerticalExtent: number;
    HorizontalExtent: number;
    TargetDistance: number;
    NearDistance: number;
    NearDistanceType: string;
    FarDistance: number;
    FarDistanceType: string;
    UpOffset: number;
    RightOffset: number;
    ImageFit: string;
    HorizontalScale: number;
    ApertureDiameter: number;
    ShutterSpeed: number;
};
export type Point = {
    x: number;
    y: number;
    z: number;
};
export type Ellipse = {
    min_point: Point;
    max_point: Point;
    color: {
        r: number;
        g: number;
        b: number;
        a: number;
    };
    thickness: number;
};
export type Line = {
    start_point: Point;
    end_point: Point;
    color: {
        r: number;
        g: number;
        b: number;
        a: number;
    };
    thickness: number;
};
export type Arrow = {
    start_point: Point;
    end_point: Point;
    color: {
        r: number;
        g: number;
        b: number;
        a: number;
    };
    thickness: number;
};
export type Text = {
    origin: Point;
    text: string;
    color: {
        r: number;
        g: number;
        b: number;
        a: number;
    };
};
export type RedlinesData = {
    ellipses: Ellipse[];
    lines: Line[];
    arrows: Arrow[];
    texts: Text[];
};
export type RedlineEllipse = {
    Type: 'RedlineEllipse';
    MinPoint: [number, number];
    MaxPoint: [number, number];
    Color: [number, number, number];
    Thickness: number;
};
export type RedlineLine = {
    Type: 'RedlineLine';
    Start: [number, number];
    End: [number, number];
    Color: [number, number, number];
    Thickness: number;
};
export type RedlineArrow = {
    Type: 'RedlineArrow';
    Start: [number, number];
    End: [number, number];
    Color: [number, number, number];
    Thickness: number;
};
export type RedlineText = {
    Type: 'RedlineText';
    Origin: [number, number];
    Text: string;
    Color: [number, number, number];
};
export type AutodeskRedlineCollection = {
    Values: (RedlineEllipse | RedlineLine | RedlineArrow | RedlineText)[];
};
export type InternalViewpoint = {
    camera_data: CameraData;
    sections_data: Record<string, unknown> | Array<Record<string, unknown>> | null;
    redlines_data: RedlinesData | null;
    visibility: Visibility;
    render_mode: RenderMode;
};
