import { RefreshMode, IExternalBaseLayer, Bounds, LayerTransparencySet, ImageFormat, GenericEvent, ClientKind, Coordinate2D, Size, Dictionary, UnitOfMeasure } from './common';
import LayerGroup from "ol/layer/Group";
import AbstractSource from "ol/source/Source";
import View from "ol/View";
import LayerBase from "ol/layer/Base";
import { RuntimeMap } from './contracts/runtime-map';
import ImageWrapper from 'ol/Image';
import Feature from "ol/Feature";
import { Client } from './client';
import { ILayerSetOL, IImageLayerEvents } from './layer-set-contracts';
import Geometry from 'ol/geom/Geometry';
import { LoadFunction as TileLoadFunction } from 'ol/Tile';
import { MapGuideMockMode } from '../components/mapguide-debug-context';
import { OLImageLayer, OLTileLayer } from './ol-types';
import { IGenericSubjectMapLayer } from '../actions/defs';
import { ProjectionLike } from "ol/proj";
export declare function toProjUnit(unit: UnitOfMeasure): "in" | "ft" | "yd" | "mi" | "nm" | "mm" | "cm" | "m" | "km" | "px";
export declare function blankImageLoadFunction(image: ImageWrapper): void;
export declare function mockMapGuideImageLoadFunction(image: ImageWrapper, src: string): void;
export declare enum MgLayerSetMode {
    Stateless = 0,
    Stateful = 1,
    OverviewMap = 2
}
/**
 * @hidden
 */
export declare class MgLayerSetOL implements ILayerSetOL {
    readonly mgTiledLayers: OLTileLayer[];
    readonly externalBaseLayersGroup: LayerGroup | undefined;
    readonly overlay: OLImageLayer;
    readonly projection: ProjectionLike;
    readonly dpi: number;
    readonly extent: Bounds;
    private readonly inPerUnit;
    readonly view: View;
    constructor(mgTiledLayers: OLTileLayer[], externalBaseLayersGroup: LayerGroup | undefined, overlay: OLImageLayer, projection: ProjectionLike, dpi: number, extent: Bounds, inPerUnit: number, view: View);
    selectionOverlay: OLImageLayer | undefined;
    activeSelectedFeatureOverlay: OLImageLayer | undefined;
    getMetersPerUnit(): number;
    scaleToResolution(scale: number): number;
    resolutionToScale(resolution: number): number;
    getSourcesForProgressTracking(): AbstractSource[];
    getLayers(): LayerBase[];
    update(showGroups: string[] | undefined, showLayers: string[] | undefined, hideGroups: string[] | undefined, hideLayers: string[] | undefined): void;
    updateSelectionColor(color: string): void;
    updateExternalBaseLayers(externalBaseLayers: IExternalBaseLayer[]): void;
    updateTransparency(trans: LayerTransparencySet): void;
    refreshMap(mode?: RefreshMode): void;
    private makeActiveSelectedFeatureSource;
    showActiveSelectedFeature(mapExtent: Bounds, size: Size, uri: string): void;
}
export interface IMapViewerContextCallback {
    getMockMode(): MapGuideMockMode | undefined;
    incrementBusyWorker(): void;
    decrementBusyWorker(): void;
    addImageLoading(): void;
    addImageLoaded(): void;
    onImageError(e: GenericEvent): void;
    onSessionExpired(): void;
    getSelectableLayers(): string[];
    getClient(): Client;
    isContextMenuOpen(): boolean;
    getAgentUri(): string;
    getAgentKind(): ClientKind;
    getMapName(): string;
    getSessionId(): string;
    getLocale(): string | undefined;
    isFeatureTooltipEnabled(): boolean;
    getPointSelectionBox(point: Coordinate2D): Bounds;
    openTooltipLink(url: string): void;
    addFeatureToHighlight(feat: Feature<Geometry> | undefined, bAppend: boolean): void;
    getBaseTileLoaders(): Dictionary<TileLoadFunction>;
}
export interface ILayerSetFactory {
    create(locale: string | undefined, externalBaseLayers: IExternalBaseLayer[] | undefined, mode: MgLayerSetMode, appSettings: Dictionary<string>): ILayerSetOL;
}
export declare class MgInnerLayerSetFactory implements ILayerSetFactory {
    private callback;
    private map;
    private agentUri;
    private dynamicOverlayParams;
    private staticOverlayParams;
    private selectionOverlayParams;
    constructor(callback: IMapViewerContextCallback, map: RuntimeMap | IGenericSubjectMapLayer, agentUri: string | undefined, imageFormat: string, selectionImageFormat: string | undefined, selectionColor: string | undefined);
    private getTileUrlFunctionForGroup;
    create(locale: string | undefined, externalBaseLayers: IExternalBaseLayer[] | undefined, mode: MgLayerSetMode, appSettings: Dictionary<string>): ILayerSetOL;
    private createExternalBaseLayer;
    private createMgOverlayLayer;
}
export interface IMgLayerSetProps {
    /**
     * @since 0.14 This property can now also be a IGenericSubjectMapLayer
     */
    map: RuntimeMap | IGenericSubjectMapLayer;
    /**
     * Use stateless GETMAP requests for map rendering
     * @since 0.14
     */
    stateless?: boolean;
    imageFormat: ImageFormat;
    selectionImageFormat?: ImageFormat;
    selectionColor?: string;
    /**
     * @since 0.14 Made optional
     */
    agentUri?: string;
    externalBaseLayers?: IExternalBaseLayer[];
    locale?: string;
    /**
     * @since 0.14
     */
    appSettings: Dictionary<string>;
}
export interface IMgLayerSetCallback extends IImageLayerEvents {
    getMockMode(): MapGuideMockMode | undefined;
    incrementBusyWorker(): void;
    decrementBusyWorker(): void;
    onSessionExpired(): void;
    getSelectableLayers(): string[];
    getClient(): Client;
    isContextMenuOpen(): boolean;
    getAgentUri(): string;
    getAgentKind(): ClientKind;
    getMapName(): string;
    getSessionId(): string;
    isFeatureTooltipEnabled(): boolean;
    getPointSelectionBox(point: Coordinate2D): Bounds;
    openTooltipLink(url: string): void;
    addFeatureToHighlight(feat: Feature<Geometry> | undefined, bAppend: boolean): void;
}
