import { default as Geolocation, Options } from 'ol/Geolocation';
import { Coordinate } from 'ol/coordinate';
import { default as Polygon } from 'ol/geom/Polygon';
import { ObjectEvent, ObjectOnSignature } from 'ol/Object';
import { LinearRing, Point, SimpleGeometry, Geometry } from 'ol/geom';
import { GeometryLayout, Type } from 'ol/geom/Geometry';
import { TransformFunction, ProjectionLike, Projection } from 'ol/proj';
import { Extent } from 'ol/extent';
import { EventsKey, Listener } from 'ol/events';
import { default as __DTS_DEFAULT_0__ } from 'ol/events/Event';
import { DefineComponent, ComputedRef, Ref, ComponentOptionsMixin, PublicProps, ExtractPropTypes, PropType } from 'vue';

declare function __VLS_template(): {
    default?(_: {
        position: Coordinate | undefined;
        speed: number | undefined;
        heading: number | undefined;
        accuracy: number | undefined;
        altitude: number | undefined;
        altitudeAccuracy: number | undefined;
        accuracyGeometry: {
            appendLinearRing: (linearRing: LinearRing) => void;
            clone: () => Polygon;
            getArea: () => number;
            getCoordinates: (right?: boolean | undefined) => Array<Array< Coordinate>>;
            getEnds: () => Array<number>;
            getFlatInteriorPoint: () => Array<number>;
            getInteriorPoint: () => Point;
            getLinearRingCount: () => number;
            getLinearRing: (index: number) => LinearRing | null;
            getLinearRings: () => Array< LinearRing>;
            getOrientedFlatCoordinates: () => Array<number>;
            setCoordinates: (coordinates: Array<Array< Coordinate>>, layout?: GeometryLayout | undefined) => void;
            getFirstCoordinate: () => Coordinate;
            getFlatCoordinates: () => Array<number>;
            getLastCoordinate: () => Coordinate;
            getLayout: () => GeometryLayout;
            getSimplifiedGeometry: (squaredTolerance: number) => SimpleGeometry;
            getStride: () => number;
            setFlatCoordinates: (layout: GeometryLayout, flatCoordinates: Array<number>) => void;
            simplifyTransformedInternal: (...arg0: any[]) => Geometry;
            simplifyTransformed: (squaredTolerance: number, transform?: TransformFunction | undefined) => Geometry;
            closestPointXY: (x: number, y: number, closestPoint: Coordinate, minSquaredDistance: number) => number;
            containsXY: (x: number, y: number) => boolean;
            getClosestPoint: (point: Coordinate, closestPoint?: Coordinate | undefined) => Coordinate;
            intersectsCoordinate: (coordinate: Coordinate) => boolean;
            getExtent: (extent?: Extent | undefined) => Extent;
            rotate: (angle: number, anchor: Coordinate) => void;
            scale: (sx: number, sy?: number | undefined, anchor?: Coordinate | undefined) => void;
            simplify: (tolerance: number) => Geometry;
            getType: () => Type;
            applyTransform: (transformFn: TransformFunction) => void;
            intersectsExtent: (extent: Extent) => boolean;
            translate: (deltaX: number, deltaY: number) => void;
            transform: (source: ProjectionLike, destination: ProjectionLike) => Polygon;
            on: ObjectOnSignature<EventsKey>;
            once: ObjectOnSignature<EventsKey>;
            un: ObjectOnSignature<void>;
            get: (key: string) => any;
            getKeys: () => Array<string>;
            getProperties: () => {
                [x: string]: any;
            };
            getPropertiesInternal: () => {
                [x: string]: any;
            } | null;
            hasProperties: () => boolean;
            notify: (key: string, oldValue: any) => void;
            addChangeListener: (key: string, listener: Listener) => void;
            removeChangeListener: (key: string, listener: Listener) => void;
            set: (key: string, value: any, silent?: boolean | undefined) => void;
            setProperties: (values: {
                [x: string]: any;
            }, silent?: boolean | undefined) => void;
            unset: (key: string, silent?: boolean | undefined) => void;
            changed: () => void;
            getRevision: () => number;
            addEventListener: (type: string, listener: Listener) => void;
            dispatchEvent: (event: __DTS_DEFAULT_0__ | string) => boolean | undefined;
            getListeners: (type: string) => Array< Listener> | undefined;
            hasListener: (type?: string | undefined) => boolean;
            removeEventListener: (type: string, listener: Listener) => void;
            dispose: () => void;
        } | null;
    }): any;
};
declare const __VLS_component: DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Options>, {
    projection: string;
    tracking: boolean;
    trackingOptions: () => {
        enableHighAccuracy: boolean;
    };
}>, {
    geoLoc: ComputedRef<Geolocation>;
    position: Ref<number[] | undefined, Coordinate | number[] | undefined>;
    accuracy: Ref<number | undefined, number | undefined>;
    altitude: Ref<number | undefined, number | undefined>;
    altitudeAccuracy: Ref<number | undefined, number | undefined>;
    speed: Ref<number | undefined, number | undefined>;
    heading: Ref<number | undefined, number | undefined>;
    accuracyGeometry: Ref<{
        appendLinearRing: (linearRing: LinearRing) => void;
        clone: () => Polygon;
        getArea: () => number;
        getCoordinates: (right?: boolean | undefined) => Array<Array< Coordinate>>;
        getEnds: () => Array<number>;
        getFlatInteriorPoint: () => Array<number>;
        getInteriorPoint: () => Point;
        getLinearRingCount: () => number;
        getLinearRing: (index: number) => LinearRing | null;
        getLinearRings: () => Array< LinearRing>;
        getOrientedFlatCoordinates: () => Array<number>;
        setCoordinates: (coordinates: Array<Array< Coordinate>>, layout?: GeometryLayout | undefined) => void;
        getFirstCoordinate: () => Coordinate;
        getFlatCoordinates: () => Array<number>;
        getLastCoordinate: () => Coordinate;
        getLayout: () => GeometryLayout;
        getSimplifiedGeometry: (squaredTolerance: number) => SimpleGeometry;
        getStride: () => number;
        setFlatCoordinates: (layout: GeometryLayout, flatCoordinates: Array<number>) => void;
        simplifyTransformedInternal: (...arg0: any[]) => Geometry;
        simplifyTransformed: (squaredTolerance: number, transform?: TransformFunction | undefined) => Geometry;
        closestPointXY: (x: number, y: number, closestPoint: Coordinate, minSquaredDistance: number) => number;
        containsXY: (x: number, y: number) => boolean;
        getClosestPoint: (point: Coordinate, closestPoint?: Coordinate | undefined) => Coordinate;
        intersectsCoordinate: (coordinate: Coordinate) => boolean;
        getExtent: (extent?: Extent | undefined) => Extent;
        rotate: (angle: number, anchor: Coordinate) => void;
        scale: (sx: number, sy?: number | undefined, anchor?: Coordinate | undefined) => void;
        simplify: (tolerance: number) => Geometry;
        getType: () => Type;
        applyTransform: (transformFn: TransformFunction) => void;
        intersectsExtent: (extent: Extent) => boolean;
        translate: (deltaX: number, deltaY: number) => void;
        transform: (source: ProjectionLike, destination: ProjectionLike) => Polygon;
        on: ObjectOnSignature<EventsKey>;
        once: ObjectOnSignature<EventsKey>;
        un: ObjectOnSignature<void>;
        get: (key: string) => any;
        getKeys: () => Array<string>;
        getProperties: () => {
            [x: string]: any;
        };
        getPropertiesInternal: () => {
            [x: string]: any;
        } | null;
        hasProperties: () => boolean;
        notify: (key: string, oldValue: any) => void;
        addChangeListener: (key: string, listener: Listener) => void;
        removeChangeListener: (key: string, listener: Listener) => void;
        set: (key: string, value: any, silent?: boolean | undefined) => void;
        setProperties: (values: {
            [x: string]: any;
        }, silent?: boolean | undefined) => void;
        unset: (key: string, silent?: boolean | undefined) => void;
        changed: () => void;
        getRevision: () => number;
        addEventListener: (type: string, listener: Listener) => void;
        dispatchEvent: (event: __DTS_DEFAULT_0__ | string) => boolean | undefined;
        getListeners: (type: string) => Array< Listener> | undefined;
        hasListener: (type?: string | undefined) => boolean;
        removeEventListener: (type: string, listener: Listener) => void;
        dispose: () => void;
    } | null, Polygon | {
        appendLinearRing: (linearRing: LinearRing) => void;
        clone: () => Polygon;
        getArea: () => number;
        getCoordinates: (right?: boolean | undefined) => Array<Array< Coordinate>>;
        getEnds: () => Array<number>;
        getFlatInteriorPoint: () => Array<number>;
        getInteriorPoint: () => Point;
        getLinearRingCount: () => number;
        getLinearRing: (index: number) => LinearRing | null;
        getLinearRings: () => Array< LinearRing>;
        getOrientedFlatCoordinates: () => Array<number>;
        setCoordinates: (coordinates: Array<Array< Coordinate>>, layout?: GeometryLayout | undefined) => void;
        getFirstCoordinate: () => Coordinate;
        getFlatCoordinates: () => Array<number>;
        getLastCoordinate: () => Coordinate;
        getLayout: () => GeometryLayout;
        getSimplifiedGeometry: (squaredTolerance: number) => SimpleGeometry;
        getStride: () => number;
        setFlatCoordinates: (layout: GeometryLayout, flatCoordinates: Array<number>) => void;
        simplifyTransformedInternal: (...arg0: any[]) => Geometry;
        simplifyTransformed: (squaredTolerance: number, transform?: TransformFunction | undefined) => Geometry;
        closestPointXY: (x: number, y: number, closestPoint: Coordinate, minSquaredDistance: number) => number;
        containsXY: (x: number, y: number) => boolean;
        getClosestPoint: (point: Coordinate, closestPoint?: Coordinate | undefined) => Coordinate;
        intersectsCoordinate: (coordinate: Coordinate) => boolean;
        getExtent: (extent?: Extent | undefined) => Extent;
        rotate: (angle: number, anchor: Coordinate) => void;
        scale: (sx: number, sy?: number | undefined, anchor?: Coordinate | undefined) => void;
        simplify: (tolerance: number) => Geometry;
        getType: () => Type;
        applyTransform: (transformFn: TransformFunction) => void;
        intersectsExtent: (extent: Extent) => boolean;
        translate: (deltaX: number, deltaY: number) => void;
        transform: (source: ProjectionLike, destination: ProjectionLike) => Polygon;
        on: ObjectOnSignature<EventsKey>;
        once: ObjectOnSignature<EventsKey>;
        un: ObjectOnSignature<void>;
        get: (key: string) => any;
        getKeys: () => Array<string>;
        getProperties: () => {
            [x: string]: any;
        };
        getPropertiesInternal: () => {
            [x: string]: any;
        } | null;
        hasProperties: () => boolean;
        notify: (key: string, oldValue: any) => void;
        addChangeListener: (key: string, listener: Listener) => void;
        removeChangeListener: (key: string, listener: Listener) => void;
        set: (key: string, value: any, silent?: boolean | undefined) => void;
        setProperties: (values: {
            [x: string]: any;
        }, silent?: boolean | undefined) => void;
        unset: (key: string, silent?: boolean | undefined) => void;
        changed: () => void;
        getRevision: () => number;
        addEventListener: (type: string, listener: Listener) => void;
        dispatchEvent: (event: __DTS_DEFAULT_0__ | string) => boolean | undefined;
        getListeners: (type: string) => Array< Listener> | undefined;
        hasListener: (type?: string | undefined) => boolean;
        removeEventListener: (type: string, listener: Listener) => void;
        dispose: () => void;
    } | null>;
}, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
    change: (event: __DTS_DEFAULT_0__) => void;
    error: (event: __DTS_DEFAULT_0__) => void;
    propertychange: (event: ObjectEvent) => void;
    "change:accuracy": (event: ObjectEvent) => void;
    "change:accuracyGeometry": (event: ObjectEvent) => void;
    "change:altitude": (event: ObjectEvent) => void;
    "change:altitudeAccuracy": (event: ObjectEvent) => void;
    "change:heading": (event: ObjectEvent) => void;
    "change:position": (event: ObjectEvent) => void;
    "change:projection": (event: ObjectEvent) => void;
    "change:speed": (event: ObjectEvent) => void;
    "change:tracking": (event: ObjectEvent) => void;
    "change:trackingOptions": (event: ObjectEvent) => void;
}, string, PublicProps, Readonly< ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Options>, {
    projection: string;
    tracking: boolean;
    trackingOptions: () => {
        enableHighAccuracy: boolean;
    };
}>>> & {
    onChange?: ((event: __DTS_DEFAULT_0__) => any) | undefined;
    onError?: ((event: __DTS_DEFAULT_0__) => any) | undefined;
    onPropertychange?: ((event: ObjectEvent) => any) | undefined;
    "onChange:projection"?: ((event: ObjectEvent) => any) | undefined;
    "onChange:accuracy"?: ((event: ObjectEvent) => any) | undefined;
    "onChange:accuracyGeometry"?: ((event: ObjectEvent) => any) | undefined;
    "onChange:altitude"?: ((event: ObjectEvent) => any) | undefined;
    "onChange:altitudeAccuracy"?: ((event: ObjectEvent) => any) | undefined;
    "onChange:heading"?: ((event: ObjectEvent) => any) | undefined;
    "onChange:position"?: ((event: ObjectEvent) => any) | undefined;
    "onChange:speed"?: ((event: ObjectEvent) => any) | undefined;
    "onChange:tracking"?: ((event: ObjectEvent) => any) | undefined;
    "onChange:trackingOptions"?: ((event: ObjectEvent) => any) | undefined;
}, {
    projection: string | Projection;
    tracking: boolean;
    trackingOptions: PositionOptions;
}, {}>;
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
export default _default;
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
type __VLS_TypePropsToRuntimeProps<T> = {
    [K in keyof T]-?: {} extends Pick<T, K> ? {
        type: PropType<__VLS_NonUndefinedable<T[K]>>;
    } : {
        type: PropType<T[K]>;
        required: true;
    };
};
type __VLS_WithDefaults<P, D> = {
    [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
        default: D[K];
    }> : P[K];
};
type __VLS_Prettify<T> = {
    [K in keyof T]: T[K];
} & {};
type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
