import type { _NSObject } from "../Foundation/NSObject.js";
import type { _MDLMeshBuffer } from "./MDLMeshBuffer.js";
import type { _MDLMeshBufferData } from "./MDLMeshBufferData.js";
import type { _MDLSubmesh } from "./MDLSubmesh.js";
import type { _GLKMeshBuffer } from "../GLKit/GLKMeshBuffer.js";
import type { _MTKMeshBuffer } from "../MetalKit/MTKMeshBuffer.js";
export declare class _MDLSubmeshTopology extends _NSObject {
    static alloc(): _MDLSubmeshTopology;
    static new(): _MDLSubmeshTopology;
    init(): _MDLSubmeshTopology;
    /** create a topology object corresponding to the topology in the submesh */
    initWithSubmesh$(submesh: _MDLSubmesh): _MDLSubmeshTopology;
    /**
     * A buffer of 8 bit unsigned integer values, where each entry corresponds to the number of vertices making up a face. A submesh containing two triangles, a four sided polygon, and a line, would contain the data 3 3 4 2. If geometryType is of a fixed type, such as triangles, the buffer is optional, and will be created on demand if read. Indices to the vertex buffer will be stored in the index buffer correspondingly. In the example above, the indices would be stored in order, three indices for the first triangle, followed by three for the second, followed by four for the polygon, and finally two indices for the line.
     */
    faceTopology(): _GLKMeshBuffer | _MDLMeshBufferData | _MTKMeshBuffer | null;
    setFaceTopology$(value: _MDLMeshBuffer | null): void;
    /** The number of faces encoded in faceTopologyBuffer */
    faceCount(): number;
    setFaceCount$(value: number): void;
    /**
     * A crease value at a vertex to be applied during subdivision. Vertex creases A zero value is smooth, a one value is peaked. It is intended to be used with an index buffer, where the index buffer entries are vertex indices. The corresponding values in the corner sharpness attribute indicate the corner sharpness of those vertices. The index buffer is sparse. If a mesh has three sharp vertices, then the index buffer will have three entries. Since the number of entries in this vertex buffer is likely to be different than the number of entries in any other vertex buffer, it shouldn't be interleaved with other data.
     */
    vertexCreaseIndices(): _GLKMeshBuffer | _MDLMeshBufferData | _MTKMeshBuffer | null;
    setVertexCreaseIndices$(value: _MDLMeshBuffer | null): void;
    vertexCreases(): _GLKMeshBuffer | _MDLMeshBufferData | _MTKMeshBuffer | null;
    setVertexCreases$(value: _MDLMeshBuffer | null): void;
    /** The number of vertex creases encoded in vertexCreases */
    vertexCreaseCount(): number;
    setVertexCreaseCount$(value: number): void;
    /**
     * A crease value at an edge to be applied during subdivision. Edge creases A zero value is smooth, a one value is peaked. It is intended to be used with an index buffer, where the index buffer entries are edge index pairs. Accordingly, there will be two index entries for each edge sharpness entry, and the sharpness entry corresponds to the edge itself. The corresponding values in the edge sharpness attribute indicate the edge sharpness of those edges. The index buffer is sparse. If a mesh has three sharp edges, then the index buffer will have six entries. Since the number of entries in this vertex buffer is likely to be different than the number of entries in any other vertex buffer, it shouldn't be interleaved with other data.
     */
    edgeCreaseIndices(): _GLKMeshBuffer | _MDLMeshBufferData | _MTKMeshBuffer | null;
    setEdgeCreaseIndices$(value: _MDLMeshBuffer | null): void;
    edgeCreases(): _GLKMeshBuffer | _MDLMeshBufferData | _MTKMeshBuffer | null;
    setEdgeCreases$(value: _MDLMeshBuffer | null): void;
    /** The number of edge creases encoded in edgeCreases */
    edgeCreaseCount(): number;
    setEdgeCreaseCount$(value: number): void;
    /**
     * The hole attribute is a vertex attribute of single integer values where each integer is an index of a face that is to be used as a hole. If there are two holes in a mesh, then the vertex buffer will have two entries. Since the number of entries in this vertex buffer is likely to be different than the number of entries in any other vertex buffer, it shouldn't be interleaved with other data.
     */
    holes(): _GLKMeshBuffer | _MDLMeshBufferData | _MTKMeshBuffer | null;
    setHoles$(value: _MDLMeshBuffer | null): void;
    /** The number of holes encoded in holes */
    holeCount(): number;
    setHoleCount$(value: number): void;
}
