import typing

import android.location
import java
import java.lang
import java.text
import java.util
import org.osmdroid.contributor.util
import org.osmdroid.contributor.util.constants
import org.osmdroid.util

class GpxToPHPUploader(java.lang.Object):
    UPLOADSCRIPT_URL: typing.ClassVar[str] = ...
    @staticmethod
    def uploadAsync(recordedGeoPoints: java.util.ArrayList[org.osmdroid.contributor.util.RecordedGeoPoint], /) -> None: ...

class OSMUploader(org.osmdroid.contributor.util.constants.OpenStreetMapContributorConstants):
    API_VERSION: typing.ClassVar[str] = ...
    pseudoFileNameFormat: typing.ClassVar[java.text.SimpleDateFormat] = ...
    @staticmethod
    def upload(username: str | java.lang.String, password: str | java.lang.String, description: str | java.lang.String, tags: str | java.lang.String, addDateTags: bool | java.jboolean | java.lang.Boolean, recordedGeoPoints: java.util.ArrayList[org.osmdroid.contributor.util.RecordedGeoPoint], pseudoFileName: str | java.lang.String, /) -> None: ...
    @typing.overload
    @staticmethod
    def uploadAsync(recordedGeoPoints: java.util.ArrayList[org.osmdroid.contributor.util.RecordedGeoPoint], /) -> None: ...
    @typing.overload
    @staticmethod
    def uploadAsync(description: str | java.lang.String, tags: str | java.lang.String, addDateTags: bool | java.jboolean | java.lang.Boolean, recordedGeoPoints: java.util.ArrayList[org.osmdroid.contributor.util.RecordedGeoPoint], /) -> None: ...
    @typing.overload
    @staticmethod
    def uploadAsync(username: str | java.lang.String, password: str | java.lang.String, description: str | java.lang.String, tags: str | java.lang.String, addDateTags: bool | java.jboolean | java.lang.Boolean, recordedGeoPoints: java.util.ArrayList[org.osmdroid.contributor.util.RecordedGeoPoint], pseudoFileName: str | java.lang.String, /) -> None: ...

class RouteRecorder(java.lang.Object):
    mRecords: java.util.ArrayList[org.osmdroid.contributor.util.RecordedGeoPoint] = ...
    def __init__(self) -> None: ...
    @typing.overload
    def add(self, aLocation: android.location.Location, aNumSatellites: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def add(self, aGeoPoint: org.osmdroid.util.GeoPoint, aNumSatellites: int | java.jint | java.lang.Integer, /) -> None: ...
    def getRecordedGeoPoints(self) -> java.util.ArrayList[org.osmdroid.contributor.util.RecordedGeoPoint]: ...
