export default TerrainTile;
/**
 * terrain tile is a part of a 2d array
 */
declare class TerrainTile {
    gridPosition: Vector2;
    scale: Vector2;
    size: Vector2;
    position: Vector2;
    resolution: ObservedInteger;
    /**
     *
     * @type {Material}
     */
    material: Material;
    mesh: import("three").Mesh<ThreeBufferGeometry, import("three").Material | import("three").Material[]>;
    /**
     *
     * @type {THREE.BufferGeometry}
     */
    geometry: THREE.BufferGeometry;
    /**
     *
     * @type {boolean}
     */
    enableBVH: boolean;
    /**
     *
     * @type {BvhClient}
     */
    external_bvh: BvhClient;
    /**
     *
     * @type {BinaryUint32BVH}
     */
    bvh: BinaryUint32BVH;
    /**
     *
     * @type {boolean}
     */
    isBuilt: boolean;
    /**
     *
     * @type {boolean}
     */
    isBuildInProgress: boolean;
    referenceCount: number;
    /**
     *
     * @type {Signal<TerrainTile>}
     */
    onBuilt: Signal<TerrainTile>;
    onDestroyed: Signal<any, any, any, any, any, any, any, any>;
    /**
     * Encodes whether stitching has been performed on per-neighbour basis
     * @private
     * @type {{bottomLeft: boolean, top: boolean, left: boolean, bottom: boolean, bottomRight: boolean, topLeft: boolean, topRight: boolean, right: boolean}}
     */
    private stitching;
    /**
     * Initial estimate of height bounds for this tile
     * Untransformed by transform matrix
     * @type {NumericInterval}
     * @private
     */
    private __initial_height_range;
    /**
     * Used to track number of times tile was built
     * @type {number}
     */
    version: number;
    /**
     *
     * @param {number[]|Float32Array|mat4} m4
     */
    set transform(m4: number[] | Float32Array | mat4);
    /**
     *
     * @return {number[]}
     */
    get transform(): number[];
    /**
     *
     * @param {SurfacePoint3} result
     * @param {number} originX
     * @param {number} originY
     * @param {number} originZ
     * @param {number} directionX
     * @param {number} directionY
     * @param {number} directionZ
     * @return {boolean}
     */
    raycastFirstSync(result: SurfacePoint3, originX: number, originY: number, originZ: number, directionX: number, directionY: number, directionZ: number): boolean;
    getVertexNormal(index: any, result: any): void;
    setVertexNormal(index: any, value: any): void;
    /**
     * Stitch vertex normals along the edges of the tile set
     * @param {TerrainTile|undefined} top
     * @param {TerrainTile|undefined} bottom
     * @param {TerrainTile|undefined} left
     * @param {TerrainTile|undefined} right
     * @param {TerrainTile|undefined} topLeft
     * @param {TerrainTile|undefined} topRight
     * @param {TerrainTile|undefined} bottomLeft
     * @param {TerrainTile|undefined} bottomRight
     */
    stitchNormals(top: TerrainTile | undefined, bottom: TerrainTile | undefined, left: TerrainTile | undefined, right: TerrainTile | undefined, topLeft: TerrainTile | undefined, topRight: TerrainTile | undefined, bottomLeft: TerrainTile | undefined, bottomRight: TerrainTile | undefined): void;
    computeBoundingBox(): void;
    /**
     *
     * @param {number} min_height
     * @param {number} max_height
     */
    setInitialHeightBounds(min_height: number, max_height: number): void;
    dispose(): void;
    /**
     *
     * @param {{geometry, bvh?:{leaf_count:number, data:ArrayBuffer}}} tileData
     * @returns {Mesh}
     */
    build(tileData: {
        geometry: any;
        bvh?: {
            leaf_count: number;
            data: ArrayBuffer;
        };
    }): Mesh;
}
import Vector2 from '../../../../core/geom/Vector2.js';
import ObservedInteger from "../../../../core/model/ObservedInteger.js";
import { BufferGeometry as ThreeBufferGeometry } from 'three';
import { BvhClient } from "../../../../core/bvh2/bvh3/BvhClient.js";
import { BinaryUint32BVH } from "../../../../core/bvh2/binary/2/BinaryUint32BVH.js";
import Signal from "../../../../core/events/signal/Signal.js";
import { mat4 } from "gl-matrix";
import { SurfacePoint3 } from "../../../../core/geom/3d/SurfacePoint3.js";
//# sourceMappingURL=TerrainTile.d.ts.map