import { Inputs } from "@bitbybit-dev/occt";
import { Models } from "@bitbybit-dev/occt";
import { OCCTWorkerManager } from "../../occ-worker/occ-worker-manager";
import { IO } from "@bitbybit-dev/base/lib/api/inputs";
export declare class OCCTIO {
    readonly occWorkerManager: OCCTWorkerManager;
    constructor(occWorkerManager: OCCTWorkerManager);
    /**
     * Saves the step file
     * @param inputs STEP filename and shape to be saved
     * @group io
     * @shortname save step
     * @drawable false
     */
    saveShapeSTEP(inputs: Inputs.OCCT.SaveStepDto<Inputs.OCCT.TopoDSShapePointer>): Promise<void>;
    /**
     * Saves the step file and returns the text value
     * @param inputs STEP filename and shape to be saved
     * @group io
     * @shortname save step and return
     * @drawable false
     */
    saveShapeSTEPAndReturn(inputs: Inputs.OCCT.SaveStepDto<Inputs.OCCT.TopoDSShapePointer>): Promise<string>;
    /**
     * Saves the stl file
     * @param inputs STL filename and shape to be saved
     * @group io
     * @shortname save stl
     * @drawable false
     */
    saveShapeStl(inputs: Inputs.OCCT.SaveStlDto<Inputs.OCCT.TopoDSShapePointer>): Promise<void>;
    /**
     * Saves the stl file and returns
     * @param inputs STL filename and shape to be saved
     * @group io
     * @shortname save stl return
     * @drawable false
     */
    saveShapeStlAndReturn(inputs: Inputs.OCCT.SaveStlDto<Inputs.OCCT.TopoDSShapePointer>): Promise<string>;
    private saveSTEP;
    private saveStl;
    /**
     * Creates DXF paths from an OCCT shape
     * Important - shapes containing wires must lie on XZ plane (Y=0) for correct 2D DXF export.
     * @param inputs Shape to convert to DXF paths
     * @group dxf
     * @shortname shape to dxf paths
     * @drawable false
     */
    shapeToDxfPaths(inputs: Inputs.OCCT.ShapeToDxfPathsDto<Inputs.OCCT.TopoDSShapePointer>): Promise<IO.DxfPathDto[]>;
    /**
     * Adds layer and color information to DXF paths
     * Important - shapes containing wires must lie on XZ plane (Y=0) for correct 2D DXF export.
     * @param inputs DXF paths, layer name, and color
     * @group dxf
     * @shortname dxf paths with layer
     * @drawable false
     */
    dxfPathsWithLayer(inputs: Inputs.OCCT.DxfPathsWithLayerDto): Promise<IO.DxfPathsPartDto>;
    /**
     * Assembles multiple path parts into a complete DXF file.
     * Important - shapes containing wires must lie on XZ plane (Y=0) for correct 2D DXF export.
     * @param inputs Multiple DXF paths parts
     * @group dxf
     * @shortname dxf create
     * @drawable false
     */
    dxfCreate(inputs: Inputs.OCCT.DxfPathsPartsListDto): Promise<string>;
    /**
     * Convert a STEP file to glTF format (binary GLB).
     *
     * Uses OCCT's native RWGltf_CafWriter for fast conversion with full preservation of:
     * - Assembly hierarchy (as glTF node tree)
     * - Instance/product names
     * - Surface colors and materials
     * - Transformations
     *
     * The coordinate system is automatically converted from OCCT (Z-up) to glTF (Y-up).
     *
     * @param inputs - STEP file content and mesh precision settings. Accepts File, Blob, string, ArrayBuffer, or Uint8Array.
     * @returns GLB binary data as Uint8Array (can be used directly with Three.js, Babylon.js, etc.)
     * @group assembly
     * @shortname step to gltf
     * @drawable false
     */
    convertStepToGltf(inputs: Inputs.OCCT.ConvertStepToGltfDto): Promise<Uint8Array>;
    /**
     * Convert a STEP file to glTF format with full control over all options.
     *
     * This advanced method allows fine-grained control over:
     * - STEP reading options (colors, names, materials, layers, props)
     * - Mesh generation options (deflection, angle, parallel, threshold)
     * - glTF export options (merge faces, indices, naming, transforms)
     *
     * Use this for performance tuning - disable features you don't need for faster processing.
     *
     * @param inputs - Advanced options including STEP data, mesh settings, and glTF export settings.
     * @returns GLB binary data as Uint8Array
     * @group assembly
     * @shortname step to gltf advanced
     * @drawable false
     *
     * @example
     * ```typescript
     * // Fast conversion - only colors, no names (for large files)
     * const glbData = await occt.io.convertStepToGltfAdvanced({
     *     stepData: stepContent,
     *     readColors: true,
     *     readNames: false,      // Skip name parsing for speed
     *     readMaterials: true,
     *     readLayers: false,
     *     readProps: false,
     *     meshDeflection: 0.1,
     *     meshParallel: true,
     *     mergeFaces: true
     * });
     * ```
     */
    convertStepToGltfAdvanced(inputs: Inputs.OCCT.ConvertStepToGltfAdvancedDto): Promise<Uint8Array>;
    /**
     * Convert a STEP file to glTF format (binary GLB) with explicit Draco geometry
     * compression settings.
     * Same fast path as `convertStepToGltf` but exposes the Draco knobs of the
     * underlying native function.
     * @param inputs - STEP file content, mesh precision settings and Draco knobs.
     *                 Accepts File, Blob, string, ArrayBuffer, or Uint8Array.
     * @returns GLB binary data as Uint8Array
     * @group assembly
     * @shortname step to gltf with draco
     * @drawable false
     */
    convertStepToGltfWithDraco(inputs: Inputs.OCCT.ConvertStepToGltfWithDracoDto): Promise<Uint8Array>;
    /**
     * Convert a STEP file to glTF format with full control over all reading,
     * meshing and writer options, plus explicit Draco geometry compression
     * settings.
     *
     * Same fast path as `convertStepToGltfAdvanced` but exposes the 8 Draco
     * knobs.
     *
     * @param inputs - Advanced options including STEP data, mesh settings, glTF
     *                 export settings and Draco knobs.
     * @returns GLB binary data as Uint8Array
     * @group assembly
     * @shortname step to gltf advanced with draco
     * @drawable false
     */
    convertStepToGltfAdvancedWithDraco(inputs: Inputs.OCCT.ConvertStepToGltfAdvancedWithDracoDto): Promise<Uint8Array>;
    /**
     * Parse a STEP file and return the assembly structure as JSON.
     *
     * Uses OCCT's native XCAFPrs_DocumentExplorer for efficient traversal.
     * Runs entirely in C++ for maximum performance.
     *
     * Returns an object containing an array of nodes with:
     * - id: Unique path identifier for each node
     * - name: Part or assembly name
     * - isAssembly: Whether this is an assembly node (has children)
     * - visible: Visibility flag
     * - color: Surface color (if set) with r, g, b, a components
     * - transform: 4x4 transformation matrix in column-major order (if not identity)
     *
     * @param inputs - STEP file content. Accepts File, Blob, string, ArrayBuffer, or Uint8Array.
     * @returns Parsed assembly structure
     * @group assembly
     * @shortname parse step to json
     * @drawable false
     */
    parseStepToJson(inputs: Inputs.OCCT.ParseStepAssemblyToJsonDto): Promise<Models.OCCT.AssemblyJsonResult>;
}
