import { Compression } from '../../util/index.js';
import type { Metadata } from 's2-tilejson';
import type { Face, ReaderInputs } from '../../index.js';
/**
 * # S2 Tiles Reader
 *
 * ## Description
 *
 * An S2 Tile Reader to store tile and metadata in a cloud optimized format. Similar to PMTiles
 * but simplified to have as few features as possible.
 *
 * Reads either a Web Mercator tile or an S2 tile to the folder location given its (zoom, x, y) or (face, zoom, x, y) coordinates.
 *
 * Reads data via the [S2Tiles specification](https://github.com/Open-S2/s2tiles/blob/master/s2tiles-spec/1.0.0/README.md).
 *
 * ## Usage
 *
 * ```ts
 * import { S2TilesReader } from 'gis-tools-ts';
 * import { FileReader } from 'gis-tools-ts/file';
 * // or use the MMapReader if using Bun / FetchReader for web:
 * // import { MMapReader } from 'gis-tools-ts/mmap';
 * // import { FetchReader } from 'gis-tools-ts';
 *
 * const reader = new S2TilesReader(new FileReader('./data.s2tiles'));
 *
 * // get the metadata
 * const metadata = await reader.getMetadata();
 *
 * // S2 specific functions
 * const hasTile = await reader.hasTileS2(0, 0, 0, 0);
 * const tile = await reader.getTileS2(0, 0, 0, 0);
 *
 * // WM functions
 * const hasTile = await reader.hasTileWM(0, 0, 0);
 * const tile = await reader.getTileWM(0, 0, 0);
 * ```
 *
 * ## Links
 * - https://github.com/Open-S2/s2tiles/blob/master/s2tiles-spec/1.0.0/README.md
 */
export declare class S2TilesReader {
    #private;
    readonly path: string | ReaderInputs;
    version: number;
    maxzoom: number;
    compression: Compression;
    metadata?: Metadata;
    decoder: TextDecoder;
    /**
     * @param path - the location of the S2Tiles data
     * @param rangeRequests - FetchReader specific; enable range requests or use urlParam "bytes"
     * @param maxSize - the max size of the cache before dumping old data. Defaults to 20.
     */
    constructor(path: string | ReaderInputs, rangeRequests?: boolean, maxSize?: number);
    /**
     * Get the metadata of the archive
     * @returns - the metadata of the archive
     */
    getMetadata(): Promise<Metadata>;
    /** Setup the reader */
    setup(): Promise<void>;
    /**
     * Check if a tile exists in the archive
     * @param zoom - the zoom level of the tile
     * @param x - the x coordinate of the tile
     * @param y - the y coordinate of the tile
     * @returns - true if the tile exists in the archive
     */
    hasTileWM(zoom: number, x: number, y: number): Promise<boolean>;
    /**
     * Check if an S2 tile exists in the archive
     * @param face - the Open S2 projection face
     * @param zoom - the zoom level of the tile
     * @param x - the x coordinate of the tile
     * @param y - the y coordinate of the tile
     * @returns - true if the tile exists in the archive
     */
    hasTileS2(face: Face, zoom: number, x: number, y: number): Promise<boolean>;
    /**
     * Get the bytes of the tile at the given (zoom, x, y) coordinates
     * @param zoom - the zoom level of the tile
     * @param x - the x coordinate of the tile
     * @param y - the y coordinate of the tile
     * @returns - the bytes of the tile at the given (z, x, y) coordinates, or undefined if the tile
     * does not exist in the archive.
     */
    getTileWM(zoom: number, x: number, y: number): Promise<Uint8Array | undefined>;
    /**
     * Get the bytes of the tile at the given (face, zoom, x, y) coordinates
     * @param face - the Open S2 projection face
     * @param zoom - the zoom level of the tile
     * @param x - the x coordinate of the tile
     * @param y - the y coordinate of the tile
     * @returns - the bytes of the tile at the given (face, zoom, x, y) coordinates, or undefined if
     * the tile does not exist in the archive.
     */
    getTileS2(face: Face, zoom: number, x: number, y: number): Promise<undefined | Uint8Array>;
}
/**
 * Get the path to a tile
 * @param zoom - the zoom
 * @param x - the x
 * @param y - the y
 * @returns - The path as a collection of offsets pointing to the tile Node in the directory
 */
export declare function getS2TilePath(zoom: number, x: number, y: number): number[];
//# sourceMappingURL=index.d.ts.map