import * as react from 'react';
import { UIEventHandlers } from '../types/event.mjs';

declare const uiEvents: readonly ["mousedown", "mouseup", "click", "dblclick", "rightclick", "mouseover", "mouseout", "mousemove"];
type PolygonOptions = {
    /**
     * @type naver.maps.ArrayOfCoords[] | naver.maps.KVOArrayOfCoords[] | naver.maps.ArrayOfCoordsLiteral[]
     */
    paths: naver.maps.ArrayOfCoords[] | naver.maps.KVOArrayOfCoords[] | naver.maps.ArrayOfCoordsLiteral[];
    strokeWeight?: number;
    strokeOpacity?: number;
    strokeColor?: string;
    strokeStyle?: naver.maps.StrokeStyleType;
    strokeLineCap?: naver.maps.StrokeLineCapType;
    strokeLineJoin?: naver.maps.StrokeLineJoinType;
    fillColor?: string;
    fillOpacity?: number;
    clickable?: boolean;
    visible?: boolean;
    zIndex?: number;
};
type Props = PolygonOptions & {
    onPathsChanged?: (value: Array<naver.maps.ArrayOfCoords>) => void;
    onStrokeWeightChanged?: (value: number) => void;
    onStrokeOpacityChanged?: (value: number) => void;
    onStrokeColorChanged?: (value: string) => void;
    onStrokeStyleChanged?: (value: naver.maps.StrokeStyleType) => void;
    onStrokeLineCapChanged?: (value: naver.maps.StrokeLineCapType) => void;
    onStrokeLineJoinChanged?: (value: naver.maps.StrokeLineJoinType) => void;
    onFillColorChanged?: (value: string) => void;
    onFillOpacityChanged?: (value: number) => void;
    onClickableChanged?: (event: boolean) => void;
    onVisibleChanged?: (event: boolean) => void;
    onZIndexChanged?: (event: number) => void;
} & UIEventHandlers<typeof uiEvents>;
declare const Polygon: react.ForwardRefExoticComponent<PolygonOptions & {
    onPathsChanged?: (value: Array<naver.maps.ArrayOfCoords>) => void;
    onStrokeWeightChanged?: (value: number) => void;
    onStrokeOpacityChanged?: (value: number) => void;
    onStrokeColorChanged?: (value: string) => void;
    onStrokeStyleChanged?: (value: naver.maps.StrokeStyleType) => void;
    onStrokeLineCapChanged?: (value: naver.maps.StrokeLineCapType) => void;
    onStrokeLineJoinChanged?: (value: naver.maps.StrokeLineJoinType) => void;
    onFillColorChanged?: (value: string) => void;
    onFillOpacityChanged?: (value: number) => void;
    onClickableChanged?: (event: boolean) => void;
    onVisibleChanged?: (event: boolean) => void;
    onZIndexChanged?: (event: number) => void;
} & Partial<Record<"onClick" | "onMousedown" | "onMouseup" | "onDblclick" | "onRightclick" | "onMouseover" | "onMouseout" | "onMousemove", (e: naver.maps.PointerEvent) => void>> & react.RefAttributes<naver.maps.Polygon>>;

export { Polygon, type Props };
