import typing

import android.content
import android.graphics
import android.graphics.drawable
import android.hardware
import android.location
import android.os
import android.util
import android.view
import android.widget
import java
import java.chaquopy
import java.lang
import java.util
import org.osmdroid
import org.osmdroid.api
import org.osmdroid.tileprovider
import org.osmdroid.tileprovider.tilesource
import org.osmdroid.util
import org.osmdroid.util.constants
import org.osmdroid.views
import org.osmdroid.views.util.constants

class DirectedLocationOverlay(Overlay):
    DIRECTION_ARROW: android.graphics.Bitmap = ...
    mAccuracyPaint: android.graphics.Paint = ...
    mBearing: float = ...
    mLocation: org.osmdroid.util.GeoPoint = ...
    mPaint: android.graphics.Paint = ...
    @typing.overload
    def __init__(self, ctx: android.content.Context, /) -> None: ...
    @typing.overload
    def __init__(self, ctx: android.content.Context, pResourceProxy: org.osmdroid.ResourceProxy, /) -> None: ...
    def draw(self, c: android.graphics.Canvas, osmv: org.osmdroid.views.MapView, shadow: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def getLocation(self) -> org.osmdroid.util.GeoPoint: ...
    def setAccuracy(self, pAccuracy: int | java.jint | java.lang.Integer, /) -> None: ...
    def setBearing(self, aHeading: float | java.jfloat | java.lang.Float, /) -> None: ...
    def setLocation(self, mp: org.osmdroid.util.GeoPoint, /) -> None: ...
    def setShowAccuracy(self, pShowIt: bool | java.jboolean | java.lang.Boolean, /) -> None: ...

class IOverlayMenuProvider(java.lang.Object):
    def isOptionsMenuEnabled(self) -> bool: ...
    def onCreateOptionsMenu(self, arg1: android.view.Menu, arg2: int | java.jint | java.lang.Integer, arg3: org.osmdroid.views.MapView, /) -> bool: ...
    def onOptionsItemSelected(self, arg1: android.view.MenuItem, arg2: int | java.jint | java.lang.Integer, arg3: org.osmdroid.views.MapView, /) -> bool: ...
    def onPrepareOptionsMenu(self, arg1: android.view.Menu, arg2: int | java.jint | java.lang.Integer, arg3: org.osmdroid.views.MapView, /) -> bool: ...
    def setOptionsMenuEnabled(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...

_ItemizedIconOverlay__Item = typing.TypeVar('_ItemizedIconOverlay__Item', bound=OverlayItem)  # <Item>

_ItemizedIconOverlay__OnItemGestureListener__T = typing.TypeVar('_ItemizedIconOverlay__OnItemGestureListener__T')  # <T>
class ItemizedIconOverlay(ItemizedOverlay[_ItemizedIconOverlay__Item], typing.Generic[_ItemizedIconOverlay__Item]):
    mItemList: java.util.List[_ItemizedIconOverlay__Item] = ...
    mOnItemGestureListener: ItemizedIconOverlay.OnItemGestureListener[_ItemizedIconOverlay__Item] = ...
    @typing.overload
    def __init__(self, pContext: android.content.Context, pList: java.util.List[_ItemizedIconOverlay__Item], pOnItemGestureListener: ItemizedIconOverlay.OnItemGestureListener[_ItemizedIconOverlay__Item], /) -> None: ...
    @typing.overload
    def __init__(self, pList: java.util.List[_ItemizedIconOverlay__Item], pOnItemGestureListener: ItemizedIconOverlay.OnItemGestureListener[_ItemizedIconOverlay__Item], pResourceProxy: org.osmdroid.ResourceProxy, /) -> None: ...
    @typing.overload
    def __init__(self, pList: java.util.List[_ItemizedIconOverlay__Item], pDefaultMarker: android.graphics.drawable.Drawable, pOnItemGestureListener: ItemizedIconOverlay.OnItemGestureListener[_ItemizedIconOverlay__Item], pResourceProxy: org.osmdroid.ResourceProxy, /) -> None: ...
    @typing.overload
    def addItem(self, item: _ItemizedIconOverlay__Item, /) -> bool: ...
    @typing.overload
    def addItem(self, location: int | java.jint | java.lang.Integer, item: _ItemizedIconOverlay__Item, /) -> None: ...
    def addItems(self, items: java.util.List[_ItemizedIconOverlay__Item], /) -> bool: ...
    def createItem(self, index: int | java.jint | java.lang.Integer, /) -> _ItemizedIconOverlay__Item: ...
    def getDrawnItemsLimit(self) -> int: ...
    def onLongPress(self, event: android.view.MotionEvent, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onLongPressHelper(self, index: int | java.jint | java.lang.Integer, item: _ItemizedIconOverlay__Item, /) -> bool: ...
    def onSingleTapConfirmed(self, event: android.view.MotionEvent, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onSingleTapUpHelper(self, index: int | java.jint | java.lang.Integer, item: _ItemizedIconOverlay__Item, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onSnapToItem(self, pX: int | java.jint | java.lang.Integer, pY: int | java.jint | java.lang.Integer, pSnapPoint: android.graphics.Point, pMapView: org.osmdroid.api.IMapView, /) -> bool: ...
    @typing.overload
    def removeAllItems(self) -> None: ...
    @typing.overload
    def removeAllItems(self, withPopulate: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def removeItem(self, position: int | java.jint | java.lang.Integer, /) -> _ItemizedIconOverlay__Item: ...
    @typing.overload
    def removeItem(self, item: _ItemizedIconOverlay__Item, /) -> bool: ...
    def setDrawnItemsLimit(self, aLimit: int | java.jint | java.lang.Integer, /) -> None: ...
    def size(self) -> int: ...

    class ActiveItem(java.lang.Object):
        def run(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    class OnItemGestureListener(java.lang.Object, typing.Generic[_ItemizedIconOverlay__OnItemGestureListener__T]):
        def onItemLongPress(self, arg1: int | java.jint | java.lang.Integer, arg2: _ItemizedIconOverlay__OnItemGestureListener__T, /) -> bool: ...
        def onItemSingleTapUp(self, arg1: int | java.jint | java.lang.Integer, arg2: _ItemizedIconOverlay__OnItemGestureListener__T, /) -> bool: ...

_ItemizedOverlay__Item = typing.TypeVar('_ItemizedOverlay__Item', bound=OverlayItem)  # <Item>
class ItemizedOverlay(Overlay, Overlay.Snappable, typing.Generic[_ItemizedOverlay__Item]):
    mDefaultMarker: android.graphics.drawable.Drawable = ...
    mDrawFocusedItem: bool = ...
    def __init__(self, pDefaultMarker: android.graphics.drawable.Drawable, pResourceProxy: org.osmdroid.ResourceProxy, /) -> None: ...
    def boundToHotspot(self, marker: android.graphics.drawable.Drawable, hotspot: OverlayItem.HotspotPlace, /) -> android.graphics.drawable.Drawable: ...
    def createItem(self, arg1: int | java.jint | java.lang.Integer, /) -> _ItemizedOverlay__Item: ...
    def draw(self, c: android.graphics.Canvas, mapView: org.osmdroid.views.MapView, shadow: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def getDefaultMarker(self, state: int | java.jint | java.lang.Integer, /) -> android.graphics.drawable.Drawable: ...
    def getFocus(self) -> _ItemizedOverlay__Item: ...
    def getItem(self, position: int | java.jint | java.lang.Integer, /) -> _ItemizedOverlay__Item: ...
    def hitTest(self, item: _ItemizedOverlay__Item, marker: android.graphics.drawable.Drawable, hitX: int | java.jint | java.lang.Integer, hitY: int | java.jint | java.lang.Integer, /) -> bool: ...
    def onDrawItem(self, canvas: android.graphics.Canvas, item: _ItemizedOverlay__Item, curScreenCoords: android.graphics.Point, aMapOrientation: float | java.jfloat | java.lang.Float, /) -> None: ...
    def onSingleTapConfirmed(self, e: android.view.MotionEvent, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onTap(self, index: int | java.jint | java.lang.Integer, /) -> bool: ...
    def populate(self) -> None: ...
    def setDrawFocusedItem(self, drawFocusedItem: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setFocus(self, item: _ItemizedOverlay__Item, /) -> None: ...
    def setOnFocusChangeListener(self, l: ItemizedOverlay.OnFocusChangeListener, /) -> None: ...
    def size(self) -> int: ...

    class OnFocusChangeListener(java.lang.Object):
        def onFocusChanged(self, arg1: ItemizedOverlay[java.lang.Object], arg2: OverlayItem, /) -> None: ...

class ItemizedOverlayControlView(android.widget.LinearLayout):
    mCenterToButton: android.widget.ImageButton = ...
    mLis: ItemizedOverlayControlView.ItemizedOverlayControlViewListener = ...
    mNavToButton: android.widget.ImageButton = ...
    mNextButton: android.widget.ImageButton = ...
    mPreviousButton: android.widget.ImageButton = ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, pResourceProxy: org.osmdroid.ResourceProxy, /) -> None: ...
    def setItemizedOverlayControlViewListener(self, lis: ItemizedOverlayControlView.ItemizedOverlayControlViewListener, /) -> None: ...
    def setNavToVisible(self, pVisibility: int | java.jint | java.lang.Integer, /) -> None: ...
    def setNextEnabled(self, pEnabled: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setPreviousEnabled(self, pEnabled: bool | java.jboolean | java.lang.Boolean, /) -> None: ...

    class ItemizedOverlayControlViewListener(java.lang.Object):
        def onCenter(self) -> None: ...
        def onNavTo(self) -> None: ...
        def onNext(self) -> None: ...
        def onPrevious(self) -> None: ...

_ItemizedOverlayWithFocus__Item = typing.TypeVar('_ItemizedOverlayWithFocus__Item', bound=OverlayItem)  # <Item>
class ItemizedOverlayWithFocus(ItemizedIconOverlay[_ItemizedOverlayWithFocus__Item], typing.Generic[_ItemizedOverlayWithFocus__Item]):
    DEFAULTMARKER_BACKGROUNDCOLOR: typing.ClassVar[int] = ...
    DESCRIPTION_BOX_CORNERWIDTH: typing.ClassVar[int] = ...
    DESCRIPTION_BOX_PADDING: typing.ClassVar[int] = ...
    DESCRIPTION_LINE_HEIGHT: typing.ClassVar[int] = ...
    DESCRIPTION_MAXWIDTH: typing.ClassVar[int] = ...
    DESCRIPTION_TITLE_EXTRA_LINE_HEIGHT: typing.ClassVar[int] = ...
    mDescriptionPaint: android.graphics.Paint = ...
    mFocusItemsOnTap: bool = ...
    mFocusedItemIndex: int = ...
    mMarkerBackgroundPaint: android.graphics.Paint = ...
    mMarkerFocusedBackgroundColor: int = ...
    mMarkerFocusedBase: android.graphics.drawable.Drawable = ...
    mTitlePaint: android.graphics.Paint = ...
    @typing.overload
    def __init__(self, ctx: android.content.Context, aList: java.util.List[_ItemizedOverlayWithFocus__Item], aOnItemTapListener: ItemizedIconOverlay.OnItemGestureListener[_ItemizedOverlayWithFocus__Item], /) -> None: ...
    @typing.overload
    def __init__(self, aList: java.util.List[_ItemizedOverlayWithFocus__Item], aOnItemTapListener: ItemizedIconOverlay.OnItemGestureListener[_ItemizedOverlayWithFocus__Item], pResourceProxy: org.osmdroid.ResourceProxy, /) -> None: ...
    @typing.overload
    def __init__(self, aList: java.util.List[_ItemizedOverlayWithFocus__Item], pMarker: android.graphics.drawable.Drawable, pMarkerFocused: android.graphics.drawable.Drawable, pFocusedBackgroundColor: int | java.jint | java.lang.Integer, aOnItemTapListener: ItemizedIconOverlay.OnItemGestureListener[_ItemizedOverlayWithFocus__Item], pResourceProxy: org.osmdroid.ResourceProxy, /) -> None: ...
    def draw(self, c: android.graphics.Canvas, osmv: org.osmdroid.views.MapView, shadow: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def getFocusedItem(self) -> _ItemizedOverlayWithFocus__Item: ...
    def onSingleTapUpHelper(self, index: int | java.jint | java.lang.Integer, item: _ItemizedOverlayWithFocus__Item, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def setFocusItemsOnTap(self, doit: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def setFocusedItem(self, pIndex: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setFocusedItem(self, pItem: _ItemizedOverlayWithFocus__Item, /) -> None: ...
    def unSetFocusedItem(self) -> None: ...

class MinimapOverlay(TilesOverlay):
    @typing.overload
    def __init__(self, pContext: android.content.Context, pTileRequestCompleteHandler: android.os.Handler, /) -> None: ...
    @typing.overload
    def __init__(self, pContext: android.content.Context, pTileRequestCompleteHandler: android.os.Handler, pTileProvider: org.osmdroid.tileprovider.MapTileProviderBase, /) -> None: ...
    @typing.overload
    def __init__(self, pContext: android.content.Context, pTileRequestCompleteHandler: android.os.Handler, pTileProvider: org.osmdroid.tileprovider.MapTileProviderBase, pZoomDifference: int | java.jint | java.lang.Integer, /) -> None: ...
    def draw(self, c: android.graphics.Canvas, osmv: org.osmdroid.views.MapView, shadow: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def getHeight(self) -> int: ...
    def getPadding(self) -> int: ...
    def getWidth(self) -> int: ...
    def getZoomDifference(self) -> int: ...
    def isOptionsMenuEnabled(self) -> bool: ...
    def onDoubleTap(self, pEvent: android.view.MotionEvent, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onLongPress(self, pEvent: android.view.MotionEvent, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onSingleTapUp(self, pEvent: android.view.MotionEvent, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onTileReadyToDraw(self, c: android.graphics.Canvas, currentMapTile: android.graphics.drawable.Drawable, tileRect: android.graphics.Rect, /) -> None: ...
    def setHeight(self, height: int | java.jint | java.lang.Integer, /) -> None: ...
    def setPadding(self, padding: int | java.jint | java.lang.Integer, /) -> None: ...
    def setTileSource(self, pTileSource: org.osmdroid.tileprovider.tilesource.ITileSource, /) -> None: ...
    def setWidth(self, width: int | java.jint | java.lang.Integer, /) -> None: ...
    def setZoomDifference(self, zoomDifference: int | java.jint | java.lang.Integer, /) -> None: ...

class MyLocationOverlay(android.hardware.SensorEventListener, android.location.LocationListener, org.osmdroid.api.IMyLocationOverlay, IOverlayMenuProvider, Overlay, Overlay.Snappable):
    COMPASS_FRAME_CENTER_X: float = ...
    COMPASS_FRAME_CENTER_Y: float = ...
    COMPASS_ROSE_CENTER_X: float = ...
    COMPASS_ROSE_CENTER_Y: float = ...
    DIRECTION_ARROW: android.graphics.Bitmap = ...
    DIRECTION_ARROW_CENTER_X: float = ...
    DIRECTION_ARROW_CENTER_Y: float = ...
    MENU_COMPASS: typing.ClassVar[int] = ...
    MENU_MY_LOCATION: typing.ClassVar[int] = ...
    PERSON_HOTSPOT: android.graphics.PointF = ...
    PERSON_ICON: android.graphics.Bitmap = ...
    mCirclePaint: android.graphics.Paint = ...
    mCompassFrame: android.graphics.Picture = ...
    mCompassRose: android.graphics.Picture = ...
    mDrawAccuracyEnabled: bool = ...
    mFollow: bool = ...
    mLocationListener: org.osmdroid.LocationListenerProxy = ...
    mMapView: org.osmdroid.views.MapView = ...
    mPaint: android.graphics.Paint = ...
    mSensorListener: org.osmdroid.SensorEventListenerProxy = ...
    @typing.overload
    def __init__(self, ctx: android.content.Context, mapView: org.osmdroid.views.MapView, /) -> None: ...
    @typing.overload
    def __init__(self, ctx: android.content.Context, mapView: org.osmdroid.views.MapView, pResourceProxy: org.osmdroid.ResourceProxy, /) -> None: ...
    def disableCompass(self) -> None: ...
    def disableFollowLocation(self) -> None: ...
    def disableMyLocation(self) -> None: ...
    def draw(self, canvas: android.graphics.Canvas, mapView: org.osmdroid.views.MapView, shadow: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def drawCompass(self, canvas: android.graphics.Canvas, bearing: float | java.jfloat | java.lang.Float, screenRect: android.graphics.Rect, /) -> None: ...
    def drawMyLocation(self, canvas: android.graphics.Canvas, mapView: org.osmdroid.views.MapView, lastFix: android.location.Location, /) -> None: ...
    def enableCompass(self) -> bool: ...
    def enableFollowLocation(self) -> None: ...
    def enableMyLocation(self) -> bool: ...
    def followLocation(self, follow: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def getLastFix(self) -> android.location.Location: ...
    def getLocationUpdateMinDistance(self) -> float: ...
    def getLocationUpdateMinTime(self) -> int: ...
    def getMyLocation(self) -> org.osmdroid.util.GeoPoint: ...
    def getMyLocationDrawingBounds(self, zoomLevel: int | java.jint | java.lang.Integer, lastFix: android.location.Location, reuse: android.graphics.Rect, /) -> android.graphics.Rect: ...
    def getOrientation(self) -> float: ...
    def isCompassEnabled(self) -> bool: ...
    def isDrawAccuracyEnabled(self) -> bool: ...
    def isFollowLocationEnabled(self) -> bool: ...
    def isMyLocationEnabled(self) -> bool: ...
    def isOptionsMenuEnabled(self) -> bool: ...
    def onAccuracyChanged(self, arg0: android.hardware.Sensor, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def onCreateOptionsMenu(self, pMenu: android.view.Menu, pMenuIdOffset: int | java.jint | java.lang.Integer, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onLocationChanged(self, location: android.location.Location, /) -> None: ...
    def onOptionsItemSelected(self, pItem: android.view.MenuItem, pMenuIdOffset: int | java.jint | java.lang.Integer, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onPrepareOptionsMenu(self, pMenu: android.view.Menu, pMenuIdOffset: int | java.jint | java.lang.Integer, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onProviderDisabled(self, provider: str | java.lang.String, /) -> None: ...
    def onProviderEnabled(self, provider: str | java.lang.String, /) -> None: ...
    def onSensorChanged(self, event: android.hardware.SensorEvent, /) -> None: ...
    def onSnapToItem(self, x: int | java.jint | java.lang.Integer, y: int | java.jint | java.lang.Integer, snapPoint: android.graphics.Point, mapView: org.osmdroid.api.IMapView, /) -> bool: ...
    def onStatusChanged(self, provider: str | java.lang.String, status: int | java.jint | java.lang.Integer, extras: android.os.Bundle, /) -> None: ...
    def onTouchEvent(self, event: android.view.MotionEvent, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def runOnFirstFix(self, runnable: java.lang.Runnable, /) -> bool: ...
    def setCompassCenter(self, x: float | java.jfloat | java.lang.Float, y: float | java.jfloat | java.lang.Float, /) -> None: ...
    def setDrawAccuracyEnabled(self, drawAccuracyEnabled: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setLocationUpdateMinDistance(self, meters: float | java.jfloat | java.lang.Float, /) -> None: ...
    def setLocationUpdateMinTime(self, milliSeconds: int | java.jlong | java.lang.Long, /) -> None: ...
    def setOptionsMenuEnabled(self, pOptionsMenuEnabled: bool | java.jboolean | java.lang.Boolean, /) -> None: ...

class NonAcceleratedOverlay(Overlay):
    @typing.overload
    def __init__(self, ctx: android.content.Context, /) -> None: ...
    @typing.overload
    def __init__(self, pResourceProxy: org.osmdroid.ResourceProxy, /) -> None: ...
    def draw(self, c: android.graphics.Canvas, osmv: org.osmdroid.views.MapView, shadow: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def isUsingBackingBitmap(self) -> bool: ...
    @typing.overload
    def onDraw(self, arg1: android.graphics.Canvas, arg2: org.osmdroid.views.MapView, arg3: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def onDraw(self, c: android.graphics.Canvas, acceleratedCanvas: android.graphics.Canvas, osmv: org.osmdroid.views.MapView, shadow: bool | java.jboolean | java.lang.Boolean, /) -> None: ...

class Overlay(org.osmdroid.views.util.constants.OverlayConstants):
    SHADOW_X_SKEW: typing.ClassVar[float] = ...
    SHADOW_Y_SCALE: typing.ClassVar[float] = ...
    mResourceProxy: org.osmdroid.ResourceProxy = ...
    mScale: float = ...
    @typing.overload
    def __init__(self, ctx: android.content.Context, /) -> None: ...
    @typing.overload
    def __init__(self, pResourceProxy: org.osmdroid.ResourceProxy, /) -> None: ...
    def draw(self, arg1: android.graphics.Canvas, arg2: org.osmdroid.views.MapView, arg3: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @staticmethod
    def drawAt(canvas: android.graphics.Canvas, drawable: android.graphics.drawable.Drawable, x: int | java.jint | java.lang.Integer, y: int | java.jint | java.lang.Integer, shadow: bool | java.jboolean | java.lang.Boolean, aMapOrientation: float | java.jfloat | java.lang.Float, /) -> None: ...
    @staticmethod
    def getSafeMenuId() -> int: ...
    @staticmethod
    def getSafeMenuIdSequence(count: int | java.jint | java.lang.Integer, /) -> int: ...
    def isEnabled(self) -> bool: ...
    def onDetach(self, mapView: org.osmdroid.views.MapView, /) -> None: ...
    def onDoubleTap(self, e: android.view.MotionEvent, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onDoubleTapEvent(self, e: android.view.MotionEvent, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onDown(self, e: android.view.MotionEvent, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onFling(self, pEvent1: android.view.MotionEvent, pEvent2: android.view.MotionEvent, pVelocityX: float | java.jfloat | java.lang.Float, pVelocityY: float | java.jfloat | java.lang.Float, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onKeyDown(self, keyCode: int | java.jint | java.lang.Integer, event: android.view.KeyEvent, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onKeyUp(self, keyCode: int | java.jint | java.lang.Integer, event: android.view.KeyEvent, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onLongPress(self, e: android.view.MotionEvent, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onScroll(self, pEvent1: android.view.MotionEvent, pEvent2: android.view.MotionEvent, pDistanceX: float | java.jfloat | java.lang.Float, pDistanceY: float | java.jfloat | java.lang.Float, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onShowPress(self, pEvent: android.view.MotionEvent, pMapView: org.osmdroid.views.MapView, /) -> None: ...
    def onSingleTapConfirmed(self, e: android.view.MotionEvent, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onSingleTapUp(self, e: android.view.MotionEvent, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onTouchEvent(self, event: android.view.MotionEvent, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onTrackballEvent(self, event: android.view.MotionEvent, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def setEnabled(self, pEnabled: bool | java.jboolean | java.lang.Boolean, /) -> None: ...

    class Snappable(java.lang.Object):
        def onSnapToItem(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, arg3: android.graphics.Point, arg4: org.osmdroid.api.IMapView, /) -> bool: ...

class OverlayItem(java.lang.Object):
    DEFAULT_MARKER_SIZE: typing.ClassVar[android.graphics.Point] = ...
    ITEM_STATE_FOCUSED_MASK: typing.ClassVar[int] = ...
    ITEM_STATE_PRESSED_MASK: typing.ClassVar[int] = ...
    ITEM_STATE_SELECTED_MASK: typing.ClassVar[int] = ...
    mGeoPoint: org.osmdroid.util.GeoPoint = ...
    mHotspotPlace: OverlayItem.HotspotPlace = ...
    mMarker: android.graphics.drawable.Drawable = ...
    mSnippet: str = ...
    mTitle: str = ...
    mUid: str = ...
    @typing.overload
    def __init__(self, aTitle: str | java.lang.String, aSnippet: str | java.lang.String, aGeoPoint: org.osmdroid.util.GeoPoint, /) -> None: ...
    @typing.overload
    def __init__(self, aUid: str | java.lang.String, aTitle: str | java.lang.String, aDescription: str | java.lang.String, aGeoPoint: org.osmdroid.util.GeoPoint, /) -> None: ...
    def getDrawable(self) -> android.graphics.drawable.Drawable: ...
    def getHeight(self) -> int: ...
    def getMarker(self, stateBitset: int | java.jint | java.lang.Integer, /) -> android.graphics.drawable.Drawable: ...
    def getMarkerHotspot(self) -> OverlayItem.HotspotPlace: ...
    def getPoint(self) -> org.osmdroid.util.GeoPoint: ...
    def getSnippet(self) -> str: ...
    def getTitle(self) -> str: ...
    def getUid(self) -> str: ...
    def getWidth(self) -> int: ...
    def setMarker(self, marker: android.graphics.drawable.Drawable, /) -> None: ...
    def setMarkerHotspot(self, place: OverlayItem.HotspotPlace, /) -> None: ...
    @staticmethod
    def setState(drawable: android.graphics.drawable.Drawable, stateBitset: int | java.jint | java.lang.Integer, /) -> None: ...

    class HotspotPlace(java.lang.Enum[OverlayItem.HotspotPlace]):
        BOTTOM_CENTER: typing.ClassVar[OverlayItem.HotspotPlace] = ...
        CENTER: typing.ClassVar[OverlayItem.HotspotPlace] = ...
        LEFT_CENTER: typing.ClassVar[OverlayItem.HotspotPlace] = ...
        LOWER_LEFT_CORNER: typing.ClassVar[OverlayItem.HotspotPlace] = ...
        LOWER_RIGHT_CORNER: typing.ClassVar[OverlayItem.HotspotPlace] = ...
        NONE: typing.ClassVar[OverlayItem.HotspotPlace] = ...
        RIGHT_CENTER: typing.ClassVar[OverlayItem.HotspotPlace] = ...
        TOP_CENTER: typing.ClassVar[OverlayItem.HotspotPlace] = ...
        UPPER_LEFT_CORNER: typing.ClassVar[OverlayItem.HotspotPlace] = ...
        UPPER_RIGHT_CORNER: typing.ClassVar[OverlayItem.HotspotPlace] = ...
        @staticmethod
        def valueOf(name: str | java.lang.String, /) -> OverlayItem.HotspotPlace: ...
        @staticmethod
        def values() -> java.chaquopy.JavaArray[OverlayItem.HotspotPlace]: ...

class OverlayManager(java.util.AbstractList[Overlay]):
    def __init__(self, tilesOverlay: TilesOverlay, /) -> None: ...
    def add(self, pIndex: int | java.jint | java.lang.Integer, pElement: Overlay, /) -> None: ...
    def get(self, pIndex: int | java.jint | java.lang.Integer, /) -> Overlay: ...
    def getTilesOverlay(self) -> TilesOverlay: ...
    def onCreateOptionsMenu(self, pMenu: android.view.Menu, menuIdOffset: int | java.jint | java.lang.Integer, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onDetach(self, pMapView: org.osmdroid.views.MapView, /) -> None: ...
    def onDoubleTap(self, e: android.view.MotionEvent, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onDoubleTapEvent(self, e: android.view.MotionEvent, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onDown(self, pEvent: android.view.MotionEvent, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onDraw(self, c: android.graphics.Canvas, pMapView: org.osmdroid.views.MapView, /) -> None: ...
    def onFling(self, pEvent1: android.view.MotionEvent, pEvent2: android.view.MotionEvent, pVelocityX: float | java.jfloat | java.lang.Float, pVelocityY: float | java.jfloat | java.lang.Float, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onKeyDown(self, keyCode: int | java.jint | java.lang.Integer, event: android.view.KeyEvent, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onKeyUp(self, keyCode: int | java.jint | java.lang.Integer, event: android.view.KeyEvent, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onLongPress(self, pEvent: android.view.MotionEvent, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onOptionsItemSelected(self, item: android.view.MenuItem, menuIdOffset: int | java.jint | java.lang.Integer, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onPrepareOptionsMenu(self, pMenu: android.view.Menu, menuIdOffset: int | java.jint | java.lang.Integer, mapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onScroll(self, pEvent1: android.view.MotionEvent, pEvent2: android.view.MotionEvent, pDistanceX: float | java.jfloat | java.lang.Float, pDistanceY: float | java.jfloat | java.lang.Float, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onShowPress(self, pEvent: android.view.MotionEvent, pMapView: org.osmdroid.views.MapView, /) -> None: ...
    def onSingleTapConfirmed(self, e: android.view.MotionEvent, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onSingleTapUp(self, pEvent: android.view.MotionEvent, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onSnapToItem(self, x: int | java.jint | java.lang.Integer, y: int | java.jint | java.lang.Integer, snapPoint: android.graphics.Point, pMapView: org.osmdroid.api.IMapView, /) -> bool: ...
    def onTouchEvent(self, event: android.view.MotionEvent, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onTrackballEvent(self, event: android.view.MotionEvent, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def overlaysReversed(self) -> java.lang.Iterable[Overlay]: ...
    def remove(self, pIndex: int | java.jint | java.lang.Integer, /) -> Overlay: ...
    def set(self, pIndex: int | java.jint | java.lang.Integer, pElement: Overlay, /) -> Overlay: ...
    def setOptionsMenusEnabled(self, pEnabled: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setTilesOverlay(self, tilesOverlay: TilesOverlay, /) -> None: ...
    def size(self) -> int: ...

class PathOverlay(Overlay):
    mPaint: android.graphics.Paint = ...
    @typing.overload
    def __init__(self, color: int | java.jint | java.lang.Integer, ctx: android.content.Context, /) -> None: ...
    @typing.overload
    def __init__(self, color: int | java.jint | java.lang.Integer, resourceProxy: org.osmdroid.ResourceProxy, /) -> None: ...
    @typing.overload
    def __init__(self, color: int | java.jint | java.lang.Integer, width: float | java.jfloat | java.lang.Float, resourceProxy: org.osmdroid.ResourceProxy, /) -> None: ...
    @typing.overload
    def addGreatCircle(self, startPoint: org.osmdroid.util.GeoPoint, endPoint: org.osmdroid.util.GeoPoint, /) -> None: ...
    @typing.overload
    def addGreatCircle(self, startPoint: org.osmdroid.util.GeoPoint, endPoint: org.osmdroid.util.GeoPoint, numberOfPoints: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def addPoint(self, aPoint: org.osmdroid.api.IGeoPoint, /) -> None: ...
    @typing.overload
    def addPoint(self, aLatitudeE6: int | java.jint | java.lang.Integer, aLongitudeE6: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def addPoints(self, aPoints: java.util.List[org.osmdroid.api.IGeoPoint], /) -> None: ...
    @typing.overload
    def addPoints(self, *aPoints: org.osmdroid.api.IGeoPoint) -> None: ...
    def clearPath(self) -> None: ...
    def draw(self, canvas: android.graphics.Canvas, mapView: org.osmdroid.views.MapView, shadow: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def getNumberOfPoints(self) -> int: ...
    def getPaint(self) -> android.graphics.Paint: ...
    def setAlpha(self, a: int | java.jint | java.lang.Integer, /) -> None: ...
    def setColor(self, color: int | java.jint | java.lang.Integer, /) -> None: ...
    def setPaint(self, pPaint: android.graphics.Paint, /) -> None: ...

class ScaleBarOverlay(org.osmdroid.util.constants.GeoConstants, Overlay):
    barPath: android.graphics.Path = ...
    latitudeBarRect: android.graphics.Rect = ...
    longitudeBarRect: android.graphics.Rect = ...
    screenHeight: int = ...
    screenWidth: int = ...
    xdpi: float = ...
    ydpi: float = ...
    @typing.overload
    def __init__(self, context: android.content.Context, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, pResourceProxy: org.osmdroid.ResourceProxy, /) -> None: ...
    def disableScaleBar(self) -> None: ...
    def draw(self, c: android.graphics.Canvas, mapView: org.osmdroid.views.MapView, shadow: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def drawLatitudeScale(self, latitude: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def drawLongitudeScale(self, longitude: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def enableScaleBar(self) -> None: ...
    def getBarPaint(self) -> android.graphics.Paint: ...
    def getTextPaint(self) -> android.graphics.Paint: ...
    def getUnitsOfMeasure(self) -> ScaleBarOverlay.UnitsOfMeasure: ...
    def scaleBarLengthText(self, meters: int | java.jint | java.lang.Integer, /) -> str: ...
    def setBackgroundPaint(self, pBgPaint: android.graphics.Paint, /) -> None: ...
    def setBarPaint(self, pBarPaint: android.graphics.Paint, /) -> None: ...
    def setCentred(self, centred: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setEnableAdjustLength(self, adjustLength: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setLineWidth(self, width: float | java.jfloat | java.lang.Float, /) -> None: ...
    def setMaxLength(self, pMaxLengthInCm: float | java.jfloat | java.lang.Float, /) -> None: ...
    def setMinZoom(self, zoom: int | java.jint | java.lang.Integer, /) -> None: ...
    def setScaleBarOffset(self, x: int | java.jint | java.lang.Integer, y: int | java.jint | java.lang.Integer, /) -> None: ...
    def setTextPaint(self, pTextPaint: android.graphics.Paint, /) -> None: ...
    def setTextSize(self, size: float | java.jfloat | java.lang.Float, /) -> None: ...
    def setUnitsOfMeasure(self, unitsOfMeasure: ScaleBarOverlay.UnitsOfMeasure, /) -> None: ...

    class UnitsOfMeasure(java.lang.Enum[ScaleBarOverlay.UnitsOfMeasure]):
        imperial: typing.ClassVar[ScaleBarOverlay.UnitsOfMeasure] = ...
        metric: typing.ClassVar[ScaleBarOverlay.UnitsOfMeasure] = ...
        nautical: typing.ClassVar[ScaleBarOverlay.UnitsOfMeasure] = ...
        @staticmethod
        def valueOf(name: str | java.lang.String, /) -> ScaleBarOverlay.UnitsOfMeasure: ...
        @staticmethod
        def values() -> java.chaquopy.JavaArray[ScaleBarOverlay.UnitsOfMeasure]: ...

class SimpleLocationOverlay(Overlay):
    PERSON_HOTSPOT: android.graphics.Point = ...
    PERSON_ICON: android.graphics.Bitmap = ...
    mLocation: org.osmdroid.util.GeoPoint = ...
    mPaint: android.graphics.Paint = ...
    @typing.overload
    def __init__(self, ctx: android.content.Context, /) -> None: ...
    @typing.overload
    def __init__(self, ctx: android.content.Context, pResourceProxy: org.osmdroid.ResourceProxy, /) -> None: ...
    def draw(self, c: android.graphics.Canvas, osmv: org.osmdroid.views.MapView, shadow: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def getMyLocation(self) -> org.osmdroid.util.GeoPoint: ...
    def setLocation(self, mp: org.osmdroid.util.GeoPoint, /) -> None: ...

class TilesOverlay(IOverlayMenuProvider, Overlay):
    MENU_MAP_MODE: typing.ClassVar[int] = ...
    MENU_OFFLINE: typing.ClassVar[int] = ...
    MENU_TILE_SOURCE_STARTING_ID: typing.ClassVar[int] = ...
    mDebugPaint: android.graphics.Paint = ...
    mTileProvider: org.osmdroid.tileprovider.MapTileProviderBase = ...
    @typing.overload
    def __init__(self, aTileProvider: org.osmdroid.tileprovider.MapTileProviderBase, aContext: android.content.Context, /) -> None: ...
    @typing.overload
    def __init__(self, aTileProvider: org.osmdroid.tileprovider.MapTileProviderBase, pResourceProxy: org.osmdroid.ResourceProxy, /) -> None: ...
    def draw(self, c: android.graphics.Canvas, osmv: org.osmdroid.views.MapView, shadow: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def drawTiles(self, c: android.graphics.Canvas, projection: org.osmdroid.views.Projection, zoomLevel: int | java.jint | java.lang.Integer, tileSizePx: int | java.jint | java.lang.Integer, viewPort: android.graphics.Rect, /) -> None: ...
    def getLoadingBackgroundColor(self) -> int: ...
    def getLoadingLineColor(self) -> int: ...
    def getMaximumZoomLevel(self) -> int: ...
    def getMinimumZoomLevel(self) -> int: ...
    def getOvershootTileCache(self) -> int: ...
    def isOptionsMenuEnabled(self) -> bool: ...
    def onCreateOptionsMenu(self, pMenu: android.view.Menu, pMenuIdOffset: int | java.jint | java.lang.Integer, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onDetach(self, pMapView: org.osmdroid.views.MapView, /) -> None: ...
    def onOptionsItemSelected(self, pItem: android.view.MenuItem, pMenuIdOffset: int | java.jint | java.lang.Integer, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onPrepareOptionsMenu(self, pMenu: android.view.Menu, pMenuIdOffset: int | java.jint | java.lang.Integer, pMapView: org.osmdroid.views.MapView, /) -> bool: ...
    def onTileReadyToDraw(self, c: android.graphics.Canvas, currentMapTile: android.graphics.drawable.Drawable, tileRect: android.graphics.Rect, /) -> None: ...
    def setLoadingBackgroundColor(self, pLoadingBackgroundColor: int | java.jint | java.lang.Integer, /) -> None: ...
    def setLoadingLineColor(self, pLoadingLineColor: int | java.jint | java.lang.Integer, /) -> None: ...
    def setOptionsMenuEnabled(self, pOptionsMenuEnabled: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setOvershootTileCache(self, overshootTileCache: int | java.jint | java.lang.Integer, /) -> None: ...
    def setUseDataConnection(self, aMode: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def useDataConnection(self) -> bool: ...
