import { IAnimateOption, IMapService } from '@antv/l7-core';
import { IColorRamp, IImagedata } from '@antv/l7-utils';
import { styleOffset, styleSingle } from '../core/BaseModel';
import { anchorType } from '../utils/symbol-layout';
export declare enum lineStyleType {
    'solid' = 0,
    'dash' = 1
}
interface ILineArrow {
    enable: boolean;
    arrowWidth: number;
    arrowHeight: number;
    tailWidth: number;
}
export interface ILineLayerStyleOptions {
    tileOrigin?: number[];
    coord?: string;
    opacity: styleSingle;
    lineType?: keyof typeof lineStyleType;
    dashArray?: [number, number];
    segmentNumber?: number;
    depth?: boolean;
    forward?: boolean;
    lineTexture?: boolean;
    iconStep?: number;
    iconStepCount?: number;
    textureBlend?: string;
    sourceColor?: string;
    targetColor?: string;
    thetaOffset?: number;
    globalArcHeight?: number;
    vertexHeightScale?: number;
    borderWidth?: number;
    borderColor?: string;
    heightfixed?: boolean;
    raisingHeight?: number;
    mask?: boolean;
    maskInside?: boolean;
    arrow?: ILineArrow;
    rampColors?: IColorRamp;
    featureId?: string;
    sourceLayer?: string;
}
export interface IPointLayerStyleOptions {
    tileOrigin?: number[];
    coord?: string;
    opacity: number;
    strokeOpacity: number;
    strokeWidth: number;
    stroke: string;
    blur?: number;
    textOffset?: [number, number];
    textAnchor?: anchorType;
    spacing?: number;
    padding?: [number, number];
    halo?: number;
    gamma?: number;
    fontWeight?: string;
    fontFamily?: string;
    textAllowOverlap?: boolean;
    raisingHeight?: number;
    pickLight?: boolean;
    depth?: boolean;
    sourceColor?: string;
    targetColor?: string;
    opacityLinear?: {
        enable: boolean;
        dir: string;
    };
    lightEnable: boolean;
    heightfixed?: boolean;
    offsets?: styleOffset;
    blend?: string;
    unit?: string;
    mask?: boolean;
    maskInside?: boolean;
    rotation?: number;
    speed?: number;
    featureId?: string;
    sourceLayer?: string;
}
export interface IPolygonLayerStyleOptions {
    tileOrigin?: number[];
    coord?: string;
    opacity?: number;
    opacityLinear?: {
        enable: boolean;
        dir: string;
    };
    topsurface?: boolean;
    sidesurface?: boolean;
    mapTexture?: string;
    raisingHeight?: number;
    sourceColor?: string;
    targetColor?: string;
    heightfixed?: boolean;
    pickLight: boolean;
    mask?: boolean;
    maskInside?: boolean;
    waterTexture?: string;
    speed?: number;
    watercolor?: string;
    watercolor2?: string;
    featureId?: string;
    sourceLayer?: string;
}
export interface IRasterTileLayerStyleOptions {
    zIndex?: number;
    opacity?: number;
}
export interface IMaskLayerStyleOptions {
    opacity: styleSingle;
}
export interface IWindLayerStyleOptions {
    uMin?: number;
    uMax?: number;
    vMin?: number;
    vMax?: number;
    fadeOpacity?: number;
    speedFactor?: number;
    dropRate?: number;
    dropRateBump?: number;
    opacity?: number;
    numParticles?: number;
    rampColors?: {
        [key: number]: string;
    };
    sizeScale?: number;
    mask?: boolean;
    maskInside?: boolean;
}
export interface IImageLayerStyleOptions {
    opacity: number;
    mask?: boolean;
    maskInside?: boolean;
    domain?: [number, number];
    noDataValue?: number;
    clampLow?: boolean;
    clampHigh?: boolean;
    rampColors?: IColorRamp;
    rampColorsData?: ImageData | IImagedata;
    pixelConstant?: number;
    pixelConstantR?: number;
    pixelConstantG?: number;
    pixelConstantB?: number;
    pixelConstantRGB?: number;
}
export interface IGeometryLayerStyleOptions {
    opacity: number;
    mask?: boolean;
    maskInside?: boolean;
    mapTexture?: string;
    terrainTexture?: string;
    center?: [number, number];
    width?: number;
    height?: number;
    widthSegments?: number;
    heightSegments?: number;
    terrainClipHeight?: number;
    rgb2height?: (r: number, g: number, b: number) => number;
    raisingHeight?: number;
    canvasWidth?: number;
    canvasHeight?: number;
    drawCanvas?: (canvas: HTMLCanvasElement) => void;
    spriteAnimate?: string;
    spriteRadius?: number;
    spriteCount?: number;
    spriteSpeed?: number;
    spriteTop?: number;
    spriteBottom?: number;
    spriteUpdate?: number;
    spriteScale?: number;
    animateOption?: IAnimateOption;
}
export declare enum CanvasUpdateType {
    'ALWAYS' = "always",
    'DRAGEND' = "dragend"
}
export interface IDrawingOnCanvas {
    canvas: HTMLCanvasElement;
    ctx: CanvasRenderingContext2D;
    mapService: IMapService;
    size: [number, number];
}
export interface ICanvasLayerStyleOptions {
    zIndex: number;
    update: CanvasUpdateType | string;
    drawingOnCanvas: (option: IDrawingOnCanvas) => void;
}
export interface IHeatMapLayerStyleOptions {
    opacity: number;
    intensity: number;
    radius: number;
    angle: number;
    rampColors: IColorRamp;
    mask?: boolean;
    maskInside?: boolean;
    coverage?: number;
}
export interface IRasterLayerStyleOptions {
    opacity: number;
    domain: [number, number];
    noDataValue: number;
    clampLow: boolean;
    clampHigh: boolean;
    rampColors: IColorRamp;
    mask?: boolean;
    maskInside?: boolean;
    rampColorsData?: ImageData | IImagedata;
}
export {};
