/** @packageDocumentation
 * @module Rendering
 */
import { IndexedPolyface, Loop, Path, Point3d, Range3d, SolidPrimitive, StrokeOptions, Transform } from "@itwin/core-geometry";
import { Feature } from "@itwin/core-common";
import { DisplayParams } from "./DisplayParams";
import { PolyfacePrimitiveList } from "./Polyface";
import { StrokesPrimitiveList } from "./Strokes";
/** @internal */
export type PrimitiveGeometryType = Loop | Path | IndexedPolyface | SolidPrimitive;
/** @internal */
export declare abstract class Geometry {
    readonly transform: Transform;
    readonly tileRange: Range3d;
    readonly displayParams: DisplayParams;
    readonly feature?: Feature;
    constructor(transform: Transform, tileRange: Range3d, displayParams: DisplayParams, feature: Feature | undefined);
    static createFromPointString(pts: Point3d[], tf: Transform, tileRange: Range3d, params: DisplayParams, feature: Feature | undefined): Geometry;
    static createFromLineString(pts: Point3d[], tf: Transform, tileRange: Range3d, params: DisplayParams, feature: Feature | undefined): Geometry;
    static createFromLoop(loop: Loop, tf: Transform, tileRange: Range3d, params: DisplayParams, disjoint: boolean, feature: Feature | undefined): Geometry;
    static createFromSolidPrimitive(primitive: SolidPrimitive, tf: Transform, tileRange: Range3d, params: DisplayParams, feature: Feature | undefined): Geometry;
    static createFromPath(path: Path, tf: Transform, tileRange: Range3d, params: DisplayParams, disjoint: boolean, feature: Feature | undefined): Geometry;
    static createFromPolyface(ipf: IndexedPolyface, tf: Transform, tileRange: Range3d, params: DisplayParams, feature: Feature | undefined): Geometry;
    protected abstract _getPolyfaces(facetOptions: StrokeOptions): PolyfacePrimitiveList | undefined;
    protected abstract _getStrokes(facetOptions: StrokeOptions): StrokesPrimitiveList | undefined;
    getPolyfaces(tolerance: number): PolyfacePrimitiveList | undefined;
    getStrokes(tolerance: number): StrokesPrimitiveList | undefined;
    get hasTexture(): boolean;
    doDecimate(): boolean;
    doVertexCluster(): boolean;
    part(): undefined;
}
/** @internal */
export declare class PrimitivePathGeometry extends Geometry {
    readonly path: Path;
    readonly isDisjoint: boolean;
    constructor(path: Path, tf: Transform, range: Range3d, params: DisplayParams, isDisjoint: boolean, feature: Feature | undefined);
    protected _getPolyfaces(_facetOptions: StrokeOptions): PolyfacePrimitiveList | undefined;
    protected _getStrokes(facetOptions: StrokeOptions): StrokesPrimitiveList | undefined;
    static getStrokesForLoopOrPath(loopOrPath: Loop | Path, facetOptions: StrokeOptions, params: DisplayParams, isDisjoint: boolean, transform: Transform): StrokesPrimitiveList | undefined;
    private static collectCurveStrokes;
}
/** @internal */
export declare class PrimitivePointStringGeometry extends Geometry {
    readonly pts: Point3d[];
    constructor(pts: Point3d[], tf: Transform, range: Range3d, params: DisplayParams, feature: Feature | undefined);
    protected _getPolyfaces(_facetOptions: StrokeOptions): PolyfacePrimitiveList | undefined;
    protected _getStrokes(_facetOptions: StrokeOptions): StrokesPrimitiveList | undefined;
}
/** @internal */
export declare class PrimitiveLineStringGeometry extends Geometry {
    readonly pts: Point3d[];
    constructor(pts: Point3d[], tf: Transform, range: Range3d, params: DisplayParams, feature: Feature | undefined);
    protected _getPolyfaces(_facetOptions: StrokeOptions): PolyfacePrimitiveList | undefined;
    protected _getStrokes(_facetOptions: StrokeOptions): StrokesPrimitiveList | undefined;
}
/** @internal */
export declare class PrimitiveLoopGeometry extends Geometry {
    readonly loop: Loop;
    readonly isDisjoint: boolean;
    constructor(loop: Loop, tf: Transform, range: Range3d, params: DisplayParams, isDisjoint: boolean, feature: Feature | undefined);
    protected _getPolyfaces(facetOptions: StrokeOptions): PolyfacePrimitiveList | undefined;
    protected _getStrokes(facetOptions: StrokeOptions): StrokesPrimitiveList | undefined;
}
/** @internal */
export declare class PrimitivePolyfaceGeometry extends Geometry {
    readonly polyface: IndexedPolyface;
    constructor(polyface: IndexedPolyface, tf: Transform, range: Range3d, params: DisplayParams, feature: Feature | undefined);
    protected _getPolyfaces(facetOptions: StrokeOptions): PolyfacePrimitiveList | undefined;
    protected _getStrokes(_facetOptions: StrokeOptions): StrokesPrimitiveList | undefined;
}
//# sourceMappingURL=GeometryPrimitives.d.ts.map