import { TransformedPoint, Point3D } from '../types';
import { ShapeInstance } from './shape';
export type CubeFaceName = 'front' | 'back' | 'left' | 'right' | 'top' | 'bottom';
export type CubeFace<Datum = Point3D> = TransformedPoint<Datum>[] & {
    centroid: Point3D;
    ccw: boolean;
    face: CubeFaceName;
};
export type Cube<Datum = Point3D> = TransformedPoint<Datum>[] & {
    faces?: CubeFace<Datum>[];
    centroid?: Point3D;
};
interface Cubes3DInstance<Datum = Point3D> extends ShapeInstance<Datum> {
    data(data: Datum[][]): Cube<Datum>[];
    draw(face: TransformedPoint<Datum>[]): string;
}
export declare function cubes3D<Datum = Point3D>(): Cubes3DInstance<Datum>;
export {};
