import { Point, Vector3 } from '@vertexvis/geometry';
import { Color } from '@vertexvis/utils';
import { ShapeProps } from 'regl-shape';
import { CreateShape } from '../../lib/transforms/shape';
import { Drawable, DrawablePoints } from './drawable';
export declare class MeshPoints implements DrawablePoints {
    valid: boolean;
    world: Vector3.Vector3[];
    screen: Point.Point[];
    private computeShortestDistance?;
    constructor(valid: boolean, world: Vector3.Vector3[], screen: Point.Point[], computeShortestDistance?: ((vector: Vector3.Vector3) => number) | undefined);
    shortestDistanceFrom(vector: Vector3.Vector3): number;
    toWorldArray(): Vector3.Vector3[];
    toArray(): Point.Point[];
}
export declare class Mesh extends Drawable<MeshPoints> {
    constructor(createShape: CreateShape, identifier: string, points: MeshPoints, outlineColor?: Color.Color | string, fillColor?: Color.Color | string, shapeProps?: Partial<ShapeProps>);
}
export declare class TriangleMeshPoints implements DrawablePoints {
    valid: boolean;
    worldBase: Vector3.Vector3;
    worldLeft: Vector3.Vector3;
    worldRight: Vector3.Vector3;
    worldTip: Vector3.Vector3;
    base: Point.Point;
    left: Point.Point;
    right: Point.Point;
    tip: Point.Point;
    constructor(valid: boolean, worldBase: Vector3.Vector3, worldLeft: Vector3.Vector3, worldRight: Vector3.Vector3, worldTip: Vector3.Vector3, base: Point.Point, left: Point.Point, right: Point.Point, tip: Point.Point);
    shortestDistanceFrom(vector: Vector3.Vector3): number;
    toWorldArray(): Vector3.Vector3[];
    toArray(): Point.Point[];
}
export declare class TriangleMesh extends Drawable<TriangleMeshPoints> {
    disabled: boolean;
    constructor(createShape: CreateShape, identifier: string, points: TriangleMeshPoints, outlineColor?: Color.Color | string, fillColor?: Color.Color | string, shapeProps?: Partial<ShapeProps>, disabled?: boolean);
    setDisabled(disabled: boolean): void;
    isDisabled(): boolean;
}
