import Point from "@mapbox/point-geometry";
import { PMTiles } from "pmtiles";
import { Bbox, Feature, TileCache, Zxy } from "./tilecache";
export interface PreparedTile {
    z: number;
    origin: Point;
    data: Map<string, Feature[]>;
    scale: number;
    dim: number;
    dataTile: Zxy;
}
export interface TileTransform {
    dataTile: Zxy;
    origin: Point;
    scale: number;
    dim: number;
}
export declare const transformGeom: (geom: Array<Array<Point>>, scale: number, translate: Point) => Point[][];
export declare const wrap: (val: number, z: number) => number;
export declare class View {
    levelDiff: number;
    tileCache: TileCache;
    maxDataLevel: number;
    constructor(tileCache: TileCache, maxDataLevel: number, levelDiff: number);
    dataTilesForBounds(displayZoom: number, bounds: Bbox): Array<TileTransform>;
    dataTileForDisplayTile(displayTile: Zxy): TileTransform;
    getBbox(displayZoom: number, bounds: Bbox): Promise<Array<PreparedTile>>;
    getDisplayTile(displayTile: Zxy): Promise<PreparedTile>;
}
export interface SourceOptions {
    levelDiff?: number;
    maxDataZoom?: number;
    url?: PMTiles | string;
    sources?: Record<string, SourceOptions>;
}
export declare const sourcesToViews: (options: SourceOptions) => Map<string, View>;
