/** @packageDocumentation
 * @module Serialization
 */
import { flatbuffers } from "flatbuffers";
import { AkimaCurve3d } from "../bspline/AkimaCurve3d";
import { BSplineCurve3d } from "../bspline/BSplineCurve";
import { BSplineCurve3dH } from "../bspline/BSplineCurve3dH";
import { BSplineSurface3d, BSplineSurface3dH } from "../bspline/BSplineSurface";
import { InterpolationCurve3d } from "../bspline/InterpolationCurve3d";
import { CurveCollection } from "../curve/CurveCollection";
import { CurvePrimitive } from "../curve/CurvePrimitive";
import { GeometryQuery } from "../curve/GeometryQuery";
import { PointString3d } from "../curve/PointString3d";
import { XYZ } from "../geometry3d/Point3dVector3d";
import { AuxChannel, AuxChannelData, PolyfaceAuxData } from "../polyface/AuxData";
import { IndexedPolyface } from "../polyface/Polyface";
import { TaggedNumericData } from "../polyface/TaggedNumericData";
import { SolidPrimitive } from "../solid/SolidPrimitive";
/**
 * Context to write to a flatbuffer blob.
 *  * This class is internal.
 *  * Public access is through BentleyGeometryFlatBuffer.geometryToBytes()
 * @internal
 */
export declare class BGFBWriter {
    builder: flatbuffers.Builder;
    constructor(defaultSize?: number);
    /**
     *
     * @param data data source, as Float64Array or number[].
     * @param count optional count, used only if less than .length numbers are to be written.
     */
    writeDoubleArray(data: Float64Array | number[] | undefined, count?: number): number;
    /**
     *
     * @param data data source, as Float64Array or number[].
     * @param count optional count, used only if less than .length numbers are to be written.
     */
    writeIntArray(data: Int32Array | number[] | undefined): number;
    /**
     *
     * @param data data source, as array derived from XYZ.
     * The data is output as a flat array of 3*data.length numbers.
     */
    writePackedYZArray(data: XYZ[] | undefined): number;
    writeCurveCollectionAsFBCurveVector(cv: CurveCollection): number | undefined;
    writeCurveCollectionAsFBVariantGeometry(cv: CurveCollection): number | undefined;
    writeInterpolationCurve3dAsFBVariantGeometry(curve: InterpolationCurve3d): number | undefined;
    writeAkimaCurve3dAsFBVariantGeometry(curve: AkimaCurve3d): number | undefined;
    writeBsplineCurve3dAsFBVariantGeometry(bcurve: BSplineCurve3d): number | undefined;
    writeBSplineSurfaceAsFBVariantGeometry(bsurf: BSplineSurface3d | BSplineSurface3dH): number | undefined;
    writeBsplineCurve3dHAsFBVariantGeometry(bcurve: BSplineCurve3dH): number | undefined;
    writeCurvePrimitiveAsFBVariantGeometry(curvePrimitive: CurvePrimitive): number | undefined;
    writePointString3dAsFBVariantGeometry(pointString: PointString3d): number | undefined;
    writeSolidPrimitiveAsFBVariantGeometry(solid: SolidPrimitive): number | undefined;
    writePolyfaceAuxChannelDataAsFBVariantGeometry(channelData: AuxChannelData): number | undefined;
    writePolyfaceAuxChannelAsFBVariantGeometry(channel: AuxChannel): number | undefined;
    writePolyfaceAuxDataAsFBVariantGeometry(mesh: IndexedPolyface, data: PolyfaceAuxData): number | undefined;
    writeTaggedNumericDataArray(data: TaggedNumericData | undefined): number;
    writePolyfaceAsFBVariantGeometry(mesh: IndexedPolyface): number | undefined;
    /**
     * @param sourceIndex a map that takes zeroBasedDataIndex -> zeroBasedDataIndex, packed into unterminated face loops delineated by `mesh.facetIndex0/1`
     * @param destIndex a map that takes zeroBasedDataIndex -> signedOneBasedDataIndex, packed into optionally terminated face loops
     */
    private fillOneBasedIndexArray;
    writeGeometryQueryAsFBVariantGeometry(g: GeometryQuery): number | undefined;
    writeGeometryQueryArrayAsFBVariantGeometry(allGeometry: GeometryQuery | GeometryQuery[] | undefined): number | undefined;
    /**
     * Serialize bytes to a flatbuffer.
     */
    static geometryToBytes(data: GeometryQuery | GeometryQuery[], signatureBytes?: Uint8Array): Uint8Array | undefined;
}
//# sourceMappingURL=BGFBWriter.d.ts.map