/** @packageDocumentation
 * @module Rendering
 */
import { RenderFeatureTable, RenderMaterial } from "@itwin/core-common";
import { VertexTable } from "./VertexTable";
import { VertexIndices } from "./VertexIndices";
import { SurfaceMaterial } from "./SurfaceParams";
import { MaterialParams } from "../../render/MaterialParams";
import { MeshParams } from "./MeshParams";
import { PointStringParams } from "./PointStringParams";
import { PolylineParams } from "./PolylineParams";
/** @internal */
export interface VertexTableWithIndices {
    vertices: VertexTable;
    indices: VertexIndices;
    material?: SurfaceMaterial;
}
/** Builds up a [[VertexIndices]].
 * Exported strictly for tests.
 * @internal
 */
export declare class IndexBuffer {
    private readonly _builder;
    private readonly _index32;
    private readonly _index8;
    constructor(initialCapacity?: number);
    get numIndices(): number;
    push(index: number): void;
    toVertexIndices(): VertexIndices;
}
type CreateRenderMaterial = (args: MaterialParams) => RenderMaterial | undefined;
/** @internal */
export type ComputeAnimationNodeId = (featureIndex: number) => number;
/** @internal */
export interface SplitVertexTableArgs {
    featureTable: RenderFeatureTable;
    maxDimension: number;
    computeNodeId: ComputeAnimationNodeId;
}
/** @internal */
export interface SplitPointStringArgs extends SplitVertexTableArgs {
    params: PointStringParams;
}
/** Given a PointStringParams and a function that can associate a node Id with an element Id, produce a mapping of nodes to PointStringParams, splitting up
 * the input params as needed.
 * @internal
 */
export declare function splitPointStringParams(args: SplitPointStringArgs): Map<number, PointStringParams>;
/** @internal */
export interface SplitMeshArgs extends SplitVertexTableArgs {
    params: MeshParams;
    createMaterial: CreateRenderMaterial;
}
/** @internal */
export declare function splitMeshParams(args: SplitMeshArgs): Map<number, MeshParams>;
/** @internal */
export interface SplitPolylineArgs extends SplitVertexTableArgs {
    params: PolylineParams;
}
/** @internal */
export declare function splitPolylineParams(args: SplitPolylineArgs): Map<number, PolylineParams>;
export {};
//# sourceMappingURL=VertexTableSplitter.d.ts.map