import type { Tileset } from './tileset';
import type { Tile } from './tile';
import type { FrameState } from './types';
export declare class ManagedArray<T> {
    private map;
    private array;
    private _length;
    constructor();
    /**
     * Gets or sets the length of the array.
     * If the set length is greater than the length of the internal array, the internal array is resized.
     * @type Number
     */
    get length(): number;
    /**
     * Gets the element at an index.
     * @param index - The index to get.
     */
    get(index: number): T;
    /**
     * Sets the element at an index. Resizes the array if index is greater than the length of the array.
     * @param index - The index to set.
     * @param element - The element to set at index.
     */
    set(index: number, element: T): void;
    delete(element: T): void;
    /**
     * Push an element into the array.
     * @param element - The element to push.
     */
    push(element: T): void;
    /**
     * Pop an element from the array.
     *
     * @returns The last element in the array.
     */
    pop(): T;
    reset(): void;
    find(target: T): boolean;
    peek(): T | undefined;
}
declare class TilesetBaseTraverser {
    tileset: Tileset;
    protected _canSelectTile: boolean;
    private _loadAllTilesTraversalStack;
    constructor(tileset: Tileset);
    traverse(root: Tile, frameState: FrameState, cacheFrameStates?: FrameState[]): void;
    reset(): void;
    protected updateTile(tile: Tile, frameState: FrameState): void;
    protected selectTile(tile: Tile, frameState: FrameState): void;
    protected loadTile(tile: Tile, frameState: FrameState): void;
    protected touchTile(tile: Tile, frameState: FrameState): void;
    protected canTraverse(tile: Tile, frameState: FrameState): boolean;
    protected updateTileVisibility(tile: Tile, frameState: FrameState): void;
    protected anyChildrenVisible(tile: Tile, frameState: FrameState): boolean;
    protected meetsScreenSpaceErrorEarly(tile: Tile, frameState: FrameState): boolean;
    protected sortTilesByDistanceToCamera(tiles: Tile[]): void;
}
export { TilesetBaseTraverser };
