import * as THREE from 'three';
import type { Tileset } from './tileset';
import type { FrameState } from './types';
import { BoundingVolume } from '../../utils/volume';
import { TileHeader } from './header';
import { TileNode } from './tile-node';
import { LoadResultType } from '../loaders/shared';
export type TileContentData = {
    type: LoadResultType['type'];
    byteLength: number;
    memoryUsage: number;
    uri: string;
    object: TileNode;
};
export declare class Tile {
    id: string;
    tileset: Tileset;
    parent: Tile | null;
    contentParent: Tile | null;
    geometricError: number;
    type: 'SCENEGRAPH' | 'EMPTY' | 'TILESET';
    floor: number;
    content: {
        uri: string;
        group?: number;
        data?: TileContentData;
        loadState: 'LOADING' | 'UNLOADED' | 'READY' | 'FAILED';
        loadProgress: number;
        loadStateUpdateTime: number;
        loadfailRetryDelay: number;
        byteLength: number;
        memoryUsage: number;
    } | null;
    level: number;
    levelOfContent: number;
    extras: Record<string, any>;
    refine: TileHeader['refine'];
    boundingVolume?: BoundingVolume;
    viewerRequestVolume?: BoundingVolume;
    transform: THREE.Matrix4;
    children: Tile[];
    state: {
        visible: boolean;
        frameNumber: number;
        selectedFrameNumber: number;
        requestedFrameNumber: number;
        touchedFrameNumber: number;
        distanceToCamera: number;
        centerZDepth: number;
        centerScreenY: number;
        screenSpaceError: number;
        inRequestVolume: boolean;
        visibilityPlaneMask: number;
        shouldRefine: boolean;
        stackLength: number;
        finalResolution: boolean;
        selectionDepth: number;
        shouldSelect: boolean;
        lastSelect: boolean;
        ancestorWithContent: Tile | null;
        ancestorWithContentAvailable: Tile | null;
    };
    constructor(id: string, header: TileHeader, tileset: Tileset, parent?: Tile);
    traverse(callback: (tile: Tile) => void): void;
    updateState(frameState: FrameState): void;
    get selected(): boolean;
    get hasChildren(): boolean;
    get siblingIndex(): number;
    get hasTilesetContent(): boolean;
    get hasRenderContent(): boolean;
    get contentAvailable(): boolean;
    get hasUnloadedContent(): boolean;
    get hasEmptyContent(): boolean;
    get contentReady(): boolean;
    get contentByteLength(): number;
    get contentMemoryUsage(): number;
    getScreenSpaceError(frameState: FrameState, distanceToCamera: number, useParentGeometricError: boolean): number;
    getPriority(frameState: FrameState): number;
}
