/** @packageDocumentation
 * @module Tiles
 */
import { ByteStream, Id64String } from "@itwin/core-bentley";
import { Point3d } from "@itwin/core-geometry";
import { IModelConnection } from "../../IModelConnection";
import { RenderGraphic } from "../../render/RenderGraphic";
import { RenderSystem } from "../../render/RenderSystem";
import { RealityTile } from "../../tile/internal";
/** Schema for the [3DTILES_draco_point_compression](https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_draco_point_compression) extension. */
interface DracoPointCloud {
    byteLength: number;
    byteOffset: number;
    /** Each specifies the Id of a compressed attribute. */
    properties: {
        POSITION?: number;
        RGB?: number;
        RGBA?: number;
        NORMAL?: number;
        BATCH_ID?: number;
        /** This is not in the spec but is present in sample data in Cesium's git repository. */
        COLOR_0?: number;
    };
}
interface BinaryBodyReference {
    byteOffset: number;
}
/** [3D tiles specification section 10.3](https://docs.opengeospatial.org/cs/18-053r2/18-053r2.html#199).
 * [JSON schema](https://github.com/CesiumGS/3d-tiles/blob/main/specification/schema/pnts.featureTable.schema.json).
 */
interface CommonPntsProps {
    POINTS_LENGTH: number;
    RTC_CENTER?: number[];
    CONSTANT_RGBA?: number[];
    RGB?: BinaryBodyReference;
    RGBA?: BinaryBodyReference;
    RGB565?: BinaryBodyReference;
    extensions?: {
        "3DTILES_draco_point_compression"?: DracoPointCloud;
    };
    NORMAL?: BinaryBodyReference;
    NORMAL_OCT16P?: BinaryBodyReference;
    BATCH_ID?: BinaryBodyReference;
    BATCH_LENGTH?: number;
}
type QuantizedPntsProps = CommonPntsProps & {
    POSITION_QUANTIZED: BinaryBodyReference;
    QUANTIZED_VOLUME_OFFSET: number[];
    QUANTIZED_VOLUME_SCALE: number[];
    POSITION?: never;
};
type UnquantizedPntsProps = CommonPntsProps & {
    POSITION: BinaryBodyReference;
    POSITION_QUANTIZED?: never;
    QUANTIZED_VOLUME_OFFSET?: never;
    QUANTIZED_VOLUME_SCALE?: never;
};
type PntsProps = QuantizedPntsProps | UnquantizedPntsProps;
export declare function readPntsColors(stream: ByteStream, dataOffset: number, pnts: PntsProps): Uint8Array | undefined;
/** Deserialize a point cloud tile and return it as a RenderGraphic.
 */
export declare function readPointCloudTileContent(stream: ByteStream, iModel: IModelConnection, modelId: Id64String, _is3d: boolean, tile: RealityTile, system: RenderSystem): Promise<{
    graphic: RenderGraphic | undefined;
    rtcCenter: Point3d | undefined;
}>;
export {};
//# sourceMappingURL=PntsReader.d.ts.map