import type { NobjcObject } from "objc-js";
import type { _GKGraph } from "./GKGraph.js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { GKTriangle } from "../structs/GKTriangle.js";
import type { GKMeshGraphTriangulationMode } from "./GKMeshGraphTriangulationMode.js";
export declare class _GKMeshGraph extends _GKGraph {
    static alloc(): _GKMeshGraph;
    static new(): _GKMeshGraph;
    init(): _GKMeshGraph;
    /**
     * Creates a graph with a given buffer radius Obstacles can then be added to this graph prior to a call to [GKMeshGraph trianglulate] @param bufferRadius the circular radius of a potential agent that will navigate this graph. Obstacles are extruded by this amount to create the graph. Must be positive. Negative values are clipped to 0.0f @param min the minimum coordinate (lower left corner) of the bounding box that will encapsulate this graph. No obstacles should fall outside this bounding box. @param max the maximum coordinate (upper right corner) of the bounding box that will encapsulate this graph. No obstacles should fall outside this bounding box. @param nodeClass the class of the nodes that this graph should create. Must descend from GKGraphNode2D
     */
    static graphWithBufferRadius$minCoordinate$maxCoordinate$nodeClass$(bufferRadius: number, min: NobjcObject, max: NobjcObject, nodeClass: NobjcObject): _GKMeshGraph;
    /**
     * Same as [GKMeshGraph graphWithBufferRadius:minCoordinate:maxCoordinate:nodeClass:] where custom node class defaults to GKGraphNode2D
     */
    static graphWithBufferRadius$minCoordinate$maxCoordinate$(bufferRadius: number, min: NobjcObject, max: NobjcObject): _GKMeshGraph;
    initWithBufferRadius$minCoordinate$maxCoordinate$nodeClass$(bufferRadius: number, min: NobjcObject, max: NobjcObject, nodeClass: NobjcObject): _GKMeshGraph;
    initWithBufferRadius$minCoordinate$maxCoordinate$(bufferRadius: number, min: NobjcObject, max: NobjcObject): _GKMeshGraph;
    /**
     * Adds obstacles to this mesh graph. Only reflected after the next triangulate call.
     */
    addObstacles$(obstacles: _NSArray): void;
    /**
     * Removes obstacles from this graph. Only reflected after the next triangulate call.
     */
    removeObstacles$(obstacles: _NSArray): void;
    /**
     * Connects the node to this graph by inserting it into an existing triangle and making the appropriate connections Node must be in the space defined by the min and max coordinates of this graph. @param node the node to connect
     */
    connectNodeUsingObstacles$(node: NobjcObject): void;
    /**
     * Generates a new triangle mesh for the given obstacles. This should be called after some number of calls to addObstacle The negative space between all input obstacles are triangulated to create a mesh This mesh is turned into a set of connected graph nodes based on
     */
    triangulate(): void;
    /**
     * Returns the triangle at the given index @see numTriangles @param index the index of the triangle to be returned @return the triangle at the given index
     */
    triangleAtIndex$(index: number): GKTriangle;
    /** Returns the class of the specified generic index */
    classForGenericArgumentAtIndex$(index: number): NobjcObject;
    /** Array of the extruded obstacles currently represented by this graph */
    obstacles(): _NSArray;
    /**
     * The distance by which all obstacles are extruded. This is most commonly the spatial bounding radius of a potential traveler on this path
     */
    bufferRadius(): number;
    /**
     * Specifies how graph nodes are generated when you triangulate this graph. You can combine triangulation modes using the | (OR) operator @see GKMeshGraphTriangulationMode
     */
    triangulationMode(): GKMeshGraphTriangulationMode;
    setTriangulationMode$(value: GKMeshGraphTriangulationMode): void;
    /** The number of triangles currently in this mesh graph */
    triangleCount(): number;
}
