import typing

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

class RecordedGeoPoint(org.osmdroid.contributor.util.constants.OpenStreetMapContributorConstants, org.osmdroid.util.GeoPoint):
    mNumSatellites: int = ...
    mTimeStamp: int = ...
    @typing.overload
    def __init__(self, latitudeE6: int | java.jint | java.lang.Integer, longitudeE6: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, latitudeE6: int | java.jint | java.lang.Integer, longitudeE6: int | java.jint | java.lang.Integer, aTimeStamp: int | java.jlong | java.lang.Long, aNumSatellites: int | java.jint | java.lang.Integer, /) -> None: ...
    def getLatitudeAsDouble(self) -> float: ...
    def getLongitudeAsDouble(self) -> float: ...
    def getNumSatellites(self) -> int: ...
    def getTimeStamp(self) -> int: ...

class RecordedRouteGPXFormatter(org.osmdroid.contributor.util.constants.OpenStreetMapContributorConstants):
    GPX_TAG_TRACK_SEGMENT_POINT: typing.ClassVar[str] = ...
    GPX_TAG_TRACK_SEGMENT_POINT_CLOSE: typing.ClassVar[str] = ...
    GPX_TAG_TRACK_SEGMENT_POINT_ELE: typing.ClassVar[str] = ...
    GPX_TAG_TRACK_SEGMENT_POINT_SAT: typing.ClassVar[str] = ...
    GPX_TAG_TRACK_SEGMENT_POINT_TIME: typing.ClassVar[str] = ...
    def __init__(self) -> None: ...
    @staticmethod
    def create(someRecords: java.util.List[RecordedGeoPoint], /) -> str: ...

class Util(org.osmdroid.contributor.util.constants.OpenStreetMapContributorConstants):
    UTCSimpleDateFormat: typing.ClassVar[java.text.SimpleDateFormat] = ...
    @staticmethod
    def convertTimestampToUTCString(aTimestamp: int | java.jlong | java.lang.Long, /) -> str: ...
    @staticmethod
    def isSufficienDataForUpload(recordedGeoPoints: java.util.ArrayList[RecordedGeoPoint], /) -> bool: ...
