import { ManifoldWorkerManager } from "../../manifold-worker/manifold-worker-manager";
import * as Inputs from "@bitbybit-dev/manifold/lib/api/inputs";
/**
 * Contains various functions for Solid meshes from Manifold library https://github.com/elalish/manifold
 * Thanks Manifold community for developing this kernel
 */
export declare class ManifoldEvaluate {
    private readonly manifoldWorkerManager;
    constructor(manifoldWorkerManager: ManifoldWorkerManager);
    /**
     * Get surface area of manifold
     * @param inputs manifold
     * @returns surface area of manifold
     * @group basic
     * @shortname surface area
     * @drawable false
     */
    surfaceArea(inputs: Inputs.Manifold.ManifoldDto<Inputs.Manifold.ManifoldPointer>): Promise<number>;
    /**
     * Get volume of manifold
     * @param inputs manifold
     * @returns volume of manifold
     * @group basic
     * @shortname volume
     * @drawable false
     */
    volume(inputs: Inputs.Manifold.ManifoldDto<Inputs.Manifold.ManifoldPointer>): Promise<number>;
    /**
      * Check if manifold contains triangles
      * @param inputs manifold
      * @returns boolean indicating emptyness
      * @group basic
      * @shortname is empty
      * @drawable false
      */
    isEmpty(inputs: Inputs.Manifold.ManifoldDto<Inputs.Manifold.ManifoldPointer>): Promise<boolean>;
    /**
     * Get number of vertices in manifold
     * @param inputs manifold
     * @returns number of vertices of manifold
     * @group basic
     * @shortname num vert
     * @drawable false
     */
    numVert(inputs: Inputs.Manifold.ManifoldDto<Inputs.Manifold.ManifoldPointer>): Promise<number>;
    /**
     * Get number of triangles in manifold
     * @param inputs manifold
     * @returns number of triangles of manifold
     * @group basic
     * @shortname num triangles
     * @drawable false
     */
    numTri(inputs: Inputs.Manifold.ManifoldDto<Inputs.Manifold.ManifoldPointer>): Promise<number>;
    /**
     * Get number of edges in manifold
     * @param inputs manifold
     * @returns number of edges of manifold
     * @group basic
     * @shortname num edges
     * @drawable false
     */
    numEdge(inputs: Inputs.Manifold.ManifoldDto<Inputs.Manifold.ManifoldPointer>): Promise<number>;
    /**
     * Get number of properties in manifold
     * @param inputs manifold
     * @returns number of properties of manifold
     * @group basic
     * @shortname num prop
     * @drawable false
     */
    numProp(inputs: Inputs.Manifold.ManifoldDto<Inputs.Manifold.ManifoldPointer>): Promise<number>;
    /**
     * The number of property vertices in the Manifold. This will always be >=
     * numVert, as some physical vertices may be duplicated to account for
     * different properties on different neighboring triangles.
     * @param inputs manifold
     * @returns number of properties of manifold
     * @group basic
     * @shortname num prop vert
     * @drawable false
     */
    numPropVert(inputs: Inputs.Manifold.ManifoldDto<Inputs.Manifold.ManifoldPointer>): Promise<number>;
    /**
     * Returns the axis-aligned bounding box of all the Manifold's vertices.
     * @param inputs manifold
     * @returns bounding box corner vectors of manifold
     * @group basic
     * @shortname bounding box
     * @drawable false
     */
    boundingBox(inputs: Inputs.Manifold.ManifoldDto<Inputs.Manifold.ManifoldPointer>): Promise<Inputs.Base.Vector3[]>;
    /**
     * Returns the tolerance of this Manifold's vertices, which tracks the
     * approximate rounding error over all the transforms and operations that have
     * led to this state. Any triangles that are colinear within this tolerance
     * are considered degenerate and removed. This is the value of &epsilon;
     * defining
     * [&epsilon;-valid](https://github.com/elalish/manifold/wiki/Manifold-Library#definition-of-%CE%B5-valid).
     * @param inputs manifold
     * @returns tolerance of manifold
     * @group basic
     * @shortname tolerance
     * @drawable false
     */
    tolerance(inputs: Inputs.Manifold.ManifoldDto<Inputs.Manifold.ManifoldPointer>): Promise<number>;
    /**
     * The genus is a topological property of the manifold, representing the
     * number of handles. A sphere is 0, torus 1, etc. It is only meaningful for
     * a single mesh, so it is best to call Decompose() first.
     * @param inputs manifold
     * @returns genus of manifold
     * @group basic
     * @shortname genus
     * @drawable false
     */
    genus(inputs: Inputs.Manifold.ManifoldDto<Inputs.Manifold.ManifoldPointer>): Promise<number>;
    /**
     * Returns the minimum gap between two manifolds. Returns a float between
     * 0 and searchLength.
     * @param inputs two manifolds and search length
     * @returns minimum
     * @group basic
     * @shortname min gap
     * @drawable false
     */
    minGap(inputs: Inputs.Manifold.ManifoldsMinGapDto<Inputs.Manifold.ManifoldPointer>): Promise<number>;
    /**
     * If this mesh is an original, this returns its ID that can be referenced
     * by product manifolds. If this manifold is a product, this
     * returns -1.
     * @param inputs manifold
     * @returns original id of manifold
     * @group basic
     * @shortname original id
     * @drawable false
     */
    originalID(inputs: Inputs.Manifold.ManifoldDto<Inputs.Manifold.ManifoldPointer>): Promise<number>;
    /**
     * Returns the reason for an input Mesh producing an empty Manifold. This
     * Status will carry on through operations like NaN propogation, ensuring an
     * errored mesh doesn't get mysteriously lost. Empty meshes may still show
     * NoError, for instance the intersection of non-overlapping meshes.
     * @param inputs manifold
     * @returns error status string (NoError, NotManifold, InvalidConstruction, etc.)
     * @group basic
     * @shortname status
     * @drawable false
     */
    status(inputs: Inputs.Manifold.ManifoldDto<Inputs.Manifold.ManifoldPointer>): Promise<string>;
}
