import { DataDrivenPropertyValueSpecification, FormattedSpecification, LayerSpecification, StyleSpecification, VectorSourceSpecification } from 'maplibre-gl';
import { EMSClient, TMSServiceConfig } from './ems_client';
import { AbstractEmsService } from './ems_service';
import { layerPaintProperty, blendMode, mbColorDefinition } from './utils';
export type EmsSprite = {
    height: number;
    pixelRatio: number;
    width: number;
    x: number;
    y: number;
    sdf?: boolean;
};
export type EmsSpriteSheet = {
    [spriteName: string]: EmsSprite;
};
type EmsVectorSources = {
    [sourceName: string]: VectorSourceSpecification;
};
type EmsVectorStyle = StyleSpecification & {
    sources: EmsVectorSources;
};
type EmsRasterStyle = {
    tilejson: string;
    name: string;
    attribution: string;
    minzoom: number;
    maxzoom: number;
    bounds: number[];
    format: string;
    type: string;
    tiles: string[];
    center: number[];
};
export declare class TMSService extends AbstractEmsService {
    static SupportedLanguages: {
        key: string;
        omt: string;
    }[];
    static colorOperationDefaults: {
        style: string;
        operation: blendMode;
        percentage: number;
    }[];
    protected readonly _config: TMSServiceConfig;
    private _getRasterStyleJson;
    private _getVectorStyleJsonRaw;
    private _getVectorStyleJsonInlined;
    constructor(config: TMSServiceConfig, emsClient: EMSClient, proxyPath: string);
    static transformLanguageProperty(layer: LayerSpecification, lang: string): DataDrivenPropertyValueSpecification<FormattedSpecification> | undefined;
    static transformColorProperties(layer: LayerSpecification, color?: string, operation?: blendMode, percentage?: number): {
        property: keyof layerPaintProperty;
        color: mbColorDefinition | undefined;
    }[];
    private static _getTextField;
    getDefaultRasterStyle(): Promise<EmsRasterStyle | undefined>;
    getUrlTemplate(): Promise<string>;
    getUrlTemplateForVector(sourceId: string): Promise<string>;
    getVectorStyleSheet(): Promise<EmsVectorStyle | undefined>;
    getVectorStyleSheetRaw(): Promise<EmsVectorStyle | undefined>;
    getSpriteSheetMeta(isRetina?: boolean): Promise<{
        png: string;
        json: EmsSpriteSheet;
    } | undefined>;
    getSpriteSheetJsonPath(isRetina?: boolean): Promise<string>;
    getSpriteSheetPngPath(isRetina?: boolean): Promise<string>;
    getDisplayName(): string;
    getMinZoom(format?: string): Promise<number | undefined>;
    getMaxZoom(format?: string): Promise<number | undefined>;
    getId(): string;
    hasId(id: string): boolean;
    getApiUrl(): string;
    private _getStyleUrlForLocale;
    private _getFormats;
    private _getSpriteSheetRootPath;
    private _getUrlTemplateForGlyphs;
}
export {};
