import typing

import android.os
import java
import java.lang
import org.osmdroid.views

class DelayedMapListener(MapListener):
    DEFAULT_DELAY: typing.ClassVar[int] = ...
    callback: DelayedMapListener.CallbackTask = ...
    delay: int = ...
    handler: android.os.Handler = ...
    @typing.overload
    def __init__(self, wrappedListener: MapListener, /) -> None: ...
    @typing.overload
    def __init__(self, wrappedListener: MapListener, delay: int | java.jlong | java.lang.Long, /) -> None: ...
    def dispatch(self, event: MapEvent, /) -> None: ...
    def onScroll(self, event: ScrollEvent, /) -> bool: ...
    def onZoom(self, event: ZoomEvent, /) -> bool: ...

class MapAdapter(MapListener):
    def __init__(self) -> None: ...
    def onScroll(self, event: ScrollEvent, /) -> bool: ...
    def onZoom(self, event: ZoomEvent, /) -> bool: ...

class MapEvent(java.lang.Object): ...

class MapListener(java.lang.Object):
    def onScroll(self, arg1: ScrollEvent, /) -> bool: ...
    def onZoom(self, arg1: ZoomEvent, /) -> bool: ...

class ScrollEvent(MapEvent):
    source: org.osmdroid.views.MapView = ...
    x: int = ...
    y: int = ...
    def __init__(self, source: org.osmdroid.views.MapView, x: int | java.jint | java.lang.Integer, y: int | java.jint | java.lang.Integer, /) -> None: ...
    def getSource(self) -> org.osmdroid.views.MapView: ...
    def getX(self) -> int: ...
    def getY(self) -> int: ...
    def toString(self) -> str: ...

class ZoomEvent(MapEvent):
    source: org.osmdroid.views.MapView = ...
    zoomLevel: int = ...
    def __init__(self, source: org.osmdroid.views.MapView, zoomLevel: int | java.jint | java.lang.Integer, /) -> None: ...
    def getSource(self) -> org.osmdroid.views.MapView: ...
    def getZoomLevel(self) -> int: ...
    def toString(self) -> str: ...
