import { BasemapsConfigProvider, ConfigTileSetRaster, StyleJson } from '@basemaps/config';
import { TileMatrixSet } from '@basemaps/geo';
import { LambdaHttpRequest, LambdaHttpResponse } from '@linzjs/lambda';
/**
 * Convert relative URL into a full hostname URL, converting {tileMatrix} into the provided tileMatrix
 *
 * Will also add query parameters of apiKey and configuration if provided
 *
 * @example
 * ```typescript
 * convertRelativeUrl("/v1/tiles/aerial/{tileMatrix}/{z}/{x}/{y}.webp", NZTM2000Quad)
 * "https://basemaps.linz.govt.nz/v1/tiles/aerial/NZTM2000Quad/{z}/{x}/{y}.webp?api=c..."
 * ```
 *
 * @param url possible url to update
 * @param apiKey ApiKey to append with ?api= if required
 * @param tileMatrix replace {tileMatrix} with the tile matrix
 *
 * @returns Updated URL or empty string if url is empty
 */
export declare function convertRelativeUrl(url?: string, tileMatrix?: TileMatrixSet, apiKey?: string, config?: string | null): string;
/**
 * Update the style JSON to have absolute urls to the current host and API Keys where required
 *
 * @param style style to update
 * @param tileMatrix convert the tile matrix to the target tile matrix
 * @param apiKey api key to inject
 * @param config optional configuration url to use
 * @param layers replace the layers in the style json
 * @returns new style JSON
 */
export declare function setStyleUrls(style: StyleJson, tileMatrix: TileMatrixSet, apiKey: string, config: string | null): void;
export interface StyleConfig {
    /** Name of the terrain layer */
    terrain?: string | null;
    /** Combine layer with the labels layer */
    labels: boolean;
}
/**
 * Turn on the terrain setting in the style json
 */
export declare function setStyleTerrain(style: StyleJson, terrain: string, tileMatrix: TileMatrixSet): void;
/**
 * Generate a StyleJSON from a tileset
 * @returns
 */
export declare function tileSetToStyle(req: LambdaHttpRequest<StyleGet>, config: BasemapsConfigProvider, tileSet: ConfigTileSetRaster, tileMatrix: TileMatrixSet, apiKey: string): Promise<StyleJson>;
/**
 * generate a style from a tile set which has a output
 */
export declare function tileSetOutputToStyle(req: LambdaHttpRequest<StyleGet>, tileSet: ConfigTileSetRaster, tileMatrix: TileMatrixSet, apiKey: string): StyleJson;
export interface StyleGet {
    Params: {
        styleName: string;
    };
}
export declare function styleJsonGet(req: LambdaHttpRequest<StyleGet>): Promise<LambdaHttpResponse>;
