import type Session from './session.js';
import type { Face, LayerDefinition } from 'style/style.spec.js';
import type { SourceFlushMessage, TileRequest } from '../worker.spec.js';
import type { VectorPointGeometry, VectorPolygonGeometry } from 'gis-tools/index.js';
/** Local Tile Properties */
export interface LocalTileProperties {
    id: string;
    face: number;
    zoom: number;
    i: number;
    j: number;
}
/** Boundary describing the tile shape */
export interface FeatureBoundary {
    extent: number;
    properties: LocalTileProperties;
    geometry: VectorPolygonGeometry;
}
/** Point describing the tile */
export interface GetFeatureName {
    extent: number;
    properties: LocalTileProperties;
    geometry: VectorPointGeometry;
}
/** Local Tile */
export interface LocalTile {
    face: Face;
    zoom: number;
    i: number;
    j: number;
    extent: number;
    layers: {
        boundary: {
            extent: 1;
            length: 1;
            features: FeatureBoundary[];
        };
        name: {
            extent: 1;
            length: 1;
            features: GetFeatureName[];
        };
    };
}
/** Local Source */
export default class LocalSource {
    #private;
    name: string;
    isTimeFormat: boolean;
    styleLayers: LayerDefinition[];
    session: Session;
    textEncoder: TextEncoder;
    /**
     * @param name - the name of the source
     * @param session - the session
     * @param layers - the layers
     */
    constructor(name: string, session: Session, layers: LayerDefinition[]);
    /** a no-op for local sources; nothing to build */
    build(): void;
    /**
     * Get a tile
     * @param mapID - the map requesting the tile
     * @param tile - the tile request
     * @param flushMessage - the flush message to send a report to
     */
    tileRequest(mapID: string, tile: TileRequest, flushMessage: SourceFlushMessage): void;
}
