import { ConfigImagery, ConfigLayer, ConfigTileSet } from '@basemaps/config';
import { Bounds, ImageFormat, TileMatrixSet, WmtsProvider } from '@basemaps/geo';
import { VNodeElement } from '@basemaps/shared';
export interface WmtsBuilderParams {
    /** Base URL for tile server */
    httpBase: string;
    /** API key to append to all resource urls */
    apiKey?: string;
    /** Config location */
    config?: string | null;
    /** Default pipeline to use */
    pipeline?: string;
}
export declare class WmtsBuilder {
    httpBase: string;
    apiKey?: string;
    config?: string | null;
    pipeline?: string;
    filters?: Record<string, string | undefined>;
    /** All the imagery used by the tileSet and tileMatrixes */
    imagery: Map<string, ConfigImagery>;
    formats: ImageFormat[];
    tileMatrixSets: Map<string, TileMatrixSet>;
    constructor(params: WmtsBuilderParams);
    addImagery(...imagery: ConfigImagery[]): void;
    addTileMatrix(...tileMatrix: TileMatrixSet[]): void;
    addFormats(...formats: ImageFormat[]): void;
    getFormats(): ImageFormat[];
    getMatrixSets(tileSet: ConfigTileSet): Set<TileMatrixSet>;
    buildKeywords(tileSet: {
        category?: string;
    }): VNodeElement;
    buildWgs84BoundingBox(tms: TileMatrixSet, layers: Bounds[]): VNodeElement;
    /** Combine all the bounds of the imagery inside the layers into a extent for the imagery set */
    buildBoundingBoxFromImagery(tms: TileMatrixSet, layers: ConfigLayer[]): VNodeElement | null;
    buildStyle(): VNodeElement;
    buildResourceUrl(tileSetId: string, suffix: string): VNodeElement;
    buildTileUrl(tileSetId: string, suffix: string): string;
    buildFormats(): VNodeElement[];
    buildTileMatrixLink(tileSet: ConfigTileSet): VNodeElement[];
    buildLayerFromImagery(layer: ConfigLayer): VNodeElement | null;
}
export interface WmtsCapabilitiesParams {
    provider?: WmtsProvider;
    /** Tileset to export into WMTS */
    tileSet: ConfigTileSet;
    /** List of tile matrixes to output */
    tileMatrix: TileMatrixSet[];
    /** All the imagery used by the tileSet and tileMatrixes */
    imagery: Map<string, ConfigImagery>;
    /** Limit the output to the following image formats other wise @see ImageFormatOrder */
    formats: ImageFormat[];
    /** Specific layers to add to the WMTS */
    layers?: ConfigLayer[];
    /** Default output pipeline to use */
    pipeline?: string | null;
}
/**
 * WMTS Capabilities Builder
 *
 * /v1/tiles/:tileSet/:tileMatrix/WMTSCapabilities.xml
 * /v1/tiles/:tileSet/WMTSCapabilities.xml
 * /v1/tiles/WMTSCapabilities.xml
 *
 * @example
 *
 */
export declare class WmtsCapabilities extends WmtsBuilder {
    minZoom: number;
    maxZoom: number;
    /** Wmts tileSet layer and imagery layers information */
    tileSet?: ConfigTileSet;
    configLayers?: ConfigLayer[];
    /** Wmts Provider information */
    provider?: WmtsProvider;
    constructor(params: WmtsBuilderParams);
    addTileSet(tileSet: ConfigTileSet): void;
    addLayers(configLayers?: ConfigLayer[]): void;
    addProvider(provider?: WmtsProvider): void;
    addPipeline(pipeline: string): void;
    toProviderVNode(provider?: WmtsProvider): VNodeElement[] | [];
    toLayerVNode(tileSet: ConfigTileSet): VNodeElement;
    toAllImageryLayersVNode(configLayers?: ConfigLayer[]): VNodeElement[];
    buildTileMatrixSet(tms: TileMatrixSet): VNodeElement;
    toVNode(): VNodeElement;
    toXml(): string;
    fromParams(params: WmtsCapabilitiesParams): void;
}
