import type { Compression } from '..';
import type { Face, Metadata } from 's2-tilejson';
export * from './pmtiles';
/** The defacto interface for all writers. */
export interface Writer {
    write(data: Uint8Array, offset: number): Promise<void>;
    append(data: Uint8Array): Promise<void>;
    appendSync(data: Uint8Array): void;
    appendString(string: string): Promise<void>;
    appendStringSync(string: string): void;
}
/** A base interface for all tile stores. */
export interface TileWriter {
    writeTileWM(zoom: number, x: number, y: number, data: Uint8Array): Promise<void>;
    writeTileS2(face: Face, zoom: number, x: number, y: number, data: Uint8Array): Promise<void>;
    commit(metadata: Metadata, tileCompression?: Compression): Promise<void>;
}
/** A base interface for all tile stores. */
export interface TemporalTileWriter extends TileWriter {
    writeTemporalTileWM(time: Date, zoom: number, x: number, y: number, data: Uint8Array): Promise<void>;
    writeTemporalTileS2(time: Date, face: number, zoom: number, x: number, y: number, data: Uint8Array): Promise<void>;
}
/** A Tile writer designed for testing. */
export declare class BufferTileWriter implements TemporalTileWriter {
    metadata: Metadata | null;
    tiles: Map<string, Uint8Array>;
    /**
     * Write a tile to the folder location given its (z, x, y) coordinates.
     * @param zoom - the zoom level
     * @param x - the tile X coordinate
     * @param y - the tile Y coordinate
     * @param data - the tile data to store
     */
    writeTileWM(zoom: number, x: number, y: number, data: Uint8Array): Promise<void>;
    /**
     * Write a tile to the folder location given its (face, zoom, x, y) coordinates.
     * @param face - the Open S2 projection face
     * @param zoom - the zoom level
     * @param x - the tile X coordinate
     * @param y - the tile Y coordinate
     * @param data - the tile data to store
     */
    writeTileS2(face: Face, zoom: number, x: number, y: number, data: Uint8Array): Promise<void>;
    /**
     * Write a time series tile to the folder location given its (t, z, x, y) coordinates.
     * @param time - the date of the data
     * @param zoom - the zoom level
     * @param x - the tile X coordinate
     * @param y - the tile Y coordinate
     * @param data - the tile data to store
     */
    writeTemporalTileWM(time: Date, zoom: number, x: number, y: number, data: Uint8Array): Promise<void>;
    /**
     * Write a time series tile to the folder location given its (face, zoom, x, y) coordinates.
     * @param time - the date of the data
     * @param face - the Open S2 projection face
     * @param zoom - the zoom level
     * @param x - the tile X coordinate
     * @param y - the tile Y coordinate
     * @param data - the tile data to store
     */
    writeTemporalTileS2(time: Date, face: number, zoom: number, x: number, y: number, data: Uint8Array): Promise<void>;
    /**
     * Finish writing by building the header with root and leaf directories.
     * @param metadata - the metadata about all the tiles to store
     */
    commit(metadata: Metadata): Promise<void>;
}
/** Buffer writer is used on smaller datasets that are easy to write in memory. Faster then the Filesystem */
export declare class BufferWriter implements Writer {
    #private;
    /**
     * Append data to the buffer
     * @param data - the data to append
     */
    append(data: Uint8Array): Promise<void>;
    /**
     * Append string to the buffer
     * @param string - the string to append
     */
    appendString(string: string): Promise<void>;
    /**
     * Append data to the buffer synchronously
     * @param data - the data to append
     */
    appendSync(data: Uint8Array): void;
    /**
     * Append string to the buffer synchronously
     * @param string - the string to append
     */
    appendStringSync(string: string): void;
    /**
     * Write data to the buffer
     * @param data - the data to write
     * @param offset - where in the buffer to start
     */
    write(data: Uint8Array, offset: number): Promise<void>;
    /** @returns - the buffer */
    commit(): Uint8Array;
}
//# sourceMappingURL=index.d.ts.map