/** 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;
}
/**
 * Enum representing a compression algorithm used.
 * 0 = unknown compression, for if you must use a different or unspecified algorithm.
 * 1 = no compression.
 * 2 = gzip
 * 3 = brotli
 * 4 = zstd
 */
export declare enum Compression {
    /** unknown compression, for if you must use a different or unspecified algorithm. */
    Unknown = 0,
    /** no compression. */
    None = 1,
    /** gzip. */
    Gzip = 2,
    /** brotli. */
    Brotli = 3,
    /** zstd. */
    Zstd = 4
}
/**
 * Provide a decompression implementation that acts on `buf` and returns decompressed data.
 *
 * Should use the native DecompressionStream on browsers, zlib on node.
 * Should throw if the compression algorithm is not supported.
 */
export type DecompressFunc = (buf: Uint8Array, compression: Compression) => Promise<Uint8Array>;
/**
 * Describe the type of tiles stored in the archive.
 * 0 is unknown/other, 1 is a vector tile spec.
 */
export declare enum TileType {
    /** unknown/other. */
    Unknown = 0,
    /** Vector tiles. */
    Pbf = 1,
    /** Image tiles. */
    Png = 2,
    /** Image tiles. */
    Jpeg = 3,
    /** Image tiles. */
    Webp = 4,
    /** Image tiles. */
    Avif = 5
}
/**
 * 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;
//# sourceMappingURL=pmtiles.d.ts.map