import type { Compression } from '../../index.js';
/** A tile, in the format of ZXY. */
export type FlatTile = [zoom: number, x: number, y: number];
/** PMTiles v3 directory entry. */
export interface Entry {
    tileID: number;
    offset: number;
    length: number;
    runLength: number;
}
/**
 * Describe the type of tiles stored in the archive.
 * 0 is unknown/other, 1 is a vector tile spec.
 */
export declare const TileType: {
    /** unknown/other. */
    readonly Unknown: 0;
    /** Vector tiles. */
    readonly Pbf: 1;
    /** Image tiles. */
    readonly Png: 2;
    /** Image tiles. */
    readonly Jpeg: 3;
    /** Image tiles. */
    readonly Webp: 4;
    /** Image tiles. */
    readonly Avif: 5;
};
/**
 * Enum representing a tile types stored in the archive.
 * 0 = unknown type
 * 1 = PBF
 * 2 = PNG
 * 3 = JPEG
 * 4 = WEBP
 * 5 = AVIF
 */
export type TileType = (typeof TileType)[keyof typeof TileType];
/**
 * PMTiles v3 header storing basic archive-level information.
 */
export interface Header {
    specVersion: number;
    rootDirectoryOffset: number;
    rootDirectoryLength: number;
    jsonMetadataOffset: number;
    jsonMetadataLength: number;
    leafDirectoryOffset: number;
    leafDirectoryLength?: number;
    tileDataOffset: number;
    tileDataLength?: number;
    numAddressedTiles: number;
    numTileEntries: number;
    numTileContents: number;
    clustered: boolean;
    internalCompression: Compression;
    tileCompression: Compression;
    tileType: TileType;
    minZoom: number;
    maxZoom: number;
    etag?: string;
}
export declare const HEADER_SIZE_BYTES = 127;
export declare const ROOT_SIZE = 16384;
/**
 * Convert Z,X,Y to a Hilbert TileID.
 * @param zoom - the zoom level
 * @param x - the x coordinate
 * @param y - the y coordinate
 * @returns - the Hilbert encoded TileID
 */
export declare function zxyToTileID(zoom: number, x: number, y: number): number;
/**
 * Convert a Hilbert TileID to Z,X,Y.
 * @param i - the encoded tile ID
 * @returns - the decoded Z,X,Y
 */
export declare function tileIDToZxy(i: number): FlatTile;
/**
 * Low-level function for looking up a TileID or leaf directory inside a directory.
 * @param entries - the directory entries
 * @param tileID - the tile ID
 * @returns the entry associated with the tile, or null if not found
 */
export declare function findTile(entries: Entry[], tileID: number): Entry | null;
/**
 * Parse raw header bytes into a Header object.
 * @param bytes - the raw header bytes
 * @returns the parsed header
 */
export declare function bytesToHeader(bytes: Uint8Array): Header;
/**
 * Deserialize a directory from a Uint8Array.
 * @param buffer - the buffer to deserialize
 * @returns - the deserialized entries
 */
export declare function deserializeDir(buffer: Uint8Array): Entry[];
/**
 * Get a 64-bit number from a DataView
 * @param dv - a DataView
 * @param offset - the offset in the DataView
 * @returns - the decoded 64-bit number
 */
export declare function getUint64(dv: DataView, offset: number): number;
