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

declare const uiEvents: readonly ["mousedown", "mouseup", "click", "dblclick", "rightclick", "mouseover", "mouseout", "mousemove"];
type PolylineOptions = {
    /**
     * @type naver.maps.ArrayOfCoords | naver.maps.KVOArrayOfCoords | naver.maps.ArrayOfCoordsLiteral
     */
    path: 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;
    clickable?: boolean;
    visible?: boolean;
    zIndex?: number;
    startIcon?: naver.maps.PointingIcon;
    startIconSize?: number;
    endIcon?: naver.maps.PointingIcon;
    endIconSize?: number;
};
type Props = PolylineOptions & {
    onPathChanged?: (value: 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;
    onClickableChanged?: (value: boolean) => void;
    onVisibleChanged?: (value: boolean) => void;
    onZIndexChanged?: (value: number) => void;
    onStartIconChanged?: (value: naver.maps.PointingIcon) => void;
    onStartIconSizeChanged?: (number: string) => void;
    onEndIconChanged?: (value: naver.maps.PointingIcon) => void;
    onEndIconSizeChanged?: (number: string) => void;
} & UIEventHandlers<typeof uiEvents>;
declare const Polyline: react.ForwardRefExoticComponent<PolylineOptions & {
    onPathChanged?: ((value: naver.maps.ArrayOfCoords) => void) | undefined;
    onStrokeWeightChanged?: ((value: number) => void) | undefined;
    onStrokeOpacityChanged?: ((value: number) => void) | undefined;
    onStrokeColorChanged?: ((value: string) => void) | undefined;
    onStrokeStyleChanged?: ((value: naver.maps.StrokeStyleType) => void) | undefined;
    onStrokeLineCapChanged?: ((value: naver.maps.StrokeLineCapType) => void) | undefined;
    onStrokeLineJoinChanged?: ((value: naver.maps.StrokeLineJoinType) => void) | undefined;
    onClickableChanged?: ((value: boolean) => void) | undefined;
    onVisibleChanged?: ((value: boolean) => void) | undefined;
    onZIndexChanged?: ((value: number) => void) | undefined;
    onStartIconChanged?: ((value: naver.maps.PointingIcon) => void) | undefined;
    onStartIconSizeChanged?: ((number: string) => void) | undefined;
    onEndIconChanged?: ((value: naver.maps.PointingIcon) => void) | undefined;
    onEndIconSizeChanged?: ((number: string) => void) | undefined;
} & Partial<Record<"onClick" | "onMousedown" | "onMouseup" | "onDblclick" | "onRightclick" | "onMouseover" | "onMouseout" | "onMousemove", (e: naver.maps.PointerEvent) => void>> & react.RefAttributes<naver.maps.Polyline>>;

export { Polyline, Props };
