import type { PotreeSourceOptions } from "../potree-source.js";
import { Mesh } from '@loaders.gl/schema';
import { DataSource } from '@loaders.gl/loader-utils';
import { PotreeBoundingBox, PotreeMetadata } from "../types/potree-metadata.js";
import { POTreeNode } from "../parsers/parse-potree-hierarchy-chunk.js";
import { Proj4Projection } from '@math.gl/proj4';
import { LASMesh } from '@loaders.gl/las/src/lib/las-types';
export declare enum COORDINATE_SYSTEM {
    /**
     * `LNGLAT` if rendering into a geospatial viewport, `CARTESIAN` otherwise
     */
    DEFAULT = -1,
    /**
     * Positions are interpreted as [lng, lat, elevation]
     * lng lat are degrees, elevation is meters. distances as meters.
     */
    LNGLAT = 1,
    /**
     * Positions are interpreted as meter offsets, distances as meters
     */
    METER_OFFSETS = 2,
    /**
     * Positions are interpreted as lng lat offsets: [deltaLng, deltaLat, elevation]
     * deltaLng, deltaLat are delta degrees, elevation is meters.
     * distances as meters.
     */
    LNGLAT_OFFSETS = 3,
    /**
     * Non-geospatial
     */
    CARTESIAN = 0
}
export interface PotreeNodeMesh extends LASMesh {
    cartographicOrigin: number[];
    coordinateSystem: number;
}
/**
 * A Potree data source
 * @version 1.0 - @see https://github.com/potree/potree/blob/1.0RC/docs/file_format.md
 * @version 1.7 - @see https://github.com/potree/potree/blob/1.7/docs/potree-file-format.md
 * @note Point cloud nodes tile source
 */
export declare class PotreeNodesSource extends DataSource<string, PotreeSourceOptions> {
    /** Dataset base URL */
    baseUrl: string;
    /** Meta information from `cloud.js` */
    metadata: PotreeMetadata | null;
    /** Root node */
    root: POTreeNode | null;
    /** Is data source ready to use after initial loading */
    isReady: boolean;
    /** local CRS to WGS84 projection */
    projection: Proj4Projection | null;
    /** The data set minimum bounding box */
    boundingBox?: PotreeBoundingBox;
    private initPromise;
    /**
     * @constructor
     * @param data  - if string - data set path url or path to `cloud.js` metadata file
     *              - if Blob - single file data
     * @param options - data source properties
     */
    constructor(data: string, options: PotreeSourceOptions);
    /** Initial data source loading */
    init(): Promise<void>;
    /** Is data set supported */
    isSupported(): boolean;
    /** Get content files extension */
    getContentExtension(): string | null;
    /**
     * Load octree node content
     * @param nodeName name of a node, string of numbers in range 0..7
     * @return node content geometry or null if the node doesn't exist
     */
    loadNodeContent(nodeName: string): Promise<Mesh | null>;
    /**
     * Check if a node exists in the octree
     * @param nodeName name of a node, string of numbers in range 0..7
     * @returns true - the node does exist, false - the nodes doesn't exist
     */
    isNodeAvailable(nodeName: string): Promise<boolean>;
    /**
     * Load data source hierarchy into tree of available nodes
     */
    private loadHierarchy;
    /**
     * Deduce base url from the input url sring
     * @param data - data source input data
     */
    private makeBaseUrl;
    private parseBoundingVolume;
}
//# sourceMappingURL=potree-node-source.d.ts.map