import { ConfigTileSetRaster, ConfigTileSetRasterOutput } from '@basemaps/config';
import { ImageFormat, LatLon, TileMatrixSet } from '@basemaps/geo';
import { LambdaHttpRequest } from '@linzjs/lambda';
import { TileXyzGet } from '../routes/tile.xyz.js';
export interface TileXyz {
    /** Tile XYZ location */
    tile: {
        x: number;
        y: number;
        z: number;
    };
    /** Name of the tile set to use */
    tileSet: string;
    /** TileMatrix that is requested */
    tileMatrix: TileMatrixSet;
    /** Output tile format */
    tileType: string;
    /** Optional processing pipeline to use */
    pipeline?: string | null;
}
export interface TileMatrixRequest {
    Params: {
        tileMatrix?: string;
    };
}
export declare const Validate: {
    /**
     * Validate that the api key exists and is valid
     *
     * @throws if api key is not valid
     */
    apiKey(req: LambdaHttpRequest): string;
    getTileMatrixSet(str?: string): TileMatrixSet | null;
    /** Read in all image formats specified in the query parameters "format" or "tileFormat" */
    getRequestedFormats(req: LambdaHttpRequest): ImageFormat[] | null;
    /** Validate that a lat and lon are between -90/90 and -180/180 */
    getLocation(lonIn: string, latIn: string): LatLon | null;
    /**
     * Validate that the tile request is somewhat valid
     * - Valid projection
     * - Valid range
     *
     * @throws LambdaHttpResponse for tile requests that are not valid
     *
     * @param req request to validate
     * @param xyzData
     */
    xyz(req: LambdaHttpRequest<TileXyzGet>): TileXyz;
    /**
     * Lookup the raster configuration pipeline for a output tile type
     *
     * Defaults to standard image format output if no outputs are defined on the tileset
     */
    pipeline(tileSet: ConfigTileSetRaster, tileType: string, pipeline?: string | null): ConfigTileSetRasterOutput | null;
};
