import * as THREE from 'three';
import { Tile } from './tile';
import type { FrameState } from './types';
import { TileRequestScheduler } from './tile-request-scheduler';
import { TileCache } from './tile-cache';
import { TilesetHeader, TrajectoryHeader } from './header';
import { Trajectory } from './trajectory';
export interface TilesetOptions {
    url?: string;
    tileLoader: (tile: Tile) => Promise<void>;
    tileUnloader: (tile: Tile) => Promise<void>;
    onTileLoad: (tile: Tile) => any;
    onTileUnload: (tile: Tile) => any;
    onTileError: (tile: Tile, error: Error) => any;
    trajectoryLoader: (trajectory: Trajectory) => Promise<void>;
    trajectoryUnloader: (trajectory: Trajectory) => Promise<void>;
    onTrajectoryLoad: (trajectory: Trajectory) => any;
    onTrajectoryUnload: (trajectory: Trajectory) => any;
    onTrajectoryError: (trajectory: Trajectory, error: Error) => any;
}
export declare class Tileset {
    asset: {
        version: string;
        tilesetVersion: string;
        gltfUpAxis: "Y" | "Z";
        overview?: {
            imageFile: string;
            worldFile: string;
            imageWidth: number;
            imageHeight: number;
        };
        trajectories?: TrajectoryHeader[];
        [key: string]: any;
    };
    id: string;
    frameNumber: number;
    hasMixedContent: boolean;
    maxAverageTileMemory: number;
    properties: NonNullable<TilesetHeader['properties']>;
    options: TilesetOptions;
    root: Tile;
    rootMeta: NonNullable<TilesetHeader['rootMeta']>;
    transform: THREE.Matrix4;
    geometricError: number;
    cache: TileCache;
    currentMaxScreenSpaceError: number;
    requestScheduler: TileRequestScheduler;
    private cacheMemoryUsageInBytes;
    private normalTraverser;
    private skipTraverser;
    private mostDetailTraverser;
    loadedTiles: Set<Tile>;
    needsRefinedTiles: Set<Tile>;
    requestedTiles: Tile[];
    selectedTiles: Tile[];
    unloadTiles: Tile[];
    trajectories: Trajectory[];
    selectedTrajectories: Trajectory[];
    pointLength: number;
    floorLength: number;
    constructor(header: TilesetHeader, options: TilesetOptions);
    /**
     * 通过当前的内存使用，推测 maxScreenSpaceError
     */
    private adjustScreenSpaceError;
    private getTraverser;
    /** Release resources */
    reset(): void;
    update(frameState: FrameState, cacheFrameStates?: FrameState[]): void;
}
