import * as THREE from 'three';
export { Vector2, Vector3, Box3, Matrix4 as Matrix44 } from 'three';
export declare class Segment {
    origin: THREE.Vector3;
    target: THREE.Vector3;
    constructor(origin?: THREE.Vector3, target?: THREE.Vector3);
    static fromArray(array: number[]): Segment;
    toArray(): number[];
    isValid(): boolean;
    equals(segment: Segment): boolean;
}
export declare class RGBA {
    r: number;
    g: number;
    b: number;
    a: number;
    constructor(r: number, g: number, b: number, a?: number);
    static fromThree(color: THREE.Color, opacity?: number): RGBA;
    toThree(): THREE.Color;
    clone(): RGBA;
    isValid(): boolean;
    equals(color: RGBA): boolean;
    static fromString(str: string): RGBA;
}
export declare class RGB {
    r: number;
    g: number;
    b: number;
    constructor(r: number, g: number, b: number);
}
export declare class RGBA32 {
    readonly hex: number;
    constructor(hex: number);
    static fromThree(color: THREE.Color, opacity?: number): RGBA32;
    static fromInts(r: number, g: number, b: number, a?: number): RGBA32;
    static fromFloats(r: number, g: number, b: number, a?: number): RGBA32;
    static fromString(str: string): RGBA32;
    /**
     * The red component of the color in the range [0-255].
     */
    get r(): number;
    /**
     * The green component of the color in the range [0-255].
     */
    get g(): number;
    /**
     * The blue component of the color in the range [0-255].
     */
    get b(): number;
    /**
     * The alpha component of the color in the range [0-255].
     */
    get a(): number;
}
export type HitCheckResult = {
    vimIndex: number;
    vimElementIndex: number;
    sceneElementIndex: number;
    worldPosition: THREE.Vector3;
    worldNormal: THREE.Vector3;
};
export type VimStatus = {
    status: number;
    progress: number;
};
export type SectionBoxState = {
    visible: boolean;
    interactive: boolean;
    clip: boolean;
    box: THREE.Box3;
};
