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 { TransitionSpiral3d } from "../curve/spiral/TransitionSpiral3d";
import { AuxChannel, AuxChannelData, PolyfaceAuxData } from "../polyface/AuxData";
import { IndexedPolyface } from "../polyface/Polyface";
import { TaggedNumericData } from "../polyface/TaggedNumericData";
import { SolidPrimitive } from "../solid/SolidPrimitive";
import { BGFBAccessors } from "./BGFBAccessors";
/** * Context to write to a flatbuffer blob.
 *  * This class is internal.
 *  * Public access is through BentleyGeometryFlatBuffer.geometryToBytes()
 * @internal
 */
export declare class BGFBReader {
    constructor();
    /**
     * Extract a bspline surface
     * @param variant read position in the flat buffer.
     */
    readBSplineSurfaceFromVariant(variantHeader: BGFBAccessors.VariantGeometry): BSplineSurface3d | BSplineSurface3dH | undefined;
    /**
    * Extract an interpolating curve
    * @param header read position in the flat buffer.
    */
    readInterpolationCurve3d(header: BGFBAccessors.InterpolationCurve): InterpolationCurve3d | undefined;
    /**
     * Extract an akima curve
     * @param header read position in the flat buffer.
     */
    readAkimaCurve3d(header: BGFBAccessors.AkimaCurve): AkimaCurve3d | undefined;
    /**
       * Extract a bspline curve
       * @param variant read position in the flat buffer.
       */
    readBSplineCurve(header: BGFBAccessors.BsplineCurve): BSplineCurve3d | BSplineCurve3dH | undefined;
    /**
     * Extract a bspline curve
     * @param variant read position in the flat buffer.
     */
    readTransitionSpiral(header: BGFBAccessors.TransitionSpiral): TransitionSpiral3d | undefined;
    /**
     * Extract a curve primitive
     * @param variant read position in the flat buffer.
     */
    readCurvePrimitiveFromVariant(variant: BGFBAccessors.VariantGeometry): CurvePrimitive | undefined;
    /**
     * Extract a curve primitive
     * @param variant read position in the flat buffer.
     */
    readPointStringFromVariant(variant: BGFBAccessors.VariantGeometry): PointString3d | undefined;
    /** Extract auxData channel data for a mesh */
    readPolyfaceAuxChannelData(channelDataHeader: BGFBAccessors.PolyfaceAuxChannelData | null): AuxChannelData | undefined;
    /** Extract auxData channel for a mesh */
    readPolyfaceAuxChannel(channelHeader: BGFBAccessors.PolyfaceAuxChannel | null): AuxChannel | undefined;
    /** Compute the number of logical entries in every flat data array in the AuxData */
    private static channelDataLength;
    /** Examine int array for range and zero count  */
    private countIntArray;
    /**
     * Extract auxData for a mesh.
     * Typescript object format for Polyface/PolyfaceAuxData indices is 0-based, unterminated.
     * FlatBuffer format for Polyface/PolyfaceAuxData indices is 1-based, 0-terminated/padded.
     * Typescript API previously wrote FlatBuffer PolyfaceAuxData indices as 0-based, unterminated;
     * heuristics are used herein to identify this legacy format so it can still be read.
     */
    readPolyfaceAuxData(fbPolyface: BGFBAccessors.Polyface | null, fbAuxData: BGFBAccessors.PolyfaceAuxData | null): PolyfaceAuxData | undefined;
    /** Extract tagged numeric data for a mesh */
    readTaggedNumericData(accessor: BGFBAccessors.TaggedNumericData | undefined): TaggedNumericData | undefined;
    /**
     * Extract a mesh
     * @param variant read position in the flat buffer.
     */
    readPolyfaceFromVariant(variant: BGFBAccessors.VariantGeometry): IndexedPolyface | undefined;
    readCurveCollectionFromCurveVectorTable(cvTable: BGFBAccessors.CurveVector): CurveCollection;
    /**
   * Extract a curve collection
   * @param variant read position in the flat buffer.
   */
    readCurveCollectionFromVariantGeometry(variant: BGFBAccessors.VariantGeometry): CurveCollection | undefined;
    /**
   * Extract a curve collection
   * @param variant read position in the flat buffer.
   */
    readSolidPrimitiveFromVariant(variant: BGFBAccessors.VariantGeometry): SolidPrimitive | undefined;
    /**
     * Extract any geometry type or array of geometry.
     * @param variant read position in the flat buffer.
     */
    readGeometryQueryFromVariant(variant: BGFBAccessors.VariantGeometry): GeometryQuery | GeometryQuery[] | undefined;
    /**
     * Deserialize bytes from a flatbuffer.
     * @param justTheBytes FlatBuffer bytes as created by BGFBWriter.createFlatBuffer (g);
     */
    static bytesToGeometry(theBytes: Uint8Array, signature?: Uint8Array): GeometryQuery | GeometryQuery[] | undefined;
}
/**
 * mappings between typescript spiral type strings and native integers.
 * @internal
 */
export declare class DgnSpiralTypeQueries {
    private static spiralTypeCodeMap;
    /** Convert native integer type (e.g. from flatbuffer) to typescript string */
    static typeCodeToString(typeCode: number): string | undefined;
    /** Convert typescript string to native integer type */
    static stringToTypeCode(s: string, defaultToClothoid?: boolean): number | undefined;
    /** Ask if the indicated type code is a "direct" spiral */
    static isDirectSpiralType(typeCode: number): boolean;
}
//# sourceMappingURL=BGFBReader.d.ts.map