import * as graphic from '../../util/graphic.js'; 
 | 
import { BrushPanelConfig, BrushControllerEvents, BrushType, BrushAreaRange, BrushDimensionMinMax } from './BrushController.js'; 
 | 
import ExtensionAPI from '../../core/ExtensionAPI.js'; 
 | 
import GridModel from '../../coord/cartesian/GridModel.js'; 
 | 
import GeoModel from '../../coord/geo/GeoModel.js'; 
 | 
import { CoordinateSystemMaster } from '../../coord/CoordinateSystem.js'; 
 | 
import Cartesian2D from '../../coord/cartesian/Cartesian2D.js'; 
 | 
import Geo from '../../coord/geo/Geo.js'; 
 | 
import GlobalModel from '../../model/Global.js'; 
 | 
import { BrushAreaParam, BrushAreaParamInternal } from '../brush/BrushModel.js'; 
 | 
import SeriesModel from '../../model/Series.js'; 
 | 
import { ModelFinderObject } from '../../util/model.js'; 
 | 
declare type COORD_CONVERTS_INDEX = 0 | 1; 
 | 
declare type BrushableCoordinateSystem = Cartesian2D | Geo; 
 | 
declare type BrushTargetBuilderKey = 'grid' | 'geo'; 
 | 
/** 
 | 
 * There can be multiple axes in a single targetInfo. Consider the case 
 | 
 * of `grid` component, a targetInfo represents a grid which contains one or more 
 | 
 * cartesian and one or more axes. And consider the case of parallel system, 
 | 
 * which has multiple axes in a coordinate system. 
 | 
 */ 
 | 
interface BrushTargetInfo { 
 | 
    panelId: string; 
 | 
    coordSysModel: CoordinateSystemMaster['model']; 
 | 
    coordSys: BrushableCoordinateSystem; 
 | 
    coordSyses: BrushableCoordinateSystem[]; 
 | 
    getPanelRect: GetPanelRect; 
 | 
} 
 | 
export interface BrushTargetInfoCartesian2D extends BrushTargetInfo { 
 | 
    gridModel: GridModel; 
 | 
    coordSys: Cartesian2D; 
 | 
    coordSyses: Cartesian2D[]; 
 | 
    xAxisDeclared: boolean; 
 | 
    yAxisDeclared: boolean; 
 | 
} 
 | 
export interface BrushTargetInfoGeo extends BrushTargetInfo { 
 | 
    geoModel: GeoModel; 
 | 
    coordSysModel: GeoModel; 
 | 
    coordSys: Geo; 
 | 
    coordSyses: Geo[]; 
 | 
} 
 | 
declare type GetPanelRect = () => graphic.BoundingRect; 
 | 
declare class BrushTargetManager { 
 | 
    private _targetInfoList; 
 | 
    /** 
 | 
     * @param finder contains Index/Id/Name of xAxis/yAxis/geo/grid 
 | 
     *        Each can be {number|Array.<number>}. like: {xAxisIndex: [3, 4]} 
 | 
     * @param opt.include include coordinate system types. 
 | 
     */ 
 | 
    constructor(finder: ModelFinderObject, ecModel: GlobalModel, opt?: { 
 | 
        include?: BrushTargetBuilderKey[]; 
 | 
    }); 
 | 
    setOutputRanges(areas: BrushControllerEvents['brush']['areas'], ecModel: GlobalModel): BrushAreaParam[]; 
 | 
    matchOutputRanges<T extends (Parameters<BrushTargetManager['findTargetInfo']>[0] & { 
 | 
        brushType: BrushType; 
 | 
        range: BrushAreaRange; 
 | 
    })>(areas: T[], ecModel: GlobalModel, cb: (area: T, coordRange: ReturnType<ConvertCoord>['values'], coordSys: BrushableCoordinateSystem, ecModel: GlobalModel) => void): void; 
 | 
    /** 
 | 
     * the `areas` is `BrushModel.areas`. 
 | 
     * Called in layout stage. 
 | 
     * convert `area.coordRange` to global range and set panelId to `area.range`. 
 | 
     */ 
 | 
    setInputRanges(areas: BrushAreaParamInternal[], ecModel: GlobalModel): void; 
 | 
    makePanelOpts(api: ExtensionAPI, getDefaultBrushType?: (targetInfo: BrushTargetInfo) => BrushType): BrushPanelConfig[]; 
 | 
    controlSeries(area: BrushAreaParamInternal, seriesModel: SeriesModel, ecModel: GlobalModel): boolean; 
 | 
    /** 
 | 
     * If return Object, a coord found. 
 | 
     * If return true, global found. 
 | 
     * Otherwise nothing found. 
 | 
     */ 
 | 
    findTargetInfo(area: ModelFinderObject & { 
 | 
        panelId?: string; 
 | 
    }, ecModel: GlobalModel): BrushTargetInfo | true; 
 | 
} 
 | 
declare type ConvertCoord = (to: COORD_CONVERTS_INDEX, coordSys: BrushableCoordinateSystem, rangeOrCoordRange: BrushAreaRange, clamp?: boolean) => { 
 | 
    values: BrushAreaRange; 
 | 
    xyMinMax: BrushDimensionMinMax[]; 
 | 
}; 
 | 
export default BrushTargetManager; 
 |