import { Coordinate } from 'ol/coordinate';
import { ProjectionLike } from 'ol/proj';
import { ViewOptions } from 'ol/View';
/**
 * 视图初始化参数（常用选项）
 */
export interface IViewOptions {
    /**
     * 视图的投影，默认为3857
     */
    projection?: ProjectionLike;
    /**
     * 中心点（可以后设置）
     */
    center?: Coordinate;
    /**
     * 默认级别
     */
    zoom?: number;
    /**
     * 最小级别
     */
    minZoom?: number;
    /**
     * 最大级别
     */
    maxZoom?: number;
    /**
     * 视图范围
     */
    extent?: number[];
}
/**
 * 空间投影模型
 */
export interface IProjInfo {
    /**
     * epsg代码,例如 EPSG:3857
     */
    epsg: string;
    /**
     * Extent范围,自定义投影必须得有
     * [minx,miny,maxx,maxy]
     */
    prjExtent?: [number, number, number, number];
    /**
     * Projection定义文本
     */
    proj4?: string;
}
type IResolutions = {
    [props: string]: number;
};
/**
 * 瓦片切片方案TileGridSchema
 * （用于初始化图层的投影和TileGrid）
 */
export interface ITileGridSchema {
    /**
     * rule规则名
     */
    rule: string;
    /**
     * 起点坐标,一般是Extent的左上角
     */
    origin?: number[];
    /**
     * Extent范围
     * [minx, miny, maxx, maxy]
     */
    extent?: number[];
    /**
     * 瓦片大小[width,height],默认为256,256
     */
    tileSize: number | [number, number];
    /**
     * 级别-分辨率，字典对象
     */
    resolutions: IResolutions;
}
/**
 * 矢量切片TileJson模型
 */
export interface ITileJson {
    version?: string;
    name: string;
    id: string;
    tilejson: string;
    description?: string;
    attribution?: string;
    legend?: string;
    generator?: string;
    minzoom: number;
    maxzoom: number;
    center?: number[];
    /**
     * 范围
     *  [minx,miny,maxx,maxy]
     */
    bounds: [number, number, number, number];
    masklevel?: null;
    scheme: string;
    format?: string;
    crs: string | number;
    crs_wkt?: string;
    tile_grid: string;
    tiles: string[];
    grids?: string[];
    data?: string[];
    vector_layers: any[];
    /**
     * 默认为空，图层的投影信息（可空，外面统一处理）
     */
    prjInfo?: IProjInfo;
    /**
     * 默认为空，图层对应的切片方案（可空，外面统一处理）
     */
    tileSchema?: ITileGridSchema;
}
/**
 * WMTS图层的信息
 */
export interface IWMTSLayerInfo {
    name: string;
    level?: number;
    /**
     * 图层范围（一般为经纬度）
     * [minx,miny,maxx,maxy]
     */
    bounds: [number, number, number, number];
    /**
   * 图层中心点（一般为经纬度）
   * [x,y]
   */
    center?: [number, number];
    /**
     * 图层最小级别
     */
    minlevel: number;
    /**
     * 图层最大级别
     */
    maxlevel: number;
    /**
     * 图层可访问地址（可空，外面统一传入）
     */
    tileUrl?: string;
    /**
     * 图层的投影信息（可空，外面统一处理）
     */
    prjInfo?: IProjInfo;
    /**
     * 图层对应的切片方案（可空，外面统一处理）
     */
    tileSchema?: ITileGridSchema;
    /**
     * 样式，默认为default
     */
    style?: string;
}
/**
 * 图层信息
 */
export interface ILayerItem {
    id?: string;
    name: string;
    alias?: string;
    group?: string;
    type?: string;
    minZoom?: number;
    maxZoom?: number;
    visible?: boolean;
    opacity?: number;
    children?: ILayerItem[];
}
/**
 * 图层的扩展属性
 */
export interface ILayerProperties {
    lyrID: string;
    lyrName: string;
    lyrGroup?: string;
    lyrType?: string;
    [props: string]: any;
}
/**
 * 地图图层类型
 */
export declare enum EnumLayerType {
    'grid' = 0,
    'mvt' = 1,
    'symbol' = 2,
    'vector' = 3,
    'json' = 4
}
export interface IControlOption {
    key: string;
    type?: string;
    options?: object | any;
}
/**
 * 地图初始化配置文档
 */
export interface IMapConfig {
    id: string;
    group?: string;
    hasLayerManager?: boolean;
    isInternet?: boolean;
    tdtXYZLocalURL?: string;
    projInfo?: IProjInfo;
    viewOptions: ViewOptions;
    layers?: Array<string>;
    controls?: Array<IControlOption>;
    interactions?: Array<IControlOption>;
}
export declare const defaultMapConfig: {
    id: string;
    group: string;
    hasLayerManager: boolean;
    isInternet: boolean;
    viewOptions: {
        zoom: number;
        center: number[];
        minzoom: number;
        maxzoom: number;
        projection: string;
    };
    layers: string[];
    controls: ({
        key: string;
        options: {
            visible: boolean;
            composit: string;
            align?: undefined;
        };
    } | {
        key: string;
        options: {
            align: string;
            visible?: undefined;
            composit?: undefined;
        };
    } | {
        key: string;
        options?: undefined;
    })[];
    interactions: {
        key: string;
        options: {
            active: boolean;
            radius: number;
            layers: number[];
        };
    }[];
};
/**
 * 地图
 * 右键菜单对象接口
 */
export interface IMapContextItem {
    id?: string;
    label?: string;
    icon?: string;
    tag?: any;
    children?: Array<IMapContextItem>;
}
export interface ILayersState {
    mapEventBus?: any;
    mapid: string;
    mapgroup?: string;
    swipeid?: string;
}
export interface ILayerProperty {
    layerID: string;
    propName: string;
    propValue: any;
}
/**
 * 图层右键菜单项
 */
export interface ILayerContextItem {
    name?: string;
    value?: string;
    icon?: string;
    tag?: any;
}
/**
 * 用于控制地图功能菜单显隐
 */
export interface IMapMenuState {
    /**
     * 图层树是否显示
     */
    layerTree: boolean;
    /**
     * 数据列表是否显示
     */
    dataPanel: boolean;
    /**
     * 定位窗体是否显示
     */
    location: boolean;
    /**
     * 绘制菜单是否显示
     */
    drawTool: boolean;
    /**
     * 测量菜单是否显示
     */
    measureTool: boolean;
    /**
     * 卷帘工具栏是否显示
     */
    swipeTool: boolean;
    /**
     * 其他菜单是否显示
     */
    otherTool: boolean;
    /**
     * 打印工具状态(备用)
     */
    printTool: boolean;
    /**
     * 选择工具状态(备用)
     */
    selectTool: boolean;
    /**
     * 弹框状态(备用)
     */
    popupPanel: boolean;
    /**
     * 备用
     */
    tagState: boolean;
}
export {};
