import { IndexBuffer } from "./IndexBuffer";
import { type PrimitiveTopology } from "./RenderDevice";
import { VertexBuffer } from "./VertexBuffer";
export interface Bounds3 {
    readonly min: readonly [number, number, number];
    readonly max: readonly [number, number, number];
}
export interface CylinderGeometryOptions {
    readonly radius?: number;
    readonly height?: number;
    readonly segments?: number;
    readonly capped?: boolean;
    readonly textured?: boolean;
}
export interface CapsuleGeometryOptions {
    readonly radius?: number;
    readonly height?: number;
    readonly segments?: number;
    readonly rings?: number;
    readonly textured?: boolean;
}
export interface WideLineSegment {
    readonly start: readonly [number, number, number];
    readonly end: readonly [number, number, number];
    readonly width: number;
}
export interface UVSphereGeometryOptions {
    readonly textured?: boolean;
}
export declare class Geometry {
    readonly vertexBuffer: VertexBuffer;
    readonly indexBuffer: IndexBuffer | null;
    readonly topology: PrimitiveTopology;
    readonly bounds: Bounds3;
    constructor(vertexBuffer: VertexBuffer, indexBuffer?: IndexBuffer | null, topology?: PrimitiveTopology, bounds?: Bounds3);
    static triangle(): Geometry;
    static lineSegments(positions: readonly (readonly [number, number, number])[]): Geometry;
    static wideLineSegments(segments: readonly WideLineSegment[]): Geometry;
    static points(positions: readonly (readonly [number, number, number])[]): Geometry;
    static litTriangle(): Geometry;
    static litCube(size?: number): Geometry;
    static texturedCube(size?: number): Geometry;
    static uvSphere(radius?: number, segments?: number, rings?: number, options?: UVSphereGeometryOptions): Geometry;
    static cylinder(options?: CylinderGeometryOptions): Geometry;
    static capsule(options?: CapsuleGeometryOptions): Geometry;
    static cube(size?: number): Geometry;
    dispose(): void;
}
export declare function computeBounds(vertexBuffer: VertexBuffer): Bounds3;
//# sourceMappingURL=Geometry.d.ts.map