declare const PI_2: number;
declare const ORG_ANGLE: number;
declare const RAD_DEG: number;
type Path = string | any[];
declare function fixnum(value: number): number;
declare function pixel(v: number): string;
/**
 * 123, '10%' 형식으로 크기를 지정한다.
 */
type PercentSize = string | number;
interface IPercentSize {
    size: number;
    fixed: boolean;
}
declare function parsePercentSize(sv: PercentSize, enableNull: boolean): IPercentSize;
declare function calcPercent(size: IPercentSize, domain: number, def?: number): number;
/**
 * SVG 스타일 속성.<br/>
 * {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute SVG 속성}을 참조한다.<br/>
 */
interface SVGStyles {
    transform?: string;
    transformBox?: string;
    transformOrigin?: string;
    /**
     * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill fill} 스타일 속성.<br/>
     */
    fill?: string;
    /**
     * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-opacity fill-opacity} 스타일 속성.<br/>
     */
    fillOpacity?: string;
    /**
     * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke stroke} 스타일 속성.<br/>
     */
    stroke?: string;
    /**
     * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-width stroke-width} 스타일 속성.<br/>
     */
    strokeWidth?: string;
    /**
     * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray stroke-dasharray} 스타일 속성.<br/>
     */
    strokeDasharray?: string;
    /**
     * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/font-family font-family} 스타일 속성.<br/>
     */
    fontFamily?: string;
    /**
     * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/font-size font-size} 스타일 속성.<br/>
     */
    fontSize?: string;
    /**
     * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/font-weight font-weight} 스타일 속성.<br/>
     */
    fontWeight?: string;
    /**
     * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/font-style font-style} 스타일 속성.<br/>
     */
    fontStyle?: string;
    /**
     * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/rx rx} 스타일 속성.<br/>
     * {@page config.seires.bar 'bar'} 시리즈의 데이터포인트 bar의 모서리를 지정하는 데 사용된다.
     */
    rx?: string;
    /**
     * 텍스트 정렬을 지정한다.<br/>
     * **SVG에 적용되는 정식 css style 속성이 아니다.**
     * 즉, HTML이나 realmap-style.css 등의 외부 css 파일에서 사용할 수 없고,
     * RealMap 내부에서 {@page config.title} 등의 inline 스타일 속성으로 지정할 수 있다.
     *
     * ```js
     * const config = {
     *      subtitle: {
     *          style: {
     *              textAlign: 'left',
     *          },
     *      },
     * };
     * ```
     */
    textAlign?: Align;
    /**
     * **SVG에 적용되는 정식 css style 속성이 아니다.**<br/>
     * 데이터포인트 라벨등 몇 요소의 배경 간격 설정으로 사용할 수 있다.
     */
    padding?: string;
}
/** @dummy */
type SVGStyleOrClass = SVGStyles | string;
/**
 * CSS 선언 블록을 나타내는 객체로, 스타일 정보뿐만 아니라 다양한 스타일 관련 메서드와 속성들을 제공한다. <br/>
 * https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration
 */
interface CSSStyles extends Partial<CSSStyleDeclaration> {
}
/** @internal */
interface CSSStyles2 extends CSSStyles {
    display?: string;
    position?: string;
    alignItems?: string;
    justifyContent?: string;
    flexDirection?: string;
    flexWrap?: string;
    gap?: string;
    flex?: string;
    width?: string;
    height?: string;
    minHeight?: string;
    minWidth?: string;
    maxWidth?: string;
    left?: string;
    top?: string;
    overflow?: string;
    marginRight?: string;
    whiteSpace?: string;
    margin?: string;
    marginLeft?: string;
    pointerEvents?: string;
    transform?: string;
}
interface ISides {
    left: number;
    right: number;
    top: number;
    bottom: number;
    horz?: number;
    vert?: number;
}
/**
 * 스와이프 제스처 등의 진행 방향.
 * <br>
 *
 * @see {@link RtListControl.onRowSwipe}
 */
declare enum RmDirection {
    /**
     * 위쪽으로 진행.
     */
    UP = "up",
    /**
     * 아래쪽으로 진행.
     */
    DOWN = "down",
    /**
     * 왼쪽으로 진행.
     */
    LEFT = "left",
    /**
     * 오른쪽으로 진행.
     */
    RIGHT = "right"
}
/**
 * 수평 정렬.
 * @enum
 */
declare const _Align: {
    /**
     * 왼쪽으로 정렬한다.
     */
    readonly LEFT: "left";
    /**
     * 영역 가운데로 정렬한다.
     */
    readonly CENTER: "center";
    /**
     * 오른쪽으로 정렬한다.
     */
    readonly RIGHT: "right";
};
/** @dummy */
type Align = typeof _Align[keyof typeof _Align];
/**
 * 수직 정렬.
 * @enum
 */
declare const _VerticalAlign: {
    /** @config */
    readonly TOP: "top";
    /** @config */
    readonly MIDDLE: "middle";
    /** @config */
    readonly BOTTOM: "bottom";
};
/** @dummy */
type VerticalAlign = typeof _VerticalAlign[keyof typeof _VerticalAlign];
/**
 * @enum
 */
declare const _AlignBase: {
    /**
     * @config
     */
    readonly CHART: "chart";
    /**
     * @config
     */
    readonly MAP: "map";
    /**
     * 상위 모델이 존재하는 경우 상위 모델 영역 기준.\
     * 상위가 없으면 기본값(대부분 'body')과 동일.
     * ex) subtitle인 경우 title 기준.
     *
     * @config
     */
    readonly PARENT: "parent";
};
/** @dummy */
type AlignBase = typeof _AlignBase[keyof typeof _AlignBase];
/**
 * @enum
 */
declare const _WritingMode: {
    /** @config */
    readonly HORIZONTAL_TB: "horizontal-tb";
    /** @config */
    readonly VERTICAL_LR: "vertical-lr";
    /** @config */
    readonly VERTICAL_RL: "vertical-rl";
};
/** @dummy */
type WritingMode = typeof _WritingMode[keyof typeof _WritingMode];
/**
 * @enum
 */
declare const _TextOrientation: {
    /** @config */
    readonly MIXED: "mixed";
    /** @config */
    readonly UPRIGHT: "upright";
};
/** @dummy */
type TextOrientation = typeof _TextOrientation[keyof typeof _TextOrientation];
interface ColorRange {
    minValue?: number;
    maxValue?: number;
    minColor?: string;
    maxColor?: string;
    /**
     * 2 이상의 값으로 지정하면,
     * 데이터포인트 값들을 이 속성값을 base로 하는 log 값으로 변환해서 표시한다.<br/>
     */
    logBase?: number;
}
interface IPaddings {
    l: number;
    r: number;
    t: number;
    b: number;
}
/**
 * @enum
 *
 * Legend나 ColorScale 등 맵차트 구성 요소들의 표시 위치.<br/>
 * 위치를 지정한 후 다른 속성들로 정렬시킬 수 있다.
 */
declare const _ChartItemLocation: {
    /**
     * 맵차트 본체 아래 표시한다.
     *
     */
    readonly BOTTOM: "bottom";
    /**
     * 맵차트 타이틀 아래 표시한다.
     *
     */
    readonly TOP: "top";
    /**
     * 맵차트 본체 오른쪽에 표시한다.
     *
     */
    readonly RIGHT: "right";
    /**
     * 맵차트 본체 왼쪽에 표시한다.
     *
     */
    readonly LEFT: "left";
    /**
     * 맵차트 본체 영역 내부에 표시한다.
     *
     */
    readonly BODY: "body";
};
/** @dummy */
type ChartItemLocation = typeof _ChartItemLocation[keyof typeof _ChartItemLocation];
/**
 * 구성 요소 위치.<br/>
 */
type Positions = 'top' | 'right' | 'bottom' | 'left';
interface ConfigObject {
    [key: string]: any;
}

type ShapeDrawer = (rd: number, rd2: number) => (string | number)[];
type MapCoord = [number, number];
type MapRect = {
    h1: number;
    h2: number;
    v1: number;
    v2: number;
};
type MapArc = MapCoord[];
type MapPolygon = MapArc[];
type MapProps = any;

/**
 * RealReport-Chart 라이브러리 클래스 모델의 최상위 base 클래스.
 * <br>
 *
 * @see concepts.dev_guide 개발 가이드
 * @see concepts.about RealTouch 개요
 */
declare abstract class RmObject {
    private $_hash;
    private $_destroyed;
    private $_destroying;
    constructor(noHash?: boolean);
    /**
     * 객체가 소유한 참조 등을 해제하고 null을 리턴한다.
     *
     * ```
     * list = lis.destroy();
     * ```
     *
     * @returns null
     */
    destroy(): null;
    protected _doDestory(): void;
    get destroying(): boolean;
    get orphaned(): boolean;
    get hash(): string;
    isMe(hash: string): boolean;
    toString(): string;
    /**
     * @internal
     *
     * template param으로부터 생성되는 값은 문자열일 수 있다.
     */
    toBool(v: any): boolean;
    toNum(v: any, def?: number): number;
}
declare abstract class RmEventProvider<T> extends RmObject {
    private _listeners;
    _addListener(listener: T): void;
    _removeListener(listener: T): void;
    /**
     * event로 지정한 함수가 정의된 모든 리스너에 대해 실행한다.
     * 리스너 scope으로 실행하고, 첫번째 매개변수로 이 객체가 전달된다.
     * 다만, 리스너들 중 하나라도 undefined가 아닌 값을 리턴하면,
     * 그 값을 리턴하면서 멈춘다.
     */
    protected _fireEvent(event: string, ...args: any[]): any;
}

interface MapInsetDisplay {
    /**
     * inset area 확대 비율.<br/>
     * 지정하지 않으면 1.
     * 0보다 큰 값이어야 한다.
     */
    readonly scale?: number;
    /**
     * inset area의 [왼쪽, 위쪽] 기준으로, 표시 위치 [경도, 위도]를 도(°) 단위로 지정한다.<br/>
     * [주의] {@page children}으로 적용될 때는 이 값 대신 {@page offset}을 반드시 지정해야 한다.
     */
    readonly coord?: MapCoord;
    /**
     * coord로 지정한 inset 위치에 더 추가되는 [경도, 위도] 값이거나
     * coord가 지정되지 않은 경우 원래 위치에서 떨어진 위치 값.<br/>
     * 라이브러리에서 제공하는 미리 정의된 inset 위치를 조정하는 값으로 사용할 수 있다.
     * [주의] {@page children}으로 적용될 때는 {@page coord} 대신 반듯 이 값을 지정해야 한다.
     */
    readonly offset?: MapCoord;
    /**
     * inset을 구분하는 경계선을 도(°)단위로 지정한다.<br/>
     * 값들은 space나 ','로 분리해서 x, y 순서대로 위치를 지정하고,
     * 닫힌 다각형으로 지정하고 싶은 경우 마지막에 'z'나 'Z'을 추가한다.
     * 또, {@page frame}이 지정되면 이 값은 무시된다.<br/>
     * 값들은 각각 area 전체를 감싸는 가상의 사각형을 기준으로 작성하는데,
     * 아래 값들을 상수로 사용할 수 있고, +,- 연산자로 offset을 지정할 수 있다.
     * x값은 사각형 왼쪽(경도 시작접), y값은 사각형 아래쪽(위도 시작점)이 원점이 된다.
     * w와 h는 각각 사각형의 너비와 높이다.
     * x값은 원점에서 오른쪽으로 증가하고, y값은 원점에서 위쪽으로 증가한다.<br/>
     * ex) '-0.1 h+0.05 +0.1 h+0.1 w+0.2 h' // 제주도 위쪽에 꺽인 line을 표시한다.
     *     '-0.2 -0.1 -0.2 h+0.1' // 울릉도 좌측에 직선으로 표시한다.
     */
    readonly border?: MapCoord[] | string;
    /**
     * inset을 감싸서 구분하는 사각형을 도(°)단위로 지정한다.<br/>
     * 이 값이 지정되면 {@page border}는 무시된다.<br/>
     * css padding이나 margin 지정 방식과 동일하게 지정한댜.
     * 지정된 값은 area의 전체를 포함하는 가상의 사각형과 frame 사이의 간격으로 표시된다.<br/>
     * ex) '0.05'       // 좌위상하 0.05°
     *     '0.05 0.01'     // 상하 0.05°, 좌우 0.01°
     *     '0.05 0.01 0.03'   // 상 0.05°, 우 0.01°, 하 0.03, 좌 0.01°
     *     '0.05 0.01 0.03 0.02' // 상, 우, 하, 좌
     */
    readonly frame?: string;
    /**
     * border나 frame에 적용할 스타일셋.<br/>
     * 기본으로 'rm-map-series-inset' 클래스 선택자가 적용된다.
     */
    readonly style?: SVGStyleOrClass;
    /**
     * 명시적 false로 지정하면 이 inset이 포함하는 영역을 맵에서 제거한다.<br/>
     * 대개 두 번째 map에서 사용된다.
     */
    readonly visible?: boolean;
}
/**
 * 본토에서 멀리 떨어진 영역들을 당겨서 표시하는 설정.<br/>
 * [주의] 아래쪽 계산값들을 제외하곤 모두 readonly로 취급해야 한다.
 *
 * @css 'rm-map-series-inset'
 */
interface MapInset extends MapInsetDisplay {
    /**
     * inset시킬 area id.<br/>
     * 이 area가 존재하지 않고,
     * {@page parent}가 지정되지 않으면
     * 자식들을 모두 함께 이동시킨다.
     */
    readonly area: string;
    /**
     * 이 area가 존재하지 않고,
     * {@page parent}가 지정되지 않으면
     * 이 속성에 지정된 자식들을 모두 함께 이동시킨다.<br/>
     * [주의] {@page frame}이나 {@page border}의 기준이 되는 child area의 id를 첫번째 항목으로 설정해야 한다.
     * [주의] parent 하나에 한 번만 지정할 수 있다.
     */
    readonly children?: string[];
    /**
     * {@page area}가 존재하지 않을 때,
     * 이 속서에 해당하는 area를 찾아서 {@page polygons}에 해당하는 영역들을 이동시킨다.<br/>
     * 콤마로 분리해서 둘 이상의 area를 지정할 수 있는데, 순서대로 해당되는 영역이 존재하면 사용한다.
     * [주의] parent 하나에 한 번만 지정할 수 있다.
     */
    readonly parent?: string;
    /**
     * {@page area}가 존재하지 않고, {@page parent}가 지정됐을 때,
     * 이 속서에 지정하는 영역덜을 동시에 이동시킨다.<br/>
     * [주의] {@page frame}이나 {@page border}의 기준이 되는 polygon의 index를 첫번째 항목으로 설정해야 한다.
     * [주의] {@page parent}가 복수개로 지정되면 이 속성도 [[], [],..] 형태로 복수 개 지정해야 한다.
     * [주의] parent 하나에 한 번만 지정할 수 있다.
     */
    readonly polygons?: number[] | number[][] | number;
    /**
     * @private
     * 계산된 값들.
     */
    off?: MapCoord;
    box?: MapCoord[];
    pts?: any[];
    bounds?: MapRect;
}
type MapSourceMeta = {
    license?: {
        license?: string;
        author?: string;
        url?: string;
        etc?: "맵차트 최적화를 위해 좌표계 변환 및 Feature Polygon 수정";
    };
    dokdo?: {
        group?: string;
        parent?: number;
        index?: number;
    };
    dummies?: string[];
};
/**
 * 접경선 정보.<br/>
 * 연결된 선으로 표시되므로, 반드시 접경선이 그려지는 순서대로  양쪽 area(들)을 지정해야 한다.
 */
type MapBorderSource = [string | [string], string | [string]];
/**
 * 맵시리즈에서 사용할 기본 맵을 지정한다.<br/>
 */
interface MapSource {
    /**
     * 맵 이름.<br/>
     * 맵차트에 여러 개 맵이 지정될 수 있으며,
     * 맵차트 시리즈 등에서 맵을 참조할 때 사용된다.
     */
    name?: string;
    /**
     * 명시적 false로 지정하면 맵차트에서 맵으로 사용되지 않는다.<br/>
     *
     * @default true
     */
    enabled?: boolean;
    /**
     * @deprecated use {@page source}
     **/
    map?: any;
    /**
     * 영역들의 정보가 포함된 지도 데이터 소스.<br/>
     */
    source?: any;
    /**
     * 외부 {@page source}를 가져올 위치.<br/>
     */
    url?: string;
    /**
     * 맵 모델의 area를 구성할 때 area id로 사용할 소스의 속성 이름.<br/>
     */
    idKey?: string;
    /**
     * 맵 모델의 area를 구성할 때 area name으로 사용할 소스의 속성 이름.<br/>
     */
    nameKey?: string;
    /**
     * 맵차트 맵 모델을 구성할 때 제외시킬 영역들의 id 목록.<br/>
     */
    exclude?: string[];
    /**
     * 맵 인셋 목록을 지정한다.<br/>
     * 이름을 문자열로 지정하면 라이브러기가 기본 제공하는 인셋들이 사용된다.
     * 또, 이름앞에 '-'를 추가하면 visible이 false로 설정된다.
     */
    insets?: (string | MapInset)[];
    /**
     * 맵 상하좌우 주변에 추가할 영역의 크기를  도(°) 단위로 지정한다.<br/>
     * css padding이나 margin 지정 방식과 동일하게 지정한댜.<br/>
     */
    padding?: string;
    /**
     * 지도에 독도에 대한 meta 정보가 있는 경우,
     * 독도와 울릉도 사이의 거리를 지정한 비율만큼으로 줄이거나 늘여서 표시한다.<br/>
     * 0 ~ 1 사이의 값으로 원래 간격에 대한 상대 거리를 지정한다.
     * 0 이하의 값으로 지정하면 dokdo를 표시하지 않는다.
     * [lon, lat] 형식으로 지정할 수도 있다.
     */
    dokdo?: number | MapCoord;
    /**
     * dummy 영역들을 표시할지 여부.<br/>
     */
    showDummies?: boolean;
    /**
     * @ignore
     * 로컬 지도가 글로벌 투영좌표계 중앙으로 배치할지 여부.<br/>
     * 첫번째 기준 map에만 설절할 수 있다.
     */
    useOffset?: boolean | MapCoord;
    /**
     * 부극 취고위까지 지도에 포함되면 90도까지 그려진 것으로 간주한다.<br/>
     * 명시적 false로 지정하면 계산된 영역까지만 포함한다.
     */
    alignArctic?: boolean;
    /**
     * 내부 경계(internal boundary)선 정보를 별도로 생성할 지 여부.<br/>
     */
    needInternal?: boolean;
    /**
     * {@page needInternal 내부 경계선}에서 제외할 영역 목록.<br/>
     */
    excludeInternal?: string[];
    /**
     * 외부 경계선 정보를 별도로 생성할 지 여부.<br/>
     */
    needExternal?: boolean;
    /**
     * {@page needInternal 내부 경계선}에서 제외할 영역 목록.<br/>
     */
    excludeExternal?: string[];
    /**
     * 접경선 목록.<br/>
     */
    borders?: [{
        name: string;
        border: MapBorderSource;
        closed?: boolean;
    }];
}
declare abstract class MapSourceItem {
    id: string;
    constructor(id: string);
}
declare class AreaItem extends MapSourceItem {
    props: MapProps;
    polygon: MapPolygon;
    polygons: MapPolygon[];
    internal?: MapPolygon[];
    internals?: MapPolygon[][];
    external?: MapPolygon[];
    externals?: MapPolygon[][];
    dummy: boolean;
    constructor(id: string, props: MapProps);
}
declare class MapBorderInfo {
    name: string;
    closed: boolean;
    border: [string[], string[]];
    constructor(name: string, source: MapBorderSource, closed: boolean);
}
declare class BorderItem extends MapSourceItem {
    polygon: MapPolygon;
    constructor(id: string, polygon: MapPolygon);
}
declare abstract class MapSourceImpl extends RmObject {
    static createStockInset(area: string, display?: boolean | MapInsetDisplay): MapInset;
    readonly name: string;
    readonly enabled: boolean;
    readonly idKey: string;
    readonly nameKey: string;
    readonly meta: MapSourceMeta;
    readonly dokdo: number;
    readonly dummies: string[];
    readonly useOffset: boolean | MapCoord;
    readonly internals: boolean;
    readonly externals: boolean;
    readonly alignArctic: boolean;
    readonly borders: MapBorderInfo[];
    items: MapSourceItem[];
    insets: {
        [area: string]: MapInset;
    };
    paddings: IPaddings;
    private _excludes;
    constructor(options: MapSource, index: number);
    included(area: string): boolean;
    private $_load;
    protected abstract _doLoad(source: object, options: MapSource): MapSourceItem[];
}

/**
 * 어노테이션 배치 기준.<br/>
 * [주의]body에 설정된 annoation에는 적용되지 않는다.
 * @enum
 */
declare const _AnnotationScope: {
    /**
     * container에서 padding을 적용한 영역을 기준으로 표시한다.
     *
     * @config
     */
    readonly CHART: "chart";
    /**
     * container 전체 영역을 기준으로 표시한다.
     *
     * @config
     */
    readonly CONTAINER: "container";
};
/** @dummy */
type AnnotationScope = typeof _AnnotationScope[keyof typeof _AnnotationScope];
interface AnnotationAnimationOptions {
    type: string;
    duration?: number;
}
type AnnotationType = 'image' | 'shape' | 'text' | 'html' | 'chart';
/**
 * Annotation 모델.<br/>
 *
 * @config chart.annotation[base]
 */
interface AnnotationOptions extends ChartItemOptions {
    type?: AnnotationType;
    /**
     * true로 지정하면 시리즈들 위에 표시된다.<br/>
     * 명시적으로 false로 지정해야 시리즈들 아래 표시된다.
     *
     * @default false
     */
    front?: boolean;
    /**
     * 어노테이션 이름.<br/>
     * 동적으로 어노테이션을 다루기 위해서는 반드시 지정해야 한다.
     */
    name?: string;
    /**
     * 어노테이션 배치 기준이 되는 맵차트 구성 요소.<br/>
     * 현재, 같은 영역(body 혹은 chart)에 포함된 {@link config.base.gauge 게이지}나 다른 어노테이션의 {@link name 이름}을 지정할 수 있다.
     *
     */
    anchor?: string;
    /**
     * 수평 배치.<br/>
     *
     * @default 'left' anchor가 지정되면 'center', 아니면 'left'
     */
    align?: Align;
    /**
     * 수직 배치.<br/>
     *
     * @default top
     */
    verticalAlign?: VerticalAlign;
    /**
     * {@link align}과 {@link verticalAlign}으로 지정된 위치에서 실제 표시될 위치의 수평 간격.<br/>
     * 값이 양수일 때, {@link anchor}가 지정된 경우 anchor 아이템으 밖으로 멀어지고, 아니면 영역 경계 안쪽으로 멀어진다.
     * 또, {@link anchor}가 지정된 경우 **'0.5w'** 등으로 이 어노테이션의 너비를 기준으로 한 크기로 지정할 수 있다.
     *
     * @default 0
     */
    offsetX?: number | string;
    /**
     * {@link align}과 {@link verticalAlign}으로 지정된 위치에서 실제 표시될 위치의 수직 간격.<br/>
     * 값이 양수일 때, {@link anchor}가 지정된 경우 anchor 아이템으 밖으로 멀어지고, 아니면 영역 경계 안쪽으로 멀어진다.
     * 또, {@link anchor}가 지정된 경우 **'0.5h'**처럼 이 어노테이션의 너비를 기준으로 한 크기로 지정할 수 있다.
     *
     * @default 0
     */
    offsetY?: number | string;
    /**
     * 회전 각도.<br/>
     * 0 ~ 360 사이의 값으로 지정한다.
     *
     */
    rotation?: number;
    /**
     * 어노테이션 배치 기준.<br/>
     * [주의]body에 설정된 annoation에는 적용되지 않는다.
     *
     * @default 'chart'
     */
    scope?: AnnotationScope;
    /**
     * 배경 스타일.<br/>
     * 경계 및 배경 색, padding 스타일을 지정할 수 있다.
     * [주의] padding을 style이 아니라 여기서 지정하는 이유: background가 표시되지 않으면 사용자가 padding여부를 알 수 없다.
     */
    backgroundStyle?: SVGStyleOrClass;
    /**
     * true로 지정하면 상위 영역을 벗어난 부분도 표시되게 한다.<br/>
     * body에 포함된 경우 body 영역,
     * chart에 포함되고 scope이 'chart'일 때 chart 영역.
     *
     */
    noClip?: boolean;
    /**
     * body 어노테이션일 경우,
     * x 축을 기준으로 지정하는 수평(inverted일 때 수직) 위치.<br/>
     * chart에 지정된 어노테이션에서는 무시된다.
     *
     */
    x1?: number | Date;
    /**
     * body 어노테이션일 경우,
     * x 축을 기준으로 지정하는 수평(inverted일 때 수직) 위치.<br/>
     * chart에 지정된 어노테이션에서는 무시된다.
     *
     */
    x2?: number | Date;
    /**
     * body 어노테이션일 경우,
     * y 축을 기준으로 지정하는 수직(inverted일 때 수평) 위치.<br/>
     * chart에 지정된 어노테이션에서는 무시된다.
     *
     */
    y1?: number | Date;
    /**
     * body 어노테이션일 경우,
     * y 축을 기준으로 지정하는 수직(inverted일 때 수평) 위치.<br/>
     * chart에 지정된 어노테이션에서는 무시된다.
     *
     */
    y2?: number | Date;
    /**
     * Annotation 너비.<br/>
     * 픽셀 단위의 고정 값이나, plot 영역에 대한 상태 크기롤 지정할 수 있다.
     *
     */
    width?: PercentSize;
    /**
     * Annotation 높이.<br/>
     * 픽셀 단위의 고정 값이나, plot 영역에 대한 상태 크기롤 지정할 수 있다.
     *
     */
    height?: PercentSize;
}
declare const ImageAnnotationType = "image";
/**
 * 이미지 어노테이션.<br/>
 * {@page op.AnnotationOptions#type}은 'image'이다.<br/>
 *
 * // TODO #fiddle annotation/image-annotation Image Annotation
 * @css 'rm-image-annotation'
 * @config chart.annotation[type=image]
 */
interface ImageAnnotationOptions extends AnnotationOptions {
    type?: typeof ImageAnnotationType;
    /**
     * true로 설정되고 {@link url}이 설정된 경우에만 표시된다.
     *
     * @default true
     */
    visible?: boolean;
    /**
     * 이미지 경로.
     *
     */
    imageUrl?: string;
}
declare const ShapeAnnotationType = "shape";
/**
 * Shape Annotation 모델.
 * {@page op.AnnotationOptions#type}은 'shape'이다.<br/>
 * {@page shape} 속성에 표시할 도형 모양을 지정하거나,
 * {@page path}에 SVG path를 직접 지정할 수 있다.
 *
 * // TODO #fiddle annotation/shape-annotation Shape Annotation
 * @css 'rm-shape-annotation'
 * @config chart.annotation[type=shape]
 */
interface ShapeAnnotationOptions extends AnnotationOptions {
    type?: typeof ShapeAnnotationType;
    /**
     * @default 64
     */
    width?: number;
    /**
     * @default 64
     */
    height?: number;
    /**
     * Shape 종류.
     *
     * circle: 원
     * diamond: 다아이몬드
     * square: 정사각형
     * triangle: 삼각형
     * star: 별 모양
     * itriangle:
     * rectangle: 사각형
     *
     * @default 'square'
     */
    shape?: 'circle' | 'diamond' | 'square' | 'triangle' | 'star' | 'itriangle' | 'rectangle';
    /**
     * Shape path.
     * 이 속성이 지정되면 {@link shape}는 무시된다.
     */
    path?: string;
    series?: string;
    xRange?: number[];
    yRange?: number[];
}
declare const TextAnnotationType = "text";
/**
 * 텍스트 어노테이션.<br/>
 * {@page op.AnnotationOptions#type}은 'text'이다.<br/>
 *
 * // TODO #fiddle annotation/text-annotation Text Annotation
 * @css 'rm-text-annotation'
 * @config chart.annotation[type=text]
 */
interface TextAnnotationOptions extends AnnotationOptions {
    type?: typeof TextAnnotationType;
    /**
     * true로 설정되고 {@link text}가 설정된 경우에만 표시된다.
     *
     * @default true
     */
    visible?: boolean;
    /**
     * 표시할 텍스트.
     *
     * @default 'Text'
     */
    text?: string;
    /**
     * {@link text}에 동적으로 전달되는 값이 숫자일 때 사용되는 표시 형식.
     *
     */
    numberFormat?: string;
    /**
     * {@link text}에 동적으로 전달되는 값이 Date일 때 사용되는 표시 형식.
     *
     */
    timeFormat?: string;
    /**
     * 텍스트를 가로 또는 세로로 배치할지 여부와 블록이 진행되는 방향을 지정한다.
     *
     * @config
     */
    writingMode?: WritingMode;
    /**
     * 텍스트 문자 방향을 지정한다.
     * 세로 모드의 텍스트에만 적용된다.
     *
     * @config
     */
    textOrientation?: TextOrientation;
}
declare const HtmlAnnotationType = "html";
/**
 * HTML 어노테이션.<br/>
 * {@page op.AnnotationOptions#type}은 'html'이다.<br/>
 *
 * // TODO #fiddle annotation/html-annotation Html Annotation
 * @css 'rm-html-annotation'
 * @config chart.annotation[type=html]
 */
interface HtmlAnnotationOptions extends AnnotationOptions {
    type?: typeof HtmlAnnotationType;
    /**
     * true로 설정되고 {@link text}가 설정된 경우에만 표시된다.
     *
     * @default true
     */
    visible?: boolean;
    /**
     * 이 속성으로 지정한 html 내용을 표시한다.<br/>
     * '.'나 '#'으로 시작되는 html selector로 지정하면 해당하는 dom의 {@page https://developer.mozilla.org/ko/docs/Web/API/Element/innerHTML innerHTML}을 가져와 표시한다.<br/>
     * 예를 들어 id가 'abc'인 dom인 경우 '#abc'로 지정한다.
     * 즉, document.{@page https://developer.mozilla.org/ko/docs/Web/API/Document/querySelector querySelector}(htmlFrom)로 리턴되는 dom의 내용을 표시한다.<br/>
     * 생성되는 dom의 스타일은 {@page htmlStyle}로 지정한다.
     */
    html?: string;
    /**
     * 이 속성으로 지정한 selector에 해당하는 dom의 {@page https://developer.mozilla.org/ko/docs/Web/API/Element/innerHTML innerHTML}을 가져와 표시한다.<br/>
     * 예를 들어 id가 'abc'인 dom인 경우 '#abc'로 지정한다.
     * 즉, document.{@page https://developer.mozilla.org/ko/docs/Web/API/Document/querySelector querySelector}(htmlFrom)로 리턴되는 dom의 내용을 표시한다.<br/>
     * 이 속성이 {@page html}보다 우선한다. 다만, 존재하지 않은 dom을 지정한 경우 {@page html}에 지정한 내용을 대신 표시한다.
     * 생성되는 dom의 스타일은 {@page htmlStyle}로 지정한다.
     */
    htmlFrom?: string;
    /**
     * {@page html}로 생성되는 최상위 dom에 적용되는 스타일셋.<br/>
     */
    htmlStyle?: CSSStyleDeclaration;
    /**
     * @append
     * 너비를 반드시 지정해야 한다.<br/>
     * 지정하지 않으면 100 픽셀 너비로 표시한다.
     * {@page height 높이}를 지정하지 않으면 생성된 dom의 높이에 맞춰진다.
     *
     * @default 100
     */
    width?: PercentSize;
    /**
     * {@page html}로 지정된 html 텍스트에 포함된 param 값을 지정하는 객체나 콜백. #311<br/>
     */
    params?: {
        [key: string]: any;
    } | ((param: string) => any);
}
declare const ChartAnnotationType = "chart";
/**
 * Chart 어노테이션.<br/>
 * {@page op.AnnotationOptions#type}은 'chart'이다.<br/>
 *
 * @css 'rm-chart-annotation'
 * @config chart.annotation[type=chart]
 */
interface ChartAnnotationOptions extends AnnotationOptions {
    type?: typeof ChartAnnotationType;
    config?: any;
}
type AnnotationOptionsType = ImageAnnotationOptions | ShapeAnnotationOptions | TextAnnotationOptions | HtmlAnnotationOptions | ChartAnnotationOptions;

/**
 * @enum
 */
declare const _ClickAction: {
    readonly NONE: "none";
    readonly SELECT: "select";
    /**
     * 맵차트가 zoom 가능한 상태일 때 zoom-in 한다.
     */
    readonly ZOOM: "zoom";
    /**
     * 표시된 지도 크기가 표시 영역보다 클 때,
     * 클릭한 위치가 표시 중앙이 되도록 한다.
     */
    readonly CENTER: "center";
    /**
     * 클릭한 영역이 포함된 맵시리즈가 drilldown 가능한 상태일 때,
     * drilldown을 실해하고 클릭한 영역의 상세가 표시되도록 한다.<br/>
     */
    readonly DRILLDOWN: "drilldown";
    /**
     * drilldow이 가능한 상태면 drilldown하거나,
     * 아니면 zoom-in 한다.
     */
    readonly DRILL_OR_ZOOM: "drillOrZoom";
};
/** @dummy */
type ClickAction = typeof _ClickAction[keyof typeof _ClickAction];
/**
 * @enum
 */
declare const _DblClickAction: {
    readonly NONE: "none";
    readonly SELECT: "select";
    /**
     * 맵차트가 zoom 가능한 상태일 때 zoom-in 한다.
     */
    readonly ZOOM: "zoom";
    /**
     * 표시된 지도 크기가 표시 영역보다 클 때,
     * 클릭한 위치가 표시 중앙이 되도록 한다.
     */
    readonly CENTER: "center";
    /**
     * 더블클릭한 영역이 포함된 맵시리즈가 drilldown 가능한 상태일 때,
     * drilldown을 실해하고 클릭한 영역의 상세가 표시되도록 한다.<br/>
     */
    readonly DRILLDOWN: "drilldown";
    /**
     * drilldow이 가능한 상태면 drilldown하거나,
     * 아니면 zoom-in 한다.
     */
    readonly DRILL_OR_ZOOM: "drillOrZoom";
};
/** @dummy */
type DblClickAction = typeof _DblClickAction[keyof typeof _DblClickAction];
declare const _DragAction: {
    /**
     * 구 지도이면 회전하고, 스크롤 가능한 세계지도면 스크롤하고, 아니면 지도를 이동(pan) 시킨다.<br/>
     */
    readonly DEFAULT: "default";
    /**
     * 드래그로 결정된 영역에 포함된 area들을 선택한다.<br/>
     * ctrl/cmd 키가 눌러진 상태가 아니면 기존 선택은 취소된다.
     */
    readonly SELECT: "select";
    /**
     * 드래그로 결정된 영역이 화면을 채우도록 zoom-in 한다.<br/>
     */
    readonly ZOOM: "zoom";
};
type DragAction = typeof _DragAction[keyof typeof _DragAction];
interface OnClickArgs extends CommonCallbackArgs {
    x: number;
    y: number;
    coord: MapCoord;
    area?: string;
}
/**
 * 맵차트 전체에 영향을 미치는 옵션들.<br />
 *
 * @config chart.chart
 */
interface ChartOptionsOptions extends ChartItemOptions {
    /**
     * false가 아닌 경우 첫번째 시리즈가 'map' 시리즈가 아니면 내부적으로 자동 추가한다.<br/>
     *
     * @default true
     */
    alwaysMap?: boolean;
    /**
     * 맵 영역 등을 클릭하거나 tap했을 때 실행될 action.<br/>
     *
     * @default 'default'
     */
    clickAction?: ClickAction;
    /**
     * 맵 영역 등을 더블 클릭하거나 더블 tap했을 때 실행될 action.<br/>
     *
     * @default 'zoom'
     */
    dblClickAction?: DblClickAction;
    /**
     * 마우스 드래그 시 실행될 action.<br/>
     *
     * @default 'none'
     */
    dragAction?: DragAction;
    /**
     * 맵차트 컨트롤의 배경 div 속성을 지정한다.<br/>
     * 스타일 속성은 svg가 아니라 html css 속성들로 지정한다.
     */
    backgroundStyle?: CSSStyles;
    /**
     * legend, color scale 등의 위젯들이 표시되는 영역과 body 사이의 간격.<br/>
     * 숫자 값이나 css margin 지정 방식의 문자열로 지정할 수 있다.
     *
     * @default 8
     */
    widgetSectionGap?: number | string;
    /**
     * legend, color scale 등의 위젯들이 표시되는 영역 내에서 위젯 사이의 간격.<br/>
     *
     * @default 8
     */
    widgetGap?: number;
    /**
     * div의 크기가 변경될 때, 맵차트를 해당 크기에 맞게 조정할지 여부
     *
     * @default false
     */
    domResize?: boolean;
    /**
     * 마우스 포인터가 클릭됐을 때 호출되는 콜백.<br/>
     */
    onClick?: (args: OnClickArgs) => void;
    /**
     * 선택 변경 시 호출되는 콜백.<br/>
     */
    onSelectionChanged?: (args: any) => void;
}
/**
 * 맵차트 제목(title) 설정 모델.<br/>
 * 기본적으로 맵차트 중앙 상단에 표시되지만 {@link align}, {@link verticalAlign} 등으로 위치를 변경할 수 있다.<br/>
 *
 * {@page guide.title 타이틀 개요} 페이지를 참조한다.
 * @config chart.title
 */
interface TitleOptions extends ChartItemOptions {
    /**
     * true로 설정되고 {@page text}가 비어 있지 않은 텍스트로 설정된 경우에 표시된다.
     *
     * @default true
     */
    visible?: boolean;
    /**
     * 제목 텍스트.<br/>
     *
     * @default 'Title'
     */
    text?: string;
    /**
     * 정렬 기준.<br/>
     * 시리즈들이 그려지는 plotting 영역이나,
     * 맵차트 전체 영역을 기준으로 할 수 있다.
     * 또, {@link config.subtitle 부제목}인 경우 제목을 기준으로 위치를 지정할 수 있다.
     *
     * @default 'map'
     */
    alignBase?: AlignBase;
    /**
     * 수평 정렬.<br/>
     *
     * @default 'center'
     */
    align?: Align;
    /**
     * 수직 정렬.<br/>
     *
     * @default 'middle'
     */
    verticalAlign?: VerticalAlign;
    /**
     * 배경 {@page it.SVGStyles 스타일셋} 또는 css {@page https://developer.mozilla.org/ko/docs/Web/CSS/CSS_selectors selector}.
     */
    backgroundStyle?: SVGStyleOrClass;
    /**
     * 주 제목과 부 제목이 표시되는 영역과 맵차트 본체 등 과의 간격을 픽셀 단위로 지정한다.<br/>
     * 주 제목이 표시되면 (부 제목의 값은 무시되고)주 제목의 값을 사용하고,
     * 부 제목만 표시될 때는 부 제목의 값을 사용한다.
     *
     * @default 10
     */
    gap?: number;
}
/**
 * 부제목 표시 위치.
 * @enum
 */
declare const _SubtitlePosition: {
    /**
     * 주제목 아래쪽에 표시.<br/>
     */
    readonly BOTTOM: "bottom";
    /**
     * 주제목 오른쪽에 표시.<br/>
     */
    readonly RIGHT: "right";
    /**
     * 주제목 왼쪽에 표시.<br/>
     */
    readonly LEFT: "left";
    /**
     * 주제목 위쪽에 표시.<br/>
     */
    readonly TOP: "top";
};
/** @dummy */
type SubtitlePosition = typeof _SubtitlePosition[keyof typeof _SubtitlePosition];
/**
 * 맵차트 제목 주위에 표시되는 부제목 옵션.<br/>
 * 기본적으로 주제목(title)의 설정을 따르고, 몇가지 속성들이 추가된다.<br/>
 * 별도 설정이 없으면 표시되지 않는다.
 *
 * ```js
 *  const config = {
 *      title: {},
 *      subtitle: {
 *          visible: true,
 *          text: '출처: UN Data, 2020',
 *      },
 *  };
 * ```
 *
 * {@page guide.title 제목 개요} 페이지를 참조한다.
 *
 * @config chart.subtitle
 */
interface SubtitleOptions extends TitleOptions {
    /**
     * 부제목 표시 위치.<br/>
     *
     * @default 'bottom'
     */
    position?: SubtitlePosition;
    /**
     * 주 제목과 사이의 간격을 픽셀 단위로 지정한다.<br/>
     *
     * @default 2
     */
    titleGap?: number;
    /**
     * @default ''
     */
    text?: string;
    /**
     * @default 'bottom'
     */
    verticalAlign?: VerticalAlign;
}
/**
 * 맵차트 개발 제작자 등을 표시하는
 * 크레딧 영역에 대한 설정 모델.
 */
interface CreditsOptions extends ChartItemOptions {
    /**
     * 제작자 이름 등 표시 텍스트.
     */
    text?: string;
    /**
     * 영역을 클릭했을 때 이 속성에 지정한 곳으로 창을 연다.
     */
    url?: string;
    /**
     * credits 표시 위치.<br/>
     * 값을 지정하지 않으면 'bottom'에 표시된다.
     *
     * @default 'bottom'
     */
    location?: ChartItemLocation;
    /**
     * 수평 배치.<br/>
     * 값을 지정하지 않으면, 기본값이 {@link location}이 'body'일 때는 'left',
     * 'top', 'bottom'일 때는 'right'이다.
     * 그 외는 무시된다.
     */
    align?: Align;
    /**
     * 수직 배치.<br/>
     * 값을 지정하지 않으면, 기본값이 {@link location}이 'body'일 때는 'top',
     * 'left', 'right'일 때는 'middle'이다.
     * 그 외는 무시된다.
     */
    verticalAlign?: VerticalAlign;
    /**
     * 설정에 따라 정해진 표시 위치에서 떨어진 수평 간격을 픽셀 단위로 지정한다.<br/>
     * {@page floating}이 true가 아니고,
     * {@page verticalAlign}이 'middle' 이면서 {@link align}이 'center'가 아닌 경우,
     * 이 값만큼 수평 영역을 차지한다.
     *
     * @default 2
     */
    offsetX?: number;
    /**
     * 설정에 따라 정해진 표시 위치에서 떨어진 수직 간격을 픽셀 단위로 지정한다.<br/>
     * {@page floating}이 true가 아니고, {@page verticalAlign}이 'middle'이 아닌 경우,
     * 이 값만큼 수직 영역을 차지한다.
     *
     * @default 1
     */
    offsetY?: number;
    /**
     * {@link floating}이 true가 아니고, 중앙이 아닌 곳에 표시될 때,
     * 맵차트 나머지 영역과의 간격을 픽셀로 지정한다.<br/>
     * {@page verticalAlign}이 'middle'이면 수평 간격, 아니면 수직 간격에 적용된다.
     *
     * @default 4
     */
    gap?: number;
}
/**
 * 툴팁에 표시할 데이터포인트들을 선택하는 방식.<br/>
 *
 * @enum
 */
declare const TooltipScopes: {
    readonly HOVER: "hover";
    readonly POINT: "point";
    readonly GROUP: "group";
    readonly AXIS: "axis";
};
/** @dummy */
type TooltipScope = typeof TooltipScopes[keyof typeof TooltipScopes];
/**
 * 데이터포인트 {@page guide.tooltip Tooltip} 설정 모델.
 *
 * @config chart.tooltip
 */
interface TooltipOptions extends ChartItemOptions {
    scope?: TooltipScope;
    html?: string;
    /**
     * 툴팁에 표시할 텍스트 형식.<br/>
     * 시리즈에 {@link config.base.series#tooltiptext tooltipText}가 시리즈 별 tooltip을 제공하지만,
     * 이 속성이 지정된 경우 우선 사용된다.<br/>
     *
     * `${param;default;format}` 형식으로 아래과 같은 변수로 데이터 포인트 및 시리즈 값을 지정할 수 있다.
     * |변수|설명|
     * |---|---|
     * |series|시리즈 이름|
     * |name|포인트 이름. 포인트가 속한 카테고리 이름이거나, 'x' 속성으로 지정한 값|
     * |x|'x' 속성으로 지정한 값|
     * |y|'y' 속성으로 지정한 값|
     * |xValue|계산된 x값|
     * |yValue|계산된 y값|
     *
     */
    text?: string;
    /**
     * 목표 지점과 tooltip 사이의 간격.
     *
     */
    offset?: number;
    /**
     * 툴팁이 점진적으로 닫히는 시간을 밀리초 단위로 지정한다.
     *
     * @default 700
     */
    hideDelay?: number;
    minWidth?: number;
    minHeight?: number;
    /**
     * true이면 툴팁 상자가 마우스 포인터를 따라 다닌다.
     * <br>
     * false, true를 명시적으로 지정하지 않으면 시리즈 종류에 따라 자동 설정된다.
     * ex) pie 시리즈는 true, bar 시리즈는 false가 된다.
     *
     */
    followPointer?: boolean;
    /**
     * 툴팁 텍스트 속 숫자 값이 NaN일 때 대신 표시되는 텍스트.
     *
     */
    nanText?: string;
    /**
     * 툴팁에 표시될 숫자값의 기본 형식.\
     * {@link text}예 표시 문자열을 지정할 때 `${yValue;;#,###.0}`와 같은 식으로 숫자 형식을 지정할 수 있다.
     *
     */
    numberFormat?: string;
    /**
     * 툴팁에 표시될 날짜(시간)값의 기본 형식.\
     * {@link text}예 표시 문자열을 지정할 때 `${x;;yyyy.MM}`와 같은 식으로 날짜(시간) 형식을 지정할 수 있다.
     *
     */
    timeFormat?: string;
}
type ProjectionType = undefined | 'orthographic' | /*'naturealearth' |*/ 'equalearth' | 'miller' | 'mercator';
/**
 * 실제 지도가 차지한 영역의 background에 표시 설정.<br/>
 */
interface MapBackgroundOptions extends ChartItemOptions {
    /**
     * 표시 여부를 지정한다.<br/>
     * boolean 값으로 명시적 지정이 없으면 기본값을 따른다.
     *
     * @default undefined 구형 프로젝션이면 true, 아니면 false.
     */
    visible?: boolean;
    /**
     * 구형 프로젝션일 때 적용할 기본 radial gradient의 색상.<br/>
     * {@page style} 속성으로 다르게 지정할 수 있다.
     *
     * @default 'lightblue'
     */
    globeFill?: string;
}
/**
 * zoom, drilldown 패널 base 모델.<br/>
 */
interface BodyPanelOptions extends ChartItemOptions {
    /**
     * body 영역 내에서 panel의 수평 정렬.<br/>
     *
     * @default 'left'
     */
    align?: Align;
    /**
     * body 영역 내에서 panel의 수직 정렬.<br/>
     *
     * @default 'top'
     */
    verticalAlign?: VerticalAlign;
    /**
     * body 영역 경계와 panel 사이의 수평 간격.<br/>
     *
     * @default 8 픽셀
     */
    offsetX?: number;
    /**
     * body 영역 경계와 panel 사이의 수직 간격.<br/>
     *
     * @default 8 픽셀
     */
    offsetY?: number;
    /**
     * 패널에 표시되는 버튼이나 label들 사이의 간격.<br/>
     *
     * @default 3 pixel
     */
    itemGap?: number;
}
interface ZoomButton {
    label?: string;
    icon?: string;
}
/**
 * zoom 버튼들이 표시되는 패널 설정 모델.<br/>
 *
 * @config chart.zoomPanel
 */
interface ZoomPanelOptions extends BodyPanelOptions {
    buttons?: ZoomButton[];
    /**
     * 버튼 배치 방향.<br/>
     *
     * @default 'vertical'
     */
    direction?: 'vertical' | 'horizontal';
    /**
     * 버튼 클릭 시 증감될 zoom 변경량을 백분율로 지정한다.<br/>
     *
     * @default 20
     */
    zoomStep?: number;
    /**
     * 버튼 너비.<br/>
     * {@page buttonHeight}가 지정되지 않으면 이 속성값과 동일하게 표시된다.
     *
     * @default 28 픽셀
     */
    buttonWidth?: number;
    /**
     * 버튼 높이.<br/>
     * {@page buttonWidth}가 지정되지 않으면 이 속성값과 동일하게 표시된다.
     *
     * @default 28 픽셀
     */
    buttonHeight?: number;
    /**
     * 원래 크기 상태로 변경하는 버튼 표시 여부.<br/>
     *
     * @default true
     */
    showReset?: boolean;
    /**
     * 버튼들에 적용할 스타일셋.<br/>
     */
    buttonStyle?: SVGStyleOrClass;
    /**
     * @default 'left'
     */
    align?: Align;
    /**
     * @default 'bottom'
     */
    verticalAlign?: VerticalAlign;
    /**
     * true로 지정하면 맵이 zoom되지 않은 상태일 때도 표시한다.<br/>
     * 물론 {@page visible}이 false이면 이 속성과 무관하게 표시되지 않는다.
     *
     * @default true
     */
    showAlways?: boolean;
}
/**
 * @enum
 */
declare const _DrilldownPanelType: {
    /**
     * 전후 이동 버튼을 표시한다.
     */
    readonly BUTTON: "button";
    /**
     * 진행된 시리즈들의 이름을 표시한다.
     */
    readonly TEXT: "text";
};
/** @dummy */
type DrilldownPanelType = typeof _DrilldownPanelType[keyof typeof _DrilldownPanelType];
/**
 * drilldown 버튼들이 표시되는 패널 설정 모델.<br/>
 *
 * @config chart.drilldownPanel
 */
interface DrilldownPanelOptions extends BodyPanelOptions {
    /**
     * @default 'text'
     */
    type?: DrilldownPanelType;
    /**
     * @default 'left'
     */
    align?: Align;
    /**
     * @default 'top'
     */
    verticalAlign?: VerticalAlign;
}
interface CommonCallbackArgs {
    /**
     * Realmap의 공개 {@page api.Chart} 모델
     */
    chart: MapChart;
}
interface OnHoverAreaArgs extends CommonCallbackArgs {
    area: any;
    oldArea: any;
}
interface OnClickAreaArgs extends CommonCallbackArgs {
    area: any;
}
interface OnZoomChangedArgs extends CommonCallbackArgs {
    zoom: number;
    oldZoom: number;
}
/**
 * 맵차트 본체(body) 설정 모델.<br/>
 * 투영 옵션과 지도 제어 옵션들을 설정할 수 있다.<br/>
 * @config chart.body
 */
interface BodyOptions extends ChartItemOptions {
    /**
     * 지도 투영 옵션.<br/>
     * 투영 기법에 따라 지도 표시 방식이 달라진다.<br/>
     */
    projection?: ProjectionType;
    mapBackground?: MapBackgroundOptions;
    /**
     * zoom 버튼들이 표시되는 패널 설정 모델.<br/>
     */
    zoomPanel?: ZoomPanelOptions | boolean;
    /**
     * 드릴다운 경로를 표시하는 panel 설정 모델.<br/>
     */
    drilldownPanel?: DrilldownPanelOptions | boolean;
    /**
     * 사용자가 마우스 wheel이나 zoom panel을 이용해 {@page zoom}을 변경할 수 있는 지 여부.<br/>
     *
     * @default false
     */
    zoomable?: boolean;
    /**
     * zoom 상태를 백분율로 지정한다.<br/>
     * 100이면 원래 크기대로 표시한다.
     *
     * @default 100
     */
    zoom?: number;
    /**
     * 사용자가 zoom 패널 등으로 변경할 수 있는 최대 zoom.<br/>
     * @default 1000
     */
    maxZoom?: number;
    /**
     * 마우스 휠로 zooming할 때 이 속성에 지정한 값에 따라 wheel 변화량을 계산한다.<br/>
     * 큰 값을 지정할 수록 작게 변화한다.
     *
     * @default 4
     */
    wheelZoomFactor?: number;
    /**
     * 'orthgraphic' 투영이 아닌 경우 true로 지정하면 좌우 스크롤로 지도 중심점을 변경할 수 있다.<br/>
     * 지도 데이터가 세계 전체 지도일 때만 적용된다.
     *
     * @default false
     */
    scrollable?: boolean;
    /**
     * {@page scrollable}이 true인 경우 도(°) 단위 좌우 스크롤 크기.<br/>
     * 0보다 큰 값이면 중점이 아시아쪽으로 이동한다.
     */
    scroll?: number;
    /**
     * 마우스 드래그로 panX/panY 를 변경할 수 있는 지 여부.<br/>
     * 명시적 false로 지정하면 드래그로 이동시킬 수 없다.
     * 초기 {@page zoom}을 설정하고 그 위치를 유지하려 할 때 사용할 수 있다.
     */
    movable?: boolean;
    /**
     * 지도 중심으로부터 경도상으로 벗어난 지도 단위 크기. 양수이면 왼쪽으로 스크롤 된 상태
     */
    panX?: number;
    /**
     * 지도 중심으로부터 위도상으로 벗어난 지도 단위 크기. 양수이면 아래쪽쪽으로 스크롤 된 상태
     */
    panY?: number;
    rotationX?: number;
    rotationY?: number;
    fit?: any;
    points?: ([string, number, number] | {
        id: string;
        coord?: MapCoord;
        lon?: number;
        lat?: number;
    })[];
    onZoomChanged?: (args: OnZoomChangedArgs) => void;
    onHoverArea?: (args: OnHoverAreaArgs) => void;
    onClickArea?: (args: OnClickAreaArgs) => void;
    /**
     * body 영역 내에 표시되는 어노테이션 옵션.<br/>
     * 옵션 객체 또는 옵션 객체 배열로 여러 어노테이션을 설정할 수 있다.<br/>
     * [주의] 이전 버전의 설정을 로드하기 위해, 이 속성이 지정되지 않고 'annotations' 설정이 존재하면 load 후 이 속성으로 설정한다.
     */
    annotations?: AnnotationOptionsType | AnnotationOptionsType[];
}
interface BackgroundImageOptions extends ChartItemOptions {
    url?: string;
}

/**
 * 기본 설정. <br/>
 */
interface ChartItemOptions {
    /**
     * 표시 여부.
     *
     * @default true
     */
    visible?: boolean;
    /**
     * 스타일셋 혹은 class selector.
     *
     */
    style?: SVGStyleOrClass;
}
/**
 * 텍스트 표시 효과.
 *
 * @enum
 */
declare const ChartTextEffects: {
    /**
     * 효과 없음.
     */
    readonly NONE: "none";
    /**
     * 텍스트 색상과 대조되는 색상으로 텍스트 외곽을 구분 표시한다.
     */
    readonly OUTLINE: "outline";
    /**
     * 텍스트 배경 상자를 표시한다.<br/>
     * 배경 상자에 {@link backgroundStyle}이 적용된다.
     * 스타일이 적용되지 않으면 기본 'rm-text-background'이 적용된다.
     */
    readonly BACKGROUND: "background";
};
/** @dummy */
type ChartTextEffect = typeof ChartTextEffects[keyof typeof ChartTextEffects];
interface ChartTextOptions extends ChartItemOptions {
    /**
     */
    effect?: ChartTextEffect;
    /**
     */
    lightStyle?: SVGStyleOrClass;
    /**
     */
    darkStyle?: SVGStyleOrClass;
    /**
     */
    backgroundStyle?: SVGStyleOrClass;
    /**
     * 텍스트가 data point 내부에 표시되는 경우 포인트 색상과 대조되도록 표시한다.<br/>
     * 밝게 표시할 때는 {@link lightStyle}을 적용하고,
     * 어둡게 표시할 때는 {@link darkStyle}이 적용된다.
     * lightStyle이 지정되지 않으면 'rm-text-light'이,
     * darkStyle이 지정되지 않으면 'rm-text-dark'가 기본 적용된다.
     *
     */
    autoContrast?: boolean;
    outlineThickness?: number;
    /**
     * label 문자열 앞에 추가되는 문자열.<br/>
     */
    prefix?: string;
    /**
     * label 문자열 끝에 추가되는 문자열.<br/>
     */
    suffix?: string;
    /**
     * 축의 tick 간격이 1000 이상인 큰 수를 표시할 때
     * 이 속성에 지정한 symbol을 이용해서 축약형으로 표시한다.<br/>
     *
     * @default 'k,M,G,T,P,E'
     */
    numberSymbols?: string;
    /**
     * label이 숫자일 때 표시 형식.
     *
     * @default '#,##0.#'
     */
    numberFormat?: string;
    /**
     * rich text format을 지정할 수 있다.<br/>
     */
    text?: string;
    lineHeight?: number;
}
/**
 * @enum
 */
declare const IconPostions: {
    readonly DEFAULT: "default";
    readonly LEFT: "left";
    readonly RIGHT: "right";
    readonly TOP: "top";
    readonly BOTTOM: "bottom";
};
/** @dummy */
type IconPosition = typeof IconPostions[keyof typeof IconPostions];
interface IconedTextOptions extends ChartTextOptions {
    /**
     * @default 'default'
     */
    iconPosition?: IconPosition;
    imageList?: string;
    iconRoot?: string;
    /**
     * @default 2
     */
    iconGap?: number;
    width?: number;
    height?: number;
}
/**
 * 범례나 scale의 타이틀이나 footer의 위치.<br/>
 *
 * @enum
 */
declare const MapWidgetCaptionDisplays: {
    /**
     * 범례나 scale 항목들의 배치에 따라 자동 배치한다.<br/>
     * 항목들이 수직 배치이면 'stack', 수평 배치이면 'inline'이 적용된다.
     */
    readonly AUTO: "auto";
    /**
     * 타이틀이나 footer를 항목들의 위/아래에 배치한다.
     */
    readonly STACK: "stack";
    /**
     * 타이틀이나 footer를 항목들의 좌/우에 배치한다.
     */
    readonly INLINE: "inline";
};
/** @dummy */
type MapWidgetCaptionDisplay = typeof MapWidgetCaptionDisplays[keyof typeof MapWidgetCaptionDisplays];
/**
 * 범례나 scale의 title 설정 옵션.<br/>
 */
interface MapWidgetCaptionOptions extends IconedTextOptions {
    /**
     * 타이틀 표시 위치.<br/>
     */
    display?: MapWidgetCaptionDisplay;
    /**
     * 타이틀과 범례 아이템들 사이의 간격.<br/>
     * 타당한 값으로 지정하지 않으면 {@page display}가 'linine'이 될 때 10, 아니면 5 픽셀로 적용된다.
     */
    gap?: number;
    /**
     * {@page display}가 'stack'가 될 때 수평 배치.<br/>
     * 지정하지 않거나 잘못 지정하면 'left'로 적용된다.
     */
    align?: Align;
    /**
     * {@page display}가 'inline'이 될 때 수직 배치.<br/>
     * 지정하지 않거나 잘못 지정하면 'middle'로 적용된다.
     */
    verticalAlign?: VerticalAlign;
}
/**
 * 범례나 scale의 배경 설정 옵션.<br/>
 */
interface MapWidgetBackgroundOptions extends ChartItemOptions {
}
interface MapWidgetOptions extends ChartItemOptions {
    /**
     * 시리즈에서 참조하는 범례나 스케일 이름.<br/>
     */
    name?: string;
    /**
     * 그룹 내에서 배치 순서.<br/>
     * 값을 지정하지 않거나 잘못 지정하면 마자믹에 배치된다.
     */
    order?: number;
    /**
     * 범례나 scale의 타이틀 설정 옵션.<br/>
     */
    title?: MapWidgetCaptionOptions;
    /**
     * 범례나 scale의 footer 설정 옵션.<br/>
     */
    footer?: MapWidgetCaptionOptions;
    /**
     * 범례나 scale의 배경 설정 옵션.<br/>
     */
    background?: MapWidgetBackgroundOptions;
    /**
     * 범례나 scale 표시 위치.<br/>
     *
     * @default 'bottom'
     */
    location?: ChartItemLocation;
    /**
     * 범례 또는 scale과 (location이 body일 때)body 또는 맵차트 경계 사이의 수평 간격.<br/>
     *
     * @default 0
     */
    offsetX?: number;
    /**
     * 범례 또는 scale과 (location이 body일 때)body 또는 맵차트 경계 사이의 수직 간격.<br/>
     *
     * @default 0
     */
    offsetY?: number;
    /**
     * 수평 배치.<br/>
     * 값을 지정하지 않으면, 기본값이 {@link location}이 'body'일 때는 'left',
     * 'left', 'right'일 때는 'center'이다.
     */
    align?: Align;
    /**
     * 수직 배치.<br/>
     * 값을 지정하지 않으면, 기본값이 {@link location}이 'body'일 때는 'top',
     * 'top', 'bottom'일 때는 'middle'이다.
     */
    verticalAlign?: VerticalAlign;
}
interface MapSimpleWidgetOptions extends MapWidgetOptions {
    /**
     * 이 위젯이 표시될 위젯 그룹 이름.<br/>
     * 그룹에 포함되지 않은 위젯은 {@page location} 설정에 따라 위젯 섹션이나 body 영역에 표시된다.
     */
    group?: string;
}
/**
 * 범례 및 scale 등의 위젯들을 한 방향으로 배치하는 그룹 설정 옵션.<br/>
 * 위젯의 order 속성으로 배치 순서를 결정한다.
 */
interface MapWidgetGroupOptions extends MapWidgetOptions {
    /**
     * 포함된 위젯들 배치 방향.<br/>
     *
     * @default 'vertical'
     */
    direction?: 'vertical' | 'horizontal';
}
/**
 * DataPointCallbackArgs
 */
interface DataPointArgs extends CommonCallbackArgs {
    series: object;
    count: number;
    id: string;
    index: number;
    name?: string;
    color?: string;
    className?: string;
    value?: any;
    labelIndex?: number;
    coord?: MapCoord;
    source: any;
}
interface DataPointListkArgs extends CommonCallbackArgs {
    /**
     * 데이터포인트 개수.
     */
    count: number;
    /**
     * 해당 위치의 데이터포인트 정보를 리턴한다.<br/
     * 리턴되는 객체는 재사용되므로 보관할 수 없다.
     */
    get(index: number): DataPointArgs;
}
interface AnimationOptions {
    duration: number;
    end: () => void;
}
interface ZoomToAreaOptions {
    /**
     * 최소 확대 비율.
     */
    minimumZoom?: number;
    /**
     * 최대 확대 비율.
     */
    maximumZoom?: number;
}

/**
 * 맵차트 내보내기 설정 모델
 * @config chart.exporting
 */
interface ExporterOptions extends ChartItemOptions {
    /**
     * 내보내기 버튼 표시 여부 지정
     */
    visible?: boolean;
    /**
     * 내보내기 버튼을 사용해 내보낸 맵차트에 사용할 확장자 없는 파일 이름.\
     * 'export' 함수를 호출할 때 fileName을 지정하지 않을 경우 이 속성이 적용된다.
     * fileName을 지정하지 않을 경우 realmap.type으로 다운로드 된다.
     *
     */
    fileName?: string;
    /**
     * 내보내기를 라이브러리를 사용하여 진행할지 여부 지정
     */
    useLibrary?: boolean;
    /**
     * 내보내기 메뉴에 포함할 export types
     */
    menus?: ExportType[];
    /**
     * 너비, 지정한 너비에 맞춰 높이가 결정된다.
     */
    width?: number;
    /**
     * 이미지의 scale
     */
    scale?: number;
    /**
     * 내보내기 도중 에러가 발생했을 때 처리할 서버 URL.\
     * 지정하지 않을경우 realmap 서버에서 처리한다.
     */
    url?: string;
    /**
     * true로 지정하면 내보내기 결과에 {@page config.axis.scrollBar AxisScrollBarOptions}가 포함되지 않는다.
     */
    hideScrollbar?: boolean;
    /**
     * true로 지정하면 내보내기 결과에 {@page config.seriesNavigator SeriesNavigator}가 포함되지 않는다.
     */
    hideNavigator?: boolean;
    /**
     * true로 지정하면 내보내기 결과에 {@page config.body.zoomButton ZoomButtonOptions}가 포함되지 않는다.
     */
    hideZoomButton?: boolean;
}

/**
 * @enum
 */
declare const _ExportType: {
    /** @config */
    readonly PNG: "png";
    /** @config */
    readonly JPEG: "jpeg";
    /** @config */
    readonly SVG: "svg";
    /** @config */
    readonly PDF: "pdf";
    /** @config */
    readonly PRINT: "print";
};
/** @dummy */
type ExportType = typeof _ExportType[keyof typeof _ExportType];
/**
 * 내보내기 옵션.
 */
interface ExportOptions {
    /**
     * 내보낸 맵차트에 사용할 확장자.\
     * type을 지정하지 않을 경우 png로 내보내기 된다.\
     * @config
     * // @TODO https://github.com/realgrid/realreport-chart/issues/549
     */
    type?: ExportType;
    /**
     * 내보낸 맵차트에 사용할 확장자 없는 파일명.
     * fileName을 지정하지 않을 경우 realmap.type으로 다운로드 된다.
     * @config
     */
    fileName?: string;
}
/**
 * 외부 모듈로 구현되는 맵차트 내보내기 기능 명세.
 */
interface ChartExporter {
    exportToImage: (dom: HTMLElement, options: ExportOptions, config: ExporterOptions) => void;
    exportToPrint: (dom: HTMLElement, options: ExportOptions) => void;
    isContextMenuVisible: () => boolean;
    toggleContextMenu: () => void;
    contains: (dom: Element) => boolean;
    hideContextMenu: () => void;
}

interface IPoint {
    x: number;
    y: number;
}

interface ISize {
    width: number;
    height: number;
}
/** @internal */
declare class Size {
    width: number;
    height: number;
    static readonly EMPTY: Size;
    static empty(): Size;
    static create(w?: number, h?: number): Size;
    constructor(width?: number, height?: number);
    /** isEmpty */
    get isEmpty(): boolean;
    clone(): Size;
    equals(sz: Size): boolean;
    setEmpty(): Size;
    set(width: number, height: number): Size;
    round(): Size;
    toString(): string;
}

/** @internal */
declare class Color {
    private static readonly COLORS;
    static create(color?: string): Color | undefined;
    static isBright(color: string): boolean;
    static getContrast(color: string, darkColor?: string, brightColor?: string): string;
    static interpolate(color1: Color, color2: Color, rate: number): Color;
    private r;
    private g;
    private b;
    private a;
    constructor(color?: string);
    get rgba(): string;
    isBright(): boolean;
    getContrast(darkColor: string, brightColor: string): string;
    brighten(rate: number, color?: Color): Color;
    toString(): string;
    private $_parseRgb;
    private $_parseNumber;
}

/**
 * @internal
 *
 * //TODO: Intl.DateTimeFormat 사용할 것.
 */
declare class DatetimeFormatter {
    private static readonly Formatters;
    static getFormatter(format: string): DatetimeFormatter;
    static get Default(): DatetimeFormatter;
    private _format;
    private _baseYear;
    private _preserveTime;
    private _tokens;
    private _hasAmPm;
    private _formatString;
    constructor(format: string);
    /** format */
    get format(): string;
    /** formatString */
    get formatString(): string;
    set formatString(value: string);
    toStr(date: Date, startOfWeek: number): string;
    private parseDateFormatTokens;
    private parse;
}

/**
 * @internal
 *
 * 'as,0.0#'
 * NOTE: 'a'는 bigint에 사용할 수 없다.
 */
declare class NumberFormatter {
    static readonly DEFAULT_FORMAT = "";
    private static readonly Formatters;
    static getFormatter(format: string): NumberFormatter;
    static get Default(): NumberFormatter;
    private _format;
    private _options;
    constructor(format: string);
    get format(): string;
    toStr(value: number | bigint): string;
    toStrEx(value: number | bigint, roundingMode: 'trunc' | 'ceil'): string;
    private $_parse;
}

interface IRect {
    x: number;
    y: number;
    width: number;
    height: number;
}
declare const createRect: (x: number, y: number, width: number, height: number) => IRect;
declare function rectToSize(r: IRect): ISize;
declare function isEmptyRect(r: IRect): boolean;
/** @internal */
declare class Rectangle {
    x: number;
    y: number;
    width: number;
    height: number;
    static readonly Empty: Rectangle;
    static Temp: Rectangle;
    static create(x: any, y?: number, width?: number, height?: number): Rectangle;
    constructor(x?: number, y?: number, width?: number, height?: number);
    /** left */
    get left(): number;
    set left(value: number);
    /** right */
    get right(): number;
    set right(value: number);
    /** top */
    get top(): number;
    set top(value: number);
    /** bottom */
    get bottom(): number;
    set bottom(value: number);
    /** isEmpty */
    get isEmpty(): boolean;
    get isValid(): boolean;
    clone(): Rectangle;
    getInner(): Rectangle;
    equals(r: Rectangle): boolean;
    leftBy(delta: number): Rectangle;
    rightBy(delta: number): Rectangle;
    topBy(delta: number): Rectangle;
    bottomBy(delta: number): Rectangle;
    shrink(dx: number, dy: number): Rectangle;
    expand(dx: number, dy: number): Rectangle;
    contains(x: number, y: number): boolean;
    setEmpty(): Rectangle;
    move(x?: number, y?: number): Rectangle;
    set(x: number, y: number, width: number, height: number): Rectangle;
    setWidth(value: number): Rectangle;
    copy(r: Rectangle): Rectangle;
    copyHorz(r: Rectangle): Rectangle;
    copyVert(r: Rectangle): Rectangle;
    inflate(left?: number, top?: number, right?: number, bottom?: number): Rectangle;
    offset(dx: number, dy: number): Rectangle;
    round(): Rectangle;
    union(r: Rectangle): Rectangle;
    normalize(): Rectangle;
    toString(): string;
}

/** @internal */
declare class Sides {
    top: number;
    bottom: number;
    left: number;
    right: number;
    static readonly Empty: Readonly<Sides>;
    static Temp: Sides;
    static create(top: number, bottom?: number, left?: number, right?: number): Sides;
    static createFrom(value: string): Sides;
    constructor(top?: number, bottom?: number, left?: number, right?: number);
    clone(): Sides;
    set(...values: number[]): void;
    applyPadding(cs: CSSStyleDeclaration): Sides;
    applyMargin(cs: CSSStyleDeclaration): Sides;
    shrink(r: IRect): IRect;
    toString(): string;
}

/**
 * @internal
 *
 * 값이 문자형일 때 텍스트 변경 형식.
 * 세미콜론(;)으로 구분되는 형식. 두개의 문자열은 각각 String.prototype.replace의 매개변수가 된다.
 * 예) 사업자번호: '(\\d{3})(\\d{2})(\\d{5});$1-$2-$3'
 */
declare class TextFormatter {
    private static readonly Formatters;
    static getFormatter(format: string): TextFormatter;
    private _format;
    private _pattern;
    private _replace;
    constructor(format: string);
    get format(): string;
    toStr(text: string): string;
    $_parse(fmt: string): void;
}

/** @internal */
declare class RmTool<T extends RmControl = RmControl> {
    private _control;
    private _touchElement;
    private _moveElement;
    private _draggable;
    private _dragTracker;
    private _touchX;
    private _touchY;
    private _prevX;
    private _prevY;
    protected _touches: {
        x: number;
        y: number;
        t: number;
    }[];
    protected _tapped: number;
    private _firstTime;
    private _secondTime;
    private _longTimer;
    protected _primaryId: number;
    private _distance;
    private _pinching;
    constructor(control: T);
    get control(): T;
    /**
     * drag tracker
     */
    get dragTracker(): DragTracker;
    setDragTracker(value: DragTracker): void;
    get dragging(): boolean;
    touchX(): number;
    touchY(): number;
    pointerDown(ev: PointerEvent): boolean;
    protected _stopEvent(ev: Event): void;
    private $_doDrag;
    private $_startMove;
    pointerMove(ev: PointerEvent): void;
    pointerUp(ev: PointerEvent): void;
    pointerCancel(ev: PointerEvent): void;
    pointerLeave(ev: PointerEvent): void;
    touchStart(ev: TouchEvent): void;
    touchMove(ev: TouchEvent): boolean;
    protected _isPinchTarget(dom: Element): boolean;
    protected _doPinch(dist: number): void;
    touchEnd(ev: TouchEvent): void;
    click(ev: PointerEvent): void;
    dblClick(ev: PointerEvent): void;
    keyPress(ev: KeyboardEvent): void;
    wheel(ev: WheelEvent): void;
    requestDrag(request: DragRequest): void;
    getTrackerFromRequest(request: DragRequest): DragTracker;
    protected _setDraggable(value: boolean): void;
    protected _doClick(ev: PointerEvent): void;
    protected _doDblClick(ev: PointerEvent): void;
    protected _doPointerDown(ev: PointerEvent): boolean;
    protected _doPointerMove(x: number, y: number, ev: PointerEvent): void;
    protected _doPointerUp(ev: PointerEvent): boolean;
    protected _doPointerCancel(ev: PointerEvent): void;
    protected _doPointerLeave(ev: PointerEvent): void;
    protected _doTouchStart(ev: TouchEvent, dom: Element): void;
    protected _doTouchMove(ev: TouchEvent, dom: Element): boolean;
    protected _doTouchEnd(ev: TouchEvent, dom: Element): void;
    protected _doLongPressed(dom: Element, x: number, y: number): void;
    protected _doKeyPress(ev: KeyboardEvent): void;
    protected _doWheel(ev: WheelEvent): boolean;
    protected _doSwipe(dom: Element, prevTracker: DragTracker, dir: RmDirection, duration: number, distance: number): boolean;
    protected _getDragTracker(dom: Element, dx: number, dy: number): DragTracker;
    private $_startDrag;
    private $_drag;
    private $_stopDragTracker;
    private $_pointerToPoint;
    private $_checkSwipe;
    /**
     * 터치 시작 시점에 실행한 설정 등을 이 후 touch 이벤트가 발생하면 초기화한다.
     * ex) touch feedback, ...
     *     iphone 메시지 편집 창에서 touch 하면 행을 선택하고 이 후 다른 이벤트가 발생하면 선택을 해제한다.
     */
    protected _clearTouchEffects(): void;
    private $_getDistance;
}
declare abstract class DragRequest extends RmObject {
}
declare abstract class DragTracker<T extends RmControl = RmControl> extends RmObject {
    private _control;
    private _dragging;
    constructor(control: T);
    get control(): T;
    /** dragging */
    get dragging(): boolean;
    /** startWhenCreated */
    get startWhenCreated(): boolean;
    get cursor(): string;
    canSwipe(): boolean;
    start(eventTarget: Element, xStart: number, yStart: number, x: number, y: number): boolean;
    drag(eventTarget: Element, xPrev: number, yPrev: number, x: number, y: number): boolean;
    cancel(): void;
    drop(eventTarget: HTMLElement, x: number, y: number): void;
    swipe(dir: RmDirection, duration: number, distance: number): boolean;
    end(x?: number, y?: number): void;
    protected _doSwipe(dir: RmDirection, duration: number, distance: number): boolean;
    protected _showFeedback(x: number, y: number): void;
    protected _moveFeedback(x: number, y: number): void;
    protected _hideFeedback(): void;
    protected _doStart(eventTarget: Element, xStart: number, yStart: number, x: number, y: number): boolean;
    protected abstract _doDrag(eventTarget: Element, xPrev: number, yPrev: number, x: number, y: number): boolean;
    protected _doCanceled(): void;
    protected _canAccept(eventTarget: Element, x: number, y: number): boolean;
    protected _doCompleted(eventTarget: Element, x: number, y: number): void;
    protected _doEnded(x?: number, y?: number): void;
}

/**
 * @internal
 *
 * Control base.
 */
declare abstract class RmControl extends RmObject {
    static readonly CLASS_NAME = "rm-control";
    static readonly SHADOW_FILTER = "rm-shadow-filter";
    private _activeTool;
    static _animatable: boolean;
    private _container;
    private _dom;
    private _htmlRoot;
    private _debugger;
    private _svg;
    private _defs;
    private _root;
    private _inited;
    private _testing;
    private _dirty;
    private _requestTimer;
    private _defaultTool;
    private _tool;
    private _invalidElements;
    private _toAnimation;
    private _invalidateLock;
    private _lockDirty;
    private _cssVars;
    private _resizeObserver;
    private _domResize;
    loaded: boolean;
    _padding: ISides;
    _scrolling: boolean;
    constructor(doc: Document, container: string | HTMLDivElement, className?: string);
    protected _doDestory(): void;
    isInited(): boolean;
    isTesting(): boolean;
    doc(): Document;
    dom(): HTMLElement;
    width(): number;
    height(): number;
    contentWidth(): number;
    contentHeight(): number;
    contentRight(): number;
    clipContainer(): SVGElement;
    activeTool(): RmTool;
    setSctiveTool(value: RmTool): void;
    clearDefs(): void;
    appendDom<T extends HTMLElement>(elt: T): T;
    addElement<T extends RmElement>(elt: T): T;
    removeElement(elt: RmElement): void;
    invalidate(force?: boolean): void;
    invalidateLayout(force?: boolean): void;
    setLock(): void;
    releaseLock(validate?: boolean): void;
    lock(func: (control: RmControl) => void): void;
    silentLock(func: (control: RmControl) => void): void;
    setDomResize(value: boolean): void;
    getBounds(): DOMRect;
    setAnimation(to?: number): void;
    fling(distance: number, duration: number): void;
    getCssVar(name: string): string;
    addDef(element: Element): void;
    removeDef(element: Element | string): void;
    /**
     * defs에 직사각형 clipPath를 등록한다.
     */
    clipBounds(x?: number, y?: number, width?: number, height?: number, rd?: number): ClipRectElement;
    clip<T extends ClipElement>(clip: T): T;
    pointerToPoint(event: PointerEvent): IPoint;
    protected _setTesting(): void;
    protected _setSize(w: number, h: number): void;
    private $_addListener;
    protected _registerEventHandlers(dom: HTMLElement): void;
    protected _unresigterEventHandlers(dom: HTMLElement): void;
    protected abstract _creatDefaultTool(): RmTool;
    protected _prepareRenderers(dom: HTMLElement): void;
    protected _initControl(document: Document, container: string | HTMLDivElement, className: string): void;
    protected _initDefs(doc: Document, defs: SVGElement): void;
    protected _render(): void;
    private $_requestRender;
    updateNow(): void;
    private $_render;
    protected _setBackgroundStyle(style: CSSStyles): void;
    setDebug(message: any): void;
    protected abstract _doRender(bounds: IRect): void;
    protected _doBeforeRender(root: RmElement): void;
    protected _doAfterRender(): void;
    protected _doClick(event: PointerEvent): void;
    protected _doDblClick(event: PointerEvent): void;
    protected _doTouchStart(event: TouchEvent): void;
    protected _doTouchMove(event: TouchEvent): boolean;
    protected _doTouchEnd(event: TouchEvent): void;
    protected _doPointerDown(event: PointerEvent): boolean;
    protected _doPointerMove(event: PointerEvent): void;
    protected _doPointerUp(event: PointerEvent): void;
    protected _doPointerCancel(event: PointerEvent): void;
    protected _doPointerLeave(event: PointerEvent): void;
    protected _doKeyPress(event: KeyboardEvent): void;
    protected _doWheel(event: WheelEvent): void;
    protected _windowResizeHandler: (event: Event) => void;
    protected _domResizeHandler: (event: Event) => void;
    protected _domResized(): void;
    private _clickHandler;
    private _dblClickHandler;
    private _touchStartHandler;
    private _touchMoveHandler;
    private _touchEndHandler;
    private _pointerDownHandler;
    private _pointerMoveHandler;
    private _pointerUpHandler;
    private _pointerCancelHandler;
    private _pointerLeaveHandler;
    private _keyPressHandler;
    private _wheelHandler;
}
/**
 * @internal
 *
 * RcContainer 구성 요소.
 * SVGElement들로 구현된다.
 */
declare class RmElement extends RmObject {
    static TESTING: boolean;
    static DEBUGGING: boolean;
    static ASSET_KEY: string;
    static TEMP_KEY: string;
    static shrink(elts: RmElement[], count: number): void;
    static expand<T extends RmElement>(parent: RmElement, elts: T[], count: number, creator: () => T): void;
    static fit<T extends RmElement>(doc: Document, parent: RmElement, elts: T[], count: number, creator: {
        new (doc: Document, styleName?: string): T;
    }, styleName: string): void;
    private _visible;
    private _x;
    private _y;
    private _width;
    private _height;
    private _zIndex;
    private _tx;
    private _ty;
    private _scaleX;
    private _scaleY;
    private _rotation;
    private _originX;
    private _originY;
    private _matrix;
    protected _styleName: string;
    protected _styles: any;
    protected _styleDirty: boolean;
    private _dom;
    private _parent;
    removing: boolean;
    constructor(doc: Document, styleName: string, tag?: string);
    protected _doInitStyles(): void;
    protected _doDestory(): void;
    get doc(): Document;
    get dom(): SVGElement;
    get parent(): RmElement;
    get control(): RmControl;
    get zIndex(): number;
    set zIndex(value: number);
    get x(): number;
    set x(value: number);
    get tx(): number;
    get y(): number;
    set y(value: number);
    get ty(): number;
    get width(): number;
    set width(value: number);
    get height(): number;
    set height(value: number);
    /**
     * visible
     */
    get visible(): boolean;
    set visible(value: boolean);
    setVisible(value: boolean): boolean;
    /**
     * rotation
     */
    get rotation(): number;
    set rotation(value: number);
    setRotation(originX: number, originY: number, rotation: number): RmElement;
    getStyle(prop: string): string;
    hasStyle(className: string): boolean;
    containsDom(dom: Element): boolean;
    addDom(dom: SVGElement | HTMLElement): HTMLElement | SVGElement;
    add<T extends RmElement>(child: T): T;
    addAll(...children: RmElement[]): void;
    insertChild<T extends RmElement>(child: T, before: RmElement): T;
    insertFirst<T extends RmElement>(child: T): T;
    removeChild(child: RmElement): void;
    remove(): RmElement;
    appendElement(doc: Document, tag: string): SVGElement;
    insertElement(doc: Document, tag: string, before: Node): SVGElement;
    moveToLast(child: RmElement): void;
    isValidPathData(d: string): boolean;
    getAttr(attr: string): any;
    setAttr(attr: string, value: any): RmElement;
    hasAttr(attr: string): boolean;
    setAttrEx(attr: string, value: any): RmElement;
    setAttrs(attrs: any): RmElement;
    unsetAttr(attr: string): RmElement;
    getBounds(): DOMRect;
    setBounds(x: number, y: number, width: number, height: number): RmElement;
    setRect(rect: IRect): RmElement;
    getRect(): IRect;
    getSize(): ISize;
    bbox(): IRect;
    move(x: number, y: number): RmElement;
    scale(value: number, yValue?: number): this;
    trans(x: number, y: number): RmElement;
    transp(p: IPoint): RmElement;
    transc(p: MapCoord): RmElement;
    transEx(x: number, y: number, duration?: number, invalidate?: boolean): RmElement;
    transX(x: number): RmElement;
    transY(y: number): RmElement;
    transform(s: string): void;
    resize(width: number, height: number, attr?: boolean): boolean;
    appendDom(dom: Node): Node;
    insertDom(dom: Node, before: Node): Node;
    clearDom(): void;
    private _saveStyle;
    private _saveClass;
    saveStyles(): void;
    restoreStyles(): void;
    internalClearStyles(): void;
    clearStyles(): boolean;
    clearStyle(props: string[]): boolean;
    internalSetStyles(styles: any): void;
    internalImportantStylesOrClass(style: any): void;
    setStyles(styles: SVGStyles): boolean;
    resetStyles(styles: any): boolean;
    protected _resetClass(): void;
    setClass(className: string): void;
    clearStyleAndClass(): void;
    internalClearStyleAndClass(): void;
    setStyleOrClass(style: SVGStyleOrClass): void;
    internalSetStyleOrClass(style: SVGStyleOrClass): void;
    internalResetStyleOrClass(style: SVGStyleOrClass): void;
    protected _setBackgroundBorderRadius(value: number): void;
    setBackStyles(styles: any): boolean;
    setStyle(prop: string, value: any): boolean;
    internalSetStyle(prop: string, value: string): void;
    internalSetImportantStyle(prop: string, value: string): void;
    setBackStyle(prop: string, value: string): boolean;
    putStyles(styles: any, buff?: any): any;
    putStyle(prop: string, value: string, buff?: any): any;
    setColor(color: string): this;
    getFill(): any;
    getStroke(): any;
    setFill(color: string): this;
    setStroke(color: string): this;
    setTransparent(important: boolean): void;
    textAlign(): Align;
    setData(data: string, value?: string): void;
    unsetData(data: string): void;
    setBoolData(data: string, value: boolean): void;
    hasData(data: string): boolean;
    removeLater(delay: number, callback?: (v: RmElement) => void): RmElement;
    hide(delay: number): RmElement;
    ignorePointer(): void;
    invalidate(): void;
    rotate(angle: number): RmElement;
    internalRotate(angle: number): void;
    setCursor(cursor: string): void;
    clipRect(x: number, y: number, width: number, height: number, rd?: number): ClipRectElement;
    clipPath(path: Path): ClipPathElement;
    attachClipPath(clipId: string): void;
    detachClipPath(): void;
    private $_setClip;
    private createClipId;
    sort(children: RmElement[]): void;
    getParent<T extends RmElement>(type: {
        new (): T;
    }): T;
    protected _testing(): boolean;
    protected _doAttached(parent: RmElement): void;
    protected _doDetached(parent: RmElement): void;
    protected _updateTransform(): void;
}
declare class LayerElement extends RmElement {
    constructor(doc: Document, styleName?: any);
}
declare class PathElement extends RmElement {
    _userData: any;
    private _path;
    constructor(doc: Document, styleName?: string, path?: Path);
    path(): string;
    setPath(path: Path): PathElement;
}
declare class PathElementEx extends RmElement {
    group: boolean;
    _userData: any;
    private _path;
    constructor(doc: Document, styleName: string, group?: boolean);
    path(): string;
    setPath(path: Path): PathElementEx;
}
declare class MaskElement extends RmElement {
    private _id;
    constructor(doc: Document);
    get id(): string;
}
declare class ClipElement extends RmElement {
    private _id;
    constructor(doc: Document);
    get id(): string;
}
declare class ClipRectElement extends ClipElement {
    private _rect;
    constructor(doc: Document, x?: number, y?: number, width?: number, height?: number, rx?: number, ry?: number);
    setBounds(x: number, y: number, w: number, h: number): RmElement;
    resize(width: number, height: number, attr?: boolean): boolean;
    get x(): number;
    set x(value: number);
    get y(): number;
    set y(value: number);
    get width(): number;
    set width(value: number);
    get height(): number;
    set height(value: number);
}
declare class ClipPathElement extends ClipElement {
    private _path;
    constructor(doc: Document, path?: Path);
    get path(): PathElement;
    setPath(path: Path): this;
}

/**
 * @internal
 */
declare enum TextAnchor {
    START = "start",
    MIDDLE = "middle",
    END = "end"
}
/**
 * @internal
 */
declare enum TextLayout {
    TOP = "top",
    MIDDLE = "middle",
    BOTTOM = "bottom"
}
/**
 * Background, padding 등을 이용하려면 HtmlTextElement를 사용한다.
 */
declare class TextElement extends RmElement {
    private _layout;
    private _dirty;
    private _text;
    private _bounds;
    _lineCount: number;
    constructor(doc: Document, styleName?: string);
    /** text */
    get text(): string;
    set text(value: string);
    /** anchor */
    get anchor(): TextAnchor;
    set anchor(value: TextAnchor);
    /** layout */
    get layout(): TextLayout;
    set layout(value: TextLayout);
    /** svg */
    get svg(): string;
    set svg(value: string);
    get opacity(): number;
    set opacity(value: number);
    getAscent(height: number): number;
    layoutText(lineHeight?: number): void;
    isFitIn(bounds: number): boolean;
    calcWidth(): number;
    calcRangeWidth(start?: number, end?: number): number;
    truncate(bounds: number, ellipsis: boolean): void;
    setContrast(target: Element, darkStyle: SVGStyleOrClass, brightStyle: SVGStyleOrClass): TextElement;
    clearDom(): void;
    setStyles(styles: any): boolean;
    setStyle(prop: string, value: string): boolean;
    bbox(): IRect;
    getBBoundsTest(): IRect;
    stain(): void;
}

type RichTextParamCallback = (target: any, param: string) => any;
interface IRichTextDomain {
    callback?: RichTextParamCallback;
    numberFormatter?: NumberFormatter;
    timeFormatter?: DatetimeFormatter;
    textFormatter?: TextFormatter;
    startOfWeek?: number;
}
/**
 * '${name;default;format}',
 * [주의] default에는 format이 적용되지 않는다. 즉, format이 적용된 문자열을 설정해야 한다.
 */
declare class Word {
    text: string;
    private _literals;
    tag(): string;
    parse(str: string): Word;
    getText(target: any, domain: IRichTextDomain): string;
    prepareSpan(span: SVGTSpanElement, target: any, domain: IRichTextDomain): SVGTSpanElement;
    protected _doParse(str: string): Word;
}
declare class SvgLine {
    private _words;
    get words(): Word[];
    parse(s: string): SvgLine;
}
/**
 * <t>, <b>, <i>, <br>,
 * <b>${label}</b><br><t style="fill:#c00;">${endValue}</t>
 * <a href='...'>...</a>
 */
declare class SvgRichText {
    _format: string;
    lineHeight: number;
    private _lines;
    constructor(format?: string);
    setFormat(value: string): void;
    lines(): SvgLine[];
    build(view: TextElement, maxWidth: number, maxHeight: number, target: any, domain: IRichTextDomain): void;
    layout(tv: TextElement, align: Align, width: number, height: number, pad: Sides): void;
    $_parse(fmt: string): void;
}

type RmAnimationEndHandler = (ani: RmAnimation) => void;
declare abstract class RmAnimation {
    static readonly DURATION = 700;
    static readonly SHORT_DURATION = 300;
    delay: number;
    duration: number;
    easing: string;
    endHandler: RmAnimationEndHandler;
    private _easing;
    private _started;
    private _timer;
    private _ani;
    private _handler;
    setDuration(value: number): RmAnimation;
    start(endHandler?: RmAnimationEndHandler): RmAnimation;
    stop(): void;
    protected _start(duration: number, delay?: number, easing?: string): void;
    protected _stop(): void;
    protected _doStart(): void;
    protected _doStop(): void;
    protected _canUpdate(): boolean;
    protected abstract _doUpdate(rate: number): boolean;
}

/**
 * @enum
 */
declare const _Shapes: {
    /**
     * 원
     */
    readonly CIRCLE: "circle";
    /**
     * 다아이몬드
     */
    readonly DIAMOND: "diamond";
    /**
     * 정사각형
     */
    readonly SQUARE: "square";
    /**
     * 삼각형
     */
    readonly TRIANGLE: "triangle";
    /**
     * 별 모양
     */
    readonly STAR: "star";
    /**
     * 역삼각형
     */
    readonly ITRIANGLE: "itriangle";
    /**
     * 사각형
     */
    readonly RECTANGLE: "rectangle";
};
/** @dummy */
type Shape = typeof _Shapes[keyof typeof _Shapes];

type PointHoverCallback = (args: DataPointArgs) => void;
type PointClickCallback = (args: DataPointArgs) => boolean;
type PointStyleCallback = (args: DataPointArgs) => SVGStyleOrClass | undefined;
/**
 * @enum
 */
declare const _PointViewPosition: {
    /**
     * 데이터포인트 위치가 이미지 등 아이템의 중앙이 되도록 표시한다.<br/>
     */
    readonly CENTER: "center";
    /**
     * 데이터포인트 위치가 이미지 등 아이템의 아래쪽이 되도록 표시한다.<br/>
     */
    readonly TOP: "top";
    /**
     * 데이터포인트 위치가 이미지 등 아이템의 위쪽이 되도록 표시한다.<br/>
     */
    readonly BOTTOM: "bottom";
    /**
     * 데이터포인트 위치가 이미지 등 아이템의 오른쪽이 되도록 표시한다.<br/>
     */
    readonly LEFT: "left";
    /**
     * 데이터포인트 위치가 이미지 등 아이템의 왼쪽이 되도록 표시한다.<br/>
     */
    readonly RIGHT: "right";
};
/** @dummy */
type PointViewPosition = typeof _PointViewPosition[keyof typeof _PointViewPosition];
/**
 * @enum
 */
declare const _PointLabelPositions: {
    readonly AUTO: "auto";
    readonly CENTER: "center";
    readonly TOP: "top";
    readonly BOTTOM: "bottom";
    readonly LEFT: "left";
    readonly RIGHT: "right";
};
/** @dummy */
type PointLabelPosition = typeof _PointLabelPositions[keyof typeof _PointLabelPositions];
/**
 * 데이터포인트 label 설정 옵션.<br/>
 */
interface DataPointLabelOptions extends IconedTextOptions {
    /**
     * @default true
     */
    visible?: boolean;
    /**
     * {@page visible}이 true일 때,
     * 이 속성에 지정한 zoom 이상어야 표시된다.
     * // TODO: level을 배열로 지정하고 level별로 font size를 지정할 수 있게 한다.
     */
    zoomLevel?: number;
    /**
     * 포인트 label 표시 위치.
     *
     * @default 'auto'
     */
    position?: PointLabelPosition;
    /**
     * label과 point view 사이의 기본 간격.<br/>
     * 값을 지정하지 않으면 시리즈 종류에 따라 자동 결정된다.
     */
    offset?: number;
    /**
     * 'pie', 'funnel' 시리즈에서 label이 외부에 표시될 때 label과 시리즈 본체와의 기본 간격.
     *
     * @default 25
     */
    distance?: number;
    /**
     * 계산되는 기본 text 대신, data point label로 표시될 field.<br/>
     * {@page textCallback}이 설정되고 콜백에서 null이나 undefined를 리턴하지 않으면 이 속성은 무시된다.
     *
     */
    textField?: string;
    /**
     * 계산되는 기본 text 대신, data point label로 표시될 text 리턴.<br/>
     * undefined나 null을 리턴하면 {@page textField} 등을 사용한 기존에 표시될 텍스트를 사용한다.
     * 빈 문자열 등 정상적인 문자열을 리턴하면 그 문자열대로 표시된다.
     * {@page prefix}나 포맷 속성 등은 적용되지 않는다.
     */
    textCallback?: (point: any) => string;
    /**
     * 데이터 포인트별 label 표시 여부를 리턴하는 콜백.
     */
    visibleCallback?: (point: any) => boolean;
    /**
     * 데이터 포인트별로 추가 적용되는 스타일을 리턴한다.
     */
    styleCallback?: (point: any) => SVGStyleOrClass;
    /**
     * @ignore 미구현
     * 데이터 포인트 label들이 처음 load될 때 실행될 animation 종류.<br/>
     */
    animation?: 'reveal' | 'fadenin';
}
interface CalloutAnchorPointOptions extends ChartItemOptions {
    /**
     * 모양을 지정한다.<br/>
     *
     * @default 'circle'
     */
    shape?: string;
    /**
     * 반지름 크기를 픽셀 단위로 지정한다.<br/>
     *
     * @default 2.5
     */
    radius?: number;
}
/**
 * 데이터포인트의 원래 표시 위치에서 떨어진 곳에 데이터포인트 뷰를 표시하고,
 * 선을 그어 연결하는 방식에 대한 옵션.<br/>
 * 데이터가 밀집된 지역이나 겹치는 값들 사이에서 분리하여 배치하기 위해 사용한다.<br/>
 * 데이터포인트 생성 데이터의 **'offset'** 속성에 `[경도 변위, 위도 변위]` 형식으로 원래 위치에 대한 변위값들을 지정하거나,
 * **callout** 속성에 직접 표시 위치를 지정할 수도 있다. callout이 지정되면 offset은 무시된다.
 *
 * ex) `[{ offset: [[0, 2], [1, -1]], value: 100 }, ...]`<br/>
 * ex) `[{ callout: [[35.3, 152.1], [36.9, 152.1]], value: 100 }, ...]`
 */
interface DataPointCalloutOptions extends ChartItemOptions {
    /**
     * callout 시작 위치의 모양과 스타일을 설정한다.<br/>
     */
    anchorPoint?: CalloutAnchorPointOptions;
    /**
     * @default false
     */
    visible?: boolean;
    /**
     * true로 지정하면 데이터포인트에 개별적으로 적용된 색상이 있으면 그 색으로 표시한다.<br/>
     *
     * @default true
     */
    usePointColor?: boolean;
    /**
     * true로 지정하면 시리즈 스타일을 먼저 적용한다.<br/>
     *
     * @default false
     */
    useSeriesColor?: boolean;
    /**
     * true로 지정하면 데이터포인트 표시 위치 설정 용도로만 사용한다.<br/>
     *
     * @default false
     */
    layoutOnly?: boolean;
}
/**
 * 시리즈는 {@page data}로 지정된 값들을 데이터포인트로 표시하는 맵차트의 핵심 구성 요소이다.<br/>
 * 맵차트 설정의 다른 부분이나 API에 참조하기 위해서는 {@page name}을 반드시 지정해야 햔다.
 * 맵차트 생성 시 {@page config.series.#type} 을 지정하지 않으면 {@page config.series.bar 'bar'} 시리즈로 생성된다.<br/>
 *
 * @config chart.series[base]
 */
interface SeriesOptions extends ChartItemOptions {
    /**
     * 맵차트 설정 객체에 지정하는 시리즈 종류.<br/>
     */
    type?: string;
    /**
     * 시리즈 이름.<br/>
     * 시리즈를 구분하기 위한 이름으로 사용된다.<br/>
     */
    name?: string;
    /**
     * 이 시리즈를 나타내는 텍스트.<br/>
     * 레전드나 툴팁에서 시리즈를 대표한다.
     * 이 속성이 지정되지 않으면 {@page name}이 사용된다.
     */
    label?: string;
    /**
     * 명시적으로 이 속성을 지정하면,
     * 관련된 맵이 맵차트에 활성됐을 때만 시리즈가 표시된다.
     */
    map?: string | number;
    /**
     * 데이터포인트 label 설정 옵션.<br/>
     */
    pointLabel?: DataPointLabelOptions | boolean;
    /**
     * 데이터포인트 위치에서 선을 그어 떨어뜨려 표시하는 옵션.<br/>
     * 데이터가 밀집된 지역이나 겹치는 값들 사이에서 분리하여 배치하기 위해 사용한다.<br/>
     * data의 offset 속성에서 `[경도 변화량, 위도 변화량]`으로 지정한 값들로 선을 남기며 이동시킨다.<br/>
     * ex) `[{ offset: [[0, 2], [1, -1]], value: 100 }, ...]`
     */
    callout?: DataPointCalloutOptions | boolean;
    /**
     * 데이터포인트 목록을 생성하는 데 참조되는 데이터셋.<br/>
     * {@page g.createChartAsync createChartAsync}를 호출해서 비동기로
     * 맵차트를 생성할 때는 {@page dataUrl}로 원격 데이터 소스를 지정할 수 있다.
     * [주의] 처음 load 후 data의 내용을 변경해도 맵차트에 반영되지 않는다.
     */
    data?: any;
    /**
     * 시리즈 데이터의 외부 경로.<br/>
     * {@page g.createChartAsync createChartAsync} 호출 시, 해당 url로 GET 요청을 전송하여 데이터를 다운받고,
     * 해당 시리즈의 data 속성에 저장한다.<br/>
     * {@page data}가 설정되면 이 속성은 무시된다.
     * 또, 비동기 함수가 아닌 {@page g.createChart createChart}로 맵차트를 생성할 때 이 속성으로 data를 설정하려는 경우
     * 콘솔에 경고 메시지가 표시된다.
     */
    dataUrl?: string;
    /**
     * {@page data}나 {@page dataUrl}로 지정된 데이터소스에서 시리즈 데이터로 가져올 배열의 위치를 지정한다.<br/>
     * "aaa.bbb" 형식으로 지정한다. 배열 항목은 숫자로 지정한다. "aaa.2.bbb".
     * 지정하지 않으면 최상위 JSON 객체를 그대로 사용한다.
     */
    dataPath?: string;
    /**
     * {@page data}가 array로 제공되어 datapoint로 생성될 때,
     * array의 각 항목에 해당하는 이름으로 datapoint source의 값을 사용한다.
     */
    fields?: string[];
    /**
     * {@page data}로 전달되는 데이터포인트 생성 객체들의 'id' 속성 값 대신,
     * 이 속성으로 지정된 값을 데이터포인트 **id**로 설정한다.<br/>
     *
     * @default 'id'
     */
    idField?: string;
    /**
     * {@page data}로 전달되는 데이터포인트 생성 객체들의 'name' 속성 값 대신,
     * 이 속성으로 지정된 값을 데이터포인트 **이름**으로 설정한다.<br/>
     *
     * @default 'name'
     */
    nameField?: string;
    /**
     * {@page data}로 전달되는 데이터포인트 생성 객체들의 'lon' 속성 값 대신,
     * 이 속성으로 지정된 값을 데이터포인트 **경도** 값으로 설정한다.<br/>
     *
     * @default 'lon'
     */
    lonField?: string;
    /**
     * {@page data}로 전달되는 데이터포인트 생성 객체들의 'lat' 속성 값 대신,
     * 이 속성으로 지정된 값을 데이터포인트 **위도** 값으로 설정한다.<br/>
     *
     * @default 'lat'
     */
    latField?: string;
    /**
     * {@page data}로 전달되는 데이터포인트 생성 객체들의 'color' 속성 값 대신,
     * 이 속성으로 지정된 값을 데이터포인트 기본 **색상**으로 적용한다.<br/>
     */
    colorField?: string;
    /**
     * 데이터 포인트 기본 색.<br/>
     * 숫자로 지정하면 정수로 변환된 값에 해당하는 팔레트 색상으로 설정된다.
     * 'var(--color-n)'으로 지정한 것과 동일하며, 1 ~ 12 사이의 값으로 지정한다.<br/>
     * {@page style}로 지정된 색상보다는 우선하지만,
     * {@page pointColors}나 {@page styleCallback}으로 설정된 색상이 이 속성으로 설정한 색상보다 우선한다.
     */
    color?: string | number;
    /**
     * color 속성이 명시적으로 지정되지 않은 데이터포인터의 color 속성을 지정한다.<br/>
     * 색 배열로 지정하거나, 'colors' asset으로 등록된 이름을 지정할 수 있다.<br/>
     * 시리즈 {@page style}이나 {@page color}로 지정된 색 보다는 우선하지만,
     * {@page styleCallback}에서 설정된 색상이나 데이터포인트별로 지정한 색상이 이 속성으로 설정된 색상보다 우선한다.
     */
    pointColors?: string[] | string | ((point: any) => string);
    /**
     * 데이터포인트 툴팁 텍스트.
     */
    tooltipText?: string | boolean;
    tooltipCallback?: (args: any) => string;
    /**
     * 이 시리즈가 연결된 legend를 index나 이름으로 지정한다.<br/>
     * -1 등 잘못된 값을 지정하면 legend에 표시되지 않는다.
     *
     * @default 0
     */
    legend?: number | string;
    /**
     * @ignore 미구현
     * 차트 설정 로드 시 실행되는 animation 종류.
     */
    loadAnimation?: 'default' | 'reveal' | 'grow' | 'spread' | 'fadein';
    /**
     * true로 설정하면 hovering을 포함한 포인터 상호 작용에 비활성화 된다.<br/>
     */
    disabled?: boolean;
    /**
     * @ignore 미구현
     * 데이터포인트 hover 효과.<br/>
     */
    hoverEffect?: 'none' | 'default';
    /**
     * 데이터포인트 위에 마우스가 있을 때 적용되는 스타일셋 혹은 class selector.
     */
    hoverStyle?: SVGStyleOrClass;
    /**
     * 데이터 point의 동적 스타일 콜백.<br/>
     * {@page style}, {@page pointColors} 등 다른 스타일 지정들 보다 우선한다.
     */
    styleCallback?: PointStyleCallback;
    /**
     * 데이터포인트들이 새로 로드된 후 호출된다.
     */
    onPointsLoaded?: (series: object, firstTime: boolean) => void;
    onPointAdded?: (args: DataPointArgs) => void;
    onPointRemoved?: (args: DataPointArgs) => void;
    onPointUpdated?: (args: DataPointArgs) => void;
    onPointListAdded?: (args: DataPointListkArgs) => void;
    onPointListRemoved?: (args: DataPointListkArgs) => void;
    onPointListUpdated?: (args: DataPointListkArgs) => void;
    /**
     * 데이터 point가 클릭될 때 호출되는 이벤트 콜백.<br/>
     * 명시적 true를 리턴하면 기본 동작이 진행되지 않는다.
     */
    onPointClick?: PointClickCallback;
    /**
     * 마우스가 데이터 point 위에 올라가거나 빠져나갈 때 호출되는 이벤트 콜백.<br/>
     * 빠져나가는 경우 args 매개변수는 null이다.
     */
    onPointHover?: PointHoverCallback;
}
/**
 * 데이터포인트의 **'value'** 속성이나,
 * {@page valueField}로 지정된 속성 값을 기준으로 데이터포인트를 표시하는 시리즈.<br/>
 */
interface ValueSeriesOptions extends SeriesOptions {
    /**
     * {@page data}로 전달되는 데이터포인트 생성 객체들의 'value' 속성 값 대신,
     * 이 속성으로 지정된 값을 데이터포인트 값으로 적용한다.<br/>
     */
    valueField?: string;
}
/**
 * 특정 위치에 연관된 값을 버블이나 shape 등으로 표시한다.<br/>
 */
interface MarkerSeriesOptions extends ValueSeriesOptions {
    /**
     * 데이터포인트 {@page shape 도형} 회전 각도.<br/>
     */
    rotation?: number;
    /**
     * marker가 마우스 아래 있는 지 판단할 때 외부로 추가되는 가상의 두께.<br/>
     * 지정하지 않으면 {@page config.chart.options.pointHovering.hintDistance} 설정을 따른다.
     */
    hintDistance?: number;
}
interface SparkSeriesCategory {
    name?: string;
    color?: string;
}
/**
 * 특정 위치에 연관된 값들을 단순 차트(spark chart)로 표시한다.<br/>
 * bar, line, pie 차트가 제공된다.
 */
interface SparkSeriesOptions extends ValueSeriesOptions {
    /**
     * 데이터포인트의 값이 복수개일 때 값별 색상을 순서대로 지정한다.<br/>
     * color 항목이 설정되지 않으면 데이터포인트의 기본 색상이 사용된다.
     * 또, {@page legendByCategory}가 true이면 여기에 지정된 색상별로 legend에 표시된다.
     */
    categories?: SparkSeriesCategory[];
    /**
     * 데이터포인트 값들을 가져올 필드 목록.<br/>
     * 이 속성이 지정되면 {@page valueField}는 무시된다.
     */
    valueFields?: string[];
    /**
     * true로 지정되고 {@page categories}가 지정되면
     * 맵차트 legend에 category별로 항목이 표시된다.
     *
     * @default undefined
     */
    legendByCategory?: boolean;
    /**
     * 이 값을 0보다 크고 1보다 작은 값으로 지정하면,
     * 데이터포인트 최대값을 기준으로 기본 크기에 대한 상대 크기로 표시된다.<br/>
     *
     * @default undefined
     */
    minSize?: number;
    /**
     * 데이터포인트 {@page shape 도형} 회전 각도.<br/>
     */
    rotation?: number;
    /**
     * 데이터포인트 좌표 기준 spark chart 표시 위치.<br/>
     *
     * @default 'top'
     */
    position?: PointViewPosition;
}
interface GaugeOptions extends ValueSeriesOptions {
    /**
     * 데이터포인트 차트 너비를 픽셀 단위로 지정한다.<br/>
     */
    width?: number;
    /**
     * 데이터포인트 차트 높이를 픽셀 단위로 지정한다.<br/>
     */
    height?: number;
    /**
     * {@page width}, {@page height}를 동시에 지정한다.<br/>
     * 이 속성보다 {@page width}, {@page height}가 우선한다.
     *
     * @default 60
     */
    size?: number;
    /**
     * 데이터포인트 좌표 기준 게이지 표시 위치.<br/>
     *
     * @default 'top'
     */
    position?: PointViewPosition;
}
interface ValueGaugeOptions extends GaugeOptions {
    /**
     * {@page valueDomain} 설정에 따라
     * 시리즈의 전체 데이터포인트 값들로 부터 계산된 최소값 보다
     * 이 속성에 지정한 값이 작으면 그 값을 기준 최소값으로 한다.<br/>
     *
     * @default 0
     */
    minValue?: number;
    /**
     * {@page valueDomain} 설정에 따라
     * 시리즈의 전체 데이터포인트 값들로 부터 계산된 최대값 보다
     * 이 속성에 지정한 값이 크면 그 값을 기준 최대값으로 한다.<br/>
     */
    maxValue?: number;
}
interface SparkBaseLineOptions extends ChartItemOptions {
}
/**
 * @enum
 * 데이터포인트 값들을 표시할 때,
 * 크기 기준을 데이터포인트의 값들로 한정할 것인 지 또는,
 * 시리즈 전체 값들의 범위를 기준으로 할 것인 지를 지정한다.<br/>
 */
declare const _DataPointValueDomain: {
    readonly SERIES: "series";
    readonly POINT: "point";
};
/** @dummy */
type DataPointValueDomain = typeof _DataPointValueDomain[keyof typeof _DataPointValueDomain];
interface OrthogonalSparkSeriesOptions extends SparkSeriesOptions {
    /**
     * @ignore 미구현
     * true면 수평 방향으로 표시한다.
     */
    inverted?: boolean;
    /**
     * 기준선 설정 옵션.<br/>
     */
    baseLine?: SparkBaseLineOptions | boolean;
    /**
     * 데이터포인트 차트 너비를 픽셀 단위로 지정한다.<br/>
     */
    width?: number | string;
    /**
     * 데이터포인트 차트 높이를 픽셀 단위로 지정한다.<br/>
     */
    height?: number;
    /**
     * 데이터포인트 차트 양쪽 끝 여백 크기를 픽셀 크기나,
     * '%'로 끝나는 전체 너비에 대한 백분율로 지정한다.<br/>
     *
     * @default undefined
     */
    padding?: PercentSize;
    /**
     * 상/하 값 구분의 기준이 되는 값.\
     * 숫자가 아닌 값으로 지정하면 0으로 간주한다.
     */
    baseValue?: number;
    belowStyle?: SVGStyleOrClass;
    /**
     * @default 'series'
     */
    valueDomain?: DataPointValueDomain;
    /**
     * {@page valueDomain} 설정에 따라
     * 개별 데이터포인트나 시리즈의 전체 데이터포인트 값들로 부터 계산된 최소값 보다
     * 이 속성에 지정한 값이 작으면 그 값을 기준 최소값으로 한다.<br/>
     */
    minValue?: number;
    /**
     * {@page valueDomain} 설정에 따라
     * 개별 데이터포인트나 시리즈의 전체 데이터포인트 값들로 부터 계산된 최대값 보다
     * 이 속성에 지정한 값이 크면 그 값을 기준 최대값으로 한다.<br/>
     */
    maxValue?: number;
    /**
     * @ignore 미구현
     * 2 이상 값을 지정하면 데이터포인트의 값들을 이 값을 밑수로 하는 log를 취해 계산한다.<br/>
     * 작은 값들과 큰 값의 차이가 아주 클 때 격차의 scale을 줄여서 표시할 수 있다.
     */
    logBase?: number;
}
declare const BarSeriesType = "bar";
/**
 * 데이터포인트의 **'value'** 속성으로 지정된 값들을 막대 차트로 표시한다.<br/>
 * {@page op.SeriesOptions#type}은 'bar'이다.<br/>
 *
 * @fiddle series/bar-series2 Bar 시리즈 데모
 *
 * @config chart.series[type=bar]
 */
interface BarSeriesOptions extends OrthogonalSparkSeriesOptions {
    type?: typeof BarSeriesType;
    /**
     * sub label 설정 모델.
     */
    subLabel?: DataPointLabelOptions | boolean;
    /**
     * 바 너비.<br/>
     * 차트에 bar 하나가 차지히는 원래 너비에서 실제 표시되는 바 너비의 상대적 크기로 지정한다.
     * 1보다 큰 경우 bar들이 겹치게 되는데 {@page overflow}가 true가 아니면 넘치지 않도록 최대한 차트 안쪽으로 밀어서 표시된다.
     *
     * @default 0.7
     */
    barWidth?: number;
    maxValue?: number;
    /**
     * null인 y값을 {@page baseValue}로 간주한다.
     */
    nullAsBase?: boolean;
    /**
     * {@page baseValue} 혹은 y축의 baseValue보다 작은 쪽의 point들에 적용되는 스타일.
     */
    belowStyle?: SVGStyleOrClass;
    /**
     * true로 지정하면 {@page barWidth}가 1보다 큰 경우 bar가 차트 너비를 넘어 표시된다.<br/>
     * false면 최대한 차트 영역 내로 밀어서 표시한다.
     *
     * @default false
     */
    overflow?: boolean;
    /**
     * bar 표시 순서.<br/>
     * ex) 'reverse'로 지정하면 첫번째 bar가 두번째 bar 위에 표시된다.
     *
     * @default 'normal'
     */
    barOrder?: 'normal' | 'reverse';
}
/**
 * line 시리즈의 fill 영역 설정.<br/>
 */
interface LineSeriesAreaOptions extends ChartItemOptions {
    /**
     * @default
     */
    visible?: false;
}
declare const LineSeriesType = "line";
/**
 * 데이터포인트의 **'value'** 속성으로 지정된 값들을 선(line) 차트로 표시한다.<br/>
 * {@page op.SeriesOptions#type}은 'line'이다.<br/>
 *
 * @fiddle series/line-series Line 시리즈 데모
 *
 * @config chart.series[type=line]
 */
interface LineSeriesOptions extends OrthogonalSparkSeriesOptions {
    type?: typeof LineSeriesType;
    back?: ChartItemOptions;
    /**
     * line 시리즈의 fill 영역 설정.<br/>
     */
    area?: LineSeriesAreaOptions;
    curved?: boolean;
}
/**
 * 파이 섹터 무시 경계 값 및 속성 설정.<br/>
 * 데이터포인트 values의 총 합이 지정된 value보다 작을 때
 * 파이 섹터들을 별도로 표시하지 않고 지정한 크기와 스타일의 원 또는 섹터 하나로 표시한다.<br/>
 */
interface PieSeriesThreshold {
    value?: number;
    /**
     * 지정하지 않으면 원래 크기대로 표시한다.
     */
    radius?: number;
    style?: SVGStyleOrClass;
}
declare const PieSeriesType = "pie";
/**
 * 데이터포인트의 **'value'** 속성으로 지정된 값들을 파이(pie) 차트로 표시한다.<br/>
 * {@page op.SeriesOptions#type}은 'pie'이다.<br/>
 *
 * @fiddle series/pie-series Pie 시리즈 데모
 *
 * @config chart.series[type=pie]
 */
interface PieSeriesOptions extends SparkSeriesOptions {
    type?: typeof PieSeriesType;
    centerX?: number;
    centerY?: number;
    /**
     * 파이 반지름.<br/>
     * 숫자나 '%'로 끝나는 백분율로 지정할 수 있다.
     * 백분율로 지정하면 {@page body} 영역의 높이/너비 중 작은 크기에 대한 상대 크기로 지정된다.
     * 또, {@page minSize}와 함께 사용하면 데이터포인트 값에 따라 다른 크기로 표시할 수 있다.
     *
     * @default 30
     */
    radius?: PercentSize;
    startAngle?: number;
    totalAngle?: number;
    clockwise?: boolean;
    legendByField?: boolean;
    /**
     * @default true
     */
    colorByValue?: boolean;
    /**
     * 파이 섹터 무시 경계 값 및 속성 설정 목록.<br/>
     * 데이터포인트 values의 총 합이 지정된 값보다 작을 때
     * 파이 섹터들을 별도로 표시하지 않고 지정한 스타일의 원 또는 섹터 하나로 표시한다.<br/>
     */
    threshold?: PieSeriesThreshold | PieSeriesThreshold[];
}
/**
 * @enum
 */
declare const _WaffleDirection: {
    /**
     * 야래쪽 행(row)부터 위로 채워가면서 {@page config.series.waffle#fillThreshold}에 도달하면
     * 오른쪽으로 채워 나간다.<br/>
     */
    readonly ROW: "row";
    /**
     * 왼쪽 행(column)부터 오른쪽로 채워가면서 {@page config.series.waffle#fillThreshold}에 도달하면
     * 위쪽으로 채워 나간다.<br/>
     */
    readonly COL: "col";
};
/** @dummy */
type WaffleDirection = typeof _WaffleDirection[keyof typeof _WaffleDirection];
declare const WaffleSeriesType = "waffle";
/**
 * {@page value}로 지정된 연관된 값들을 waffle 차트로 표시한다.<br/>
 * {@page op.SeriesOptions#type}은 'waffle'이다.<br/>
 *
 * @fiddle series/route-series Route 시리즈 데모
 *
 * @config chart.series[type=pie]
 */
interface WaffleSeriesOptions extends SparkSeriesOptions {
    type?: typeof WaffleSeriesType;
    /**
     * @default 10
     */
    rowCount?: number;
    /**
     * @default 10
     */
    colCount?: number;
    /**
     * @default 'round'
     */
    roundingMethod?: 'round' | 'trunc';
    /**
     * 최소 cell 개수.<br/>
     *
     * @default 1
     */
    minCount?: number;
    shape?: 'sqaure' | 'circle' | 'star' | 'diamond' | 'hexagon';
    cellSize?: 5;
    gap?: 2;
    /**
     * cell 들을 채워나가는 방향을 지정한다.<br/>
     *
     * @default 'col'
     */
    fillDirection?: WaffleDirection;
    /**
     * {@page fillDirection}이 'colFirst'나 'rowFirst'일 때,
     * 방향을 바꾸게 하는 기준 셀 개수.<br/>
     * 1 이상이어야 하고, {@page fillDirection}에 따라 {@page rowCount}나 {@page colCount} 미만 크기로 지정해야 한다.
     *
     * @default 1
     */
    fillThreshold?: number;
    /**
     * @default 'series'
     */
    valueDomain?: DataPointValueDomain;
    /**
     * {@page valueDomain} 설정에 따라
     * 개별 데이터포인트나 시리즈의 전체 데이터포인트 값들로 부터 계산된 최소값 보다
     * 이 속성에 지정한 값이 작으면 그 값을 기준 최소값으로 한다.<br/>
     */
    minValue?: number;
    /**
     * {@page valueDomain} 설정에 따라
     * 개별 데이터포인트나 시리즈의 전체 데이터포인트 값들로 부터 계산된 최대값 보다
     * 이 속성에 지정한 값이 크면 그 값을 기준 최대값으로 한다.<br/>
     */
    maxValue?: number;
    /**
     * true로 지정하면 값에 포함되지 않는 셀들을 {@page nullStyle}을 적용해서 표시한다.<br/>
     *
     * @default false;
     */
    showNull?: boolean;
}
/**
 * @enum
 */
declare const _BubbleSizeMode: {
    /**
     * 최대값의 버블에 대한 지름 비율로 크기를 결정한다.<br/>
     */
    readonly WIDTH: "width";
    /**
     * 최대값의 버블에 대한 면적 비율로 크기를 결정한다.<br/>
     */
    readonly AREA: "area";
};
/** @dummy */
type BubbleSizeMode = typeof _BubbleSizeMode[keyof typeof _BubbleSizeMode];
declare const BubbleSeriesType = "bubble";
/**
 * Bubble 시리즈.<br/>
 * {@page op.SeriesOptions#type}은 'bubble'이다.<br/>
 *
 * @fiddle series/bubble-series Bubble 시리즈 데모
 *
 * @config chart.series[type=bubble]
 */
interface BubbleSeriesOptions extends MarkerSeriesOptions {
    type?: typeof BubbleSeriesType;
    /**
     * sub label 설정 모델.
     */
    subLabel?: DataPointLabelOptions | boolean;
    /**
     * 데이터포인트 값들로 부터 계산된 최소값 보다
     * 이 속성에 지정한 값이 작으면 그 값을 기준 최소값으로 한다.<br/>
     * 실시간 동적으로 데이터포인트를 추가하는 경우 이 속성과 {@page maxValue}를 명시적으로 지정해야 한다.
     */
    minValue?: number;
    /**
     * 데이터포인트 값들로 부터 계산된 최대값 보다
     * 이 속성에 지정한 값이 크면 그 값을 기준 최대값으로 한다.<br/>
     * 실시간 동적으로 데이터포인트를 추가하는 경우 이 속성과 {@page minValue}를 명시적으로 지정해야 한다.
     */
    maxValue?: number;
    /**
     * 버블 크기를 결정하는 방식.
     *
     * @default 'area'
     */
    sizeMode?: BubbleSizeMode;
    /**
     * 버블 최소 크기.<br/>
     * 백분율(%)로 지정하면 차트 너비/높이 중 작은 크기에 대한 비율로 지정된다.
     *
     * @default 10
     */
    minSize?: PercentSize;
    /**
     * 버블 최대 크기.<br/>
     * 백분율(%)로 지정하면 차트 너비/높이 중 작은 크기에 대한 비율로 지정된다.
     *
     * @default '12%'
     */
    maxSize?: PercentSize;
    /**
     * @default 'center'
     */
    position?: PointViewPosition;
    /**
     * @default 'x: <b>${x}</b><br>y: <b>${y}</b><br>volume: <b>${z}</b>'
     */
    tooltipText?: string;
    /**
     * Orthographic 투영법을 사용할 때, 버블을 구의 표면에 붙여서 그릴지 여부를 지정한다.<br />
     * Orthographic에서만 유효하다.
     *
     * @default false
     */
    alignToSurface?: boolean;
}
/**
 * @enum
 * 'route' 시리즈 연결 선 종류.<br/>
 */
declare const _RouteLineType: {
    readonly AIR: "air";
    readonly STRAIGHT: "straight";
    readonly CURVED: "curved";
};
/** @dummy */
type RouteLineType = typeof _RouteLineType[keyof typeof _RouteLineType];
/**
 * @enum
 */
declare const _RouteArrowDisplay: {
    readonly ALWAYS: "always";
    readonly MOVING: "moving";
    readonly NONE: "none";
};
/** @dummy */
type RouteArrowDisplay = typeof _RouteArrowDisplay[keyof typeof _RouteArrowDisplay];
declare const RouteSeriesType = "route";
/**
 * {@page coords}로 지정된 두 지점 사이를 곡선으로 연결하는 시리즈.<br/>
 * {@page op.SeriesOptions#type}은 'route'이다.<br/>
 * 데이터포인트 label을 표시하지 않는다.
 *
 * @fiddle series/route-series Route 시리즈 데모
 *
 * @config chart.series[type=route]
 */
interface RouteSeriesOptions extends SeriesOptions {
    type?: typeof RouteSeriesType;
    /**
     * @ignore 미구현
     * @default 'air'
     */
    lineType?: RouteLineType;
    /**
     * 선 두깨를 픽셀단위로 지정한다.<br/>
     * 이 속성을 지정하면 css 설정보다 우선해서 적용된다.
     */
    lineWidth?: number;
    /**
     * 화살표 표시 방식.<br/>
     *
     * @default 'always'
     */
    arrowDisplay?: RouteArrowDisplay;
    /**
     * 곡선이 휘어지는 정도를 지정한다. <br/>
     * 0 이상 0.1 이하의 값을 사용할 수 있다.
     * @default 0.01
     */
    bendFactor: number;
}
interface MapSeriesLabelOptions extends DataPointLabelOptions {
    /**
     * @default false
     */
    visible?: boolean;
    hoverColor?: string;
}
interface DrilldownOptions extends ChartItemOptions {
    /**
     * true가 아니면 지정하면 클릭 등으로 사용자가 drilldown할 수 없다.<br/>
     *
     * @default true
     */
    enabled?: boolean;
    /**
     * drilldown 실행 시 detail 시리즈에 연결된 맵이 차트의 base맵이 되도록 한다.<br/>
     *
     * @default true
     */
    autoMapChange?: boolean;
}
/**
 * 맵 시리즈 내외부 접경선 표시 설정 옵션.<br/>
 * [topoJSON](https://github.com/topojson/topojson-specification?tab=readme-ov-file) 소스로
 * 작성된 맵인 경우 내외부 접경선을 별도의 스타일로 구분해서 표시할 수 있다.
 */
interface MapBordersOptions extends ChartItemOptions {
    /**
     * @default false
     */
    visible?: boolean;
}
/**
 * 맵 시리즈 내외부 접경선 표시 설정 옵션.<br/>
 * [topoJSON](https://github.com/topojson/topojson-specification?tab=readme-ov-file) 소스로
 * 작성된 맵인 경우 내외부 접경선을 별도의 스타일로 구분해서 표시할 수 있다.
 */
interface MapBorderOptions extends ChartItemOptions {
    /**
     * border 목록일 때, 각 목록을 구분하는 이름.<br/>
     */
    name?: string;
}
declare const MapSeriesType = "map";
/**
 * Map area 영역들을 칠하는 시리즈.<br/>
 * {@page op.SeriesOptions#type}은 'map'이다.<br/>
 * choropleth map(단계 구분도. 색상으로 area별 특성을 나타내는 지도).
 * 설정에서 type을 지정하지 않으면 생성되는 기본 시리즈이다.
 * Map chart가 지도처럼 보이려면 반드시 하나 이상의 map series가 포함되어야 한다.<br/>
 *
 * @config chart.series[type=map]
 */
interface MapSeriesOptions extends ValueSeriesOptions {
    type?: typeof MapSeriesType;
    /**
     * true로 지정하면 데이터포인트로 지정되지 않은 area들에 대해,
     * map 모델의 속성들을 이용해서 각 area에 해당하는 data point들을 자동 생성한다.<br/>
     */
    useMapData?: boolean;
    /**
     * 맵 area와 연결할 키값들을 지정한다.<br/>
     * 두 값을 배열로 지정하면 첫번째 문자열은 맵소스 "properties"의 속성명,
     * 두번째는 데이터포인트의 속성명이다.
     * 값을 하나만 지정하거나 문자열로 지정하면 양쪽 같은 속성명으로 연결한다.<br/>
     * 이 값이 지정되지 않으면 데이터포인트의 "id" 또는 {@page idField} 속성으로 지정한 속성값과 맵소스의 "rm-id" 또는 "id" 속성값으로 연결한다.
     */
    mapKeys?: string | [string, string];
    /**
     * 데이터포인트가 연결되지 않은 area의 스타일.<br/>
     *
     * @css '.rm-map-series .rm-point[data-null]'
     */
    nullStyle?: SVGStyleOrClass;
    /**
     * dummy area에 설정되는 스타일셋.<br/>
     */
    dummyStyle?: SVGStyleOrClass;
    /**
     * true로 지정하면 data가 연결되지 않은 area도 마우스 hover 효과가 표시된다.<br/>
     *
     * @default false
     */
    nullHovering?: boolean;
    hoverColor?: string;
    hoverStyle?: SVGStyleOrClass;
    /**
     * true로 지정하면 마우스 클릭 등으로 area를 선택할 수 있다.<br/>
     * {@page config.options#clickAction} 또는 {@page config.options#dbClickAction}이 'select'로 지정된 경우에만 적용된다.<br/>
     *
     * @default false
     */
    selectable?: boolean;
    /**
     * 선택된 area에 적용할 스타일셋.<br/>
     */
    selectedStyle?: SVGStyleOrClass;
    /**
     * true로 지정하면 data point가 설정되지 않은 area들도 nullColor로 표시한다.<br/>
     * 복수 개의 시리즈로 영역들을 그룹핑하려면 반드시 false로 지정해야 한다.
     *
     * @default true
     */
    allAreas?: boolean;
    /**
     * 표시하지 않는 영역들을 지정한다.<br/>
     * {@page mapKeys} 속성으로 지정된 key나 'id' 또는 {@page idField}로 지정된 값(들)로 지정한다.
     */
    hiddenAreas?: string | string[];
    /**
     * 내부 접경선 표시 설정 옵션.<br/>
     */
    internalBorder?: MapBordersOptions;
    /**
     * 외부 접경선 표시 설정 옵션.<br/>
     */
    externalBorder?: MapBordersOptions;
    /**
     * 특정 영역들의 경계선 옵션 목록.<br/>
     */
    mapBorders?: string | MapBorderOptions | (string | MapBorderOptions)[];
    colorRange?: ColorRange;
    /**
     * 차트에 설정된 color scale 아이디 혹은 인덱스.<br/>
     * 명시적 null을 지정하면 컬러스케일에 연결되지 않는다.
     * 다른 잘못된 값이면 첫번째 스케일에 연결된다.
     */
    colorScale?: string | number | null;
    drilldown?: DrilldownOptions;
    /**
     * @ignore
     */
    detail?: MapSeriesOptions;
    detailKey?: string;
    detailZoom?: number;
    /**
     * true로 지정하면 데이터포인트가 설정된 area들이 설정되지 않은 area보다 위에 그려지게 한다.<br/>
     *
     * @default false;
     */
    bringToFront?: boolean;
    /**
     * 맵시리즈는 기본값으로 legend에 표시하지 않는다.<br/>
     *
     * @default -1
     */
    legend?: number | string;
}
interface FeatureSeriesLabelOptions extends DataPointLabelOptions {
    hoverColor?: string;
}
declare const FeatureSeriesType = "feature";
/**
 * Feature area 영역들을 칠하는 시리즈.<br/>
 * {@page op.SeriesOptions#type}은 'feature'이다.<br/>
 *
 * @config chart.series[type=map]
 */
interface FeatureSeriesOptions extends ValueSeriesOptions {
    type?: typeof FeatureSeriesType;
    hoverColor?: string;
    hoverStyle?: SVGStyleOrClass;
    selectable?: boolean;
    colorRange?: ColorRange;
    /**
     * 차트에 설정된 color scale 아이디 혹은 인덱스.<br/>
     * 명시적 null을 지정하면 컬러스케일에 연결되지 않는다.
     * 다른 잘못된 값이면 첫번째 스케일에 연결된다.
     */
    colorScale?: string | number | null;
    /**
     * @ignore
     */
    detail?: FeatureSeriesOptions;
    detailKey?: string;
    detailZoom?: number;
    /**
     * true로 지정하면 데이터포인트가 설정된 area들이 설정되지 않은 area보다 위에 그려지게 한다.<br/>
     *
     * @default false;
     */
    bringToFront?: boolean;
}
declare const PointSeriesType = "point";
/**
 * Point 시리즈. <br/>
 * {@page op.SeriesOptions#type}은 'point'이다.<br/>
 *
 * @fiddle series/point-series Point 시리즈 데모
 *
 * @config chart.series[type=point]
 */
interface PointSeriesOptions extends MarkerSeriesOptions {
    type?: typeof PointSeriesType;
    /**
     * 명시적으로 지정하지 않으면 기본 제공되는 shape 목록 중 하나로 자동 설정된다.<br/>
     */
    shape?: Shape;
    /**
     * 데이터포인트 {@page shape 도형}의 반지름.
     *
     * @default 5
     */
    radius?: number;
    /**
     * @default 'center'
     */
    position?: PointViewPosition;
}
/**
 * Label 설정 옵션. <br/>
 */
interface ImageSeriesLabelOptions extends DataPointLabelOptions {
    /**
     * @default false
     */
    visible?: boolean;
}
declare const ImageSeriesType = "image";
/**
 * 지정된 지점에 이미지를 표시하는 시리즈.<br/>
 * {@page op.SeriesOptions#type}은 'image'이다.<br/>
 *
 * @fiddle series/image-series Image 시리즈 데모
 *
 * @config chart.series[type=image]
 */
interface ImageSeriesOptions extends SeriesOptions {
    type?: typeof ImageSeriesType;
    /**
     * {@page config.series.image.pointLabel#visible} 기본값이 false이다.
     */
    pointLabel?: ImageSeriesLabelOptions;
    /**
     * @default 'imageUrl'
     */
    imageField?: string;
    /**
     * 각 데이터포인트의 imageUrl의 root url.
     */
    rootUrl?: string;
    imageWidth?: number;
    imageHeight?: number;
    /**
     * 데이터포인트 {@page shape 도형} 회전 각도.<br/>
     */
    rotation?: number;
    /**
     * 이미지 표시 위치.<br/>
     *
     * @default top
     */
    position?: PointViewPosition;
}
declare const PinSeriesType = "pin";
/**
 * Pin 시리즈. <br/>
 * 지정된 위치에 pin의 아래 부분이 위치한다.
 * 내부 원을 특정 스타일로 표시할 수 있다.
 * 또, 도형 안에 text를 표시할 수 있으며,
 * {@page style}에 padding을 지정해서 text 위치를 조정할 수 있다.
 *
 * @config chart.series[type=pin]
 */
interface PinSeriesOptions extends MarkerSeriesOptions {
    type?: typeof PinSeriesType;
    /**
     * 원 반지름.<br/>
     * 이 값을 기준으로 전체 너비와 높이가 결정된다.
     * 전체 높이가 이 값의 3배가 된다.
     *
     * @default 9
     */
    radius?: number;
    /**
     * 내부 원 크기.<br/>
     * {@page radius 외부 원 크기}에 대한 비율을 0 ~ 1 사이의 값으로 지정한다.
     *
     * @default 0
     */
    innerRadius?: number;
    /**
     * 내부 원 스타일셋.<br/>
     */
    innerStyle?: SVGStyleOrClass;
    /**
     * 내부 원에 표시할 label 설정 모델.<br/>
     * 문자열로 지정하면 label 텍스트를 지정한다.
     */
    innerLabel?: ChartTextOptions | string;
    /**
     * spark chart 표시 위치.<br/>
     *
     * @default top
     */
    position?: PointViewPosition;
    /**
     * 차트에 설정된 color scale 아이디 혹은 인덱스.<br/>
     * 명시적 null을 지정하면 컬러스케일에 연결되지 않는다.
     * 다른 잘못된 값이면 첫번째 스케일에 연결된다.
     */
    colorScale?: string | number | null;
}
declare const FigureSeriesType = "figure";
/**
 * Figure 시리즈.<br/>
 * {@page figure} 속성에 표시하려는 사용자 정의 도형의 svg path를 지정한다.
 * 또, 도형 안에 text를 표시할 수 있으며,
 * {@page style}에 padding을 지정해서 text 위치를 조정할 수 있다.
 *
 * @fiddle series/figure-series Figure 시리즈 데모
 *
 * @config chart.series[type=figure]
 */
interface FigureSeriesOptions extends ValueSeriesOptions {
    type?: typeof FigureSeriesType;
    figure?: string;
    /**
     * 내부 원에 표시할 텍스트.<br/>
     */
    rotation?: number;
    /**
     * 내부 원에 표시할 label 설정 모델.<br/>
     * 문자열로 지정하면 label 텍스트를 지정한다.
     */
    innerLabel?: IconedTextOptions | string;
    /**
     * 이미지 표시 위치.<br/>
     *
     * @default top
     */
    position?: PointViewPosition;
}
/**
 * Vector 머리 표시 종류.<br/>
 * @enum
 */
declare const _VectorHeadType: {
    /**
     * 머리를 따로 표시하지 않는다.
     *
     * @config
     */
    readonly NONE: "none";
    /**
     * 닫힌 화살표.<br/>
     *
     * @config
     */
    readonly CLOSED_ARROW: "closedArrow";
    /**
     * 열린 화살표.<br/>
     *
     * @config
     */
    readonly OPEN_ARROW: "openArrow";
};
/** @dummy */
type VectorHeadType = typeof _VectorHeadType[keyof typeof _VectorHeadType];
declare const VectorSeriesType = "vector";
/**
 * Vector 시리즈. <br/>
 *
 * @config chart.series[type=vector]
 */
interface VectorSeriesOptions extends MarkerSeriesOptions {
    type?: typeof VectorSeriesType;
    /**
     * @default 'openArrow'
     */
    headType?: VectorHeadType;
    /**
     * 데이터포인트 생성시 전달되는 정보에서 길이(length) 값을 지정하는 속성 이름.<br/>
     *
     * @default 'length'
     */
    lengthField?: string;
    /**
     * 데이터포인트 생성시 전달되는 정보에서 각도(angle) 값을 지정하는 속성 이름.<br/>
     *
     * @default 'angle'
     */
    angleField?: string;
    /**
     * 시작 각도.
     * 3시 위치가 0도.
     *
     * @default 0
     */
    startAngle?: number;
}
interface HitmapGridModeOptions {
    cellWidth?: number;
    cellHeight?: number;
    elliptic?: boolean;
}
interface HitmapPointModeOptions {
}
interface HitmapKdeModeOptions {
}
/**
 * @enum
 * 히트맵 표시 방식<br/>
 */
declare const _HitmapMode: {
    readonly GRID: "grid";
    readonly POINT: "point";
    readonly KDE: "kde";
};
/** @dummy */
type HitmapMode = typeof _HitmapMode[keyof typeof _HitmapMode];
declare const HeatmapSeriesType = "heatmap";
/**
 * 특정 위치를 중심으로 주변 영역을 칠하는 시리즈.<br/>
 * {@page op.SeriesOptions#type}은 'heatmap'이다.<br/>
 *
 * @config chart.series[type=heatmap]
 */
interface HeatmapSeriesOptions extends MarkerSeriesOptions {
    type?: typeof HeatmapSeriesType;
    /**
     * 히트맵 표시 방식.
     *
     * @default 'grid'
     */
    mode?: HitmapMode;
    grid?: HitmapGridModeOptions;
    point?: HitmapPointModeOptions;
    kde?: HitmapKdeModeOptions;
}
interface PanelSeriesSectionOptions extends ChartItemOptions {
    /**
     * @default '${value}'
     */
    text?: string;
    backgroundStyle?: SVGStyleOrClass | PointStyleCallback;
}
interface PanelSeriesHeaderOptions extends PanelSeriesSectionOptions {
    minSize?: PercentSize;
}
interface PanelSeriesBodyOptions extends PanelSeriesSectionOptions {
}
interface PanelSeriesLabelOptions extends DataPointLabelOptions {
    /**
     * @default false
     */
    visible?: boolean;
}
declare const PanelSeriesType = "panel";
/**
 * 타이틀과 데이터포인트 관련 내용을 표시하는 두 영역을 표시하는 시리즈.<br/>
 * {@page op.SeriesOptions#type}은 'panel'이다.<br/>
 *
 * @fiddle series/panel-series Panel 시리즈 데모
 *
 * @config chart.series[type=panel]
 */
interface PanelSeriesOptions extends ValueSeriesOptions {
    type?: typeof PanelSeriesType;
    /**
     * {@page header}와 본체를 배치하는 방향.<br />
     *
     * @default 'vertical'
     */
    orientation?: 'vertical' | 'horizontal';
    /**
     * {@page config.series.panel.pointLabel#visible} 기본값이 false이다.
     */
    pointLabel?: PanelSeriesLabelOptions;
    header?: PanelSeriesHeaderOptions;
    body?: PanelSeriesBodyOptions;
    divider?: ChartItemOptions;
    /**
     * 데이터포인트 view 전체 최소 너비.<br/>
     */
    minWidth?: number;
    /**
     * 데이터포인트 view 전체 최소 높이.<br/>
     */
    minHeight?: number;
    /**
     * 이미지 표시 위치.<br/>
     *
     * @default top
     */
    position?: PointViewPosition;
}
declare const TiledWebSeriesType = "tiledweb";
/**
 * @ignore
 *
 * 지도 해상도에 맞는 조각 그림들로 맵 배경을 채우는 시리즈.<br/>
 * {@page op.SeriesOptions#type}은 'tiledweb'이다.<br/>
 *
 * @config chart.series[type=tiledweb]
 */
interface TiledWebSeriesOptions extends SeriesOptions {
    type?: typeof TiledWebSeriesType;
}
/**
 * track 시리즈 outline 설정 옵션.<br/>
 */
interface TrackSeriesOutlineOptions extends ChartItemOptions {
}
declare const TrackSeriesType = "track";
/**
 * 출발 지점에서 도착 지점까지 복수 지점으로 이어지는 경로를 표시하는 시리즈.<br/>
 * {@page op.SeriesOptions#type}은 'track'이다.<br/>
 *
 * @config chart.series[type=track]
 */
interface TrackSeriesOptions extends SeriesOptions {
    type?: typeof TrackSeriesType;
    /**
     * 각 지점을 표시하는 모양.<br/>
     * 명시적으로 지정하지 않으면 기본 제공되는 shape 목록 중 하나로 자동 설정된다.<br/>
     */
    shape?: Shape;
    /**
     * 지점 표시 {@page shape 도형}의 반지름.<br/>
     *
     * @default 3 픽셀
     */
    radius?: number;
    /**
     * track 시리즈 outline 설정 옵션.<br/>
     */
    outline?: TrackSeriesOutlineOptions | boolean;
}
declare const BandSeriesType = "band";
/**
 * Band Series<br/>
 * {@page op.SeriesOptions#type}은 'band'이다.<br/>
 *
 * @config chart.series[type=band]
 */
interface BandSeriesOptions extends SeriesOptions {
    type?: typeof BandSeriesType;
}
declare const TableSeriesType = "table";
/**
 * Table Series<br/>
 * {@page op.SeriesOptions#type}은 'table'이다.<br/>
 *
 * @config chart.series[type=table]
 */
interface TableSeriesOptions extends SeriesOptions {
    type?: typeof TableSeriesType;
}
declare const SankeySeriesType = "sankey";
/**
 * Sankey Series<br/>
 * {@page op.SeriesOptions#type}은 'sankey'이다.<br/>
 *
 * @config chart.series[type=sankey]
 */
interface SankeySeriesOptions extends SeriesOptions {
    type?: typeof SankeySeriesType;
}
/**
 * Circle 게이지 내부 원 설정 모델.<br/>
 */
interface CircleGaugeFaceOptions extends ChartItemOptions {
    /**
     * @default false
     */
    visible?: boolean;
}
/**
 * Circle 게이지 내부 바탕 rim 설정 모델.<br/>
 */
interface CircleGaugeRimOptions extends ChartItemOptions {
}
/**
 * Circle 게이지 내부 값을 표시하는 rim 설정 모델.<br/>
 */
interface CircleGaugeValueRimOptions extends CircleGaugeRimOptions {
    /**
     * 테두리 굵기.
     * 픽셀 단위의 크기나, {@page CircularGaugeOptions.radius}와 {@page CircularGaugeOptions.innerRadius}로 결정된 원호 굵기에 대한 상대적 크기로 지정할 수 있다.
     * 예) 지정하지 않거나 '100%'로 지정하면 게이지 원호 굵기와 동일하게 표시된다.
     *
     */
    thickness?: PercentSize;
    /**
     * true면 원호 대신 선으로 표시한다.
     * 대시 표현이 가능해진다.
     *
     * @default false
     */
    stroked?: boolean;
}
interface CircleGaugeHandOptions extends ChartItemOptions {
    /**
     * @default false
     */
    visible?: boolean;
    /**
     * 게이지 중심쪽의 바늘 반지름.\
     * 픽셀 단위 크기나, 게이지 원호 반지름에 대한 상대 크기로 지정할 수 있다.
     *
     * @default 3
     */
    radius?: PercentSize;
    /**
     * 바늘 길이.\
     * 픽셀 단위 크기나, 게이지 원호 반지름에 대한 상대 크기로 지정할 수 있다.
     *
     * @default '100%'
     */
    length?: PercentSize;
    /**
     * 바늘 중심과 게이지 중심 사이의 간격.\
     * 픽셀 단위 크기나, 게이지 원호 반지름에 대한 상대 크기로 지정할 수 있다.
     *
     * @default 0
     */
    offset?: PercentSize;
}
interface CircleGaugePinOptions extends ChartItemOptions {
    /**
     * @default false
     */
    visible?: boolean;
    /**
     * 핀 반지름.
     * 픽셀 단위 크기나, 게이지 원호 반지름에 대한 상대 크기로 지정할 수 있다.
     *
     * @default 5
     */
    radius?: PercentSize;
}
interface CircleGaugeLabelOptions extends ChartTextOptions {
    /**
     * 게이지 중심 등, label이 표시될 기준 위치에서 x 방향으로 이동한 픽셀 크기.
     * 기준 위치는 게이지 종류에 따라 달라진다.
     *
     * @default 0
     */
    offsetX?: PercentSize;
    /**
     * 게이지 중심 등, label이 표시될 기준 위치에서 y 방향으로 이동한 픽셀 크기.
     * 기준 위치는 게이지 종류에 따라 달라진다.
     *
     * @default 0
     */
    offsetY?: PercentSize;
}
declare const CircleGaugeType = "gauge";
/**
 * 원행 게이지 설정 모델.<br/>
 * @config chart.series[type=gauge]
 */
interface CircleGaugeOptions extends ValueGaugeOptions {
    type?: typeof CircleGaugeType;
    /**
     * 게이지 내부 원 설정 모델.<br/>
     */
    face?: CircleGaugeFaceOptions | boolean;
    /**
     * 게이지 배경 원호 테두리 설정 모델.
     */
    rim?: CircleGaugeRimOptions;
    /**
     * 게이지의 값 원호 테두리 설정 모델.
     */
    valueRim?: CircleGaugeValueRimOptions | boolean;
    /**
     * 게이지 바늘 설정 모델.
     */
    hand?: CircleGaugeHandOptions;
    /**
     * 게이지 중앙에 표시되는 핀 설정 모델.
     */
    pin?: CircleGaugePinOptions;
    /**
     * 게이지 중앙에 표시되는 텍스트 설정 모델
     */
    gaugeLabel?: CircleGaugeLabelOptions;
    /**
     * 게이지 중심 수평 위치.
     * 픽셀 단위의 크기나, 데이터포인터 게이지 영역 전체 너비에 대한 상대적 크기로 지정할 수 있다.
     *
     * @default '50%'
     */
    centerX?: PercentSize;
    /**
     * 게이지 중심 수직 위치.
     * 픽셀 단위의 크기나,
     * {@page width}, {@page height}, {@page size} 등으로 지정한
     * 데이터포인터 게이지 영역 전체 높이에 대한 상대적 크기로 지정할 수 있다.
     *
     * @default '50%'
     */
    centerY?: PercentSize;
    /**
     * 게이지 원호의 반지름.
     * 픽셀 단위의 크기나,
     * {@page width}, {@page height}, {@page size} 등으로 지정한
     * 데이터포인터 게이지 영역 전체 크기(너비와 높이 중 작은 값)에 대한 상대적 크기로 지정할 수 있다.
     * '50%'로 지정하면 데이터포인터 게이지 영역의 width나 height중 작은 크기와 동일한 반지름으로 표시된다.
     *
     * @default '50%'
     */
    radius?: PercentSize;
    /**
     * 내부 원호의 반지름.
     * 픽셀 단위의 크기나,
     * {@page width}, {@page height}, {@page size} 등으로 지정한
     * {@page radius}에 대한 상대적 크기로 지정할 수 있다.
     * '100%'이면 게이지 원호의 반지름과 동일하다.
     *
     */
    innerRadius?: PercentSize;
    /**
     * 값을 나타내는 원호의 반지름.
     * 픽셀 단위의 크기나,
     * {@page radius}와 {@page innerRadius}로 결정된 기본 rim의 중점에 대한 상대적 크기로 지정할 수 있다.
     * 지정하지 않거나 '100%'이고 {@page valueRim}의 {@page valueRim.thickness 두께}가
     * 기본 rim의 두께와 동일하면 게이지 원호의 반지름과 동일하게 표시된다.
     */
    valueRadius?: PercentSize;
    /**
     * 게이지 원호 시작 각도.
     * 지정하지 않거나 잘못된 값이면 0으로 계산된다.
     * 0은 시계의 12시 위치다.
     *
     * @default 0
     */
    startAngle?: number;
    /**
     * 게이지 원호 전체 각도.
     * 0 ~ 360 사이의 값으로 지정해야 한다.
     * 범위를 벗어난 값은 범위 안으로 조정된다.
     * 지정하지 않거나 잘못된 값이면 360으로 계산된다.
     * 예) 180 이면 반 원호가 된다.
     *
     * @default 360
     */
    sweepAngle?: number;
    /**
     * true면 시계 방향으로 회전한다.
     *
     * @default true
     */
    clockwise?: boolean;
}
/**
 * Clock 게이지 테두리(rim) 설정 모델.<br/>
 */
interface ClockGaugeRimOptions extends ChartItemOptions {
    /**
     * rim 두께.
     * 픽셀 단위 크기나, 게이지 반지름 대한 상대 크기로 지정할 수 있다.
     *
     * @default 3 pixel
     */
    thickness?: PercentSize;
}
/**
 * Clock 게이지 시/분침(hand) 설정 모델.<br/>
 */
interface ClockGaugeHandOptions extends ChartItemOptions {
    /**
     * 픽셀 단위 바늘 두께.
     * 침 종류에 따라 기본값이 다르다.
     *
     * @default 2 pixel
     */
    thickness?: number;
    /**
     * 바늘 길이.
     * 픽셀 단위로 직접 지정하거나 시계 반지름에 대한 상대 크기로 지정할 수 있다.
     * 침 종류에 따라 기본값이 다르다.
     *
     * @default '55%', '80%', '90%'
     */
    length?: PercentSize;
    /**
     * 오후 시간일 때 표시 색상.<br/>
     */
    pmStyle?: SVGStyleOrClass;
}
/**
 * Clock 게이지 초침(hand) 설정 모델.<br/>
 */
interface ClockGaugeSecondHandOptions extends ClockGaugeHandOptions {
    /**
     * true면 초 이동 시 애니메이션 효과로 표시한다.
     *
     */
    animatable?: boolean;
    /**
     * {@page animatable}이 true일 때 애니메이션 기간.
     * 밀리초 단위로 지정한다.
     *
     */
    duration?: number;
}
/**
 * Clock 게이지 tick 설정 모델.<br/>
 */
interface ClockGaugeTickOptions extends ChartItemOptions {
    /**
     * tick 길이.<br/>
     *
     * @default 5 pixel
     */
    length?: number;
}
/**
 * Clock 게이지 tick 라벨 설정 모델.<br/>
 */
interface ClockGaugeTickLabelOptions extends ChartItemOptions {
    /**
     * 이 속성에 지정한 간격대로 시각 표시를 한다.<br/>
     * ex) 3이면 12,3,6,9시만 표시된다.
     *
     * @default 1
     */
    step?: number;
    /**
     * tick 라인과의 간격.<br/>
     *
     * @default 0
     */
    offset?: number;
}
/**
 * Clock 게이지 중심 pin 설정 모델.<br/>
 */
interface ClockGaugePinOptions extends ChartItemOptions {
    /**
     * 핀 반지름.<br/>
     *
     * @default 2 pixel
     */
    radius?: number;
}
/**
 * @enum
 */
declare const _ClockGaugeLabelPosition: {
    readonly TOP: "top";
    readonly BOTTOM: "bottom";
};
/** @dummy */
type ClockGaugeLabelPosition = typeof _ClockGaugeLabelPosition[keyof typeof _ClockGaugeLabelPosition];
/**
 * Clock 게이지 내부에 표시되는 라벨 설정 모델.<br/>
 */
interface ClockGaugeLabelOptions extends ChartTextOptions {
    /**
     * 라벨 표시 위치.
     *
     */
    position?: ClockGaugeLabelPosition;
}
declare const ClockGaugeType = "clock";
/**
 * 시계 게이지 설정 모델.<br/>
 * @config chart.series[type=clock]
 */
interface ClockGaugeOptions extends GaugeOptions {
    type?: typeof ClockGaugeType;
    /**
     * @default 90
     */
    size?: number;
    /**
     * 게이지 중심 수평 위치.
     * 픽셀 단위의 크기나,
     * {@page width}, {@page height}, {@page size} 등으로 지정한
     * 데이터포인터 게이지 영역 전체 너비에 대한 상대적 크기로 지정할 수 있다.
     *
     * @default '50%'
     */
    centerX?: PercentSize;
    /**
     * 게이지 중심 수직 위치.
     * 픽셀 단위의 크기나,
     * {@page width}, {@page height}, {@page size} 등으로 지정한
     * 데이터포인터 게이지 영역 전체 높이에 대한 상대적 크기로 지정할 수 있다.
     *
     * @default '50%'
     */
    centerY?: PercentSize;
    /**
     * 게이지 원호의 반지름.
     * 픽셀 단위의 크기나,
     * {@page width}, {@page height}, {@page size} 등으로 지정한
     * 데이터포인터 게이지 크기(너비와 높이 중 작은 값)에 대한 상대적 크기로 지정할 수 있다.
     * '50%'로 지정하면 데이터포인터 게이지의 width나 height중 작은 크기와 동일한 반지름으로 표시된다.
     *
     * @default '50%'
     */
    radius?: PercentSize;
    /**
     * 게이지 내부 원 설정 모델.<br/>
     */
    face?: ChartItemOptions | boolean;
    /**
     * rim 설정 모델.
     *
     */
    rim?: ClockGaugeRimOptions | boolean;
    /**
     * 시침 설정 모델.
     *
     */
    hourHand?: ClockGaugeHandOptions | boolean;
    /**
     * 분침 설정 모델.
     *
     */
    minuteHand?: ClockGaugeHandOptions | boolean;
    /**
     * 초침 설정 모델.
     */
    secondHand?: ClockGaugeSecondHandOptions | boolean;
    /**
     * main tick.
     */
    tick?: ClockGaugeTickOptions | boolean;
    /**
     * tick label
     */
    tickLabel?: ClockGaugeTickLabelOptions | boolean;
    /**
     * pin
     */
    pin?: ClockGaugePinOptions | boolean;
    /**
     * label
     *
     */
    gaugeLabel?: ClockGaugeLabelOptions | boolean;
    /**
     * [경도(lon), 위도(lat)] 위치에 해당하는 timezone offset을 분단위로 리턴하는 콜백.<br/>
     * 데이터포인트마다 timezone을 지정하는 대신 이 콜백으로 갈음할 수 있다.
     * 위/경도에 대한 정밀한 offset을 찾아주는 외부 라이브러리을 사용할 수 있다.
     */
    timezoneCallback?: (lon: number, lat: number) => number;
    /**
     * 밤 시간대 시작과 끝을 분단위로 지정한다.<br/>
     * 끝 시각은 포함되지 않는다.
     * 게이지 구성 요소들에 대해 밤시간대 스타일을 별도로 지정할 수 있다.
     */
    nightHours?: [number, number];
    /**
     * 시계 동작 여부.
     *
     * @default true
     */
    active?: boolean;
}
type SeriesOptionsType = MapSeriesOptions | FeatureSeriesOptions | PointSeriesOptions | PinSeriesOptions | FigureSeriesOptions | VectorSeriesOptions | RouteSeriesOptions | ImageSeriesOptions | BarSeriesOptions | PieSeriesOptions | WaffleSeriesOptions | LineSeriesOptions | BubbleSeriesOptions | HeatmapSeriesOptions | PanelSeriesOptions | TiledWebSeriesOptions | TrackSeriesOptions | SankeySeriesOptions | CircleGaugeOptions | ClockGaugeOptions;

/**
 * 시리즈 load animation 타입.
 * @enum
 */
declare const _SeriesLoadAnimation: {
    readonly DEFAULT: "default";
    readonly REVEAL: "reveal";
    readonly GROW: "grow";
    /**
     * 화면 밖에서 제자리로 돌아온다.
     */
    readonly SLIDEIN: "slidein";
    readonly SPREAD: "spread";
    readonly FADEIN: "fadein";
};
/** @dummy */
type SeriesLoadAnimation = typeof _SeriesLoadAnimation[keyof typeof _SeriesLoadAnimation];

/**
 * @enum
 */
declare const _LegendItemsAligns: {
    /**
     * 수평일 때 왼쪽, 수직일 때는 위쪽으로 몰아서 배치한다.
     */
    readonly START: "start";
    /**
     * center: 수평 혹은 수직의 중앙으로 몰아서 배치한다.
     */
    readonly CENTER: "center";
    /**
     * end: 수평일 때 오른쪽, 수직일 때는 아래쪽으로 몰아서 배치한다.
     */
    readonly END: "end";
};
/** @dummy */
type LegendItemsAlign = typeof _LegendItemsAligns[keyof typeof _LegendItemsAligns];
/**
 * @enum
 */
declare const _LegendLayout: {
    /**
     * legend가 맵차트 좌우에 배치되면 item들을 수직으로 배치하고,
     * legend가 맵차트 상하에 배치되면 item들을 수평으로 배치한다.
     */
    readonly AUTO: "auto";
    /**
     * item들을 수평으로 배치한다.
     */
    readonly HORIZONTAL: "horizontal";
    /**
     * item들을 수직으로 배치한다.
     */
    readonly VERTICAL: "vertical";
};
/** @dummy */
type LegendLayout = typeof _LegendLayout[keyof typeof _LegendLayout];
/**
 * 맵차트 시리즈 구성을 직관적으로 이해할 수 있도록 도와주는 범례 설정 모델.<br/>
 * visible 기본값이 undefined이고,
 * 따로 지정하지 않으면 시리즈가 둘 이상 포함돼야 legend가 표시된다.<br/>
 * {@link guide.legend 범례 개요} 페이지를 참조한다.
 *
 * @config chart.legend
 */
interface LegendOptions extends MapSimpleWidgetOptions {
    /**
     * 명시적으로 true로 설정되거나, 명시적 false가 아니면서 표시 항목 수가 1보다 클 때 표시된다.<br/>
     *
     * @default undefined
     */
    visible?: boolean;
    /**
     * true면 나중에 배치되는 시리즈가 먼저 표시된다.<br/>
     */
    reversed?: boolean;
    /**
     * item 배치 방향.<br/>
     *
     * @default 'auto'
     */
    layout?: LegendLayout;
    /**
     * legend 정렬 기준.<br/>
     */
    alignBase?: AlignBase;
    /**
     * legend 아이템들 사이의 간격.<br/>
     *
     * @default 8
     */
    itemGap?: number;
    /**
     * marker 표시 여부.<br/>
     *
     * @default true
     */
    markerVisible?: boolean;
    /**
     * marker 크기.<br/>
     *
     * @default 10 픽셀.
     */
    markerSize?: number;
    /**
     * marker와 text사이의 간격.<br/>
     *
     * @default 4
     */
    markerGap?: number;
    /**
     * 한 줄 당 표시할 최대 legend 항목 수.<br/>
     */
    itemsPerLine?: number;
    /**
     * 라인 사이의 간격.<br/>
     *
     * @default 0
     */
    lineGap?: number;
    /**
     * 수평 {@link layout 배치}일 때,
     * 최대 너비를 픽셀 단위의 크기 혹은 body 너비에 대한 상대 길이를 '%'로 지정한다.<br/>
     */
    maxWidth?: PercentSize;
    /**
     * 수직 {@link layout 배치}일 때,
     * 최대 높이를 픽셀 단위의 크기 혹은 body 높이에 대한 상대 길이를 '%'로 지정한다.<br/>
     */
    maxHeight?: PercentSize;
    /**
     * 한 라인의 item들이 배치되는 위치.<br/>
     *
     * @default 'center'
     */
    itemsAlign?: LegendItemsAlign;
    /**
     * 범례 항목의 텍스트에도 marker와 동일한 색상을 적용한다.<br/>
     */
    sameTextColor?: boolean;
    /**
     * 시리즈가 연결된 범례 아이템에 마우스가 올라가면 나머지 시리즈들을 반투명 처리해서 연결된 시리즈를 강조한다.<br/>
     *
     * @default true
     */
    seriesHovering?: boolean;
}

/**
 * @internal
 */
interface ILegendSource {
    visible: boolean;
    canHide(): boolean;
    legendMarker(doc: Document, size: number): RmElement;
    legendColor(): string;
    legendLabel(): string;
    setLegendMarkerStyle?(marker: RmElement): void;
}
/**
 * @internal
 */
declare class LegendItem extends ChartItem<ChartItemOptions> {
    legend: Legend;
    source: ILegendSource;
    static readonly MARKER_SIZE = 10;
    constructor(legend: Legend, source: ILegendSource);
    text(): string;
}
/**
 * 맵차트 시리즈 구성을 직관적으로 이해할 수 있도록 도와주는 범례 설정 모델.<br/>
 * visible 기본값이 undefined이고,
 * 따로 지정하지 않으면 시리즈가 둘 이상 포함돼야 legend가 표시된다.<br/>
 * {@link guide.legend 범례 개요} 페이지를 참조한다.
 *
 * @config chart.legend
 */
declare class Legend extends MapSimpleWidget<LegendOptions> {
    static defaults: LegendOptions;
    private _maxWidth;
    private _maxHeight;
    private _items;
    private _maxWidthDim;
    private _maxHeightDim;
    items(): LegendItem[];
    isEmpty(): boolean;
    isInner(): boolean;
    getLayout(): LegendLayout;
    getMaxWidth(domain: number): number;
    getMaxHeight(domain: number): number;
    _type(): string;
    isVertical(): boolean;
    isVisible(): boolean;
    protected _doInit(op: LegendOptions): void;
    protected _doApply(options: LegendOptions): void;
    protected _doPrepareRender(chart: IChart, op: LegendOptions): void;
}
declare class LegendCollection extends MapWidgetCollection<Legend> {
    protected _collectionProp(): string;
    protected _canEmpty(): boolean;
    protected _createWidget(chart: IChart): Legend;
    prepareRender(): void;
}

/**
 * https://map-projections.net/index.php
 */
interface MapProjection {
    second?: MapProjection;
    scroll: number;
    offset?: MapCoord;
    bounds?: {
        x1: number;
        y1: number;
        x2: number;
        y2: number;
    };
    isGlobe: boolean;
    lonElliptic: boolean;
    latElliptic: boolean;
    getYRange(latFrom: number, latTo: number): any;
    project(coord: MapCoord): MapCoord;
    backward(coord: MapCoord): MapCoord;
    clip(pts: MapCoord[]): MapCoord[];
    isVisible(coord: MapCoord): boolean;
    getVisible(coord: MapCoord): MapCoord;
    getClipBounds(lonInterval: number, latInterval: number): MapCoord[];
    isClipping(): boolean;
    getScrolledLon(lon: number): number;
}
declare class MapArea extends RmObject implements ISelectionSource {
    source?: AreaItem;
    inset?: MapInset;
    _insetChilds: number[];
    private _info;
    private _path;
    private _internal;
    private _external;
    h1: number;
    h2: number;
    v1: number;
    v2: number;
    x1: number;
    y1: number;
    x2: number;
    y2: number;
    mainLandBounds: {
        x1: number;
        x2: number;
        y1: number;
        y2: number;
    };
    center: MapCoord;
    visible: boolean;
    dummy: boolean;
    private _selected;
    constructor(source?: AreaItem, inset?: MapInset);
    setSelected(selected: boolean): void;
    id: string;
    name: string;
    get path(): string;
    get internal(): string;
    get external(): string;
    get selected(): boolean;
    displayText(): string;
    /**
     * event param으로 사용. MapView.onHoverArea 참조.
     */
    getInfo(): any;
    reset(): void;
    private $_readBound;
    private $_readInset;
    private $_toPath;
    readBounds(polys?: number[]): {
        h1: number;
        v1: number;
        h2: number;
        v2: number;
    };
    /**
     * 주어진 polygon들의 경계값을 계산한다.
     */
    readPolygonBounds(polygons: MapPolygon): {
        x1: number;
        x2: number;
        y1: number;
        y2: number;
    };
    readPath(prj: MapProjection, info: {
        internals: boolean;
        externals: boolean;
    }): string;
    private $_readInternal;
    private $_readExternal;
    getCenter(): MapCoord;
    _clone(): MapArea;
}
declare class MapBorder extends RmObject {
    source: BorderItem;
    private _path;
    constructor(source: BorderItem);
    get path(): string;
    reset(): void;
    readPath(prj: MapProjection): void;
}
interface IMapOwner {
    getProjection(second: boolean): MapProjection;
    projectionChanged(): void;
    mapChanged(map: MapModel): void;
}
/**
 * @private
 *
 * Map area 정보들을 포함하는 model.<br/>
 *
 * [Note] 'Map'이 javascript 예약어 수준이므로 부득기 'MapModel'로 名한다.
 */
declare class MapModel extends RmObject {
    owner: IChart & IMapOwner;
    source: MapSourceImpl | MapModel;
    private _second;
    private _areas;
    private _areaMap;
    private _borders;
    _insets: MapInset[];
    _useOffset: boolean | MapCoord;
    private _mapAreaFinder;
    x1: number;
    y1: number;
    x2: number;
    y2: number;
    cx: number;
    cy: number;
    h1: number;
    v1: number;
    h2: number;
    v2: number;
    sibling: MapModel;
    private _enabled;
    private _hiddenAreas;
    private _index;
    private _name;
    private _hiddens;
    private _world;
    constructor(owner: IChart & IMapOwner, source: MapSourceImpl | MapModel, index: number);
    get index(): number;
    get name(): string;
    get areaCount(): number;
    /**
     * hidden areas
     */
    get hiddenAreas(): string[];
    set hiddenAreas(value: string[]);
    get alignArctic(): any;
    get hasInternals(): boolean;
    get hasExternals(): boolean;
    get hasBorders(): MapBorderInfo[];
    get isWorld(): boolean;
    get(index: number): MapArea;
    areaOf(id: any): MapArea;
    getAreaMap(prop: string): {
        [key: string]: MapArea;
    };
    findByCoord(coord: MapCoord): MapArea | null;
    /**
     * area들의 path를 갱신한다.<br/>
     * 처음 load될 때, projection이 변경됐을 때 호출된다.
     */
    reset(): void;
    isVisible(area: string): boolean;
    insetAt(coord: MapCoord): MapInset;
    getBorder(name: string): MapBorder;
    /**
     * 투영전에 지도 bounds를 계산한다.
     * projection offset을 설정하려면 투영하기 전에 지도 경계값이 필요하다.
     * @TODO readPath 중복 로직 제거
     */
    private $_preflight;
    private $_resetAreas;
    private $_updateMainAreaBounds;
    private $_load;
    private $_copy;
    _prepareSecond(): this;
    _internalAreas(): MapArea[];
}

interface ITooltipContext {
    getTooltipText(series: ISeries, point: DataPoint): string;
    getTooltipParam(series: ISeries, point: DataPoint, param: string): string;
}
interface ITooltipOwner {
    chart: IChart;
    getTooltipContext(level: TooltipScope, series: ISeries, point: DataPoint): ITooltipContext;
}
/**
 */
declare class Tooltip extends ChartItem<TooltipOptions> {
    owner: ITooltipOwner;
    static defaults: TooltipOptions;
    private _numberFormat;
    private _timeFormat;
    _op: TooltipOptions;
    private _ctx;
    private _series;
    private _point;
    private _siblings;
    private _domain;
    constructor(owner: ITooltipOwner);
    protected _doInit(): void;
    setTarget(series: ISeries, point: DataPoint): ITooltipContext;
    getTextDomain(): IRichTextDomain;
    isFollowPointer(series: ISeries): boolean;
    protected _doSetSimple(op: TooltipOptions, source: any): boolean;
    protected _doApply(options: TooltipOptions): void;
}

/**
 * Series data point label options.
 */
declare class DataPointLabel<OP extends DataPointLabelOptions = DataPointLabelOptions> extends IconedText<OP> {
    static defaults: DataPointLabelOptions;
    private _point;
    _domain: IRichTextDomain;
    getValue(p: DataPoint, index: number): any;
    getTextDomain(p: DataPoint): IRichTextDomain;
    getText(value: any): string;
    isVisible(): boolean;
    getDefaultIconPos(): IconPosition;
    protected _doSetSimple(op: OP, src: any): boolean;
    protected _doPrepareRender(chart: IChart, op: OP): void;
}
declare class DataPointAnchorPoint<OP extends CalloutAnchorPointOptions = CalloutAnchorPointOptions> extends ChartItem<OP> {
    static defaults: CalloutAnchorPointOptions;
}
declare class DataPointCallout<OP extends DataPointCalloutOptions = DataPointCalloutOptions> extends ChartItem<OP> {
    series: Series;
    static defaults: DataPointCalloutOptions;
    constructor(series: Series);
    private _anchorPoint;
    protected _doInit(op: OP): void;
    get anchorPoint(): DataPointAnchorPoint<CalloutAnchorPointOptions>;
}
interface ISeries<T extends DataPoint = DataPoint> {
    options: SeriesOptions;
    chart: IChart;
    color?: Color;
    _idFielder: (src: any) => any;
    _nameFielder?: (src: any) => string;
    _valueFielder?: (src: any) => any;
    _tupleFielder?: (src: any) => any[];
    _lonFielder?: (src: any) => number;
    _latFielder?: (src: any) => number;
    _valuesFielder?: (src: any) => any[];
    _colorFielder: (src: any) => string;
    coordOfArea(id: string): MapCoord;
    getColorScale(): string | number;
    initPoints(source: any[]): T[];
    followTooltipPointer(): boolean;
    getValueRange?(): {
        min: number;
        max: number;
    };
    select(p: ISelectionSource): void;
    unselect(p: ISelectionSource): void;
}
/**
 * MapChart series base.
 */
declare abstract class Series<OP extends SeriesOptions = SeriesOptions> extends ChartItem<OP> implements ILegendSource, ITooltipContext {
    static readonly type: string;
    static readonly defaultTooltipText = "<b>${name}</b><br>${series}:<b> ${value}</b>";
    static register(...clses: typeof Series<SeriesOptions>[]): void;
    static defaults: SeriesOptions;
    static getPointTooltipParam(series: Series, point: DataPoint, param: string): any;
    private _data;
    private _dataPath;
    private _name;
    index: number;
    seriesIndex: number;
    protected _map: MapModel;
    protected _mapChanged: boolean;
    protected _points: DataPointCollection;
    private _pointLabel;
    private _callout;
    _optionsDirty: boolean;
    _dataSourceDirty: boolean;
    _dataDirty: boolean;
    _zindexDirty: boolean;
    _maxZindex: number;
    _runPoints: DataPoint[];
    _visPoints: DataPoint[];
    _idFielder: (src: any) => any;
    _lonFielder: (src: any) => any;
    _latFielder: (src: any) => any;
    _nameFielder: (src: any) => string;
    _valueFielder: (src: any) => any;
    _colorFielder: (src: any) => string;
    _runColor: string;
    _calcedColor: string;
    protected _legend: object;
    private _legendMarker;
    private _pointLabelCallback;
    private _pointLabelVisCallback;
    private _pointArgs;
    private _pointListArgs;
    private _argsPoint;
    private _loaded;
    ani: RmAnimation;
    constructor(chart: IChart);
    protected _doInit(op: SeriesOptions): void;
    protected _createLabel(chart: IChart): DataPointLabel;
    getTooltipText(series: ISeries, point: DataPoint): string;
    getTooltipParam(series: ISeries, point: DataPoint, param: string): any;
    canHide(): boolean;
    legendMarker(doc: Document, size: number): RmElement;
    legendColor(): string;
    legendLabel(): string;
    _type(): string;
    /**
     * 시리즈 이름.<br/>
     * 시리즈 생성시 지정된 후 변경할 수 없다.
     * 맵차트의 다른 구성 요소에서 이 시리즈를 참조할 때 사용되며,
     * 레전드나 툴팁에서 시리즈를 나타내는 텍스트로도 사용된다.
     *
     * @config
     */
    get name(): string;
    /**
     * 데이터포인트 label 설정 모델.
     *
     * @config
     */
    get pointLabel(): DataPointLabel<DataPointLabelOptions>;
    get map(): MapModel;
    get callout(): DataPointCallout<DataPointCalloutOptions>;
    displayName(): string;
    /**
     * 데이터포인터들을 생성하는 데 사용되는 값 목록.
     *
     * @config
     */
    get data(): any;
    private $_setData;
    get pointCount(): number;
    followTooltipPointer(): boolean;
    isEmpty(visibleOnly: boolean): boolean;
    isDataSeries(): boolean;
    getDetailed(): Series;
    getValueRange(): {
        min: number;
        max: number;
    };
    needMapScale(): boolean;
    contains(p: DataPoint): boolean;
    initPoints(source: any[]): DataPoint[];
    getPoint(index: number): DataPoint;
    find(condition: {
        [key: string]: any;
    }): DataPoint;
    findAll(condition: {
        [key: string]: any;
    }): DataPoint[];
    getPointText(p: DataPoint, index: number, label: any): string;
    getPointArgs(p: DataPoint): DataPointArgs;
    getPointStyle(p: DataPoint): any;
    getPointLabelStyle(p: DataPoint): any;
    getRangedColor(p: DataPoint): string;
    isPointLabelsVisible(): boolean;
    isPointLabelVisible(p: DataPoint): boolean;
    pointLabelCount(): number;
    getLabeledPoints(): DataPoint[];
    getCallout(): DataPointCallout<DataPointCalloutOptions>;
    isPointCalloutVisible(): boolean;
    getLegendSources(legend: object, list: ILegendSource[]): void;
    getLabelOff(): number;
    protected _defLabelOff(): number;
    setCalcedColor(cs: CSSStyleDeclaration, prop: string): void;
    coordOfArea(id: string): MapCoord;
    pointById(id: string): DataPoint;
    canAddAnimation(): boolean;
    canRemoveAnimation(): boolean;
    _dataLoaded: boolean;
    private $_dataPointsChanged;
    loadData(data: any, animate?: boolean): void;
    addPoint(source: any, index?: number, duration?: number): DataPoint;
    addPointList(source: any[], index?: number, duration?: number): DataPoint[];
    removePoint(p: DataPoint | number | string, duration?: number): void;
    private $_points;
    private $_remove;
    removePointList(points: (DataPoint | number | string)[], duration?: number): DataPoint[];
    clearPoints(duration?: number): void;
    removeFirst(duration?: number): void;
    removeLast(duration?: number): void;
    updatePoint(p: DataPoint | string | number, props: any, duration?: number): boolean;
    updatePointList(points: (DataPoint | string | number)[], props: any[], duration?: number): void;
    getPointLabels(): DataPointLabel[];
    getColorScale(): string | number;
    setOptionsDirty(value: boolean): Series;
    pointClicked(p: DataPoint): boolean;
    show(force?: boolean, animate?: boolean): void;
    hide(animate?: boolean): void;
    getCalloutShape(p: DataPoint): string;
    /**
     * @private
     * 사용자가 마우스 클릭 등으로 데이터포인트(들)을 선택할 수 있는 시리즈인 지 여부.<br/>
     */
    canSelect(): boolean;
    select(p: ISelectionSource): void;
    unselect(p: ISelectionSource): void;
    private $_bringToFront;
    /**
     * rendering lock.<br/>
     */
    lock(): void;
    unlock(): void;
    _setLegend(legend: object): void;
    protected _doApply(options: SeriesOptions): void;
    _prepareRender(): void;
    protected _doAfterRender(): void;
    protected _doMapChanged(): void;
    protected _doPrepareRender(chart: IChart, op: OP): void;
    protected abstract _createPoint(source: any): DataPoint;
    protected $_addPoint(source: any, i: number): DataPoint;
    protected _createFielder(f: any): (v: any) => any;
    protected _createFielders(op: SeriesOptions): void;
    protected _createLegendMarker(doc: Document, size: number): RmElement;
    protected _defaultLoadAnimation(): SeriesLoadAnimation;
    _load(source: any): OP;
    protected _doLoadData(src: any): any[];
    private $_loadPoints;
    protected _doLoadPoints(src: any): void;
    private $_createPointArgs;
    protected _getPointArgs(args: DataPointArgs, p: DataPoint): DataPointArgs;
    protected _getPointListArgs(points: DataPoint[]): DataPointListkArgs;
    protected _preparePointArgs(args: DataPointArgs): void;
    protected _calcMinMax(pts: DataPoint[]): {
        min: number;
        max: number;
    };
}
declare abstract class ValuePoint extends DataPoint {
    value: number;
    protected _readObject(series: ISeries, v: any): void;
    protected _assignTo(proxy: any): any;
    getValue(): number;
    getBaseValue(): number;
}
/**
 */
declare abstract class ValueSeries<OP extends ValueSeriesOptions = ValueSeriesOptions> extends Series<OP> {
    static defaults: ValueSeriesOptions;
    protected _createFielders(op: ValueSeriesOptions): void;
    protected _createValueFielder(op: ValueSeriesOptions): (v: any) => any;
}
declare abstract class MarkerSeriesPoint extends ValuePoint {
}
/**
 */
declare abstract class MarkerSeries<OP extends MarkerSeriesOptions = MarkerSeriesOptions> extends ValueSeries<OP> {
    static defaults: MarkerSeriesOptions;
}
declare class SparkSeriesPoint extends ValuePoint {
    values: number[];
    _sum: number;
    position: PointViewPosition;
    getPoints(values: number[], minimum: number, maximum: number): number[];
    getBasePoint(minimum: number, maximum: number, base: number): number;
    getSum(): number;
    protected _readObject(series: ISeries, v: any): void;
    getParam(param: string): any;
}
declare class SparkCategoryImpl implements ILegendSource {
    name: string;
    color: string;
    constructor(name: string, color: string);
    visible: boolean;
    canHide(): boolean;
    legendMarker(doc: Document, size: number): RmElement;
    legendColor(): string;
    legendLabel(): string;
}
/**
 * 복수 개의 관련된 값들을 표시하는 시리즈 기반 클래스.<br/>
 */
declare abstract class SparkSeries<OP extends SparkSeriesOptions = SparkSeriesOptions> extends ValueSeries<OP> {
    static defaults: SparkSeriesOptions;
    _categories: SparkCategoryImpl[];
    getMinMax(points: SparkSeriesPoint[]): {
        min: number;
        max: number;
    };
    protected _doApply(options: SparkSeriesOptions): void;
    protected _createValueFielder(op: SparkSeriesOptions): (v: any) => any;
    getLegendSources(legend: object, list: ILegendSource[]): void;
    private $_parseCategories;
}
declare abstract class OrthogonalSparkSeriesPoint extends SparkSeriesPoint {
}
/**
 * 직교 좌표 spark 시리즌 기반 모델.<br/>
 */
declare abstract class OrthogonalSparkSeries<OP extends OrthogonalSparkSeriesOptions = OrthogonalSparkSeriesOptions> extends SparkSeries<OP> {
    static readonly DEF_WIDTH = 80;
    static readonly DEF_HEIGHT = 50;
    static defaults: OrthogonalSparkSeriesOptions;
    private _baseLine;
    _width: number;
    _height: number;
    private _paddingDim;
    _minValue: number;
    _maxValue: number;
    _pointDomain: boolean;
    protected _doInit(op: OrthogonalSparkSeriesOptions): void;
    get baseLine(): ChartItem<ChartItemOptions>;
    getPointExtents(values: number[], seriesExt: {
        min: number;
        max: number;
    }): {
        min: number;
        max: number;
        base: number;
    };
    getPadding(domain: number): number;
    protected _doApply(options: OrthogonalSparkSeriesOptions): void;
}
declare abstract class GaugePoint extends ValuePoint {
    position: PointViewPosition;
}
declare abstract class Gauge<OP extends GaugeOptions = GaugeOptions> extends ValueSeries<OP> {
    static readonly DEF_SIZE = 60;
    static defaults: GaugeOptions;
    _width: number;
    _height: number;
    protected _doApply(op: GaugeOptions): void;
}
declare abstract class ValueGauge<OP extends ValueGaugeOptions = ValueGaugeOptions> extends Gauge<OP> {
    static defaults: ValueGaugeOptions;
    private _minValue;
    private _maxValue;
    private _min;
    private _max;
    getValueRate(value: number): number;
    protected _doApply(op: ValueGaugeOptions): void;
    protected _doPrepareRender(chart: IChart): void;
}

interface ISelectionSource {
    setSelected(selected: boolean): void;
}
interface ISelectionOwner {
    selectionChanged(selection: MapSelection): void;
    selectionItemAdded(item: ISelectionSource): void;
    selectionItemRemoved(item: ISelectionSource): void;
    selectionCleared(): void;
}
declare class MapSelection extends RmObject {
    private _owner;
    private _items;
    constructor(owner: ISelectionOwner);
    get count(): number;
    get first(): ISelectionSource;
    get last(): ISelectionSource;
    get(index: number): ISelectionSource;
    contains(source: ISelectionSource): boolean;
    clear(): boolean;
    add(series: ISeries, source: ISelectionSource, clear?: boolean): boolean;
    remove(series: ISeries, source: ISelectionSource): boolean;
    toggle(series: ISeries, source: ISelectionSource): boolean;
    protected _changed(): void;
}

/**
 * Series data point base.<br/>
 */
declare class DataPoint implements ISelectionSource {
    source?: any;
    /**
     * 데이터포인트 표시 위치.<br/>
     */
    coord: MapCoord;
    /**
     * @private
     *
     * 인셋에 포함된 경우 인셋의 offset.<br/>
     */
    inset: MapCoord;
    /**
     * 본래 위치와 다른 곳에 데이터포인트 정보를 표시할 때,
     * 해당하는 위치까지의 경로를 표시한다.<br/>
     *
     * 1. [[lon, lat], [lon, lat], ...]
     * 2. [lon, lat]
     * 3. "lon lat, lon lat, ..."
     */
    callout: MapCoord[];
    /**
     * 본래 위치와 다른 곳에 데이터포인트 정보를 표시할 때,
     * 해당하는 위치까지의 경로를 상대적 변위로 표시한다.<br/>
     * callout이 지정되면 이 값은 무시된다.
     */
    offset: MapCoord[];
    readonly pid: number;
    id: string;
    index: number;
    isNull: boolean;
    name: string;
    color: string;
    className: string;
    visible: boolean;
    xPos: number;
    yPos: number;
    _runColor: string;
    _zindex: number;
    private _selected;
    _prev: any;
    _vr: number;
    constructor(source?: any);
    setSelected(selected: boolean): void;
    isSelected(): boolean;
    get lon(): number;
    get lat(): number;
    ariaHint(): string;
    labelCount(): number;
    copy(): any;
    proxy(): any;
    assignTo(proxy?: any): any;
    getProp(fld: string | number): any;
    parse(series: ISeries): void;
    protected _doInitValues(): void;
    getValue(): number;
    getLabel(index: number): any;
    vrate(): number;
    _setVrate(vr: number): void;
    _aniRate(): number;
    updateValues(series: ISeries, values: any): any;
    protected _valuesChanged(prev: any): boolean;
    getBaseValue(): number;
    getParam(param: string): any;
    getCallout(coord: MapCoord): MapCoord[];
    _setState(state: string): void;
    _isAdding(): boolean;
    _isUpdating(): boolean;
    _isDeleting(): boolean;
    _isStatic(): boolean;
    protected _assignTo(proxy: any): any;
    protected _readArray(series: ISeries, v: any[]): void;
    protected _readObject(series: ISeries, v: any): void;
    private $_parseCallout;
    protected _readSingle(v: any): void;
}
declare class DataPointCollection {
    protected _owner: ISeries<DataPoint>;
    private _points;
    constructor(owner: ISeries<DataPoint>);
    get count(): number;
    get first(): DataPoint;
    get last(): DataPoint;
    isEmpty(): boolean;
    getPoints(): DataPoint[];
    get(index: number): DataPoint;
    pointById(id: string): DataPoint;
    contains(p: DataPoint): boolean;
    load(source: any): void;
    clear(): void;
    insert(index: number, p: DataPoint): void;
    insertAll(index: number, points: DataPoint[]): void;
    add(p: DataPoint): void;
    addAll(points: DataPoint[]): void;
    remove(p: DataPoint): boolean;
    removeAll(points: DataPoint[]): number;
    sort(callback: (p1: DataPoint, p2: DataPoint) => number): void;
    forEach(callback: (p: DataPoint, i?: number) => any): void;
    find(condition: {
        [key: string]: any;
    }): DataPoint;
    findAll(condition: {
        [key: string]: any;
    }): DataPoint[];
}

type AssetTypes = 'colors' | 'images' | 'lineargradient' | 'radialgradient';
interface AssetItemOptions {
    type?: AssetTypes;
    /**
     * 에셋 id.<br/>
     * 시리즈나 축에서 이 에셋 항목을 참조할 때 사용하는 키로서
     * 맵차트 내에서 유일한 문자열로 반드시 지정해야 한다.
     *
     */
    id: string;
}
interface GradientOptions extends AssetItemOptions {
    /**
     * 색을 배열로 지정하거나,
     * 끝 값을 'white'로 전제하고 시작 색 값 하나만 지정할 수 있다.
     *
     */
    color: string[] | string;
    /**
     * 0에서 1사이의 불투명도.<br/>
     * 지정하지 않거나 타당한 값이 아니면 1(완전 불투명)로 적용한다.
     * 또는, 불투명도를 배열로 지정할 수도 있다.
     *
     */
    opacity?: number[] | number;
}
/**
 * 시작점과 끝점 사이에 색상이 서서히 변경되는 효과를 표시한다.<br/>
 * 채우기 색이나 선 색으로 사용될 수 있다.
 *
 * @config chart.asset[type=lineargradient]
 */
interface LinearGradientOptions extends GradientOptions {
    /**
     *
     * @default 'down'
     */
    dir?: 'down' | 'up' | 'right' | 'left';
}
/**
 * 원 중심에서 바깥으로 색상이 변해가는 효과를 표시한다.<br/>
 * 채우기 색이나 선 색으로 사용될 수 있다.
 *
 * @config chart.asset[type=radialgradient]
 */
interface RadialGradientOptions extends GradientOptions {
    /**
     * gradient가 끝나는 원의 x 좌표.
     */
    cx?: number | string;
    /**
     * gradient가 끝나는 원의 y 좌표.
     */
    cy?: number | string;
    /**
     * gradient가 끝나는 원의 반지름.
     */
    r?: number | string;
}
/**
 * 도형 패턴을 지정해서 채우기(fill) 색상 대신 사용할 수 있다.<br/>
 */
interface PatternOptions extends AssetItemOptions {
    /**
     * 문자열로 지정하면 path 'd', 숫자로 지정하면 stock pattern index.
     */
    pattern: string | number;
    /**
     * 지정하지 않으면 {@link height}나 20 pixels.
     */
    width?: number;
    /**
     * 지정하지 않으면 {@link widths}나 20 pixels.
     */
    height?: number;
    style?: SVGStyles;
    backgroundStyle?: SVGStyles;
    transform?: string;
}
interface Image {
    name?: string;
    url: string;
}
interface ImageListOptions extends AssetItemOptions {
    rootUrl?: string;
    width?: number;
    height?: number;
    images: (Image | string)[];
}
/**
 * normal: 순서대로 가져오고 끝에 도달하면 처음으로 돌아간다.
 *
 * shuffle: 첫 색상을 가져오기 전 항목들을 섞는다.
 *
 * random: 임의 위치의 색상을 가져온다.
 *
 */
type PaletteMode = 'normal' | 'shuffle' | 'random';
/**
 * 색상 목록을 미리 지정하고 {@link config.base.series#pointcolors} 등에 적용할 수 있다.<br/>
 * 목록에서 색상을 꺼내오는 방식은 {@link mode} 속성으로 지정한다.
 *
 * @config chart.asset[type=colors]
 */
interface ColorListOptions extends AssetItemOptions {
    /**
     * 색상 목록에서 색을 꺼내오는 방식.
     *
     * @default PaletteMode.NORMAL
     */
    mode?: PaletteMode;
    /**
     * 색상 목록.
     *
     */
    colors?: string[];
}
type AssetOptionsType = LinearGradientOptions | RadialGradientOptions | PatternOptions | ColorListOptions | ImageListOptions;

declare abstract class AssetItem<T extends AssetItemOptions> {
    source: T;
    constructor(source: T);
    hasDef(): boolean;
    abstract getElement(doc: Document, source: T): Element;
}
interface IAssetOwner {
    addDef(element: Element): void;
    removeDef(element: string): void;
}
/**
 * 종류 구분없이 id는 유일하게 반드시 지정해야 한다.
 */
declare class AssetCollection {
    private _items;
    private _selectedFill;
    private _map;
    load(source: any): AssetOptionsType | AssetOptionsType[];
    register(doc: Document, owner: IAssetOwner): void;
    unregister(owner: IAssetOwner): void;
    get(id: string): AssetItem<AssetItemOptions>;
    updateOptions(source: any, render: boolean): void;
    private $_loadItem;
}

/**
 * 맵차트 제작 주체 등을 표시하는 영역에 대한 모델.<br/>
 * 기본적으로 맵차트 오른쪽 아래에 표시되지만, {@link align}, {@link verticalAlign} 등으로 위치를 지정할 수 있다.
 * {@link url}을 설정하면 마우스 클릭 시 새창을 열고 해당 위치로 이동시킨다.
 */
declare class Credits extends ChartItem<CreditsOptions> {
    static defaults: CreditsOptions;
    protected _doSetSimple(op: CreditsOptions, src: any): boolean;
}

/**
 * 컬러, 버블 스케일 등의 스케일 기반 설정.<br/>
 */
interface ScaleOptions extends MapSimpleWidgetOptions {
    /**
     * {@page minValue}나 {@page maxValue}를 지정하지 않는 경우 범위 기준값을 계산할 시리즈의 이름이나 index.<br />
     * 이 속성을 지정하지 않으면 첫 번째 map 시리즈의 범위를 계산한다.
     */
    series?: string | number;
}
/**
 * @enum
 */
declare const _ColorScaleLayout: {
    /**
     * color scale이 맵차트 좌우에 배치되면 item들을 수직으로 배치하고,
     * color scale이 맵차트 상하에 배치되면 item들을 수평으로 배치한다.
     */
    readonly AUTO: "auto";
    /**
     * item들을 수평으로 배치한다.
     */
    readonly HORIZONTAL: "horizontal";
    /**
     * item들을 수직으로 배치한다.
     */
    readonly VERTICAL: "vertical";
};
/** @dummy */
type ColorScaleLayout = typeof _ColorScaleLayout[keyof typeof _ColorScaleLayout];
/**
 * @enum
 */
declare const ColorScaleDisplays: {
    /**
     * scale bar로 표시한다.<br/>
     */
    readonly SCALE: "scale";
    /**
     * legend 항목들로 표시한다.<br/>
     */
    readonly LEGEND: "legend";
    /**
     * scale bar와 legend에 동시 표시한다.<br/>
     */
    readonly BOTH: "both";
};
/** @dummy */
type ColorScaleDisplay = typeof ColorScaleDisplays[keyof typeof ColorScaleDisplays];
/**
 * 현재 값 위치를 표시하는 color scale 마커 옵션.<br/>
 */
interface ColorScaleMarkerOptions extends ChartItemOptions {
    size?: number;
    label?: ChartTextOptions;
}
/**
 * color scale 내부에서 step을 구분하는 라인 옵션<br/>
 */
interface ColorScaleStepLineOptions extends ChartItemOptions {
}
/**
 * 색상 스텝을 구분하는 color scale 틱 라인 옵션.<br/>
 */
interface ColorScaleTickLineOptions extends ChartItemOptions {
    /**
     * @default 6
     */
    length?: number;
}
/**
 * 색상 스텝을 구분하는 color scale 틱 라벨 옵션.<br/>
 */
interface ColorScaleTickLabelOptions extends IconedTextOptions {
    /**
     * 라벨 표시 위치 및 내용.<br/>
     * - 'between' - step 경게에 맞춰 그 위치의 값을 표시한다.
     * - 'step' - step의 중간에 맟춰 해당 stop의 범위를 표시한다.
     *
     * @default 'between'
     */
    position?: 'between' | 'step';
    /**
     * @default 4
     */
    offset?: number;
    /**
     * 첫번째 label의 텍스트.<br/>
     * 빈 문자열이나 null로 지정하면 label이 표시되지 않는다.
     */
    startText?: string;
    /**
     * 마지막 label의 텍스트.<br/>
     * 빈 문자열이나 null로 지정하면 label이 표시되지 않는다.
     */
    endText?: string;
}
/**
 * 색상 스텝을 구분하는 color scale 틱 라인 및 라벨 옵션.<br/>
 * marker 반대편에 표시된다.
 */
interface ColorScaleTickOptions extends ChartItemOptions {
    /**
     * tick 선 설정 옵션.<br/>
     */
    line?: ColorScaleTickLineOptions;
    /**
     * tick 라벨 설정 옵션.<br/>
     */
    label?: ColorScaleTickLabelOptions;
    /**
     * 명시적 false로 지정하면 최소값 tick 선과 라벨을 표시하지 않는다.<br/>
     *
     * @default undefined
     */
    minVisible?: boolean;
    /**
     * 명시적 false로 지정하면 최대값 tick 선과 라벨을 표시하지 않는다.<br/>
     *
     * @default undefined
     */
    maxVisible?: boolean;
}
interface ColorScaleStep {
    /**
     * 첫 step인 경우 설정하지 않으면 {@page steps.minValue}로 지정된다.<br />
     * 숫자나 '%'로 끝나는 백분율로 지정할 수 있다.
     */
    from?: number | string;
    /**
     * 마지막 step인 경우 설정하지 않으면 {@page steps.maxValue}로 지정된다.<br />
     * 숫자나 '%'로 끝나는 백분율로 지정할 수 있다.
     */
    to?: number | string;
    /**
     * 구간 label.<br/>
     */
    label?: string;
    /**
     * 구간 색상.<br/>
     * {@page fromColor}를 지정하면 이 step에 포함된 영역의 값에 따라 두 색상 사이의 중간 색상으로 표시된다.<br/>
     * '%'로 끝나는 백분율을 지정하면 {@page minColor}와 {@page maxColor} 사이의 중간 색상으로 설정할 수 있다.
     */
    color: string;
    /**
     * 이 속성 값이 지정되면 {@page toColor}나 {@page color} 값 사이의 색상으로 데이터포인트의 색상이 결정된다.<br/>
     * '%'로 끝나는 백분율을 지정하면 {@page minColor}와 {@page maxColor} 사이의 중간 색상으로 설정할 수 있다.
     */
    fromColor?: string;
    /**
     * {@page fromColor}가 지정된 경우 이 속성 값이 {@page color}보다 우선적으로 사용된다.
     * '%'로 끝나는 백분율을 지정하면 {@page minColor}와 {@page maxColor} 사이의 중간 색상으로 설정할 수 있다.
     */
    toColor?: string;
}
interface ColorStop {
    stop: number;
    color: string;
}
interface ColorScaleNullOptions extends ChartItemOptions {
    /**
     * @default false
     */
    visible?: boolean;
    /**
     * 기본 step들과 사이의 간격.<br/>
     *
     * @default 0
     */
    gap?: number;
    /**
     * 지정되지 않은 값 표시 색.<br/>
     *
     * @default 'white'
     */
    color?: string;
    /**
     * @default 'No Data'
     */
    label?: string;
}
/**
 * 맵 area 등에 표시되는 색상 범위를 표시한다.<br/>
 *
 * @config chart.colorScale
 */
interface ColorScaleOptions extends ScaleOptions {
    /**
     * 현재 선택된 데이터포인트의 색상의 위치를 표시하는 marker 설정 옵션.<br/>
     */
    marker?: ColorScaleMarkerOptions;
    /**
     * Step 상자 옆에 표시되는 label 설정 옵션.<br/>
     */
    tick?: ColorScaleTickOptions;
    /**
     * Step 상자와 label 사이의 연결선 설정 옵션.<br/>
     */
    stepLine?: ColorScaleStepLineOptions;
    /**
     * 지정되지 않은 값들을 표시하는 데 적용되는 색상을 지시하는 별도의 step 설정 옵션.<br/>
     */
    nullStep?: ColorScaleNullOptions;
    /**
     * true로 지정하면 scale view 대신, color step들을 legend view의 항목들로 표시한다.<br/>
     */
    display?: ColorScaleDisplay;
    /**
     * Step 상자들과 tick lable들의 위치를 바꿔 표시한다.<br/>
     * true면 label이 step 상자 왼쪽이나 위쪽에 표시된다.
     */
    reversed?: boolean;
    /**
     * step의 방향을 바꿔 표시한다.<br/>
     * true면 오른쪽에 왼쪽으로, 또는 위쪽에서 아래쪽으로 최소에서 최대값으로 흐르게 표시한다.
     */
    inverted?: boolean;
    /**
     * 기준 최소값.<br/>
     * 이 값을 지정하지 않고 {@page series}가 설정되면 그 시리즈의 최소값을 사용한다.<br/>
     */
    minValue?: number;
    /**
     * 기준 최대값.<br/>
     * 이 값을 지정하지 않고 {@page series}가 설정되면 그 시리즈의 최대값을 사용한다.<br/>
     */
    maxValue?: number;
    /**
     * {@page minValue}, {@page maxValue}로 지정한 값이나, 계산된 최소/최대 값을 기준으로
     * {@page stepCount} 속성 등에 따라 정수 배수로 분리한다.<br/>
     * {@page steps}가 지정되면 이 속성은 무시된다.
     *
     * @default undefined
     */
    integralSteps?: boolean;
    /**
     * 1 이상 지정한 값으로 scale을 구분해서 표시한다.<br/>
     * {@page steps}가 지정되면 이 속성은 무시된다.
     */
    stepCount?: number;
    /**
     * 명시적으로 색상 스텝들을 지정한다.<br/>
     * 이 속성이 지정되면 {@page stepMode}를 포함, step 관련된 속성들이 모두 무시된다.
     * 가능한 연속된 값 배치로 지정해야 한다.
     * 겹치는 경우 나중에 지정된 step이 우선하고,
     * 어느 step에도 포함되지 않는 값일 경우 series 기본 색상이 적용된다.
     */
    steps?: ColorScaleStep[];
    /**
     * steps가 지정되지 않고, 2 이상의 값으로 지정하면,
     * 데이터포인트 값들을 이 속성값을 base로 하는 log 값으로 변환해서 표시한다.<br/>
     *
     * @default undefined
     */
    logBase?: number;
    /**
     * 최소값 쪽 color.<br/>
     * {@page colors}를 지정하면 이 속성은 무시된다.
     * 또, {@page steps}가 지정되면 각 step에 지정된 색 범위가 우선 적용된다.
     * 지정하지 않으면 'white'로 적용된다.
     *
     * @default '#fff'
     */
    minColor?: string;
    /**
     * 최대값 쪽 color.<br/>
     * {@page colors}를 지정하면 이 속성은 무시된다.
     * 또, {@page steps}가 지정되면 각 step에 지정된 색 범위가 우선 적용된다.
     * 지정하지 않으면 'black'로 적용된다.
     */
    maxColor?: string;
    /**
     * @ignore 미구현
     * 단계별 색상 분포를 지정한다.<br/>
     * 둘 이상의 색상으로 이 속성이 지정되면 {@page minColor}, {@page maxColor} 속성은 무시된다.
     * 또, {@page steps}가 지정되면 각 step에 지정된 색 범위가 우선 적용된다.
     */
    colors?: ColorStop[];
    /**
     */
    layout?: ColorScaleLayout;
    /**
     * scale bar 폭.<br/>
     * 수평으로 표시될 때 bar의 높이, 수직일 때는 너비가 된다.
     *
     * @default 12
     */
    barWidth?: number;
    /**
     * bar 길이.<br/>
     * 수평으로 표시될 때 bar의 너비, 수직일 때는 높이가 된다.
     * 숫자로 지정하면 pixel 수, '%'로 지정하면 scale이 표시될 수 있는 최대 크기에 대한 백분율로 설정된다.
     */
    barLength?: PercentSize;
}
/**
 * bubble 스텝을 구분하는 bubble scale 틱 라인 옵션.<br/>
 */
interface BubbleScaleTickLineOptions extends ChartItemOptions {
    /**
     * 가장 큰 원에서 tick label 표시까지의 간격.<br/>
     * {@page visible}이 false이면 무시된다.
     *
     * @default 10
     */
    length?: number;
}
/**
 * bubble 스텝을 구분하는 bubble scale 틱 라벨 옵션.<br/>
 */
interface BubbleScaleTickLabelOptions extends IconedTextOptions {
    /**
     * tick label과 scale 본체 혹은 tick line 사이의 간격.<br/>
     *
     * @default 4
     */
    offset?: number;
}
/**
 * bubble 스텝을 구분하는 bubble scale 틱 라인 및 라벨 옵션.<br/>
 */
interface BubbleScaleTickOptions extends ChartItemOptions {
    line?: BubbleScaleTickLineOptions;
    label?: BubbleScaleTickLabelOptions;
}
interface BubbleScaleStep {
    value: number;
    label: string;
}
/**
 * 버블,파이 시리즈의 데이터포인트 값에 따라 설정되는
 * 원 크기를 몇 단계로 나누어 원 크기와 값 사이의 관계를 개략적으로 표시한다.<br/>

* @config chart.bubbleScale
 */
interface BubbleScaleOptions extends ScaleOptions {
    tick?: BubbleScaleTickOptions;
    steps?: (BubbleScaleStep | number)[];
    stepCount?: number;
    minRadius?: number;
    maxRadius?: number;
}
/**
 * 맵 scale 옆에 표시되는 거리 표시 설정.<br/>
 */
interface MapScaleLabelOptions extends IconedTextOptions {
    /**
     * label과 scale 본체 사이의 간격.<br/>
     *
     * @default 4
     */
    offset?: number;
}
/**
 * 지도 축척자.<br/>
 * 다른 scale과 달리 하나만 표시할 수 있다.
 */
interface MapScaleOptions extends ScaleOptions {
    /**
     * @default false
     */
    visible?: boolean;
    label?: MapScaleLabelOptions;
}

interface MapAxisGridLineOptions extends ChartItemOptions {
    /**
     * 경위도 선의 간격을 도(°) 단위로 지정한다.<br/>
     * 지정하지 않거나 잘못된 값을 않으면 10도로 적용된다.
     */
    step?: number;
}
declare const _MapAxisGridFitTo: {
    /**
     * 그리드를 지도 영역에 맞춰서 그린다.
     */
    readonly Map: "map";
    /**
     * 그리드를 Body 영역에 맞춰서 그린다. 단, 경위도 최대값을 벗어난 그리드는 그리지 않는다.
     */
    readonly Body: "body";
};
type MapAxisGridFitTo = typeof _MapAxisGridFitTo[keyof typeof _MapAxisGridFitTo];
interface MapAxisGridOptions extends ChartItemOptions {
    /**
     * @default false
     */
    visible?: boolean;
    /**
     * 그리드를 어떤 영역에 맞춰서 채울지를 지정한다. <br />
     * @default 'map'
     */
    fitTo?: MapAxisGridFitTo;
    /**
     * 숫자로 지정하면 {@page config.axis.grid.line.step}으로 설정된다.<br/>
     */
    line?: MapAxisGridLineOptions | number;
    /**
     * 숫자로 지정하면 {@page config.axis.grid.line.step}으로 설정된다.<br/>
     */
    lonLine?: MapAxisGridLineOptions | number;
    /**
     * 숫자로 지정하면 {@page config.axis.grid.line.step}으로 설정된다.<br/>
     */
    latLine?: MapAxisGridLineOptions | number;
}
interface MapAxisLineOptions extends ChartItemOptions {
    /**
     * @default false
     */
    visible?: boolean;
}
interface MapAxisTickLineOptions extends ChartItemOptions {
    /**
     * @default false
     */
    visible?: boolean;
}
interface MapAxisTickLabelOptions extends ChartTextOptions {
    /**
     * 방위 구분자를 '북남동서' 순서대로 지정한다.<br/>
     *
     * @default 'NSEW'
     */
    dirSymbols?: string;
    /**
     * '°°'로 지정하면 두 번째 자리에 방위에 해당하는 {@page position} 문자 표시.
     *
     * @default '°°'
     */
    suffix?: string;
}
interface MapAxisTickOptions extends ChartItemOptions {
    /**
     * @default false
     */
    visible?: boolean;
    /**
     * @private
     *
     * tick 선 설정 옵션.<br/>
     */
    line?: MapAxisTickLineOptions;
    /**
     * tick 라벨 설정 옵션.<br/>
     */
    label?: MapAxisTickLabelOptions;
    /**
     * @default ['top','right']
     */
    positions?: Positions[];
    /**
     * 위경도 그리드 선 배치를 기준으로 tick 라인과 라벨을 표시하는 간격.<br/>
     * {@page latInterval}, {@page lonInterval}로 위경도 간격을 별도로 지정할 수도 있다.
     *
     * @default 1
     */
    interval?: number;
    /**
     * 경도 그리드 선 배치를 기준으로 tick 라인과 라벨을 표시하는 간격.<br/>
     * {@page interval}로 지정한 값보다 우선한다.
     */
    lonInterval?: number;
    /**
     * 위도 그리드 선 배치를 기준으로 tick 라인과 라벨을 표시하는 간격.<br/>
     * {@page interval}로 지정한 값보다 우선한다.
     */
    latInterval?: number;
}
/**
 * @enum
 */
declare const _MapAxisGuideLabelPosition: {
    /**
     * body 영역 안에 label을 배치한다.
     */
    readonly INSIDE: "inside";
    /**
     * body 영역 밖에 label을 배치한다.
     */
    readonly OUTSIDE: "outside";
};
/** @dummy */
type MapAxisGuideLabelPosition = typeof _MapAxisGuideLabelPosition[keyof typeof _MapAxisGuideLabelPosition];
/**
 * 가이드 label 설정 모델.<br/>
 */
interface MapAxisGuideLabelOptions extends IconedTextOptions {
    /**
     * body 영역 기준, 표시 위치.
     *
     * @default 'inside'
     */
    position?: MapAxisGuideLabelPosition;
    /**
     * 수평 정렬.
     *
     * @default 'left'
     */
    align?: Align;
    /**
     * 수직 정렬.
     *
     * @default 'top'
     */
    verticalAlign?: VerticalAlign;
    /**
     * label과 가이드 사이의 수평 간격.
     *
     * @default 3
     */
    offsetX?: number;
    /**
     * label과 가이드 사이의 수직 간격.
     *
     * @default 3
     */
    offsetY?: number;
}
type MapAxisGuideType = 'line' | 'band' | 'range';
/**
 * 선분이나 영역으로 지도 위의 특정 지점이나 영역을 구분 표시한다.<br/>
 */
interface MapAxisGuideOptions extends ChartItemOptions {
    /**
     * 가이드 종류.<br/>
     * //이 속성을 지정하지 않은 경우,
     * //{@page config.base.axis.guide}
     */
    type?: MapAxisGuideType;
    /**
     * label 모델.
     */
    label?: MapAxisGuideLabelOptions;
    /**
     * true면 시리즈들보다 위에 표시된다.
     *
     * @default true
     */
    front?: boolean;
    /**
     * 모든 guide들 중에서 값이 클수록 나중에 그려진다.
     *
     * @default 0
     */
    zindex?: number;
}
declare const MapAxisLineGuideType = "line";
/**
 * 축 위의 특정한 값에 선분을 표시한다.<br/>
 */
interface MapAxisLineGuideOptions extends MapAxisGuideOptions {
    type?: typeof MapAxisLineGuideType;
    /**
     * @default 'lon'
     */
    axis?: 'lon' | 'lat';
    position?: number;
}
declare const MapAxisBandGuideType = "band";
/**
 * 축 위 특정한 두 값 사이의 영역을 구분 표시한다.<br/>
 * 반대 축은 처음부터 끝까지 포함된다.
 * [주의] realmap-style.css에 fill-opacity가 0.2로 설정되어 있다.
 */
interface MapAxisBandGuideOptions extends MapAxisGuideOptions {
    type?: typeof MapAxisBandGuideType;
    /**
     * @default 'lon'
     */
    axis?: 'lon' | 'lat';
    from?: number;
    to?: number;
}
declare const MapAxisRangeGuideType = "range";
/**
 * 축 위 특정한 두 좌표로 결정되는 영역을 구분 표시한다.<br/>
 * [주의] realmap-style.css에 fill-opacity가 0.2로 설정되어 있다.
 */
interface MapAxisRangeGuideOptions extends MapAxisGuideOptions {
    type?: typeof MapAxisRangeGuideType;
    from?: MapCoord;
    to?: MapCoord;
    elliptic?: boolean;
}
/**
 * 축 line에 crosshair의 정보를 표시하는 view 설정 모델.
 */
interface CrosshairFlagOptions extends ChartItemOptions {
    prefix?: string;
    /**
     * @default '˚'
     */
    suffix?: string;
    /**
     * @default '#0.000'
     */
    numberFormat?: string;
    /**
     * flag에 표시되는 text의 스타일.
     */
    backgroundStyle?: SVGStyleOrClass;
    /**
     * @default 50 pixel
     */
    minWidth?: number;
}
interface CrosshairCallbackArgs extends CommonCallbackArgs {
    axis: object;
    coord: MapCoord;
    flag: string;
    points: DataPoint[];
}
type CrosshairChangeCallback = (args: CrosshairCallbackArgs) => void;
/**
 * 직선 형태로 축 위의 마우스 위치를 표시하는 구성 요소 옵션.<br/>
 */
interface MapCrosshairOptions extends ChartItemOptions {
    /**
     * 축 상에 crosshair의 정보를 표시하는 view.
     *
     */
    flag?: CrosshairFlagOptions;
    /**
     * @override
     * @default false
     */
    visible?: boolean;
    onChange?: CrosshairChangeCallback;
}
/**
 * @config chart.axis
 */
interface MapAxisOptions extends ChartItemOptions {
    /**
     * 축 line 기본 설정 옵션.<br/>
     */
    line?: MapAxisLineOptions;
    /**
     * Orthographic 투영에서는 표시되지 않는다.
     */
    leftLine?: MapAxisLineOptions;
    /**
     * Orthographic 투영에서는 표시되지 않는다.
     */
    rightLine?: MapAxisLineOptions;
    /**
     * Orthographic 투영에서는 표시되지 않는다.
     */
    topLine?: MapAxisLineOptions;
    /**
     * Orthographic 투영에서는 표시되지 않는다.
     */
    bottomLine?: MapAxisLineOptions;
    /**
     * 적도선 설정.<br/>
     */
    equatorLine?: MapAxisLineOptions;
    /**
     * 본초자오선(prime meridian) 설정.<br/>
     */
    meridianLine?: MapAxisLineOptions;
    /**
     * 위/경도선 표시 설정.<br/>
     */
    grid?: MapAxisGridOptions | boolean;
    /**
     * 위/경도선 좌표 표서 설정.<br/>
     */
    tick?: MapAxisTickOptions | boolean;
    /**
     * 마우스 현재 위치를 표시하는 crosshair 설정.<br/>
     */
    crosshair?: MapCrosshairOptions;
    /**
     * 축 가이드 목록.<br/>
     * 하나만 지정할 때는 배열로 지정하지 않아도 된다.
     */
    guide?: MapAxisGuideOptions | MapAxisGuideOptions[];
    /**
     * @default 5
     */
    interval?: number;
    lonInterval?: number;
    latInterval?: number;
}

declare class MapScaleLabel extends IconedText<MapScaleLabelOptions> {
    static defaults: MapScaleLabelOptions;
    getText(value: any): string;
    getDefaultIconPos(): IconPosition;
}
/**
 * 지도 축척자.<br/>
 */
declare class MapScale extends ScaleBase<MapScaleOptions> {
    static defaults: MapScaleOptions;
    private _label;
    private _scale;
    protected _doInit(op: MapScaleOptions): void;
    get label(): MapScaleLabel;
    isVertical(): boolean;
    _type(): string;
    protected _getScaledSeries(chart: IChart): ISeries;
    protected _doApply(options: MapScaleOptions): void;
    protected _doPrepareRender(chart: IChart, op: MapScaleOptions): void;
    private $_calcScale;
}

/**
 * @config chart.map
 */
interface MapSourceOptions extends MapSource {
}
/**
 * 맵차트의 기준이 되는 맵과 관련 속성 및 시리즈와 게이지의 기본 타입을 결정하는 중요한 몇가지 속성들과
 * 하위 구성 요소들에 대한 옵션들을 설정한다.<br/>
 * 맵차트 생성 시 이 옵션 객체를 구성해서 전달해야 한다.
 *
 * ```js
 * const chart = RealMap.createChart(doc, 'div', {
 *      .... // 여기에 설정한다.
 * });
 * ```
 *
 * {@page https://www.typescriptlang.org/ typescript} 환경에서는 타입을 명시적으로 지정하여
 * 개발 편집기의 typescript 지원을 받을 수 있으므로
 * 설정 객체를 별도로 정의할 수 있다.
 *
 * ```ts
 * const config: ChartConfiguration = {
 *      ...
 * };
 * const chart = RealMap.createChart(doc, 'div', config);
 * ```
 *
 * @config chart
 */
interface ChartConfiguration {
    templates?: ConfigObject;
    /**
     * 기본 {@page guide.series 시리즈} type.<br/>
     * 시리즈에 type을 지정하지 않으면 이 값으로 지정된 type의 시리즈가 생성된다.
     *
     * @default 'map'
     */
    type?: 'map' | 'feature' | 'point' | 'pin' | 'vector' | 'bar' | 'pie' | 'figure' | 'bubble' | 'route' | 'image' | 'line' | 'heatmap' | 'panel' | 'waffle' | 'gauge' | 'clock';
    /**
     * 한 주의 시작 요일.<br/>
     * ex) 0: 일요일, 1: 월요일
     *
     * [주의] 맵차트 로딩 후 변경할 수 없다.
     *
     */
    startOfWeek?: number;
    /**
     * 맵차트 영역 전체에 연관되는 속성들을 설정한다.<br/>
     */
    chart?: ChartOptionsOptions;
    /**
     * Asset 목록.<br/>
     */
    asset?: AssetOptionsType | AssetOptionsType[];
    /**
     * {@page asset}과 동일하고, 이 항목이 우선한다.<br/>
     */
    assets?: AssetOptionsType | AssetOptionsType[];
    /**
     * {@page guide.title 맵차트 타이틀} 표시 영역.<br/>
     */
    title?: TitleOptions | string;
    /**
     * {@page guide.title 맵차트 타이틀} 주변에 추가롤 표시되는 부제목 영역.<br/>
     */
    subtitle?: SubtitleOptions | string;
    /**
     * 맵차트의 기준이 될 지도 소스 및 관련 옵션.<br/>
     * 배열로 둘 이상의 맵을 지정할 수 있다.
     */
    map?: MapSourceOptions | MapSourceOptions[];
    /**
     * {@page guide.axis 축} 관련 설정.<br/>
     */
    axis?: MapAxisOptions;
    /**
     * 맵과 시리즈들이 그려지는 영역.<br/>
     */
    body?: BodyOptions;
    /**
     * 범례(legend)나 스케일(color/bubble scale) 등의 위젯들을 한 방향으로 배치하는 그룹을 하나 이상 설정한다.<br/>
     */
    widgetGroup?: MapWidgetGroupOptions | MapWidgetGroupOptions[];
    /**
     * 시리즈 구성을 직관적으로 이해할 수 있도록 도와주는 {@page guide.legend 범례}.<br/>
     */
    legend?: LegendOptions | LegendOptions[] | boolean;
    /**
     * {@page guide.colorscale 색상자}를 하나 이상 설정한다.
     */
    colorScale?: ColorScaleOptions | ColorScaleOptions[];
    /**
     * @ignore
     * {@page colorScale}과 동일하고, 이 속성이 우선한다.<br/>
     */
    colorScales?: ColorScaleOptions | ColorScaleOptions[];
    /**
     * {@page guide.bubblescale 색상자}를 하나 이상 설정한다.
     */
    bubbleScale?: BubbleScaleOptions | BubbleScaleOptions[];
    /**
     * @ignore
     * {@page bubbleScale}과 동일하고, 이 속성이 우선한다.<br/>
     */
    bubbleScales?: BubbleScaleOptions | BubbleScaleOptions[];
    mapScale?: MapScale;
    /**
     * 맵차트가 {@page guide.zoom zoom} 가능할 때 zomm 버튼들이 표시되는 패널.<br/>
     */
    zoomPanel?: ZoomPanelOptions | boolean;
    /**
     * 맵차트가 {@page guide.drilldown 드릴다운} 상태일 때 뒤로 가기 버튼(들)이 표시되는 패널.<br/>
     */
    drilldownPanel?: DrilldownPanelOptions | boolean;
    /**
     * 데이터포인트 뷰에 마우스 올라갈 때 표시되는 {@page guide.tooltip 툴팁} 상자.<br/>
     */
    tooltip?: TooltipOptions | boolean;
    /**
     * 지도나 데이터 원작자 정보 등을 표시하는 {@page guide.credits 서명} 영역.<br/>
     */
    credits?: CreditsOptions | boolean;
    /**
     * {@page guide.series 시리즈}나 {@page guide.gauge 게이지}들을 하나 이상 설정한다.
     */
    series?: SeriesOptionsType | SeriesOptionsType[];
    /**
     * {@page guide.annotations 어노테이션} 또는 어노테이션 목록.<br/>
     * 이 항목이 지정되지 않고 'annotations'가 지정되면 그 항목에 지정된 설정들로 부터 어노테이션들을 생성한다.
     */
    annotation?: AnnotationOptionsType | AnnotationOptionsType[];
    /**
     * @ignore
     * {@page annotation}과 동일하고, 이 속성이 우선한다.<br/>
     */
    annotations?: AnnotationOptionsType | AnnotationOptionsType[];
    /**
     * 내보내기 설정.<br/>
     */
    exporting?: ExporterOptions;
}

interface IBubbleScaleStep {
    value: number;
    label: string;
    rd: number;
}
declare class BubbleScaleTickLine extends ChartItem<BubbleScaleTickLineOptions> {
    static defaults: BubbleScaleTickLineOptions;
}
declare class BubbleScaleTickLabel extends IconedText<BubbleScaleTickLabelOptions> {
    static defaults: BubbleScaleTickLabelOptions;
    getText(value: any): string;
    getDefaultIconPos(): IconPosition;
}
declare class BubbleScaleTick extends ChartItem<BubbleScaleTickOptions> {
    static defaults: BubbleScaleTickOptions;
    private _line;
    private _label;
    protected _doInit(op: BubbleScaleTickOptions): void;
    get line(): BubbleScaleTickLine;
    get label(): BubbleScaleTickLabel;
}
/**
 * Bubble series 값 범위를 표시한다.<br/>
 */
declare class BubbleScale extends ScaleBase<BubbleScaleOptions> {
    static defaults: BubbleScaleOptions;
    private _tick;
    private _steps;
    protected _doInit(op: BubbleScaleOptions): void;
    get tick(): BubbleScaleTick;
    getSteps(wBody: number, hBody: number): IBubbleScaleStep[];
    _type(): string;
    isVertical(): boolean;
    protected _getScaledSeries(chart: IChart): ISeries;
    protected _doApply(options: BubbleScaleOptions): void;
    protected _doPrepareRender(chart: IChart, op: BubbleScaleOptions): void;
    private $_buildSteps;
}
declare class BubbleScaleCollection extends MapWidgetCollection<BubbleScale> {
    protected _collectionProp(): string;
    protected _createWidget(chart: IChart): BubbleScale;
    beforeRender(): void;
}

interface IColorRanger {
    getColor(min: number, max: number, value: number, color: Color): string;
}
/**
 * @internal
 */
declare class ColorRanger implements IColorRanger {
    private _color1;
    private _color2;
    private _logger;
    constructor(range: ColorRange);
    getColor(min: number, max: number, value: number, color: Color): string;
}
declare class ColorScaleMarker extends ChartItem<ColorScaleMarkerOptions> {
    static defaults: ColorScaleMarkerOptions;
    private _label;
    protected _doInit(op: ColorScaleMarkerOptions): void;
    get label(): ChartText<ChartTextOptions>;
    getMarkerSize(): number;
}
declare class ColorScaleTickLine extends ChartItem<ColorScaleTickLineOptions> {
    static defaults: ColorScaleTickLineOptions;
}
declare class ColorScaleTickLabel extends IconedText<ColorScaleTickLabelOptions> {
    static defaults: ColorScaleTickLabelOptions;
    getDefaultIconPos(): IconPosition;
}
declare class ColorScaleTick extends ChartItem<ColorScaleTickOptions> {
    static defaults: ColorScaleTickOptions;
    private _line;
    private _label;
    protected _doInit(op: ColorScaleTickOptions): void;
    get line(): ColorScaleTickLine;
    get label(): ColorScaleTickLabel;
}
interface IColorScaleTick {
    pos: number;
    label?: string;
}
declare class ColorScaleStepLine extends ChartItem<ColorScaleStepLineOptions> {
    static defaults: ColorScaleStepLineOptions;
}
declare class ColorScaleNull extends ChartItem<ColorScaleNullOptions> {
    static defaults: ColorScaleNullOptions;
    getLabel(): string;
    getGap(): number;
}
/**
 * 색상 범위를 표시한다.<br/>
 */
declare class ColorScale extends ScaleBase<ColorScaleOptions> implements IColorRanger {
    static defaults: ColorScaleOptions;
    private _barLength;
    private _marker;
    private _stepLine;
    private _tick;
    private _nullStep;
    private _min;
    private _max;
    private _minColor;
    private _maxColor;
    private _endColor;
    private _colors;
    private _barLengthDim;
    private _logger;
    private _steps;
    private _valueSteps;
    protected _doInit(op: ColorScaleOptions): void;
    getColor(min: number, max: number, value: number, color: Color): string;
    get marker(): ColorScaleMarker;
    get stepLine(): ColorScaleStepLine;
    get tick(): ColorScaleTick;
    get nullStep(): ColorScaleNull;
    get minColor(): Color;
    get maxColor(): Color;
    getRanger(): IColorRanger;
    getLayout(): ColorScaleLayout;
    getBarSize(wDomain: number, hDomain: number, vertical: boolean): ISize;
    getSplitPoints(len: number, nullStep: boolean, nullGap: number): number[];
    getPosition(value: number): number;
    getTicks(): IColorScaleTick[];
    getSteps(): ColorScaleStep[];
    getValueSteps(): number[];
    getLegendSources(target: ILegendSource[]): void;
    _type(): string;
    isVertical(): boolean;
    getDefaultDisplay(caption: MapWidgetCaption): MapWidgetCaptionDisplay;
    protected _doApply(options: ColorScaleOptions): void;
    protected _getScaledSeries(chart: IChart): ISeries;
    private $_parseColorStops;
    protected _doPrepareRender(chart: IChart, op: ColorScaleOptions): void;
    _buildSteps(): void;
    private $_parseValue;
    private $_normalizeMin;
    private $_parseColor;
    private $_buildSteps;
}
declare class ColorScaleCollection extends MapWidgetCollection<ColorScale> {
    getVisibles(loc: ChartItemLocation): ColorScale[];
    getLegendSources(): ILegendSource[];
    protected _collectionProp(): string;
    protected _createWidget(chart: IChart): ColorScale;
    beforeRender(): void;
}

/**
 * 맵차트 내보내기 관련 설정 모델.
 */
declare class Exporter extends ChartItem<ExporterOptions> {
    static defaults: ExporterOptions;
    private _module;
    private _isCompose;
    isCompose(): boolean;
    compose(exporter: ChartExporter): void;
    isContextMenuVisible(): boolean;
    toggleContextMenu(): void;
    contains(dom: Element): boolean;
    hideContextMenu(): void;
    exportToImage(dom: HTMLElement, options: ExportOptions, exporting: ExporterOptions): void;
}

/**
 * @internal
 */
declare class MapAxisGridLine extends ChartItem<MapAxisGridLineOptions> {
    static defaults: MapAxisGridLineOptions;
    protected _doSetSimple(op: MapAxisGridLineOptions, src: any): boolean;
}
/**
 * @config chart.axis.grid
 */
declare class MapAxisGrid extends ChartItem<MapAxisGridOptions> {
    static defaults: MapAxisGridOptions;
    private _line;
    private _lonLine;
    private _latLine;
    private _fitTo;
    protected _doInit(op: MapAxisGridOptions): void;
    get line(): MapAxisGridLine;
    get lonLine(): MapAxisGridLine;
    get latLine(): MapAxisGridLine;
    get fitTo(): MapAxisGridFitTo;
    getLonStep(): number;
    getLatStep(): number;
    protected _doApply(options: MapAxisGridOptions): void;
    protected _doPrepareRender(chart: IChart, op: MapAxisOptions): void;
    private $_defaultStep;
}
/**
 * @internal
 */
declare class MapAxisLine extends ChartItem<MapAxisLineOptions> {
    static defaults: MapAxisLineOptions;
}
/**
 * @private
 */
declare class MapAxisTickLine extends ChartItem<MapAxisTickLineOptions> {
    static defaults: MapAxisTickLineOptions;
}
/**
 * @private
 */
declare class MapAxisTickLabel extends ChartText<MapAxisTickLabelOptions> {
    static defaults: MapAxisTickLabelOptions;
    private _symbolPos;
    private _symbols;
    getText(lat: boolean, dir: number): string;
    protected _doApply(op: MapAxisTickLabelOptions): void;
}
/**
 * @private
 */
declare class MapAxisTick extends ChartItem<MapAxisTickOptions> {
    static defaults: MapAxisTickOptions;
    private _line;
    private _label;
    private _positions;
    protected _doInit(op: MapAxisTickOptions): void;
    get line(): MapAxisTickLine;
    get label(): MapAxisTickLabel;
    visibleAt(pos: Positions): boolean;
    getLonInterval(): number;
    getLatInterval(): number;
    protected _doApply(op: MapAxisTickOptions): void;
}
/**
 * 가이드 label 설정 모델.<br/>
 * {@page options} 모델은 {@page op.MapAxisGuideLabelOptions}이다.
 */
declare class MapAxisGuideLabel extends IconedText<MapAxisGuideLabelOptions> {
    static defaults: MapAxisGuideLabelOptions;
    getDefaultIconPos(): IconPosition;
}
/**
 * 축 가이드 설정 기반 모델.<br/>
 *
 * {@page options} 모델은 {@page op.AxisGuideOptions}이다.
 */
declare abstract class MapAxisGuide<OP extends MapAxisGuideOptions = MapAxisGuideOptions> extends ChartItem<OP> {
    static defaults: MapAxisGuideOptions;
    private _label;
    protected _doInit(op: OP): void;
    /**
     * label 모델.
     */
    get label(): MapAxisGuideLabel;
}
/**
 * 축 위의 특정한 값에 수평 혹은 수직 선분을 표시한다.<br/>
 * {@page options} 모델은 {@page op.MapAxisLineGuideOptions}이다.
 */
declare class MapAxisLineGuide extends MapAxisGuide<MapAxisLineGuideOptions> {
    static defaults: MapAxisLineGuideOptions;
}
/**
 * 특정 범위를 수평 혹은 수직 밴드 영역으로 표시한다.<br/>
 * {@page options} 모델은 {@page op.MapAxisBandGuideOptions}이다.
 */
declare class MapAxisBandGuide extends MapAxisGuide<MapAxisBandGuideOptions> {
    static defaults: MapAxisBandGuideOptions;
}
/**
 * 특정 영역 두 값 사이의 영역을 구분 표시한다.<br/>
 * {@page options} 모델은 {@page op.MapAxisBandGuideOptions}이다.
 */
declare class MapAxisRangeGuide extends MapAxisGuide<MapAxisRangeGuideOptions> {
    static defaults: MapAxisRangeGuideOptions;
}
/**
 * 축 상에 crosshair의 정보를 표시하는 view 설정 모델.
 */
declare class CrosshairFlag extends ChartItem<CrosshairFlagOptions> {
    static defaults: CrosshairFlagOptions;
}
/**
 * 직선 또는 bar 형태로 축 위의 마우스 위치를 표시하는 구성 요소 모델.<br/>
 */
declare class MapCrosshair extends ChartItem<MapCrosshairOptions> {
    axis: MapAxis;
    static defaults: MapCrosshairOptions;
    private _flag;
    private _args;
    constructor(axis: MapAxis);
    protected _doInit(op: MapCrosshairOptions): void;
    /**
     * 축 상에 crosshair의 정보를 표시하는 view.
     */
    get flag(): CrosshairFlag;
    getFlag(pos: number): string;
    moved(pos: IPoint, flag: string, points: DataPoint[]): void;
    protected _doSetSimple(op: MapCrosshairOptions, source: any): boolean;
}
declare class MapAxis extends ChartItem<MapAxisOptions> {
    static defaults: MapAxisOptions;
    private _line;
    private _leftLine;
    private _rightLine;
    private _topLine;
    private _bottomLine;
    private _equatorLine;
    private _meridianLine;
    private _grid;
    private _tick;
    private _crosshair;
    private _guides;
    private _lonInterval;
    private _latInterval;
    private _saveGuide;
    protected _doInit(op: MapAxisOptions): void;
    get line(): MapAxisLine;
    get leftLine(): MapAxisLine;
    get rightLine(): MapAxisLine;
    get topLine(): MapAxisLine;
    get bottomLine(): MapAxisLine;
    get equatorLine(): MapAxisLine;
    get meridianLine(): MapAxisLine;
    get grid(): MapAxisGrid;
    get tick(): MapAxisTick;
    get crosshair(): MapCrosshair;
    get guides(): MapAxisGuide<MapAxisGuideOptions>[];
    get lonInterval(): number;
    get latInterval(): number;
    protected _doApply(options: MapAxisOptions): void;
    private $_loadGuides;
}

declare abstract class BodyPanel<OP extends BodyPanelOptions = BodyPanelOptions> extends ChartItem<OP> {
    static readonly ITEM_GAP = 4;
    static defaults: BodyPanelOptions;
    getItemGap(): number;
}
declare class ZoomPanel extends BodyPanel<ZoomPanelOptions> {
    static readonly BUTTON_SIZE = 24;
    static defaults: ZoomPanelOptions;
    get vertical(): boolean;
    getButtonSize(): ISize;
    getZoomStep(): number;
    protected _isVisible(): boolean;
}
declare class DrilldownPanel extends BodyPanel<DrilldownPanelOptions> {
    static defaults: DrilldownPanelOptions;
    protected _isVisible(): boolean;
}

/**
 * 맵차트 제목(title) 설정 모델.<br/>
 * 기본적으로 맵차트 중앙 상단에 표시되지만 {@link align}, {@link verticalAlign} 등으로 위치를 변경할 수 있다.<br/>
 * {@link guide.title 타이틀 개요} 페이지를 참조한다.
 *
 * @config chart.title
 */
declare class Title<OP extends TitleOptions = TitleOptions> extends ChartItem<OP> {
    static defaults: TitleOptions;
    isVisible(): boolean;
    protected _doSetSimple(op: OP, src: any): boolean;
}
/**
 * 맵차트 부제목(subtitle) 설정 모델.<br/>
 * 기본적으로 주 제목(title)의 설정을 따르고, 몇가지 속성들이 추가된다.<br/>
 * {@link guide.subtitle 부제목 개요} 페이지를 참조한다.
 *
 * @config chart.subtitle
 */
declare class Subtitle extends Title<SubtitleOptions> {
    static defaults: SubtitleOptions;
}

declare class MapSeriesPoint extends ValuePoint {
    area: MapArea;
    center: MapCoord;
    protected _readObject(series: MapSeries, v: any): void;
    getLabel(index: number): string;
    getParam(param: string): any;
    _valuesChanged(prev: any): boolean;
}
declare class MapSeriesDrilldown extends ChartItem<DrilldownOptions> {
    static defaults: DrilldownOptions;
}
declare class MapSeriesBorder extends ChartItem<MapBorderOptions> {
    name: string;
    series: MapSeries;
    static defaults: MapBorderOptions;
    border: MapBorder;
    constructor(name: string, series: MapSeries);
    getPath(): string;
    protected _doSetSimple(op: MapBorderOptions, src: any): boolean;
}
declare class MapSeriesBorders extends ChartItem<MapBordersOptions> {
    name: string;
    series: MapSeries;
    static defaults: MapBordersOptions;
    constructor(name: string, series: MapSeries);
}
/**
 * Map 시리즈 모델.<br/>
 * {@page op.SeriesOptions#type}은 {@page config.series.map 'map'}이고,
 * {@page options 설정} 모델은 {@page op.MapSeriesOptions}이다.
 */
declare class MapSeries extends ValueSeries<MapSeriesOptions> {
    static type: string;
    static defaults: MapSeriesOptions;
    protected _doInit(op: MapSeriesOptions): void;
    private _parent;
    private _detail;
    private _detailed;
    private _drilldown;
    private _internalBorder;
    private _externalBorder;
    private _areaPts;
    private _minValue;
    private _maxValue;
    private _colorObj;
    private _colorRanger;
    private _useMapData;
    private _areaMap;
    private _hiddenAreas;
    private _mapBorders;
    private _saveBorders;
    get areaCount(): number;
    get parent(): MapSeries;
    get detail(): MapSeries;
    get drilldown(): MapSeriesDrilldown;
    get internalBorder(): MapSeriesBorders;
    get externalBorder(): MapSeriesBorders;
    get color(): Color;
    getMapBorders(): MapSeriesBorder[];
    isHiddenArea(areaId: string): MapArea;
    getHistory(): MapSeries[];
    get(second: boolean, index: number): MapArea;
    pointOf(area: MapArea): MapSeriesPoint;
    pointByProp(prop: string, value: any): MapSeriesPoint;
    getBounds(projection: ProjectionType): IRect;
    getCenter(p: MapSeriesPoint | string): MapCoord;
    getValueRange(): {
        min: number;
        max: number;
    };
    getDetailed(): MapSeries;
    showDetail(): void;
    showParent(): void;
    protected _createLabel(chart: IChart): DataPointLabel;
    private $_createDetail;
    protected _doLoad(options: ChartItemOptions, source: any): void;
    protected _doApply(op: MapSeriesOptions): void;
    needMapScale(): boolean;
    canAddAnimation(): boolean;
    canRemoveAnimation(): boolean;
    getRangedColor(p: MapSeriesPoint): string;
    followTooltipPointer(): boolean;
    getLegendSources(legend: object, list: ILegendSource[]): void;
    protected _createPoint(source: any): MapSeriesPoint;
    protected _getPointArgs(args: DataPointArgs, p: MapSeriesPoint): DataPointArgs;
    _prepareRender(): void;
    protected _doPrepareRender(chart: IChart, op: MapSeriesOptions): void;
    protected _doLoadPoints(src: any): void;
    setCalcedColor(cs: CSSStyleDeclaration, prop: string): void;
    getColorScale(): string | number;
    canSelect(): boolean;
    private $_loadBorders;
}

declare class MapBackground extends ChartItem<MapBackgroundOptions> {
    static defaults: MapBackgroundOptions;
    isVisible(): boolean;
}
interface IBodyTransform {
    tx: number;
    ty: number;
    scale: number;
    vx: number;
    vy: number;
}
/**
 * 시리즈, annotation, axis grid 및 guide 등이 표시되는 맵차트 주 영역 모델.<br/>
 * {@page options 설정} 모델은 {@page op.BodyOptions}이다.
 */
declare class Body extends ChartItem<BodyOptions> implements IAnnotationOwner {
    static defaults: BodyOptions;
    private _projection;
    private _mapBackground;
    private _anns;
    _annotations: AnnotationCollection;
    _prj: MapProjection;
    _points: {
        [id: string]: MapCoord;
    };
    private _map;
    private _zoom;
    private _zoomAni;
    private _panX;
    private _panY;
    private _scale;
    private _vRect;
    private _wMap;
    constructor(chart: IChart);
    protected _doInit(op: BodyOptions): void;
    anchorByName(name: string): ChartItem;
    get projection(): MapProjection;
    get mapBackground(): MapBackground;
    get isFlatWorld(): boolean;
    /**
     * rotation x of globe.
     */
    get rotationX(): number;
    set rotationX(value: number);
    /**
     * rotation y of globe.
     */
    get rotationY(): number;
    set rotationY(value: number);
    /**
     * scroll
     */
    get scroll(): number;
    set scroll(value: number);
    /**
     * movable
     */
    get movable(): boolean;
    /**
     * pan x
     */
    get panX(): number;
    set panX(value: number);
    /**
     * pan y
     */
    get panY(): number;
    set panY(value: number);
    /**
     * zoom
     */
    get zoom(): number;
    set zoom(value: number);
    get isZoomed(): boolean;
    /**
     * map scale
     */
    get scale(): number;
    /**
     * 현재 표시된 상태의 맵 중앙 좌표.
     */
    get center(): MapCoord;
    /**
     * map
     */
    get map(): MapModel;
    get calcedMapWidth(): number;
    isDrilldowned(): boolean;
    private $_calcPan;
    prepare(map: MapModel): void;
    prepareLayout(width: number, height: number): {
        scale: number;
        wMap: number;
        hMap: number;
        tx: number;
        ty: number;
    };
    /**
     * @private
     *
     * x1 ~ x2 대신 h1 ~ h2 로 계산한다.
     * 현재 globe가 아닌 세계 지도에만 적용하고 있다.
     * TODO: $_prepareLayout_world, $_prepareLayout 합칠 것!
     */
    private $_prepareLayout_world;
    private $_prepareLayout;
    getPoint(id: string): MapCoord;
    /**
     * coord는 projection 하지 않은 값.
     */
    toVisible(coord: MapCoord, second: boolean): MapCoord;
    isScrollable(): boolean;
    setZoom(value: number, duration?: number | AnimationOptions | (() => void)): void;
    incZoom(delta: number): void;
    _canSetZoom(value: number): boolean;
    /**
     * 지정한 좌표로 zoom하고 area center로 이동한다.
     *
     * @param zoom 줌 배율
     * @param target 지정한 좌표
     * @param duration animation duration
     */
    zoomTo(zoom: number, target: MapCoord, duration?: number): void;
    /**
     * 지정한 area가 모두 표시되는 정도로 zoom하고 area center로 이동한다.<br/>
     *
     * @param area area id
     * @param ratio 지정한 area를 ratio만큼 확대한다. ratio는 0보다 크고 1 이하. 기본값은 0.7
     * @param duration animation duration
     */
    zoomToArea(areaId: string, ratio?: number, duration?: number, _option?: ZoomToAreaOptions): void;
    /**
     * 떨어진 두 위치로 정해지는 영역이 모두 표시되도록 zoom(in/out)하고 영역 중앙으로 이동한다.<br/>
     */
    zoomToBounds(from: MapCoord, to: MapCoord, duration?: number): void;
    /**
     * 지정한 지점이나 area의 center가 중앙이 되도록 이동한다.
     *
     * @param target 지점 좌표 또는 area id.
     */
    focusTo(target: MapCoord, duration?: number): void;
    $_moveTo(coords: MapCoord): void;
    getAnnotations(): Annotation[];
    getAnnotation(name: string): Annotation;
    updateOption(prop: keyof BodyOptions, value: any, render?: boolean): this;
    updateOptions(source?: BodyOptions, render?: boolean): this;
    protected _doApply(options: BodyOptions): void;
    protected _doPrepareRender(chart: IChart): void;
    _getZoom(): number;
}
interface IMapChartEvents {
    onModelChanged(chart: ChartObject, item: ChartItem, tag: any): void;
    onDataChanged(chart: ChartObject, series: Series): void;
    onMapChanged(chart: ChartObject, map: MapModel): void;
    onProjectionChanged(chart: ChartObject, projection: MapProjection): void;
    onZoomChanged(chart: ChartObject, oldZoom: number): void;
    onRequestRender(chart: ChartObject, now: boolean): void;
    onRequestShowSeries(chart: ChartObject, series: Series, visible: boolean): void;
}
declare class ChartOptions extends ChartItem<ChartOptionsOptions> {
    static defaults: ChartOptionsOptions;
    protected _widgetGaps: Sides;
    getWidgetSectionGap(loc: ChartItemLocation): any;
    protected _doApply(options: ChartOptionsOptions): void;
}
/**
 * @ignore
 *
 * 내부 chart model.<br/>
 * 시리즈가 하나도 설정되지 않으면(visible과 상관없이) data가 연결되지 않은 빈 'map' 시리즈를 표시한다.
 */
declare class ChartObject extends RmEventProvider<IMapChartEvents> implements IChart, IMapOwner, IAnnotationOwner, ITooltipOwner, ISelectionOwner {
    private static defaults;
    _wrapper: any;
    options: ChartConfiguration;
    private _bases;
    _templates: {
        [key: string]: any;
    };
    _assets: AssetCollection;
    private _chartOptions;
    private _axis;
    private _body;
    _title: Title;
    _subtitle: Subtitle;
    _zoomPanel: ZoomPanel;
    _drilldownPanel: DrilldownPanel;
    _credits: Credits;
    _tooltip: Tooltip;
    private _maps;
    private _baseMap;
    private _series;
    _annotations: AnnotationCollection;
    _widgetGroups: MapWidgetGroupCollection;
    _legends: LegendCollection;
    _colorScales: ColorScaleCollection;
    _bubbleScales: BubbleScaleCollection;
    _mapScale: MapScale;
    private _selection;
    _exporter: Exporter;
    _loading: boolean;
    _widgetGroupDirty: boolean;
    private _point_shaes;
    private _params;
    _seriesIndex: number;
    assignTemplates: (target: any) => any;
    _dataDirty: boolean;
    private _optionsLock;
    _optionsDirty: boolean;
    _loadAnimatable: boolean;
    width: number;
    height: number;
    lockOptionsDirty(): void;
    freeOptionsDirty(): void;
    constructor(config?: ChartConfiguration, wrapper?: any);
    private _initOptions;
    get wrapper(): any;
    get isGlobe(): boolean;
    get selection(): MapSelection;
    getFirstSeries(type: string): Series;
    findSeries(finder: (series: ISeries) => boolean): Series;
    _getSeriesType(type: string): any;
    _getAnnotationType(type: string): any;
    _modelChanged(): void;
    _optionChanged(item: ChartItem, tag?: any): void;
    animatable(): boolean;
    loadAnimatable(): boolean;
    isVisible(coord: MapCoord): boolean;
    requestShowSeries(series: Series, visible: boolean): void;
    _selectionChanged(series: ISeries, p: DataPoint): void;
    getNextPointShape(): Shape;
    getProjection(second: boolean): MapProjection;
    projectionChanged(): void;
    zoomChanged(oldZoom: number): void;
    mapChanged(map: MapModel): void;
    anchorByName(name: string): ChartItem<ChartItemOptions>;
    get chart(): IChart;
    getTooltipContext(scope: TooltipScope, series: ISeries, point: DataPoint): ITooltipContext;
    selectionChanged(selection: MapSelection): void;
    selectionItemAdded(item: ISelectionSource): void;
    selectionItemRemoved(item: ISelectionSource): void;
    selectionCleared(): void;
    get type(): "line" | "map" | "feature" | "point" | "pin" | "vector" | "bar" | "pie" | "figure" | "bubble" | "route" | "image" | "heatmap" | "panel" | "waffle" | "gauge" | "clock";
    get chartOptions(): ChartOptions;
    get legend(): Legend;
    get credits(): Credits;
    /**
     * map model.
     */
    get map(): MapModel;
    setBaseMap(indexOrName: number | string | MapModel): void;
    get axis(): MapAxis;
    get title(): Title;
    /**
     * body.
     */
    get body(): Body;
    get visibleSeries(): Series[];
    get firstVisible(): Series;
    get firstMapSeries(): MapSeries;
    get colorScale(): ColorScale;
    get bubbleScale(): BubbleScale;
    get mapScale(): MapScale;
    get widgetGroup(): MapWidgetGroup;
    get isDirty(): boolean;
    get isDrilldowned(): boolean;
    getAnnotations(): Annotation[];
    requestRender(now: boolean): void;
    mapByName(name: string): MapModel;
    mapAt(index: number): MapModel;
    getMap(nameOrIndex: string | number): MapModel;
    getSeries(series: string | number): Series<SeriesOptions>;
    seriesByName(series: string): Series;
    seriesByType(type: string): Series;
    seriesAt(index: number): Series;
    seriesByPoint(point: DataPoint): Series;
    annotationByName(name: string): Annotation;
    _collectWidgets(): {
        [dir: string]: MapWidget<MapWidgetOptions>[];
    };
    loadBase(source: any, model: string, type: string): any;
    private _setProperties;
    _load(config: ChartConfiguration): this;
    private $_loadTemplates;
    prepareRender(): void;
    afterRender(): void;
    /**
     * 데이터 및 속성 변경 후 다시 그리게 한다.
     */
    update(options: ChartConfiguration, render: boolean): void;
    export(options: ExportOptions): void;
    _getLegendSources(legend: object): ILegendSource[];
    getParam(target: any, param: string): any;
    setParam(param: string, value: any, redraw?: boolean): ChartObject;
    addSeries(source: any, animate: boolean): Series;
    removeSeries(series: string | Series, animate: boolean): Series<SeriesOptions>;
    /** @internal */
    _dataChanged(series: Series): void;
    /** @internal */
    _isDataChanged(): boolean;
    getColorScale(scale: string | number): ColorScale;
    getBubbleScale(scale: string | number): BubbleScale;
    drilldown(series: MapSeries, area: string): Promise<void>;
    drillup(series?: MapSeries): Promise<void>;
    canClick(): boolean;
    click(info: any): void;
    pointToMap(x: number, y: number): MapCoord;
    private $_buildWidgetGroups;
    _visibleChanged(item: ChartItem): void;
    _hoverAreaChanged(series: Series, newArea: MapArea, oldArea: MapArea): void;
    _areaClicked(series: Series, area: MapArea): void;
}

interface IChart {
    wrapper: any;
    options: ChartConfiguration;
    type?: string;
    _loading: boolean;
    map: MapModel;
    axis: MapAxis;
    body: Body;
    _tooltip: Tooltip;
    _assets: AssetCollection;
    _seriesIndex: number;
    selection: MapSelection;
    width: number;
    height: number;
    isGlobe: boolean;
    firstVisible: Series;
    firstMapSeries: Series;
    isDirty: boolean;
    mapAt(index: number): MapModel;
    mapByName(name: string): MapModel;
    getMap(nameOrIndex: string | number): MapModel;
    getFirstSeries(type: string): Series;
    findSeries(finder: (series: ISeries) => boolean): Series;
    animatable(): boolean;
    loadAnimatable(): boolean;
    loadBase(source: any, model: string, type: string): any;
    assignTemplates(target: any): any;
    projectionChanged(): void;
    zoomChanged(oldZoom: number): void;
    seriesByName(series: string): Series;
    seriesAt(index: number): Series;
    getSeries(series: string | number): Series;
    isVisible(coord: MapCoord): boolean;
    getColorScale(scale: string | number): ColorScale;
    requestShowSeries(series: Series, visible: boolean): void;
    isDrilldowned: boolean;
    drilldown(series: Series, area: string): void;
    drillup(series?: Series): void;
    _getSeriesType(type: string): any;
    _getAnnotationType(type: string): any;
    getProjection(second: boolean): MapProjection;
    _visibleChanged(item: ChartItem): void;
    _optionChanged(item: ChartItem, tag?: any): void;
    _getLegendSources(legend: object): ILegendSource[];
    _hoverAreaChanged(series: Series, newArea: MapArea, oldArea: MapArea): void;
    _areaClicked(series: Series, newArea: MapArea): void;
    getParam(target: any, param: string): any;
    setParam(param: string, value: any, redraw?: boolean): void;
    _dataChanged(series: Series): void;
    _isDataChanged(): boolean;
    lockOptionsDirty(): void;
    freeOptionsDirty(): void;
    _selectionChanged(series: ISeries, p: ISelectionSource): void;
    getNextPointShape(): Shape;
}
declare const extend: <O extends ChartItemOptions>(base: any, source: O) => O;
/**
 * 맵차트 구성 요소 모델들의 기반 클래스.<br/>
 */
declare class ChartItem<OP extends ChartItemOptions = ChartItemOptions> extends RmObject {
    static readonly REFRESHED = "refreshed";
    static defaults: ChartItemOptions;
    readonly chart: IChart;
    protected _op: OP;
    _style: SVGStyleOrClass;
    private _children;
    constructor(chart: IChart);
    _init(): OP;
    protected _doInit(op: OP): void;
    get options(): OP;
    /**
     * 표시 여부.<br/>
     * options.visible 값을 그대로 return하는 것이 아니라,
     * undefined나 null 등으로 지정하는 경우 모델의 상태에 따라 true나 false로 해석될 수 있다.<br/>
     * 설정의 경우 {@link updateOptions}(`{visible: value}`)로 지정하는 것과 동일하다.
     *
     * @default true
     */
    get visible(): boolean;
    set visible(value: boolean);
    protected _isVisible(): boolean;
    _load(source: any): OP;
    loadOptions(source: any): OP;
    saveOptions(): any;
    /**
     * 모델 설정 값들을 변경한다.<br/>
     *
     * @param source 설정 옵션들이 포함된 json 객체
     * @param render true로 지정하면 옵션 변경 시 맵차트를 다시 그린다. 기본갑 true
     * @returns 모델 객체 자신
     */
    updateOptions(source?: OP, render?: boolean): this;
    /**
     * 모델 설정 값을 변경한다.<br/>
     *
     * @param prop 설정 항목 이름
     * @param value 설정 값
     * @param render true로 지정하면 옵션 변경 시 맵차트를 다시 그린다. 기본갑 true
     * @returns 모델 객체 자신
     */
    updateOption(prop: keyof OP, value: any, render?: boolean): this;
    /**
     * boolean 타입의 모델 설정 값을 반대 값으로 변경한다.<br/>
     *
     * @param prop 설정 항목 이름
     * @param render true로 지정하면 옵션 변경 시 맵차트를 다시 그린다. 기본갑 true
     * @returns 모델 객체 자신
     */
    toggleOption(prop: keyof OP, render?: boolean): this;
    /**
     * 명시적으로 설정된 모델 설정 값을 제거해서 모델의 기본 값이 적용되도록 한다.<br/>
     *
     * @param prop 설정 항목 이름
     * @param render true로 지정하면 옵션 변경 시 맵차트를 다시 그린다. 기본갑 true
     * @returns 모델 객체 자신
     */
    removeOption(prop: keyof OP, render?: boolean): this;
    /**
     * 명시적으로 설정된 모든 모델 설정 값들을 제거한다..<br/>
     *
     * @param render true로 지정하면 옵션 변경 시 맵차트를 다시 그린다. 기본갑 true
     * @returns 모델 객체 자신
     */
    clearOptions(render?: boolean): this;
    /**
     * 명시적으로 모델에 설정된 모든 style 값들을 제거한다.<br/>
     *
     * @param render true로 지정하면 옵션 변경 시 맵차트를 다시 그린다. 기본갑 false
     * @returns
     */
    clearStyle(render?: boolean): this;
    /**
     * 모델 css style 값을 변경한다.<br/>
     *
     * @param prop css 스타일 항목 이름.
     * @param value 적용할 스타일 값.
     * @param render true로 지정하면 옵션 변경 시 맵차트를 다시 그린다. 기본갑 true
     * @returns
     */
    setStyle(prop: string, value: any, render?: boolean): this;
    /**
     * 여러 항목의 모델 css style 값들을 json 객체로 지정해서 동시에 변경한다.<br/>
     *
     * @param styles 스타일 항목들과 값들이 설정된 json 객체
     * @param render true로 지정하면 옵션 변경 시 맵차트를 다시 그린다. 기본갑 true
     * @returns
     */
    setStyles(styles: any, render?: boolean): this;
    _prepareRender(): void;
    _afterRender(): void;
    _optionChanged(tag?: any): void;
    protected _doLoad(options: ChartItemOptions, source: any): void;
    protected _doSetSimple(op: OP, src: any): boolean;
    /** @internal */
    protected _doLoadProp(prop: string, value: any): boolean;
    private $_applyOptions;
    protected _setDim(options: ChartItemOptions, prop: string): void;
    protected _setDims(options: ChartItemOptions, ...props: string[]): void;
    protected _doApply(options: ChartItemOptions): void;
    protected _doSave(target: object): void;
    /** @internal */
    protected _doUpdate(source: any): void;
    protected _doPrepareRender(chart: IChart, op: OP): void;
    protected _doAfterRender(): void;
}
declare abstract class ChartItemCollection<T extends ChartItem> {
    readonly chart: IChart;
    protected _items: T[];
    constructor(chart: IChart);
    get count(): number;
    get first(): T;
    items(): T[];
    _internalItems(): T[];
    abstract load(src: any, tag?: any): void;
    updateOptions(source: any, render: boolean): void;
}
declare class ChartText<OP extends ChartTextOptions = ChartTextOptions> extends ChartItem<OP> {
    static defaults: ChartTextOptions;
    private _outlineThickness;
    private _numberSymbols;
    private _numberFormat;
    private _text;
    _outlineWidth: string;
    private _numSymbols;
    protected _numberFormatter: NumberFormatter;
    protected _richTextImpl: SvgRichText;
    private _setOutlineThickness;
    private _setNumberSymbols;
    private _setNumberFormat;
    private _setText;
    isVisible(): boolean;
    setText(value: string): void;
    buildSvg(view: TextElement, outline: TextElement, maxWidth: number, maxHeight: number, target: any, domain: IRichTextDomain): void;
    prepareRich(text: string): void;
    protected _doSetSimple(op: OP, src: any): boolean;
    protected _doApply(options: ChartTextOptions): void;
    private $_getNumberText;
    protected _getText(text: any, value: any, useSymbols: boolean, forceSymbols: boolean): string;
    getNumberText(value: any, useSymbols: boolean, forceSymbols: boolean, roundingMode: 'trunc' | 'ceil'): string;
}
declare abstract class IconedText<OP extends IconedTextOptions = IconedTextOptions> extends ChartText<OP> {
    static defaults: IconedTextOptions;
    private _images;
    private _root;
    abstract getDefaultIconPos(): IconPosition;
    getIconPos(): IconPosition;
    protected _doPrepareRender(chart: IChart, op: IconedTextOptions): void;
    getUrl(url: string): string;
}
declare class MapWidgetBackground extends ChartItem<MapWidgetBackgroundOptions> {
    static defaults: MapWidgetBackgroundOptions;
}
declare class MapWidgetCaption extends IconedText<MapWidgetCaptionOptions> {
    static defaults: MapWidgetCaptionOptions;
    getDisplay(widget: MapWidget): MapWidgetCaptionDisplay;
    getGap(inline: boolean): number;
    protected _isVisible(): boolean;
    protected _doSetSimple(op: MapWidgetCaptionOptions, src: any): boolean;
    getDefaultIconPos(): IconPosition;
}
declare abstract class MapWidget<OP extends MapWidgetOptions = MapWidgetOptions> extends ChartItem<OP> {
    static defaults: MapWidgetOptions;
    private _group;
    private _index;
    private _background;
    private _title;
    private _footer;
    private _location;
    get index(): number;
    get background(): MapWidgetBackground;
    get title(): MapWidgetCaption;
    get footer(): MapWidgetCaption;
    abstract _type(): string;
    abstract isVertical(): boolean;
    isVisible(): boolean;
    getOrder(): number;
    _setGroup(g: MapWidgetGroup): void;
    getGroup(): MapWidgetGroup;
    getLocation(): ChartItemLocation;
    _setIndex(value: number): void;
    getDefaultDisplay(caption: MapWidgetCaption): MapWidgetCaptionDisplay;
    protected _doInit(op: MapWidgetOptions): void;
    protected _doPrepareRender(chart: IChart, op: OP): void;
}
declare abstract class MapSimpleWidget<OP extends MapSimpleWidgetOptions = MapSimpleWidgetOptions> extends MapWidget<OP> {
}
declare class MapWidgetGroup extends MapWidget<MapWidgetGroupOptions> {
    static defaults: MapWidgetGroupOptions;
    private _widgets;
    _clean(): void;
    _add(w: MapSimpleWidget): void;
    _sort(): void;
    getWidget(index: number): MapSimpleWidget<MapSimpleWidgetOptions>;
    _internalWidgets(): MapSimpleWidget<MapSimpleWidgetOptions>[];
    _type(): string;
    isVertical(): boolean;
}
declare abstract class MapWidgetCollection<T extends MapWidget = MapWidget> extends ChartItemCollection<T> {
    private _map;
    protected _visibles: T[];
    getVisibles(loc: ChartItemLocation): T[];
    get(name: string | number, loc: ChartItemLocation): T;
    find(name: string | number, force: boolean): T;
    beforeRender(): void;
    protected _collectVisibles(): void;
    prepareRender(): void;
    load(src: any): void;
    protected abstract _collectionProp(): string;
    protected abstract _createWidget(chart: IChart): T;
    protected _canEmpty(): boolean;
    private $_loadItem;
}
declare class MapWidgetGroupCollection extends MapWidgetCollection<MapWidgetGroup> {
    protected _collectionProp(): string;
    protected _createWidget(chart: IChart): MapWidgetGroup;
}
/**
 * color, bubble 스케일 base.<br/>
 */
declare abstract class ScaleBase<OP extends ScaleOptions = ScaleOptions> extends MapSimpleWidget<OP> {
    static defaults: ScaleOptions;
    protected _series: ISeries;
    get series(): ISeries<DataPoint>;
    protected _doPrepareRender(chart: IChart, op: OP): void;
    protected abstract _getScaledSeries(chart: IChart): ISeries;
}

/**
 * Annotation 모델들의 기반 클래스.<br/>
 * {@page options 옵션} 모델은 {@page op.AnnotationOptions}이고,
 * {@page config 맵차트 설정}에서 {@page config.annotation 'annotation'} 항목으로 설정한다.
 * ```js
 * const config = {
 *      annotation: [{
 *          type: 'image',
 *          name: 'image1',
 *      }],
 * };
 * ```
 * 또, Chart.{@page rm.Chart#getannotation getAnnotation}으로
 * 모델 객체를 가져올 수 있다.
 * ```js
 * const annotation = chart.getAnnotation('image1');
 * annotation.visible = false;
 * ```
 * {@page guide.annotations Annotation 개요} 페이지를 참조한다.
 *
 */
declare abstract class Annotation<OP extends AnnotationOptions = AnnotationOptions> extends ChartItem<OP> {
    inBody: boolean;
    static register(...clses: typeof Annotation<AnnotationOptions>[]): void;
    static readonly type: string;
    static defaults: AnnotationOptions;
    private _width;
    private _height;
    private _offsetX;
    private _offsetY;
    index: number;
    private _name;
    private _widthDim;
    private _heightDim;
    private _offsetXDim;
    private _offsetYDim;
    _x: number;
    _y: number;
    _w: number;
    _h: number;
    _anchorObj: ChartItem;
    constructor(chart: IChart, inBody: boolean);
    _type(): string;
    /**
     * 어노테이션 이름.<br/>
     * 동적으로 어노테이션을 다루기 위해서는 반드시 지정해야 한다.
     *
     * @config
     */
    get name(): string;
    /**
     * 처음 표시될 때 실행될 에니메이션 설정 정보.
     */
    getOffset(w: number, h: number): IPoint;
    getSize(wDomain: number, hDomain: number): ISize;
    getPosition(left: number, top: number, wDomain: number, hDomain: number, width: number, height: number): IPoint;
    refresh(): void;
    _load(source: any): OP;
    protected _doApply(options: AnnotationOptions): void;
    protected _doPrepareRender(chart: IChart, op: AnnotationOptions): void;
}
/**
 * @internal
 */
interface IAnnotationOwner {
    chart: IChart;
    options: {
        annotations?: AnnotationOptions | AnnotationOptions[];
    };
    anchorByName(name: string): ChartItem;
}
/**
 * @internal
 */
declare class AnnotationCollection extends ChartItemCollection<Annotation> {
    owner: IAnnotationOwner;
    private _map;
    private _visibles;
    constructor(owner: IAnnotationOwner);
    getVisibles(): Annotation[];
    getAnnotation(name: string): Annotation;
    get(name: string | number): Annotation;
    load(src: any, inBody: boolean): void;
    prepareRender(): void;
    private $_loadItem;
}

/**
 * 맵차트 생성 이후 호출되는 콜백의 매개변수로 사용된다.
 */
interface LoadCallbackArgs extends CommonCallbackArgs {
}
/**
 * RealMap 라이브러리의 맵차트 모델.<br/>
 */
declare class MapChart {
    _obj: ChartObject;
    private _modelCallback;
    _loadCallback: (param: LoadCallbackArgs) => void;
    private _loaded;
    constructor(config?: ChartConfiguration, callback?: (model: ChartObject, oldModel: ChartObject) => void);
    /**
     */
    get options(): ChartConfiguration;
    /**
     *
     * 기본 시리즈 종류.\
     * 시리즈에 type을 지정하지 않으면 이 속성 type의 시리즈로 생성된다.
     *
     * @default 'bar'
     * @readonly
     */
    get type(): string;
    get body(): Body;
    get assets(): AssetCollection;
    /**
     * {@page setBaseMap}으로 지정되거나,
     * 기본적으로 첫번째 enabled인 맵 모델.<br />
     */
    get map(): MapModel;
    /**
     * 맵차트 타이틀 모델.
     */
    get title(): Title;
    /**
     * 맵차트 부제목 모델.
     */
    get subtitle(): Subtitle;
    /**
     * 맵차트에 설정된 첫번째 시리즈.<br/>
     * {@link guide.series 시리즈 개요} 및
     * {@link config.base.series 시리즈 설정}을 참조한다.
     */
    get series(): Series;
    /**
     * 맵차트에 설정된 첫번째 맵시리즈.<br/>
     * {@link guide.series 시리즈 개요} 및
     * {@link config.base.series 시리즈 설정}을 참조한다.
     */
    get firstMapSeries(): MapSeries;
    /**
     * 첫번째 legend.
     */
    get legend(): Legend;
    /**
     * Credits.
     */
    get credits(): Credits;
    /**
     * 첫번째 color scale.
     */
    get colorScale(): ColorScale;
    /**
     * 첫번째 bubble scale.
     */
    get bubbleScale(): BubbleScale;
    /**
     * 첫번째 widget group.
     */
    get widgetGroup(): MapWidgetGroup;
    /**
     * zoom panel.
     */
    get zoomPanel(): ZoomPanel;
    /**
     * drilldown panel.
     */
    get drilldownPanel(): DrilldownPanel;
    /**
     * 툴팁 모델.
     */
    get tooltip(): Tooltip;
    /**
     * 선택 모델.
     */
    get selection(): MapSelection;
    /**
     * 맵차트 내보내기 관련 설정 모델.
     */
    get exporter(): Exporter;
    /**
     * 맵차트 축의 기준이 되는 맵 모델을 지정한다.<br/>
     * 매개변수를 지정하지 않거나 잘못된 값을 넘기면 첫번째 enabled인 맵으로 설정된다.
     */
    setBaseMap(indexOrName?: number | string): void;
    /**
     * 이름이나 index에 해당하는 맵 객체를 리턴한다.<br/>
     *
     * @param name 맵 이름 또는 index.
     * @returns 맵 객체
     */
    getMap(name: string | number): MapModel;
    /**
     * 이름이나 index에 해당하는 시리즈 객체를 리턴한다.<br/>
     *
     * @param name 시리즈 이름 또는 index.
     * @returns 시리즈 객체
     */
    getSeries(name: string | number): Series;
    /**
     * 지정한 type에 해당하는 첫번째 시리즈 객체를 리턴한다.<br/>
     *
     * @param type 시리즈 타입
     * @returns 시리즈 객체
     */
    seriesByType(type: string): Series;
    getAnnotation(name: string): Annotation;
    /**
     * 기존 모델 설정을 모두 제거하고 초기화 한 후,
     * config로 전달된 설정에 따라 맵차트를 새로 구성한다.<br/>
     * 기존에 생성되었던 시리즈나 게이지들과 축들이 모두 제거되고 새로 생성된다.
     *
     * @param config 맵차트 설정 정보
     */
    load(config: ChartConfiguration, loadAnimation?: boolean, callback?: (param: LoadCallbackArgs) => void): MapChart;
    /**
     * load 메서드의 async 버전. <br/>
     *
     * 기존 모델 설정을 모두 제거하고 초기화 한 후,
     * config로 전달된 설정에 따라 맵차트를 새로 구성한다.<br/>
     * 기존에 생성되었던 시리즈나 게이지들과 축들이 모두 제거되고 새로 생성된다.
     *
     * 또한 map과 series 옵션에 url 속성이 있는 경우, 해당 url에서 데이터를 가져온 다음, <br/>
     * 각 옵션의 map 또는 data 속성을 채운다.
     *
     * @param config 맵차트 설정 정보
     */
    loadAsync(config: ChartConfiguration, loadAnimation?: boolean, callback?: () => void): Promise<MapChart>;
    /**
     * {@link load}와 달리 기존 모델을 유지하면서 맵차트 설정 일부를 반영한다.<br/>
     *
     * @param options 설정 객체
     * @param render true로 지정하면 다시 그리도록 요청한다.
     */
    updateOptions(options: ChartConfiguration, render?: boolean): void;
    /**
     * 현재 표시 중인 맵차트를 PNG, JPG 또는 SVG 벡터 이미지로 다운로드한다.
     *
     * ```js
     * chart.export({
     *      type: 'png',
     *      fileName: 'realmap'
     * })
     * ```
     *
     * @param options 내보내기 설정 객체
     */
    export(options: ExportOptions): void;
    /**
     * 다음 rendering frame을 기다리지 않고, 맵차트를 즉시 다시 그린다.<br/>
     * 맵차트 rendering 작업은 자원 소모가 많고 소용 시간도 적지 않으므로,
     * data나 여러 모델을 수정하는 경우 모든 작업이 완료된 후 한 번 호출해야 한다.
     * 가능하면 이 함수는 호출하지 않고
     * 맵차트 기본 동작(다음 frame에 이전 변경 사항들을 모아서 한 번 rendering)으로 실행되게 해야 한다.
     */
    render(now?: boolean): void;
    setParam(param: string, value: any, redraw?: boolean): void;
    /**
     * 시리즈를 추가한다.
     *
     * @param source 시리즈 설정 json.
     * @param animate 애니메이션 실행 여부.
     * @returns 생성된 시리즈 객체.
     */
    addSeries(source: any, animate?: boolean): Series;
    /**
     * 기존 시리즈를 제거한다.
     *
     * @param series 시리즈 이름이나 시리즈 객체.
     * @param animate 애니메이션 실행 여부.
     */
    removeSeries(series: string | Series, animate?: boolean): void;
    /**
     * 맵차트 설정의 map.points로 지정한 위치를 리턴한다.
     *
     * @param id 포인트 키.
     * @returns [lon, lat]
     */
    getPoint(id: string): MapCoord;
    seriesAt(index: number): Series;
    seriesByName(name: string): Series;
    pointToMap(x: number, y: number): MapCoord;
    drilldown(series?: number | string | MapSeries, area?: string): Promise<void>;
    drillup(series?: number | string | MapSeries): Promise<void>;
}

/**
 */
declare class Globals {
    /**
     * RealMap 라이브러리의 버전 정보를 리턴한다.<br/>
     *
     * ```js
     * console.log(RealMap.getVersion()); // ex) '1.1.2'
     * ```
     *
     * @returns 버전 문자열
     */
    static getVersion(): string;
    /**
     * RealChart의 licenseKey를 등록한다.
     */
    static setLicenseKey(key: string): void;
    /**
     * true로 지정하면 맵차트 요소별 디버그 경계를 표시한다.<br/>
     * 기본은 false 상태다.
     *
     * ```js
     * RealMap.setDebugging(true);
     * ```
     *
     * @param debug 디버깅 상태 표시 여부
     */
    static setDebugging(debug: boolean): void;
    /**
     * true로 지정하면 라이브러리 내부 메시지를 출력한다.<br/>
     *
     * @param logging 로그 메시지 표시 여부
     */
    static setLogging(logging: boolean): void;
    /**
     * 지도 위 두 지점간의 거리를 km 단위로 리턴한다.<br/>
     *
     * @param p1 지점 좌표 [위도, 경도]
     * @param p2 지점 좌표 [위도, 경도]
     * @returns km 단위의 거리
     */
    static getDistance(p1: [number, number], p2: [number, number]): number;
    /**
     * @internal
     */
    static setGlobals(globals: any): void;
    /**
     * 맵차트 설정 모델을 기반으로 svg를 생성한 후,
     * 지정된 div 엘리먼트의 유일한 자식으로 포함시킨다.\
     * div 전체 영역의 크기로 표시된다.
     *
     * ```js
     * const chart = RealMap.createChart(document, 'realmap', config);
     * ```
     *
     * @param doc
     * @param container 컨트롤이 생성되는 div 엘리먼트나 id
     * @param config 맵차트 모델 설정 JSON
     * @param animate 첫 로딩 animation을 실행한다.
     * @param callback 맵차트가 모두 로드되고 첫 렌더링이 완료된 후 호출되는 콜백 함수.
     * @returns 생성된 맵차트 객체
     */
    static createChart(doc: Document, container: string | HTMLDivElement, config: any, animate?: boolean, callback?: (param: LoadCallbackArgs) => void): MapChart;
    /**
     * 지도 파일이나 데이터가 URL을 통해 제공되는 경우, 데이터를 모두 로드한 뒤 맵차트를 생성하도록 비동기 처리할 수 있다.
     *
     * ```js
     * const config = {
     *     map: [
     *         { url: '../map.json', }
     *     ],
     *     series: [{
     *         dataUrl: '../data.json',
     *     }]
     * };
     * const chart = await RealMap.createChartAsync(document, 'realmap', config);
     * ```
     *
     * @param doc
     * @param container 컨트롤이 생성되는 div 엘리먼트나 id
     * @param config 맵차트 모델 설정 JSON
     * @param animate 첫 로딩 animation을 실행한다.
     * @param callback 맵차트가 모두 로드되고 첫 렌더링이 완료된 후 호출되는 콜백 함수.
     * @returns 생성된 맵차트 객체
     */
    static createChartAsync(doc: Document, container: string | HTMLDivElement, config: any, animate?: boolean, callback?: (param: LoadCallbackArgs) => void): Promise<MapChart>;
    /**
     * name에 해당하는 기본 제공 객체를 리턴한다.<br/>
     */
    static preset(name: string, info?: boolean | MapInsetDisplay): MapInset;
}

/**
 * Default map chart tool.
 *
 * 1. map 바탕을 더블클릭하면 기본 scale로 되돌아간다.
 */
declare class MapTool extends RmTool<ChartControl> {
    private _clickElement;
    protected _doPointerDown(ev: PointerEvent): boolean;
    protected _doPointerMove(x: number, y: number, ev: PointerEvent): void;
    protected _doClick(ev: PointerEvent): void;
    protected _doDblClick(ev: PointerEvent): void;
    protected _doWheel(ev: WheelEvent): boolean;
    protected _isPinchTarget(dom: Element): boolean;
    protected _doPinch(dist: number): void;
    protected _getDragTracker(dom: Element, dx: number, dy: number): DragTracker;
    private $_chart;
    private $_chartView;
    private $_drildown;
}

declare abstract class GroupElement extends RmElement {
    private static IGNORE_ATTRS;
    constructor(doc: Document, styleName?: string);
    protected _movable(): boolean;
    setAttr(attr: string, value: any): GroupElement;
    protected _doInitChildren(doc: Document): void;
}

interface IRectShape extends IRect {
    r?: number;
    rx?: number;
    ry?: number;
    rLeft?: number;
    rTop?: number;
    rRight?: number;
    rBottom?: number;
}
declare class RectElement extends RmElement {
    static create(doc: Document, styleName: string, x: number, y: number, width: number, height: number, r?: number): RectElement;
    private _rect;
    constructor(doc: Document, styleName?: string, rect?: IRectShape);
    /** rect */
    get rect(): IRectShape;
    set rect(value: IRectShape);
    setBounds(x: number, y: number, width: number, height: number, r?: number): RectElement;
    setRadius(value: number): void;
    protected _setBackgroundBorderRadius(value: number): void;
}

declare class ImageElement extends RmElement {
    private _dirty;
    private _bounds;
    /**
     * @IE11 not support SVGImageElement onload
     * 사이즈를 알기위해서 이벤트만 사용한다.
     */
    private _proxy;
    /**
     * @IE11 image proxy onload event
     */
    onloadProxy: () => void;
    constructor(doc: Document, full: boolean, styleName?: string);
    /** image url */
    get url(): string;
    set url(value: string);
    setImage(url: string, width: number, height: number): boolean;
    bbox(): IRect;
}

/**
 * ChartText를 표시하는 텍스트 view.
 */
declare class LabelElement extends GroupElement {
    private _back;
    _outline: TextElement;
    _text: TextElement;
    _icon: ImageElement;
    private _model;
    private _box;
    constructor(doc: Document, styleName: string);
    setText(s: string): LabelElement;
    setModel(doc: Document, model: IconedText, icon: string, contrastTarget: Element): LabelElement;
    setContrast(target: Element): LabelElement;
    layout(): LabelElement;
    bbox(): IRect;
}

declare abstract class ChartElement<T extends ChartItem = ChartItem> extends RmElement {
    model: T;
    protected _op: ChartItemOptions;
    mw: number;
    mh: number;
    _debugRect: RectElement;
    constructor(doc: Document, styleName?: any);
    chart(): IChart;
    protected _prepareStyleOrClass(model: T): void;
    setModel(model: T): void;
    measure(doc: Document, model: T, hintWidth: number, hintHeight: number): ISize;
    layout(param?: any): ChartElement<ChartItem>;
    resizeByMeasured(): ChartElement<ChartItem>;
    protected _getDebugRect(): IRect;
    protected _doMeasure(doc: Document, model: T, hintWidth: number, hintHeight: number): ISize;
    protected _doLayout(param: any): void;
    protected _invalidate(): void;
}
declare abstract class BoundableElement<T extends ChartItem = ChartItem> extends ChartElement<T> {
    protected _background: RectElement;
    protected _margins: Sides;
    protected _paddings: Sides;
    constructor(doc: Document, styleName: string, backStyle: string);
    protected _getDebugRect(): IRect;
    measure(doc: Document, model: T, hintWidth: number, hintHeight: number): ISize;
    layout(param?: any): ChartElement<ChartItem>;
    protected abstract _setBackgroundStyle(back: RectElement): void;
    protected _marginable(): boolean;
    protected _resetBackBounds(): boolean;
    protected _getBackOffset(): number;
    protected _deflatePaddings(size: ISize): void;
}
/**
 * @internal
 */
declare abstract class SectionView extends GroupElement {
    protected _inverted: boolean;
    mw: number;
    mh: number;
    measure(doc: Document, chart: IChart, hintWidth: number, hintHeight: number): ISize;
    resizeByMeasured(): SectionView;
    layout(param?: any): SectionView;
    locateInner(width: number, height: number, param?: any): SectionView;
    protected abstract _doMeasure(doc: Document, chart: IChart, hintWidth: number, hintHeight: number): ISize;
    protected abstract _doLayout(param?: any): void;
    protected abstract _doLocateInner(width: number, height: number, param?: any): void;
}
declare class MapWidgetTitleView extends LabelElement {
    constructor(doc: Document);
}
declare class MapWidgetFooterView extends LabelElement {
    constructor(doc: Document);
}
declare abstract class MapWidgetView<T extends MapWidget = MapWidget> extends BoundableElement<T> {
    protected _titleView: MapWidgetTitleView;
    protected _footerView: MapWidgetFooterView;
    protected _inTitle: boolean;
    protected _inFooter: boolean;
    protected _rTitle: IRect;
    protected _rFooter: IRect;
    protected _gapFooter: number;
    constructor(doc: Document, styleName: string, backStyle: string);
    protected _setBackgroundStyle(back: RectElement): void;
    private $_layoutCaption;
    protected _checkTitle(doc: Document): boolean;
    protected _checkFooter(doc: Document): boolean;
}

interface IAnnotationAnchorOwner {
    getAnnotationAnchor(model: any): RmElement;
    tx: number;
    ty: number;
}
/**
 * [주의] clipping하기 위해 translate를 background와 내부 view에 설정한다.
 */
declare abstract class AnnotationView<T extends Annotation = Annotation> extends BoundableElement<T> {
    static readonly CLASS_NAME: string;
    static register(...clses: [typeof Annotation<AnnotationOptions>, typeof AnnotationView<Annotation>][]): void;
    protected _op: AnnotationOptions;
    constructor(doc: Document, styleName: string);
    update(owner: IAnnotationAnchorOwner, hintWidth: number, hintHeight: number): void;
    _layoutView(owner: IAnnotationAnchorOwner, x: number, y: number, w: number, h: number): void;
    private _posByAnchor;
    protected _marginable(): boolean;
    protected _resetBackBounds(): boolean;
    protected _setBackgroundStyle(back: RectElement): void;
    protected _doLayout(p: IPoint): void;
}

/**
 * @internal
 */
declare class ColorScaleView extends MapWidgetView<ColorScale> {
    static readonly SCALE_CLASS = "rm-color-scale";
    static readonly SCALE_FILL = "rm-color-scale-fill";
    private static readonly HORZ_FILL;
    private static readonly HORZ_FILL_I;
    private static readonly VERT_FILL;
    private static readonly VERT_FILL_I;
    private _scaleLayer;
    private _boxLayer;
    private _boxes;
    private _splitLayer;
    private _splits;
    private _marker;
    private _markerLabel;
    private _tickLineLayer;
    private _tickLabelLayer;
    private _nullLayer;
    private _tickLines;
    private _tickLabels;
    private _nullBar;
    private _nullLabel;
    private _vertical;
    private _reversed;
    private _inverted;
    private _fills;
    private _nullSize;
    private _markerSize;
    private _tickLen;
    private _tickLabelSize;
    private _rScale;
    private _wBar;
    private _hBar;
    private _value;
    private _stepCount;
    private _wSave;
    private _hSave;
    constructor(doc: Document);
    setValue(v: number): void;
    protected _doMeasure(doc: Document, model: ColorScale, hintWidth: number, hintHeight: number): ISize;
    protected _doLayout(): void;
    private $_getFillId;
    private $_getFillUrl;
    private $_createGradient;
    private $_setDir;
    private $_fillStops;
    private $_prepareBars;
    private $_prepareSplits;
    private $_prepareTickLines;
    private $_prepareTickLabels;
    private $_prepareMarker;
    private $_prepareNull;
    private $_layoutSplits;
    private $_layoutTickLines;
    private $_resetMarker;
    private $_layoutBar;
}

type Visitor<T extends RmElement> = (element: T, index?: number, count?: number) => void;
/** @internal */
declare class ElementPool<T extends RmElement> extends RmObject {
    private _reversed;
    removeDelay: number;
    private _owner;
    private _creator;
    private _pool;
    private _views;
    private _styleName;
    constructor(owner: RmElement, creator: {
        new (doc: Document, styleName?: string): T;
    }, styleName?: string, removeDelay?: number);
    protected _doDestory(): void;
    /**
     * reversed.
     */
    get reversed(): boolean;
    set reversed(value: boolean);
    get isEmpty(): boolean;
    get count(): number;
    get first(): T;
    get last(): T;
    get(index: number): T;
    getAll(): T[];
    getRange(start: number, end: number): T[];
    elementOf(dom: Element): T;
    prepare(count: number, visitor?: Visitor<T>, initor?: Visitor<T>): ElementPool<T>;
    borrow(): T;
    free(element: T, removeDelay?: number): void;
    freeAll(elements: T[], removeDelay?: number): void;
    clear(): void;
    forEach(visitor: (v: T, i?: number, count?: number) => void): void;
    visit(visitor: (v: T, i: number, count: number) => boolean): boolean;
    find(visitor: (v: T) => boolean): T;
    sort(compare: (v1: T, v2: T) => number): ElementPool<T>;
    map(callback: (v: T) => any): any[];
    setRemoveDelay(v: number): ElementPool<T>;
    removeLater(v: RmElement, duration: number): void;
    private $_create;
    _getElementId(view: T): void;
}

declare class PathBuilder {
    private _path;
    clear(): PathBuilder;
    end(close?: boolean): string;
    close(): string;
    move(x: number | IPoint, y?: number): PathBuilder;
    moveBy(x: number | IPoint, y?: number): PathBuilder;
    movep(x: number | IPoint, y?: number): PathBuilder;
    line(x: number | IPoint, y?: number): PathBuilder;
    linep(x: number | IPoint, y?: number): PathBuilder;
    curve(cx1: number, cy1: number, cx2: number, cy2: number, x: number, y: number): PathBuilder;
    q(x1: number, y1: number, x2: number, y2: number): PathBuilder;
    rect(x: number, y: number, width: number, height: number): PathBuilder;
    lines(...pts: (number | IPoint)[]): PathBuilder;
    polygon(...pts: (number | IPoint)[]): PathBuilder;
    circle(cx: number, cy: number, rd: number): PathBuilder;
}

interface ILine {
    x1: number;
    y1: number;
    x2: number;
    y2: number;
}
declare class LineElement extends PathElement {
    constructor(doc: Document, styleName?: string, line?: ILine);
    setLine(x1: ILine | number, y1?: number, x2?: number, y2?: number): void;
    setVLine(x: number, y1: number, y2: number): void;
    setVLineC(x: number, y1: number, y2: number): void;
    setHLine(y: number, x1: number, x2: number): void;
    setHLineC(y: number, x1: number, x2: number): void;
}
declare class PolyLineElement extends PathElement {
    constructor(doc: Document, styleName?: string, lines?: (number | IPoint)[], curved?: boolean);
    setLines(pts: (number | MapCoord | IPoint)[], curved: boolean): void;
}

declare class HoverAnimation extends RmAnimation {
    private _series;
    _focused: boolean;
    _marker: MarkerSeriesPointView;
    constructor(sv: SeriesView<Series>, marker: MarkerSeriesPointView, focused: boolean, endHandler: RmAnimationEndHandler);
    protected _doStart(): void;
    protected _doUpdate(rate: number): boolean;
    protected _doStop(): void;
}
interface IPointView {
    point: DataPoint;
    tooltipColor(): string;
    tooltipPos?(): IPoint;
    saveStyles(): void;
    restoreStyles(): void;
}
declare class PointViewPool<T extends RmElement & IPointView> extends ElementPool<T> {
    constructor(owner: RmElement, creator: {
        new (doc: Document, group?: boolean): T;
    }, className?: string);
    _getElementId(view: T): number;
}
declare class PointLabelView extends LabelElement {
    point: DataPoint;
    constructor(doc: Document);
}
declare class PointLabelContainer extends LayerElement {
    private _labels;
    private _maps;
    constructor(doc: Document, styleName: string);
    isEmpty(): boolean;
    clear(): void;
    private $_prepareLabel;
    prepare(doc: Document, owner: SeriesView): void;
    /**
     * point가 null이 아니라고 전제.
     */
    get(point: DataPoint, index: number): PointLabelView;
    removePoint(p: DataPoint, delay: number): void;
}
declare class PointCalloutView extends GroupElement {
    private _line;
    private _dummy;
    private _anchor;
    point: DataPoint;
    index: number;
    constructor(doc: Document);
    render(model: DataPointCallout, point: DataPoint, coords: number[], pointColor: string): this;
    setColor(color: string): this;
}
declare class CalloutMaskView extends MaskElement {
    private _back;
    private _mask;
    constructor(doc: Document);
    setBackground(r: IRect): this;
    setCircle(cx: number, cy: number, rd: number): this;
    setRects(r1: IRect, r2?: IRect): this;
}
declare class PointCalloutContainer extends LayerElement {
    private _maskLayer;
    private _masks;
    private _callouts;
    private _map;
    constructor(doc: Document, styleName: string);
    isEmpty(): boolean;
    clear(): void;
    prepare(doc: Document, owner: SeriesView): void;
    /**
     * point가 null이 아니라고 전제.
     */
    get(point: DataPoint): PointCalloutView;
    setMask(cv: PointCalloutView, pts: number[]): CalloutMaskView;
}
declare abstract class PointElement<T extends DataPoint = DataPoint> extends PathElementEx implements IPointView {
    _static: boolean;
    point: T;
    constructor(doc: Document, group?: boolean);
    tooltipColor(): string;
    protected _drawSpline(pts: {
        x: number;
        y: number;
    }[], start: number, end: number, sb: PathBuilder): void;
    protected _checkStatic(): boolean;
    protected _clearScale(view: RmElement): void;
    protected _aniScale(view: RmElement, seriesVr: number): void;
}
declare class PointContainer extends LayerElement {
}
type PointPositioner = (x: number, y: number, wPoint: number, hPoint: number) => IPoint;
type LabelPositioner = (x: number, y: number, rLabel: IRect, wPoint: number, hPoint: number, off: number) => IPoint;
interface ISeriesViewOwner {
    getSiblingOf(sv: SeriesView): SeriesView;
}
/**
 * @internal
 *
 * View base for map chart series.
 */
declare abstract class SeriesView<T extends Series = Series> extends ChartElement<T> {
    static readonly POINT_CLASS = "rm-point";
    static readonly DATA_HOVER = "hover";
    static readonly DATA_UNHOVER = "unhover";
    static readonly LEGEND_MARKER = "rm-legend-item-marker";
    static register(...clses: [typeof Series<SeriesOptions>, typeof SeriesView<Series>][]): void;
    static seriesOf(pv: RmElement): SeriesView;
    private static _createDrawers;
    private static _drawers;
    static getDrawer(shape: string): ShapeDrawer;
    protected _pointPositioner: {
        [pos: string]: PointPositioner;
    };
    protected _labelPositioner: {
        [pos: string]: LabelPositioner;
    };
    _second: boolean;
    _h1: number;
    _h2: number;
    _pointLayer: LayerElement;
    _pointContainer: PointContainer;
    _calloutContainer: PointCalloutContainer;
    _labelContainer: PointLabelContainer;
    protected _visPoints: DataPoint[];
    private _growRate;
    private _posRate;
    protected _prevRate: number;
    _animations: Animation[];
    _hoverAnis: HoverAnimation[];
    _hoverPts: IPointView[];
    protected _wBody: number;
    protected _hBody: number;
    _scale: number;
    protected _scaler: (coord: MapCoord) => MapCoord;
    _aniOpacity: number;
    constructor(doc: Document, className: string, needLabels?: boolean);
    get owner(): ISeriesViewOwner;
    protected _setCalcedColor(model: T, dom: Element): void;
    protected _setModelColor(color: string): void;
    prepare(doc: Document, model: T): void;
    prepareLayout(doc: Document): void;
    render(wBody: number, hBody: number): void;
    reset(): void;
    isPointLabelVisible(p: DataPoint): boolean;
    isPointCalloutVisible(p: DataPoint): boolean;
    setScaler(scaler: (coord: MapCoord) => MapCoord): void;
    getPointView(dom: Element): IPointView;
    pointerMoved(x: number, y: number, dom: Element): boolean;
    setHoverStyle(pv: RmElement): void;
    defaultAnimation(): string;
    setGrowRate(rate: number): void;
    setPosRate(rate: number): void;
    setPrevRate(rate: number): void;
    pointByDom(elt: Element): IPointView;
    click(elt: Element): void;
    select(elt: Element, clear: boolean): void;
    toggleSelect(elt: Element): void;
    runPointAddAnimation(p: DataPoint): void;
    protected abstract _doPrepeare(doc: Document, model: T, dataDirty: boolean): void;
    protected abstract _doRender(width: number, height: number): void;
    protected abstract _doReset(): void;
    protected get growRate(): number;
    _animating(): boolean;
    protected _getPointPositioner(pos: PointViewPosition, autoPos: string): PointPositioner;
    protected _getLabelPositioner(pos: PointLabelPosition, autoPos: string): LabelPositioner;
    protected _labelViews(): PointLabelContainer;
    protected _calloutViews(): PointCalloutContainer;
    protected _getPointPool(): PointViewPool<PointElement>;
    protected _collectVisPoints(model: T): DataPoint[];
    protected _setPointColor(v: RmElement, color: string): void;
    protected _setPointStyle(v: RmElement, model: T, p: DataPoint): void;
    protected _doPointerMoved(x: number, y: number, dom: Element): boolean;
    protected _getGrowRate(): number;
    protected _doViewRateChanged(rate: number): void;
    protected _doPosRateChanged(rate: number): void;
    protected _doPrevRateChanged(rate: number): void;
    protected _getShowAnimation(): RmAnimation;
    protected _runShowEffect(firstTime: boolean): void;
    _animationStarted(ani: Animation): void;
    _animationFinished(ani: Animation): void;
    protected _layoutLabel(lv: PointLabelView, parent: Element): PointLabelView;
    protected _legendColorProp(): string;
    protected _doPointClicked(view: IPointView): void;
}
declare abstract class MarkerSeriesPointView<T extends MarkerSeriesPoint = MarkerSeriesPoint> extends PointElement<T> implements IPointView {
    beginHover(series: SeriesView, focused: boolean): void;
    setHoverRate(series: SeriesView, focused: boolean, rate: number): void;
    endHover(series: SeriesView, focused: boolean): void;
    distance(rd: number, x: number, y: number): number;
    prepare(): void;
}
declare abstract class MarkerSeriesView<T extends MarkerSeries = MarkerSeries> extends SeriesView<T> {
    protected _markers: PointViewPool<MarkerSeriesPointView<MarkerSeriesPoint>>;
    constructor(doc: Document, styleName: string);
    protected abstract _createMarkers(container: RmElement): PointViewPool<MarkerSeriesPointView<MarkerSeriesPoint>>;
    getHintDistance(): number;
    protected _getPointPool(): PointViewPool<PointElement>;
}

interface IBodyViewOwner {
    showTooltip(series: Series, pv: IPointView, map: RmElement, p: IPoint): void;
    hideTooltip(): void;
    tooltipVisible(): boolean;
    getScaleView(scale: ColorScale): ColorScaleView;
}
/**
 * @private
 */
declare class BodyView extends ChartElement<Body> implements IAnnotationAnchorOwner {
    private _owner;
    private _back;
    private _mapBack;
    private _contentLayer;
    private _axisGuideContainer;
    private _secondAxisGuideContainer;
    private _seriesContainer;
    private _secondContainer;
    private _annotationContainer;
    private _frontAnnotationContainer;
    _annotationViews: AnnotationView<Annotation>[];
    private _annotationMap;
    private _annotations;
    private _frontAxisGuideContainer;
    private _secondFrontAxisGuideContainer;
    private _crosshairView;
    private _seconded;
    private _h1;
    private _h2;
    private _clip;
    private _clipMap;
    private _requestShow;
    private _transformInfo;
    private _mousePos;
    private _prevPrj;
    constructor(doc: Document, owner: IBodyViewOwner);
    getAnnotationAnchor(model: any): RmElement;
    get transformInfo(): IBodyTransform;
    get isProjectionChanged(): boolean;
    getSeries(series: Series): SeriesView<Series<SeriesOptions>>;
    prepare(doc: Document, model: Body): void;
    protected _doMeasure(doc: Document, model: Body, hintWidth: number, hintHeight: number): ISize;
    protected _doLayout(param: any): void;
    afterRender(): void;
    clean(): void;
    reset(): void;
    getTooltipPos(): IPoint;
    pointerMoved(x: number, y: number, target: EventTarget): boolean;
    seriesByDom(dom: Element): SeriesView;
    showSeries(series: Series): void;
    hideSeries(series: Series): void;
    /**
     * 클릭된 픽셀 좌표(x, y)를 경위도 좌표로 변환한다.<br/>
     * 픽셀 좌표는 BodyView의 Dom 노드의 오프셋 좌표여야 한다.
     *
     * ```ts
     * // example
     * // 객체 e는 bodyView.dom의 클릭 이벤트일 때,
     * const coord = this.pointToMap({
     *     x: e.offsetX,
     *     y: e.offsetY,
     * });
     * ```
     *
     * @param point 픽셀 좌표
     * @returns 경위도 좌표
     */
    mouseToMap(point: IPoint): MapCoord;
    pointToMap(x: number, y: number): MapCoord;
    private $_prepareSeries;
    private $_prepareLayoutSeries;
    private $_prepareAnnotations;
    private $_layoutAnnotations;
    private $_layoutAxisGuides;
    /**
     * 스크롤 상황인 경우에 한해 클리핑 적용.
     *
     * 단, 프로젝션에서 클리핑을 지원해야 적용할 수 있다.
     * prj.isClipping() 반환값이 true여야 하며, prj.getClipBounds()는 클리핑 영역을 반환해야 한다.
     *
     * 프로젝션이 변경된 경우, 클리핑 영역을 갱신한다.
     */
    private $_doClipPathLayout;
}

declare class TitleView extends BoundableElement<Title> {
    isSub: boolean;
    static readonly TITLE_CLASS = "rm-title";
    static readonly SUBTITLE_CLASS = "rm-subtitle";
    private _textView;
    private _richText;
    constructor(doc: Document, isSub: boolean);
    protected _marginable(): boolean;
    protected _setBackgroundStyle(back: RectElement): void;
    protected _doMeasure(doc: Document, model: Title, hintWidth: number, hintHeight: number): ISize;
    protected _doLayout(): void;
}

declare class ButtonElement extends RmElement {
    static readonly STYLE = "rm-button";
    static readonly BACK_STYLE = "rm-button-background";
    private _back;
    private _textView;
    constructor(doc: Document, text: string, style?: string);
    get text(): string;
    setText(text: string): void;
    layout(sz?: ISize, style?: SVGStyleOrClass): void;
    click(): boolean;
    setVisible(value: boolean): boolean;
}

declare class PanelButtonView extends ButtonElement {
    callback: () => void;
    constructor(doc: Document, text: string, callback: () => void);
    click(): boolean;
}
declare abstract class BodyPanelView<T extends BodyPanel = BodyPanel> extends ChartElement<T> {
}

declare class DrilldownPanelView extends BodyPanelView<DrilldownPanel> {
    private _btnBack;
    private _textViews;
    private _seperators;
    private _history;
    constructor(doc: Document);
    getButton(dom: Element): PanelButtonView;
    click(dom: Element): boolean;
    protected _doMeasure(doc: Document, model: DrilldownPanel, hintWidth: number, hintHeight: number): ISize;
    protected _doLayout(param: any): void;
}

/**
 * @internal
 */
declare class CreditsView extends ChartElement<Credits> {
    private _textView;
    constructor(doc: Document);
    click(dom: Element): void;
    locateInner(op: CreditsOptions, rBody: Rectangle): {
        x: number;
        y: number;
    };
    locateOuter(op: CreditsOptions, width: number, height: number): {
        x: number;
        y: number;
    };
    protected _doMeasure(doc: Document, model: Credits, intWidth: number, hintHeight: number): ISize;
}
/**
 * @private
 */
declare class ChartView extends LayerElement implements IAnnotationAnchorOwner {
    private _model;
    private _annotationContainer;
    private _bodyView;
    private _titleSectionView;
    private _widgetLayer;
    private _widgetMap;
    private _frontAnnotationContainer;
    private _annotationViews;
    private _annotationMap;
    private _annotations;
    private _zoomPanelView;
    private _drilldownPanelView;
    private _mapScaleView;
    private _creditView;
    private _tooltipView;
    constructor(doc: Document);
    getAnnotationAnchor(model: any): RmElement;
    titleView(): TitleView;
    subtitleView(): TitleView;
    bodyView(): BodyView;
    drilldownPanelView(): DrilldownPanelView;
    getWidgetViews(loc: ChartItemLocation, widgets: MapWidget[]): MapWidgetView<MapWidget<MapWidgetOptions>>[];
    measure(doc: Document, m: ChartObject, hintWidth: number, hintHeight: number): void;
    layout(): void;
    showTooltip(series: Series, pv: IPointView, map: BodyView, p: IPoint): void;
    tooltipVisible(): boolean;
    hideTooltip(): void;
    clean(): void;
    reset(): void;
    legendByDom(dom: Element): LegendItem;
    seriesByDom(dom: Element): SeriesView;
    creditByDom(dom: Element): CreditsView;
    getWidgetView(widget: MapWidget): MapWidgetView<MapWidget<MapWidgetOptions>>;
    getScaleView(scale: ColorScale): ColorScaleView;
    pointerMoved(x: number, y: number, target: EventTarget): void;
    click(ev: PointerEvent, elt: Element, sv: SeriesView): void;
    getButton(dom: Element): ButtonElement;
    buttonClicked(button: ButtonElement): void;
    updateAnnotation(anno: Annotation): void;
    isAnimating(): void;
    private $_prepareAnnotations;
    private $_layoutAnnotations;
    private $_layoutPanel;
}

/**
 * @internal
 */
declare class ChartControl extends RmControl implements IMapChartEvents {
    private static readonly LOADING_VIEW_LENGTH;
    private _chart;
    private _chartView;
    private _loadingView;
    private _errorView;
    constructor(doc: Document, container: string | HTMLDivElement);
    protected _initControl(document: Document, container: string | HTMLDivElement, className: string): void;
    protected _doPointerDown(event: PointerEvent): boolean;
    onModelChanged(chart: ChartObject, item: ChartItem<ChartItemOptions>, tag: any): void;
    onDataChanged(chart: ChartObject, series: Series): void;
    onProjectionChanged(chart: ChartObject, projection: MapProjection): void;
    onMapChanged(chart: ChartObject, map: MapModel): void;
    onZoomChanged(chart: ChartObject, oldZoom: number): void;
    onPointAdded(chart: ChartObject, series: Series, p: DataPoint, animate: boolean): void;
    onRequestRender(chart: ChartObject, now: boolean): void;
    onRequestShowSeries(chart: ChartObject, series: Series, visible: boolean): void;
    onExportRequest(chart: ChartObject, options: ExportOptions): void;
    onPointToMap(chart: ChartObject, x: number, y: number): MapCoord;
    /**
     * chart model.
     */
    get chart(): MapChart;
    set chart(value: MapChart);
    get model(): ChartObject;
    changeModel(model: ChartObject, oldModel: ChartObject): void;
    chartView(): ChartView;
    refresh(): void;
    use(_module: any): void;
    showLoadingView(): void;
    hideLoadingView(): void;
    showErrorView(message?: string): void;
    hideErrorView(): void;
    protected _creatDefaultTool(): MapTool;
    protected _doBeforeRender(root: RmElement): void;
    protected _doRender(bounds: IRect): void;
    protected _doAfterRender(): void;
    private _loadModules;
    private _export;
    private $_renderLoadingView;
}

declare class ExternalModuleManager {
    private static instance;
    static ModuleNames: {
        realchart: string;
    };
    private _moduleMap;
    private constructor();
    static getInstance(): ExternalModuleManager;
    registerModule(id: keyof typeof ExternalModuleManager.ModuleNames, externalModule: any): void;
    findModule(id: keyof typeof ExternalModuleManager.ModuleNames): any | null;
}

declare class BarSeriesPoint extends OrthogonalSparkSeriesPoint {
}
/**
 * Bar 시리즈 모델.<br/>
 * {@page op.SeriesOptions#type}은 {@page config.series.bar 'bar'}이고,
 * {@page options 설정} 모델은 {@page op.BarSeriesOptions}이다.
 */
declare class BarSeries extends OrthogonalSparkSeries<BarSeriesOptions> {
    static type: string;
    static defaults: BarSeriesOptions;
    private _subLabel;
    protected _doInit(op: BarSeriesOptions): void;
    get subLabel(): DataPointLabel<DataPointLabelOptions>;
    get reversed(): boolean;
    pointLabelCount(): number;
    protected _createPoint(source: any): BarSeriesPoint;
    protected _defLabelOff(): number;
    protected _createLegendMarker(doc: Document, size: number): RmElement;
}

declare class BubbleSeriesPoint extends MarkerSeriesPoint {
    position: PointViewPosition;
    labelCount(): number;
    protected _readObject(series: ISeries<BubbleSeriesPoint>, v: any): void;
    protected _valuesChanged(prev: any): boolean;
}
/**
 * Bubble 시리즈 모델.<br/>
 * {@page op.SeriesOptions#type}은 {@page config.series.bubble 'bubble'}이고,
 * {@page options 설정} 모델은 {@page op.BubbleSeriesOptions}이다.
 */
declare class BubbleSeries extends MarkerSeries<BubbleSeriesOptions> {
    static type: string;
    static defaults: BubbleSeriesOptions;
    private _subLabel;
    private _minSizeDim;
    private _maxSizeDim;
    _extMin: number;
    _extMax: number;
    _vMin: number;
    _vMax: number;
    _noSize: boolean;
    private _alignToSurface;
    protected _doInit(op: BubbleSeriesOptions): void;
    get subLabel(): DataPointLabel<DataPointLabelOptions>;
    get alignToSurface(): boolean;
    set alignToSurface(value: boolean);
    getShape(): Shape;
    getPixelMinMax(len: number): {
        min: number;
        max: number;
    };
    getRadius(value: number, pxMin: number, pxMax: number): number;
    getSubLabelOff(): number;
    protected _doApply(options: BubbleSeriesOptions): void;
    pointLabelCount(): number;
    getPointLabels(): DataPointLabel<DataPointLabelOptions>[];
    protected _createPoint(source: any): BubbleSeriesPoint;
    protected _doPrepareRender(chart: IChart, op: BubbleSeriesOptions): void;
}

declare class CircleGaugeItem<OP extends ChartItemOptions> extends ChartItem<OP> {
    gauge: CircleGauge;
    constructor(gauge: CircleGauge);
}
/**
 * 원형게이지 내부 원 모델.<br/>
 * {@page options} 모델은 {@page op.CircleGaugeFaceptions}이다.
 */
declare class CircleGaugeFace extends CircleGaugeItem<CircleGaugeFaceOptions> {
    static defaults: CircleGaugeFaceOptions;
}
/**
 * 원형게이지 테두리(rim) 모델.<br/>
 * {@page options} 모델은 {@page op.CircleGaugeRimOptions}이다.
 */
declare class CircleGaugeRim extends CircleGaugeItem<CircleGaugeRimOptions> {
    static defaults: CircleGaugeRimOptions;
    private _thicknessDim;
    protected _doApply(options: CircleGaugeValueRimOptions): void;
}
/**
 * 값을 표시하는 테두리(rim) 모델.<br/>
 * {@page options} 모델은 {@page op.CircleGaugeValueRimOptions}이다.
 */
declare class CircleGaugeValueRim extends CircleGaugeItem<CircleGaugeValueRimOptions> {
    static defaults: CircleGaugeValueRimOptions;
    private _thicknessDim;
    getThickness(domain: number): number;
    protected _doApply(options: CircleGaugeValueRimOptions): void;
}
/**
 * 원형게이지 침(hand) 모델.<br/>
 * {@page options} 모델은 {@page op.CircleGaugeHandOptions}이다.
 */
declare class CircleGaugeHand extends CircleGaugeItem<CircleGaugeHandOptions> {
    static defaults: CircleGaugeHandOptions;
    private _radiusDim;
    private _lengthDim;
    private _offsetDim;
    getExtents(domain: number): {
        radius: number;
        length: number;
        offset: number;
    };
    protected _doApply(options: CircleGaugeHandOptions): void;
}
/**
 * 원형게이지 핀 모델.<br/>
 * {@page options} 모델은 {@page op.CircleGaugePinOptions}이다.
 */
declare class CircleGaugePin extends CircleGaugeItem<CircleGaugePinOptions> {
    static defaults: CircleGaugePinOptions;
    private _radiusDim;
    getRadius(domain: number): number;
    protected _doApply(options: CircleGaugePinOptions): void;
}
declare class CircleGaugeLabel extends ChartText<CircleGaugeLabelOptions> {
    static defaults: CircleGaugeLabelOptions;
    private _offsetXDim;
    private _offsetYDim;
    _domain: IRichTextDomain;
    getOffset(width: number, height: number): IPoint;
    protected _doApply(options: CircleGaugeLabelOptions): void;
}
interface ICircleGaugeExtents {
    radius: number;
    radiusThick: number;
    inner: number;
    value: number;
}
declare class CircularProps {
    private _centerX;
    private _centerY;
    private _radius;
    private _innerRadius;
    private _valueRadius;
    private _centerXDim;
    private _centerYDim;
    private _radiusDim;
    private _innerDim;
    private _valueDim;
    _startRad: number;
    _handRad: number;
    _sweepRad: number;
    constructor();
    centerX(): PercentSize;
    setCenterX(value: PercentSize): void;
    centerY(): PercentSize;
    setCenterY(value: PercentSize): void;
    radius(): PercentSize;
    setRadius(value: PercentSize): void;
    innerRadius(): PercentSize;
    setInnerRadius(value: PercentSize): void;
    valueRadius(): PercentSize;
    setValueRadius(value: PercentSize): void;
    getCenter(gaugeWidth: number, gaugeHeight: number): {
        x: number;
        y: number;
    };
    getExtents(gaugeSize: number): ICircleGaugeExtents;
    prepareAngles(startAngle: number, sweepAngle: number): void;
}
/**
 * { name: '', coords: [lon, lat] },
 * [name, lon, lat], [lon, lat]
 */
declare class CircleGaugePoint extends GaugePoint {
    protected _readObject(series: ISeries<CircleGaugePoint>, v: any): void;
}
/**
 * Circle 게이지 모델.<br/>
 * {@page op.SeriesOptions#type}은 {@page config.series.gauge 'gauge'}이고,
 * {@page options 설정} 모델은 {@page op.CircleGaugeOptions}이다.
 */
declare class CircleGauge extends ValueGauge<CircleGaugeOptions> {
    static readonly DEF_CENTER = "50%";
    static readonly DEF_RADIUS = "50%";
    static readonly DEF_INNER = "80%";
    static type: string;
    static defaults: CircleGaugeOptions;
    private _face;
    private _rim;
    private _valueRim;
    private _hand;
    private _pin;
    private _gaugeLabel;
    _props: CircularProps;
    protected _doInit(op: CircleGaugeOptions): void;
    get face(): CircleGaugeFace;
    get rim(): CircleGaugeRim;
    get valueRim(): CircleGaugeValueRim;
    get hand(): CircleGaugeHand;
    get pin(): CircleGaugePin;
    get gaugeLabel(): CircleGaugeLabel;
    protected _createPoint(source: any): CircleGaugePoint;
    protected _doApply(options: CircleGaugeOptions): void;
    protected _doPrepareRender(chart: IChart): void;
}

declare class ClockGaugeItem<OP extends ChartItemOptions> extends ChartItem<OP> {
    gauge: ClockGauge;
    constructor(gauge: ClockGauge);
}
/**
 * Clock 게이지 테두리(rim) 설정 모델.<br/>
 * {@page options} 모델은 {@page op.ClockGaugeRimOptions}이다.
 */
declare class ClockGaugeRim extends ClockGaugeItem<ClockGaugeRimOptions> {
    static defaults: ClockGaugeRimOptions;
    private _thicknessDim;
    getThickness(domain: number): number;
    protected _doApply(options: ClockGaugeRimOptions): void;
}
/**
 * Clock 게이지 시/분침(hand) 설정 모델.<br/>
 * {@page options} 모델은 {@page op.ClockGaugeHandOptions}이다.
 */
declare class ClockGaugeHand<OP extends ClockGaugeHandOptions = ClockGaugeHandOptions> extends ClockGaugeItem<OP> {
    static defaults: ClockGaugeHandOptions;
    private _lengthDim;
    getLength(domain: number): number;
    protected _doApply(options: ClockGaugeHandOptions): void;
}
/**
 * Clock 게이지 분침 모델.<br/>
 * {@page options} 모델은 {@page op.ClockGaugeHandOptions}이다.
 */
declare class ClockGaugeMinuteHand extends ClockGaugeHand<ClockGaugeHandOptions> {
    static defaults: ClockGaugeHandOptions;
}
/**
 * Clock 게이지 초침(hand) 설정 모델.<br/>
 * {@page options} 모델은 {@page op.ClockGaugeSecondHandOptions}이다.
 */
declare class ClockGaugeSecondHand extends ClockGaugeHand<ClockGaugeSecondHandOptions> {
    static defaults: ClockGaugeSecondHandOptions;
}
/**
 * Clock 게이지 tick 설정 모델.<br/>
 * {@page options} 모델은 {@page op.ClockGaugeTickOptions}이다.
 */
declare class ClockGaugeTick extends ClockGaugeItem<ClockGaugeTickOptions> {
    static defaults: ClockGaugeTickOptions;
}
/**
 * Clock 게이지 tick 라벨 설정 모델.<br/>
 * {@page options} 모델은 {@page op.ClockGaugeTickLabelOptions}이다.
 */
declare class ClockGaugeTickLabel extends ClockGaugeItem<ClockGaugeTickLabelOptions> {
    static defaults: ClockGaugeTickLabelOptions;
}
/**
 * Clock 게이지 중심 pin 설정 모델.<br/>
 * {@page options} 모델은 {@page op.ClockGaugePinOptions}이다.
 */
declare class ClockGaugePin extends ClockGaugeItem<ClockGaugePinOptions> {
    static defaults: ClockGaugePinOptions;
}
/**
 * Clock 게이지 내부에 표시되는 라벨 설정 모델.<br/>
 * {@page options} 모델은 {@page op.ClockGaugeLabelOptions}이다.
 */
declare class ClockGaugeLabel extends ChartText<ClockGaugeLabelOptions> {
    static defaults: ClockGaugeLabelOptions;
}
/**
 * { name: '', coords: [lon, lat] },
 * [name, lon, lat], [lon, lat]
 */
declare class ClockGaugePoint extends GaugePoint {
    timezone: number;
    time: number | Date;
    getTime(): Date;
    protected _readObject(series: ISeries<ClockGaugePoint>, v: any): void;
}
/**
 * Clock 게이지 모델.<br/>
 * {@page op.SeriesOptions#type}은 {@page config.series.clock 'clock'}이고,
 * {@page options 설정} 모델은 {@page op.ClockGaugeOptions}이다.
 */
declare class ClockGauge extends Gauge<ClockGaugeOptions> {
    static readonly DEF_CENTER = "50%";
    static readonly DEF_RADIUS = "50%";
    static type: string;
    static defaults: ClockGaugeOptions;
    private _face;
    private _rim;
    private _hourHand;
    private _minuteHand;
    private _secondHand;
    private _tick;
    private _tickLabel;
    private _pin;
    private _gaugeLabel;
    private _centerX;
    private _centerY;
    private _radius;
    private _centerXDim;
    private _centerYDim;
    private _radiusDim;
    protected _doInit(op: ClockGaugeOptions): void;
    get face(): ChartItem<ChartItemOptions>;
    get rim(): ClockGaugeRim;
    get hourHand(): ClockGaugeHand<ClockGaugeHandOptions>;
    get minuteHand(): ClockGaugeMinuteHand;
    get secondHand(): ClockGaugeSecondHand;
    get tick(): ClockGaugeTick;
    get tickLabel(): ClockGaugeTickLabel;
    get pin(): ClockGaugePin;
    get gaugeLabel(): ClockGaugeLabel;
    getExtents(gaugeWidth: number, gaugeHeight: number, rate: number): {
        cx: number;
        cy: number;
        rd: number;
    };
    protected _createPoint(source: any): ClockGaugePoint;
    protected _doApply(options: ClockGaugeOptions): void;
}

/**
 * { name: '', coords: [lon, lat] },
 * [name, lon, lat], [lon, lat]
 */
declare class FigureSeriesPoint extends MarkerSeriesPoint {
    figure: string;
    position: PointViewPosition;
    protected _readObject(series: ISeries<FigureSeriesPoint>, v: any): void;
}
/**
 * Figure 시리즈 모델.<br/>
 * {@page op.SeriesOptions#type}은 {@page config.series.figure 'figure'}이고,
 * {@page options 설정} 모델은 {@page op.FigureSeriesOptions}이다.
 */
declare class FigureSeries extends ValueSeries<FigureSeriesOptions> {
    static type: string;
    static defaults: FigureSeriesOptions;
    private _innerLabel;
    protected _doInit(op: FigureSeriesOptions): void;
    getFigure(p: FigureSeriesPoint): string;
    get innerLabel(): DataPointLabel<DataPointLabelOptions>;
    protected _doApply(options: FigureSeriesOptions): void;
    protected _createPoint(source: any): FigureSeriesPoint;
    protected _defLabelOff(): number;
    protected _doLoadPoints(src: any): void;
}

/**
 * { name: '', coords: [lon, lat], imageUrl: '' },
 */
declare class ImageSeriesPoint extends DataPoint {
    imageUrl: string;
    position: PointViewPosition;
    protected _readObject(series: ImageSeries, v: any): void;
}
/**
 * Image 시리즈 모델.<br/>
 * {@page op.SeriesOptions#type}은 {@page config.series.image 'image'}이고,
 * {@page options 설정} 모델은 {@page op.ImageSeriesOptions}이다.<br/>
 *
 * 데이터포인트에 imageUrl 속성이 지정되면 그 값을,
 * 아니면 {@page imageField}에 지정한 속성의 값을 {@page rootUrl}에 더해 이미지 경로를 만든다.
 */
declare class ImageSeries extends Series<ImageSeriesOptions> {
    static type: string;
    static defaults: ImageSeriesOptions;
    _imageFielder: (src: any) => string;
    private _root;
    getUrl(p: ImageSeriesPoint): string;
    protected _createLabel(chart: IChart): DataPointLabel;
    protected _createPoint(source: any): ImageSeriesPoint;
    protected _createFielders(op: ImageSeriesOptions): void;
    protected _defLabelOff(): number;
    protected _doApply(options: ImageSeriesOptions): void;
}

declare class LineSeriesPoint extends OrthogonalSparkSeriesPoint {
}
declare class LineSeriesArea extends ChartItem<LineSeriesAreaOptions> {
    static defaults: LineSeriesOptions;
}
/**
 * Line 시리즈 모델.<br/>
 * {@page op.SeriesOptions#type}은 {@page config.series.line 'line'}이고,
 * {@page options 설정} 모델은 {@page op.LineSeriesOptions}이다.
 */
declare class LineSeries extends OrthogonalSparkSeries<LineSeriesOptions> {
    static type: string;
    static defaults: LineSeriesOptions;
    private _area;
    protected _doInit(op: LineSeriesOptions): void;
    get area(): LineSeriesArea;
    protected _createPoint(source: any): LineSeriesPoint;
    protected _defLabelOff(): number;
    protected _createLegendMarker(doc: Document, size: number): RmElement;
}

/**
 * { name: '', coords: [lon, lat] },
 * [name, lon, lat], [lon, lat]
 */
declare class PanelSeriesPoint extends ValuePoint {
    position: PointViewPosition;
}
declare abstract class PanelSeriesSection<OP extends PanelSeriesSectionOptions = PanelSeriesSectionOptions> extends ChartItem<OP> {
    series: PanelSeries;
    static defaults: PanelSeriesHeaderOptions;
    protected _richTextImpl: SvgRichText;
    private _point;
    _domain: IRichTextDomain;
    constructor(series: PanelSeries);
    getTextDomain(p: PanelSeriesPoint): IRichTextDomain;
    prepareRich(text: string): void;
    buildSvg(view: TextElement, maxWidth: number, maxHeight: number, domain: IRichTextDomain): void;
}
declare class PanelSeriesHeader extends PanelSeriesSection<PanelSeriesHeaderOptions> {
    static defaults: PanelSeriesHeaderOptions;
    private _minSizeDim;
    getMinSize(domain: number): number;
    protected _doApply(options: ChartTextOptions): void;
}
declare class PanelSeriesBody extends PanelSeriesSection<PanelSeriesBodyOptions> {
    static defaults: PanelSeriesBodyOptions;
}
/**
 * Panel 시리즈 모델.<br/>
 * {@page op.SeriesOptions#type}은 {@page config.series.point 'panel'}이고,
 * {@page options 설정} 모델은 {@page op.PanelSeriesOptions}이다.
 */
declare class PanelSeries extends ValueSeries<PanelSeriesOptions> {
    static readonly DEF_MIN_WIDTH = 80;
    static readonly DEF_MIN_HEIGHT = 50;
    static type: string;
    static defaults: PanelSeriesOptions;
    private _header;
    private _divider;
    private _body;
    _vertical: boolean;
    _width: number;
    _height: number;
    _minWidth: number;
    _minHeight: number;
    _maxWidth: number;
    _maxHeight: number;
    protected _doInit(op: PanelSeriesOptions): void;
    get header(): PanelSeriesHeader;
    get divider(): ChartItem<ChartItemOptions>;
    get body(): PanelSeriesBody;
    getExtents(calcedWidth: number, calcedHeight: number): ISize;
    protected _createLabel(chart: IChart): DataPointLabel;
    protected _createPoint(source: any): PanelSeriesPoint;
    pointLabelCount(): number;
    legendMarker(doc: Document, size: number): RmElement;
    protected _doApply(options: PanelSeriesOptions): void;
}

declare class PieSeriesPoint extends SparkSeriesPoint {
}
declare class PieSeriesThresholdImpl implements PieSeriesThreshold {
    value: number;
    radius: number;
    style: SVGStyleOrClass;
    constructor(value: number, radius: number, style: SVGStyleOrClass);
}
/**
 * Pie 시리즈 모델.<br/>
 * {@page op.SeriesOptions#type}은 {@page config.series.pie 'pie'}이고,
 * {@page options 설정} 모델은 {@page op.PieSeriesOptions}이다.
 */
declare class PieSeries extends SparkSeries<PieSeriesOptions> {
    static type: string;
    static defaults: PieSeriesOptions;
    _startRad: number;
    _totalRad: number;
    private _radiusDim;
    private _thresholds;
    getRadius(domain: number): number;
    hasThreshold(): PieSeriesThresholdImpl[];
    getThreshold(value: number): PieSeriesThresholdImpl;
    protected _createPoint(source: any): PieSeriesPoint;
    protected _defLabelOff(): number;
    protected _doApply(options: PieSeriesOptions): void;
    protected _doPrepareRender(chart: IChart, op: PieSeriesOptions): void;
    private $_parseThresholds;
}

/**
 * { name: '', coords: [lon, lat] },
 * [name, lon, lat], [lon, lat]
 */
declare class PinSeriesPoint extends MarkerSeriesPoint {
    radius: number;
    position: PointViewPosition;
    protected _readObject(series: ISeries<PinSeriesPoint>, v: any): void;
}
/**
 * Point 시리즈 모델.<br/>
 * {@page op.SeriesOptions#type}은 {@page config.series.point 'point'}이고,
 * {@page options 설정} 모델은 {@page op.PinSeriesOptions}이다.
 */
declare class PinSeries extends MarkerSeries<PinSeriesOptions> {
    private static readonly DEF_RADIUS;
    static type: string;
    static defaults: PinSeriesOptions;
    private _rd;
    private _innerRd;
    private _minValue;
    private _maxValue;
    private _colorObj;
    private _colorRanger;
    getExt(p: PinSeriesPoint, rate: number): {
        cx: number;
        cy: number;
        rd: number;
        innerRd: number;
    };
    get color(): Color;
    protected _doApply(options: PinSeriesOptions): void;
    protected _createPoint(source: any): PinSeriesPoint;
    protected _defLabelOff(): number;
    protected _doLoadPoints(src: any): void;
    protected _createLegendMarker(doc: Document, size: number): RmElement;
    setCalcedColor(cs: CSSStyleDeclaration, prop: string): void;
    getColorScale(): string | number;
    getValueRange(): {
        min: number;
        max: number;
    };
    getRangedColor(p: PinSeriesPoint): string;
    protected _doPrepareRender(chart: IChart, op: PinSeriesOptions): void;
}

/**
 * { name: '', coords: [lon, lat] },
 * [name, lon, lat], [lon, lat]
 */
declare class PointSeriesPoint extends MarkerSeriesPoint {
    position: PointViewPosition;
    protected _readObject(series: ISeries<PointSeriesPoint>, v: any): void;
    protected _valuesChanged(prev: any): boolean;
}
/**
 * Point 시리즈 모델.<br/>
 * {@page op.SeriesOptions#type}은 {@page config.series.point 'point'}이고,
 * {@page options 설정} 모델은 {@page op.PointSeriesOptions}이다.
 */
declare class PointSeries extends MarkerSeries<PointSeriesOptions> {
    static type: string;
    static defaults: PointSeriesOptions;
    private _shape;
    private _stroke;
    private _strokeWidth;
    constructor(chart: IChart);
    getShape(): Shape;
    getRadius(): number;
    setLegendMarkerStyle(marker: RmElement): void;
    protected _createPoint(source: any): PointSeriesPoint;
    protected _defLabelOff(): number;
    protected _doLoadPoints(src: any): void;
    setCalcedColor(cs: CSSStyleDeclaration, prop: string): void;
    protected _createLegendMarker(doc: Document, size: number): RmElement;
    legendMarker(doc: Document, size: number): RmElement;
}

declare class RouteSeriesPoint extends DataPoint {
    coords: [MapCoord, MapCoord];
    path: any[];
    get lon1(): number;
    get lat1(): number;
    get lon2(): number;
    get lat2(): number;
    protected _assignTo(proxy: any): any;
    protected _readObject(series: ISeries<RouteSeriesPoint>, v: any): void;
}
/**
 * Route 시리즈 모델.<br/>
 * {@page op.SeriesOptions#type}은 {@page config.series.route 'route'}이고,
 * {@page options 설정} 모델은 {@page op.RouteSeriesOptions}이다.
 */
declare class RouteSeries extends Series<RouteSeriesOptions> {
    static type: string;
    static defaults: RouteSeriesOptions;
    needMapScale(): boolean;
    protected _createPoint(source: any): RouteSeriesPoint;
    pointLabelCount(): number;
    protected _defLabelOff(): number;
    protected _doLoadPoints(src: any): void;
    protected _createLegendMarker(doc: Document, size: number): RmElement;
}

type WaffleGrid = any[][];
declare class WaffleSeriesPoint extends SparkSeriesPoint {
}
/**
 * Waffle 시리즈 모델.<br/>
 * {@page op.SeriesOptions#type}은 {@page config.series.Waffle 'waffle'}이고,
 * {@page options 설정} 모델은 {@page op.WaffleSeriesOptions}이다.
 */
declare class WaffleSeries extends SparkSeries<WaffleSeriesOptions> {
    static readonly ROW_COUNT = 10;
    static readonly COL_COUNT = 10;
    static readonly THRESHOLD = 1;
    static readonly CELL_SIZE = 5;
    static readonly GAP = 2;
    static type: string;
    static defaults: WaffleSeriesOptions;
    private _colCount;
    private _rowCount;
    private _threshold;
    private _rounder;
    private _cellSize;
    private _gap;
    private _runGrid;
    getPointGrid(point: WaffleSeriesPoint, ext: {
        min: number;
        max: number;
    }, rate: number): {
        grid: WaffleGrid;
        count: number;
        rows: number;
        cols: number;
    };
    protected _createPoint(source: any): WaffleSeriesPoint;
    protected _defLabelOff(): number;
    protected _doApply(op: WaffleSeriesOptions): void;
    getWaffleInfo(): {
        rowCount: number;
        colCount: number;
        wCell: number;
        hCell: number;
        gap: number;
    };
    protected _doPrepareRender(chart: IChart, op: WaffleSeriesOptions): void;
    private $_caculate;
    private $_rows;
    private $_cols;
    private $_fillRowFirst;
    private $_fillColFirst;
}

/**
 * Text Annotation 모델.<br/>
 * {@page op.AnnotationOptions#type}은 {@page config.annotation.image 'shape'}이고,
 * {@page options 설정} 모델은 {@page op.ShapeAnnotationOptions}이다.
 */
declare class TextAnnotation extends Annotation<TextAnnotationOptions> {
    static readonly type = "text";
    static defaults: TextAnnotationOptions;
    private _numberFormat;
    private _timeFormat;
    _domain: IRichTextDomain;
    protected _isVisible(): boolean;
    protected _doSetSimple(op: TextAnnotationOptions, src: any): boolean;
    protected _doApply(options: TextAnnotationOptions): void;
}

/**
 * 이미지 Annotation 모델.<br/>
 * {@page op.AnnotationOptions#type}은 {@page config.annotation.image 'image'}이고,
 * {@page options 설정} 모델은 {@page op.ImageAnnotationOptions}이다.
 */
declare class ImageAnnotation extends Annotation<ImageAnnotationOptions> {
    static type: string;
    static defaults: ImageAnnotationOptions;
    protected _isVisible(): boolean;
    protected _doSetSimple(op: ImageAnnotationOptions, src: any): boolean;
}

/**
 * Shape Annotation 모델.<br/>
 * {@page op.AnnotationOptions#type}은 {@page config.annotation.image 'shape'}이고,
 * {@page options 설정} 모델은 {@page op.ShapeAnnotationOptions}이다.
 */
declare class ShapeAnnotation extends Annotation<ShapeAnnotationOptions> {
    static type: string;
    static defaults: ShapeAnnotationOptions;
    private _xRange;
    private _yRange;
    getSeries(): {
        series: ISeries;
        xRange: number[];
        yRange: number[];
    };
    getShape(): Shape;
    protected _doSetSimple(op: ShapeAnnotationOptions, src: any): boolean;
}

/**
 * Text Annotation 모델.<br/>
 * {@page op.AnnotationOptions#type}은 {@page config.annotation.image 'shape'}이고,
 * {@page options 설정} 모델은 {@page op.ShapeAnnotationOptions}이다.
 */
declare class HtmlAnnotation extends Annotation<HtmlAnnotationOptions> {
    static readonly DEF_SIZE = 100;
    static readonly type = "html";
    static defaults: HtmlAnnotationOptions;
    private _params;
    private _paramCallback;
    private _userParams;
    setParams(params: object): void;
    applyParams(target: string): string;
    /**
     * ${param;default}
     */
    private $_apply;
    protected _isVisible(): boolean;
    protected _doSetSimple(op: HtmlAnnotationOptions, src: any): boolean;
    protected _doPrepareRender(chart: IChart, op: HtmlAnnotationOptions): void;
}

declare abstract class SeriesAnimation {
    static reveal(series: SeriesView<Series>, options?: IRevealAnimation): void;
    static grow(series: SeriesView<Series>, endHandler?: RmAnimationEndHandler): void;
    static spread(series: SeriesView<Series>, endHandler?: RmAnimationEndHandler): void;
    static fadeIn(series: SeriesView<Series>): void;
    constructor(sv: SeriesView<Series>, options?: any);
    protected abstract _createAnimation(series: SeriesView<Series>, options?: any): Animation | RmAnimation;
}
interface IRevealAnimation {
    from: 'left' | 'right' | 'top' | 'bottom';
}

interface ISectorShape {
    cx: number;
    cy: number;
    rx: number;
    ry: number;
    innerRadius?: number;
    start: number;
    angle: number;
    borderRadius?: number;
    clockwise?: boolean;
}
declare class SectorElement extends PathElement {
    static create(doc: Document, styleName: string, x: number, y: number, rx: number, ry: number, start: number, angle: number, clockwise?: boolean): SectorElement;
    static createInner(doc: Document, styleName: string, x: number, y: number, rx: number, ry: number, innerRadius: number, start: number, angle: number, clockwise?: boolean): SectorElement;
    constructor(doc: Document, styleName?: string, shape?: ISectorShape);
    /**
     * 중심 x.
     */
    cx: number;
    /**
     * 중심 y.
     */
    cy: number;
    /**
     * 수평 반지름.
     */
    rx: number;
    /**
     * 수직 반지름.
     */
    ry: number;
    /**
     * 내부 반지름.
     * 수평/수직 반지름에 대한 비율. 0 ~ 1 사이 값으로 설정.
     */
    innerRadius: number;
    /**
     * 시작 각도.
     * 0 이상 2pi 미만.
     */
    start: number;
    /**
     * 각도.
     * 0 이상 2pi 미만.
     */
    angle: number;
    /**
     * 회전 방향.
     * true면 반시계 방향.
     */
    clockwise: boolean;
    /**
     * 반지름의 원래 크기에 대한 표시 비율.
     */
    rate: number;
    equals(shape: ISectorShape): boolean;
    setSector(shape: ISectorShape): void;
    setSectorEx(shape: ISectorShape, stroked: boolean): void;
    protected _getShape(): ISectorShape;
    protected _assignShape(shape: ISectorShape, stroked: boolean): void;
    private $_renderSector;
    private $_renderArc;
}

declare class CircleElement extends RmElement {
    constructor(doc: Document, styleName?: string, cx?: number, cy?: number, radius?: number);
    setCircle(cx: number, cy: number, radius: number): void;
}

declare const isObject: (v: any) => boolean;
/** @internal */
declare const isArray: (arg: any) => arg is any[];
declare const isString: (v: any) => v is string;
/** @internal */
declare const assignObj: {
    <T extends {}, U>(target: T, source: U): T & U;
    <T extends {}, U, V>(target: T, source1: U, source2: V): T & U & V;
    <T extends {}, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;
    (target: object, ...sources: any[]): any;
};
/** @internal */
declare const cos: (x: number) => number;
/** @internal */
declare const sin: (x: number) => number;
/** @internal */
declare const minv: (...values: number[]) => number;
/** @internal */
declare const maxv: (...values: number[]) => number;
/** @internal */
declare const absv: (x: number) => number;
declare const copyObj: (v: any) => any;
declare const pickNum: (v1: any, v2: any) => number;
declare const pickProp: (v1: any, v2: any) => any;
declare const pickProp3: (v1: any, v2: any, v3: any) => any;
declare const incv: (prev: number, next: number, rate: number) => number;

declare const _isIE: boolean;
/**
 * @internal
 *
 */
declare class Utils {
    static LOGGING: boolean;
    static log(...msg: any[]): void;
    static logIf(condition: any, ...msg: any[]): void;
    static week_days: string[];
    static long_week_days: string[];
    static month_days: number[][];
    static now(): number;
    static parseDate(date: string, defaultDate?: Date): Date;
    static isLeapYear(year: number): boolean;
    static dateOfYear(d: Date): number;
    static incMonth(d: Date, delta: number): Date;
    static minDate(d1: Date, d2: Date): Date;
    static maxDate(d1: Date, d2: Date): Date;
    static weekOfMonth(d: Date, startOfWeek: number, exact: boolean): number;
    static weekOfYear(d: Date, startOfWeek: number): number;
    static isObject(v: any): boolean;
    static isValidObject(v: any): boolean;
    static checkArray(v: any): any;
    static makeArray(v: any, force?: boolean): any[];
    static makeNumArray(v: any): number[];
    static getIntArray(count: number, start?: number): number[];
    static isValueArray(arr: any[]): boolean;
    static toArray(v: any): any[];
    static copyArray(v: any): any[];
    static push(arr: Array<any>, items: Array<any>): void;
    static isDefined(v: any): boolean;
    static isNotDefined(v: any): boolean;
    static isNum(value: any): value is number;
    static canNumber(value: any): value is number;
    static isValidNum(value: any): value is number;
    static getNum(v: any, def?: number): number;
    static toNum(value: any, def?: number): number;
    static compareText(s1: string, s2: string, ignoreCase?: boolean): number;
    static getTimeF(): number;
    static getTimer(): number;
    static isWhiteSpace(s: string): boolean;
    static pad(value: number, len?: number, c?: string): string;
    static pad16(value: number, len?: number, c?: string): string;
    static pick(...args: any): any;
    static toStr(value: any): string;
    static extend(target: any, source: any): any;
    static equalNumbers(a: number, b: number): boolean;
    static equalArrays(a: any[], b: any[]): boolean;
    static isEmpty(obj: {}): boolean;
    static isNotEmpty(obj: {}): boolean;
    static deepClone(obj: object): object;
    static getArray(length: number, value?: any): any[];
    static getNumArray(length: number, value?: number): number[];
    static dedupe(list: any[], comparer?: (v1: any, v2: any) => number): any[];
    static sortNum(list: number[]): number[];
    static logElapsed(message: string, runner: () => void): void;
    static clamp(v: number, min: number, max: number): number;
    static clampEx(v: number, min: number, max: number): number;
    static makeIntArray(from: number, to: number): number[];
    static shuffle(arr: any[]): void;
    static isDate(v: any): boolean;
    static isValidDate(d: Date): boolean;
    static asFunction(fn: any): any;
    static getFieldProp(field: string): {
        field: string;
        props: string[];
    };
    static uniqueKey(): string;
    static startsWith(str: string, search: string): boolean;
    static endsWith(str: string, search: string): boolean;
    static scaleNumber(value: number, symbols: string[], force: boolean): {
        value: number;
        symbol: string;
    };
    static jitter(v: number, amount: number): number;
    static getDistance(p1: MapCoord, p2: MapCoord): number;
    static getLogger(base: number): (v: number) => number;
    static getMinMax(values: number[]): {
        min: number;
        max: number;
    };
    /**
     * @param path 'aaa.bbb.2.ccc' 형식으로 지정한다. 2는 배열 항목 index.
     */
    static valueAt(data: any, path?: string): any;
    static normalizeToSteps(arr: number[], n: number): number[];
}

interface IDomContaner {
    dom(): Element;
}
/**
 * @internal
 *
 * Utilities for HTML element.
 */
declare class Dom {
    static getWin(doc: Document): Window;
    static isVisible(elt: HTMLElement): boolean;
    static setVisible(elt: HTMLElement | SVGSVGElement, visible: boolean, visibleStyle?: string): boolean;
    static hide(elt: HTMLElement | SVGSVGElement): void;
    static show(elt: HTMLElement | SVGSVGElement, visibleStyle?: string): void;
    static addClass(elt: HTMLElement | SVGSVGElement, className: string): HTMLElement | SVGSVGElement;
    static removeClass(elt: HTMLElement | SVGSVGElement, className: string): HTMLElement | SVGSVGElement;
    static getImageUrl(css: CSSStyleDeclaration): string;
    static getFocused(): HTMLElement;
    static isAncestorOf(elt: HTMLElement, child: HTMLElement): boolean;
    static getOffset(elt: HTMLElement): {
        x: number;
        y: number;
    };
    static getSize(elt: HTMLElement): {
        width: number;
        height: number;
    };
    static moveX(elt: HTMLElement, x: number): void;
    static moveY(elt: HTMLElement, y: number): void;
    static move(elt: HTMLElement | SVGSVGElement, x: number, y: number): void;
    static moveI(elt: HTMLElement, x: number, y: number): void;
    static resize(elt: HTMLElement | SVGSVGElement, width: number, height: number): void;
    static resizeSVG(elt: SVGSVGElement, width: number, height: number): void;
    static setWidth(elt: HTMLElement, width: number): void;
    static setHeight(elt: HTMLElement, height: number): void;
    static getBrowserSize(elt?: HTMLElement): {
        width: number;
        height: number;
    };
    static setRect(elt: HTMLElement, r: IRect): void;
    static setBounds(elt: HTMLElement, x: number, y: number, w: number, h: number): void;
    static setBoundsEx(elt: HTMLElement, x: number, y: number, w: number, h: number): void;
    static getClientRect(elt: HTMLElement): ClientRect | DOMRect;
    static getChildIndex(elt: HTMLElement): number;
    static clearChildren(parent: Element): void;
    static clearElements(parent: Element): void;
    static append(elt: Node, child: Node): void;
    static addChild(elt: HTMLElement, child: HTMLElement): boolean;
    static removeChild(elt: HTMLElement, child: HTMLElement): boolean;
    static removeChildren(elt: Element, children: (Element | IDomContaner)[]): void;
    static remove(elt: Node): null;
    static clearStyle(elt: HTMLElement): void;
    static removeStyles(css: CSSStyleDeclaration, style: CSSStyles2): void;
    static setStyle(elt: HTMLElement, style: CSSStyles2): void;
    static replaceStyle(css: CSSStyleDeclaration, style: CSSStyles2, prevStyle: CSSStyles2): CSSStyles2;
    static createElement<K extends keyof HTMLElementTagNameMap>(doc: Document, tagName: K, style: CSSStyles2): HTMLElementTagNameMap[K];
    static htmlEncode(text: string): string;
    static setData(elt: HTMLElement | SVGSVGElement, name: string, value: any): void;
    static toggleData(elt: HTMLElement | SVGSVGElement, name: string, value: boolean): void;
    static getData(elt: HTMLElement, name: string): any;
    static hasData(elt: HTMLElement, name: string): boolean;
    static setVar(elt: HTMLElement | SVGSVGElement, name: string, value: string): void;
    static animate(elt: HTMLElement, prop: string, from: any, to: any, duration?: number, fill?: string): Animation;
    static setAttr(elt: Element, attr: string, value: any): void;
    static setAttrs(elt: Element, attrs: any): void;
    static getDomId(): string;
    static createBR(doc: Document, className: string): HTMLBRElement;
    static createSpan(doc: Document, style: CSSStyles2): HTMLSpanElement;
    static createCheckBox(doc: Document, style: CSSStyles2): HTMLInputElement;
    static createRadio(doc: Document, style: CSSStyles2): HTMLInputElement;
    static getPadding(dom: HTMLElement | SVGElement): ISides;
    static getPaddingEx(dom: HTMLElement | SVGElement): ISides;
    static stopAnimation(ani: Animation): null;
    static childByPath(dom: Node, path: number[]): Node;
    static childByClass<T extends Element>(parent: HTMLElement, className: string): T;
    static setDisabled(dom: Element, value: boolean): void;
    static setImportantStyle(css: CSSStyleDeclaration, property: string, value: string): void;
    static setNoScale(elt: SVGElement): void;
}

declare const getVersion: typeof Globals.getVersion;
declare const setDebugging: typeof Globals.setDebugging;
declare const setLogging: typeof Globals.setLogging;
declare const setGlobals: typeof Globals.setGlobals;
declare const getDistance: typeof Globals.getDistance;
declare const createChart: typeof Globals.createChart;
declare const createChartAsync: typeof Globals.createChartAsync;
declare const preset: typeof Globals.preset;
declare const setLicenseKey: typeof Globals.setLicenseKey;

export { Align, Annotation, AnnotationAnimationOptions, AnnotationOptions, AnnotationOptionsType, AnnotationView, AssetItemOptions, AssetOptionsType, BackgroundImageOptions, BandSeriesOptions, BandSeriesType, BarSeries, BarSeriesOptions, Body, BodyView, BubbleSeries, BubbleSeriesOptions, ChartAnnotationOptions, ChartAnnotationType, ChartConfiguration, ChartControl, ChartElement, ChartItem, ChartItemOptions, ChartObject, ChartOptionsOptions, ChartTextOptions, ChartView, CircleElement, CircleGauge, ClockGauge, Color, ColorListOptions, ColorRanger, Credits, CreditsOptions, DataPoint, DataPointArgs as DataPointCallbackArgs, DataPointLabel, DataPointLabelOptions, Dom, DragTracker, ElementPool, ExportOptions, Exporter, ExporterOptions, ExternalModuleManager, FeatureSeriesLabelOptions, FeatureSeriesOptions, FeatureSeriesType, FigureSeries, GradientOptions, HeatmapSeriesOptions, HeatmapSeriesType, HtmlAnnotation, IChart, ILegendSource, IPercentSize, IPointView, IRect, ISeries, ISize, IconedTextOptions, ImageAnnotation, ImageAnnotationOptions, ImageListOptions, ImageSeries, LayerElement, Legend, LegendOptions, LineElement, LineSeries, LineSeriesOptions, LinearGradientOptions, LoadCallbackArgs, MapArea, MapAxis, MapAxisBandGuide, MapAxisGuide, MapAxisLineGuide, MapAxisRangeGuide, MapChart, MapCoord, MapCrosshair, MapInset, MapInsetDisplay, MapProjection, MapSeries, MapSeriesLabelOptions, MapSeriesOptions, MapSeriesType, MapTool, MapBackgroundOptions as MapViewBackgroundOptions, BodyOptions as MapViewOptions, MarkerSeries, MarkerSeriesOptions, MarkerSeriesPoint, MarkerSeriesPointView, MarkerSeriesView, ORG_ANGLE, OrthogonalSparkSeries, PI_2, PanelSeries, PathElement, PatternOptions, PercentSize, PieSeries, PieSeriesOptions, PinSeries, PointElement, PointLabelView, PointSeries, PointViewPool, PointViewPosition, PolyLineElement, ProjectionType, RAD_DEG, RadialGradientOptions, RectElement, RmElement, RouteSeries, RouteSeriesOptions, RouteSeriesType, SVGStyleOrClass, SVGStyles, SankeySeriesOptions, SankeySeriesType, SectionView, SectorElement, Series, SeriesAnimation, SeriesOptions, SeriesOptionsType, SeriesView, Shape, ShapeAnnotation, ShapeAnnotationOptions, ShapeDrawer, Size, SparkSeries, Subtitle, SubtitleOptions, TableSeriesOptions, TableSeriesType, TextAnchor, TextAnnotation, TextAnnotationOptions, TextElement, TextLayout, TiledWebSeriesOptions, TiledWebSeriesType, Title, TitleOptions, TooltipOptions, TrackSeriesOptions, TrackSeriesOutlineOptions, TrackSeriesType, Utils, ValuePoint, ValueSeries, VectorSeriesOptions, VectorSeriesType, WaffleSeries, _isIE, absv, assignObj, calcPercent, copyObj, cos, createChart, createChartAsync, createRect, extend, fixnum, getDistance, getVersion, incv, isArray, isEmptyRect, isObject, isString, maxv, minv, parsePercentSize, pickNum, pickProp, pickProp3, pixel, preset, rectToSize, setDebugging, setGlobals, setLicenseKey, setLogging, sin };
