| import Eventful from 'zrender/lib/core/Eventful.js'; | 
| import * as graphic from '../../util/graphic.js'; | 
| import { Dictionary } from '../../util/types.js'; | 
| import { ZRenderType } from 'zrender/lib/zrender.js'; | 
| import { ElementEvent } from 'zrender/lib/Element.js'; | 
| import * as matrix from 'zrender/lib/core/matrix.js'; | 
| import { PathStyleProps } from 'zrender/lib/graphic/Path.js'; | 
| /** | 
|  * BrushController is not only used in "brush component", | 
|  * but is also used in "tooltip DataZoom", and other possible | 
|  * further brush behavior related scenarios. | 
|  * So `BrushController` should not depend on "brush component model". | 
|  */ | 
| export declare type BrushType = 'polygon' | 'rect' | 'lineX' | 'lineY'; | 
| /** | 
|  * Only for drawing (after enabledBrush). | 
|  * 'line', 'rect', 'polygon' or false | 
|  * If passing false/null/undefined, disable brush. | 
|  * If passing 'auto', determined by panel.defaultBrushType | 
|  */ | 
| export declare type BrushTypeUncertain = BrushType | false | 'auto'; | 
| export declare type BrushMode = 'single' | 'multiple'; | 
| export declare type BrushDimensionMinMax = number[]; | 
| export declare type BrushAreaRange = BrushDimensionMinMax | BrushDimensionMinMax[]; | 
| export interface BrushCoverConfig { | 
|     brushType: BrushType; | 
|     id?: string; | 
|     range?: BrushAreaRange; | 
|     panelId?: string; | 
|     brushMode?: BrushMode; | 
|     brushStyle?: Pick<PathStyleProps, BrushStyleKey>; | 
|     transformable?: boolean; | 
|     removeOnClick?: boolean; | 
|     z?: number; | 
| } | 
| /** | 
|  * `BrushAreaCreatorOption` input to brushModel via `setBrushOption`, | 
|  * merge and convert to `BrushCoverCreatorConfig`. | 
|  */ | 
| export interface BrushCoverCreatorConfig extends Pick<BrushCoverConfig, 'brushMode' | 'transformable' | 'removeOnClick' | 'brushStyle' | 'z'> { | 
|     brushType: BrushTypeUncertain; | 
| } | 
| declare type BrushStyleKey = 'fill' | 'stroke' | 'lineWidth' | 'opacity' | 'shadowBlur' | 'shadowOffsetX' | 'shadowOffsetY' | 'shadowColor'; | 
| declare const BRUSH_PANEL_GLOBAL: true; | 
| export interface BrushPanelConfig { | 
|     panelId: string; | 
|     clipPath(localPoints: number[][], transform: matrix.MatrixArray): number[][]; | 
|     isTargetByCursor(e: ElementEvent, localCursorPoint: number[], transform: matrix.MatrixArray): boolean; | 
|     defaultBrushType?: BrushType; | 
|     getLinearBrushOtherExtent?(xyIndex: number): number[]; | 
| } | 
| declare type BrushPanelConfigOrGlobal = BrushPanelConfig | typeof BRUSH_PANEL_GLOBAL; | 
| interface BrushCover extends graphic.Group { | 
|     __brushOption: BrushCoverConfig; | 
| } | 
| export interface BrushControllerEvents { | 
|     brush: { | 
|         areas: { | 
|             brushType: BrushType; | 
|             panelId: string; | 
|             range: BrushAreaRange; | 
|         }[]; | 
|         isEnd: boolean; | 
|         removeOnClick: boolean; | 
|     }; | 
| } | 
| /** | 
|  * params: | 
|  *     areas: Array.<Array>, coord relates to container group, | 
|  *                             If no container specified, to global. | 
|  *     opt { | 
|  *         isEnd: boolean, | 
|  *         removeOnClick: boolean | 
|  *     } | 
|  */ | 
| declare class BrushController extends Eventful<{ | 
|     [key in keyof BrushControllerEvents]: (params: BrushControllerEvents[key]) => void | undefined; | 
| }> { | 
|     readonly group: graphic.Group; | 
|     /** | 
|      * @internal | 
|      */ | 
|     _zr: ZRenderType; | 
|     /** | 
|      * @internal | 
|      */ | 
|     _brushType: BrushTypeUncertain; | 
|     /** | 
|      * @internal | 
|      * Only for drawing (after enabledBrush). | 
|      */ | 
|     _brushOption: BrushCoverCreatorConfig; | 
|     /** | 
|      * @internal | 
|      * Key: panelId | 
|      */ | 
|     _panels: Dictionary<BrushPanelConfig>; | 
|     /** | 
|      * @internal | 
|      */ | 
|     _track: number[][]; | 
|     /** | 
|      * @internal | 
|      */ | 
|     _dragging: boolean; | 
|     /** | 
|      * @internal | 
|      */ | 
|     _covers: BrushCover[]; | 
|     /** | 
|      * @internal | 
|      */ | 
|     _creatingCover: BrushCover; | 
|     /** | 
|      * @internal | 
|      */ | 
|     _creatingPanel: BrushPanelConfigOrGlobal; | 
|     private _enableGlobalPan; | 
|     private _mounted; | 
|     /** | 
|      * @internal | 
|      */ | 
|     _transform: matrix.MatrixArray; | 
|     private _uid; | 
|     private _handlers; | 
|     constructor(zr: ZRenderType); | 
|     /** | 
|      * If set to `false`, select disabled. | 
|      */ | 
|     enableBrush(brushOption: Partial<BrushCoverCreatorConfig> | false): BrushController; | 
|     private _doEnableBrush; | 
|     private _doDisableBrush; | 
|     /** | 
|      * @param panelOpts If not pass, it is global brush. | 
|      */ | 
|     setPanels(panelOpts?: BrushPanelConfig[]): BrushController; | 
|     mount(opt?: { | 
|         enableGlobalPan?: boolean; | 
|         x?: number; | 
|         y?: number; | 
|         rotation?: number; | 
|         scaleX?: number; | 
|         scaleY?: number; | 
|     }): BrushController; | 
|     /** | 
|      * Update covers. | 
|      * @param coverConfigList | 
|      *        If coverConfigList is null/undefined, all covers removed. | 
|      */ | 
|     updateCovers(coverConfigList: BrushCoverConfig[]): this; | 
|     unmount(): this; | 
|     dispose(): void; | 
| } | 
| export default BrushController; |