import typing

import android.content
import java
import java.chaquopy
import java.lang
import java.text
import java.util

class DateFormat(java.lang.Object):
    def __init__(self) -> None: ...
    @typing.overload
    @staticmethod
    def format(inFormat: java.lang.CharSequence, inTimeInMillis: int | java.jlong | java.lang.Long, /) -> java.lang.CharSequence: ...
    @typing.overload
    @staticmethod
    def format(inFormat: java.lang.CharSequence, inDate: java.util.Calendar, /) -> java.lang.CharSequence: ...
    @typing.overload
    @staticmethod
    def format(inFormat: java.lang.CharSequence, inDate: java.util.Date, /) -> java.lang.CharSequence: ...
    @staticmethod
    def getBestDateTimePattern(locale: java.util.Locale, skeleton: str | java.lang.String, /) -> str: ...
    @staticmethod
    def getDateFormat(context: android.content.Context, /) -> java.text.DateFormat: ...
    @staticmethod
    def getDateFormatOrder(context: android.content.Context, /) -> java.chaquopy.JavaArrayJChar: ...
    @staticmethod
    def getLongDateFormat(context: android.content.Context, /) -> java.text.DateFormat: ...
    @staticmethod
    def getMediumDateFormat(context: android.content.Context, /) -> java.text.DateFormat: ...
    @staticmethod
    def getTimeFormat(context: android.content.Context, /) -> java.text.DateFormat: ...
    @staticmethod
    def is24HourFormat(context: android.content.Context, /) -> bool: ...

class DateUtils(java.lang.Object):
    ABBREV_MONTH_FORMAT: typing.ClassVar[str] = ...
    ABBREV_WEEKDAY_FORMAT: typing.ClassVar[str] = ...
    DAY_IN_MILLIS: typing.ClassVar[int] = ...
    FORMAT_12HOUR: typing.ClassVar[int] = ...
    FORMAT_24HOUR: typing.ClassVar[int] = ...
    FORMAT_ABBREV_ALL: typing.ClassVar[int] = ...
    FORMAT_ABBREV_MONTH: typing.ClassVar[int] = ...
    FORMAT_ABBREV_RELATIVE: typing.ClassVar[int] = ...
    FORMAT_ABBREV_TIME: typing.ClassVar[int] = ...
    FORMAT_ABBREV_WEEKDAY: typing.ClassVar[int] = ...
    FORMAT_CAP_AMPM: typing.ClassVar[int] = ...
    FORMAT_CAP_MIDNIGHT: typing.ClassVar[int] = ...
    FORMAT_CAP_NOON: typing.ClassVar[int] = ...
    FORMAT_CAP_NOON_MIDNIGHT: typing.ClassVar[int] = ...
    FORMAT_NO_MIDNIGHT: typing.ClassVar[int] = ...
    FORMAT_NO_MONTH_DAY: typing.ClassVar[int] = ...
    FORMAT_NO_NOON: typing.ClassVar[int] = ...
    FORMAT_NO_NOON_MIDNIGHT: typing.ClassVar[int] = ...
    FORMAT_NO_YEAR: typing.ClassVar[int] = ...
    FORMAT_NUMERIC_DATE: typing.ClassVar[int] = ...
    FORMAT_SHOW_DATE: typing.ClassVar[int] = ...
    FORMAT_SHOW_TIME: typing.ClassVar[int] = ...
    FORMAT_SHOW_WEEKDAY: typing.ClassVar[int] = ...
    FORMAT_SHOW_YEAR: typing.ClassVar[int] = ...
    FORMAT_UTC: typing.ClassVar[int] = ...
    HOUR_IN_MILLIS: typing.ClassVar[int] = ...
    HOUR_MINUTE_24: typing.ClassVar[str] = ...
    LENGTH_LONG: typing.ClassVar[int] = ...
    LENGTH_MEDIUM: typing.ClassVar[int] = ...
    LENGTH_SHORT: typing.ClassVar[int] = ...
    LENGTH_SHORTER: typing.ClassVar[int] = ...
    LENGTH_SHORTEST: typing.ClassVar[int] = ...
    MINUTE_IN_MILLIS: typing.ClassVar[int] = ...
    MONTH_DAY_FORMAT: typing.ClassVar[str] = ...
    MONTH_FORMAT: typing.ClassVar[str] = ...
    NUMERIC_MONTH_FORMAT: typing.ClassVar[str] = ...
    SECOND_IN_MILLIS: typing.ClassVar[int] = ...
    WEEKDAY_FORMAT: typing.ClassVar[str] = ...
    WEEK_IN_MILLIS: typing.ClassVar[int] = ...
    YEAR_FORMAT: typing.ClassVar[str] = ...
    YEAR_FORMAT_TWO_DIGITS: typing.ClassVar[str] = ...
    YEAR_IN_MILLIS: typing.ClassVar[int] = ...
    sameMonthTable: typing.ClassVar[java.chaquopy.JavaArrayJInt] = ...
    sameYearTable: typing.ClassVar[java.chaquopy.JavaArrayJInt] = ...
    def __init__(self) -> None: ...
    @typing.overload
    @staticmethod
    def formatDateRange(context: android.content.Context, startMillis: int | java.jlong | java.lang.Long, endMillis: int | java.jlong | java.lang.Long, flags: int | java.jint | java.lang.Integer, /) -> str: ...
    @typing.overload
    @staticmethod
    def formatDateRange(context: android.content.Context, formatter: java.util.Formatter, startMillis: int | java.jlong | java.lang.Long, endMillis: int | java.jlong | java.lang.Long, flags: int | java.jint | java.lang.Integer, /) -> java.util.Formatter: ...
    @typing.overload
    @staticmethod
    def formatDateRange(context: android.content.Context, formatter: java.util.Formatter, startMillis: int | java.jlong | java.lang.Long, endMillis: int | java.jlong | java.lang.Long, flags: int | java.jint | java.lang.Integer, timeZone: str | java.lang.String, /) -> java.util.Formatter: ...
    @staticmethod
    def formatDateTime(context: android.content.Context, millis: int | java.jlong | java.lang.Long, flags: int | java.jint | java.lang.Integer, /) -> str: ...
    @typing.overload
    @staticmethod
    def formatElapsedTime(elapsedSeconds: int | java.jlong | java.lang.Long, /) -> str: ...
    @typing.overload
    @staticmethod
    def formatElapsedTime(recycle: java.lang.StringBuilder, elapsedSeconds: int | java.jlong | java.lang.Long, /) -> str: ...
    @staticmethod
    def formatSameDayTime(then: int | java.jlong | java.lang.Long, now: int | java.jlong | java.lang.Long, dateStyle: int | java.jint | java.lang.Integer, timeStyle: int | java.jint | java.lang.Integer, /) -> java.lang.CharSequence: ...
    @staticmethod
    def getAMPMString(ampm: int | java.jint | java.lang.Integer, /) -> str: ...
    @staticmethod
    def getDayOfWeekString(dayOfWeek: int | java.jint | java.lang.Integer, abbrev: int | java.jint | java.lang.Integer, /) -> str: ...
    @staticmethod
    def getMonthString(month: int | java.jint | java.lang.Integer, abbrev: int | java.jint | java.lang.Integer, /) -> str: ...
    @staticmethod
    def getRelativeDateTimeString(c: android.content.Context, time: int | java.jlong | java.lang.Long, minResolution: int | java.jlong | java.lang.Long, transitionResolution: int | java.jlong | java.lang.Long, flags: int | java.jint | java.lang.Integer, /) -> java.lang.CharSequence: ...
    @typing.overload
    @staticmethod
    def getRelativeTimeSpanString(startTime: int | java.jlong | java.lang.Long, /) -> java.lang.CharSequence: ...
    @typing.overload
    @staticmethod
    def getRelativeTimeSpanString(c: android.content.Context, millis: int | java.jlong | java.lang.Long, /) -> java.lang.CharSequence: ...
    @typing.overload
    @staticmethod
    def getRelativeTimeSpanString(time: int | java.jlong | java.lang.Long, now: int | java.jlong | java.lang.Long, minResolution: int | java.jlong | java.lang.Long, /) -> java.lang.CharSequence: ...
    @typing.overload
    @staticmethod
    def getRelativeTimeSpanString(c: android.content.Context, millis: int | java.jlong | java.lang.Long, withPreposition: bool | java.jboolean | java.lang.Boolean, /) -> java.lang.CharSequence: ...
    @typing.overload
    @staticmethod
    def getRelativeTimeSpanString(time: int | java.jlong | java.lang.Long, now: int | java.jlong | java.lang.Long, minResolution: int | java.jlong | java.lang.Long, flags: int | java.jint | java.lang.Integer, /) -> java.lang.CharSequence: ...
    @staticmethod
    def isToday(when: int | java.jlong | java.lang.Long, /) -> bool: ...

class Formatter(java.lang.Object):
    def __init__(self) -> None: ...
    @staticmethod
    def formatFileSize(context: android.content.Context, sizeBytes: int | java.jlong | java.lang.Long, /) -> str: ...
    @staticmethod
    def formatIpAddress(ipv4Address: int | java.jint | java.lang.Integer, /) -> str: ...
    @staticmethod
    def formatShortFileSize(context: android.content.Context, sizeBytes: int | java.jlong | java.lang.Long, /) -> str: ...

class Time(java.lang.Object):
    EPOCH_JULIAN_DAY: typing.ClassVar[int] = ...
    FRIDAY: typing.ClassVar[int] = ...
    HOUR: typing.ClassVar[int] = ...
    MINUTE: typing.ClassVar[int] = ...
    MONDAY: typing.ClassVar[int] = ...
    MONDAY_BEFORE_JULIAN_EPOCH: typing.ClassVar[int] = ...
    MONTH: typing.ClassVar[int] = ...
    MONTH_DAY: typing.ClassVar[int] = ...
    SATURDAY: typing.ClassVar[int] = ...
    SECOND: typing.ClassVar[int] = ...
    SUNDAY: typing.ClassVar[int] = ...
    THURSDAY: typing.ClassVar[int] = ...
    TIMEZONE_UTC: typing.ClassVar[str] = ...
    TUESDAY: typing.ClassVar[int] = ...
    WEDNESDAY: typing.ClassVar[int] = ...
    WEEK_DAY: typing.ClassVar[int] = ...
    WEEK_NUM: typing.ClassVar[int] = ...
    YEAR: typing.ClassVar[int] = ...
    YEAR_DAY: typing.ClassVar[int] = ...
    allDay: bool = ...
    gmtoff: int = ...
    hour: int = ...
    isDst: int = ...
    minute: int = ...
    month: int = ...
    monthDay: int = ...
    second: int = ...
    timezone: str = ...
    weekDay: int = ...
    year: int = ...
    yearDay: int = ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: Time, /) -> None: ...
    @typing.overload
    def __init__(self, timezoneId: str | java.lang.String, /) -> None: ...
    def after(self, that: Time, /) -> bool: ...
    def before(self, that: Time, /) -> bool: ...
    def clear(self, timezoneId: str | java.lang.String, /) -> None: ...
    @staticmethod
    def compare(a: Time, b: Time, /) -> int: ...
    def format(self, format: str | java.lang.String, /) -> str: ...
    def format2445(self) -> str: ...
    def format3339(self, allDay: bool | java.jboolean | java.lang.Boolean, /) -> str: ...
    def getActualMaximum(self, field: int | java.jint | java.lang.Integer, /) -> int: ...
    @staticmethod
    def getCurrentTimezone() -> str: ...
    @staticmethod
    def getJulianDay(millis: int | java.jlong | java.lang.Long, gmtoffSeconds: int | java.jlong | java.lang.Long, /) -> int: ...
    @staticmethod
    def getJulianMondayFromWeeksSinceEpoch(week: int | java.jint | java.lang.Integer, /) -> int: ...
    def getWeekNumber(self) -> int: ...
    @staticmethod
    def getWeeksSinceEpochFromJulianDay(julianDay: int | java.jint | java.lang.Integer, firstDayOfWeek: int | java.jint | java.lang.Integer, /) -> int: ...
    @staticmethod
    def isEpoch(time: Time, /) -> bool: ...
    def normalize(self, ignoreDst: bool | java.jboolean | java.lang.Boolean, /) -> int: ...
    def parse(self, s: str | java.lang.String, /) -> bool: ...
    def parse3339(self, s: str | java.lang.String, /) -> bool: ...
    @typing.overload
    def set(self, millis: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def set(self, that: Time, /) -> None: ...
    @typing.overload
    def set(self, monthDay: int | java.jint | java.lang.Integer, month: int | java.jint | java.lang.Integer, year: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def set(self, second: int | java.jint | java.lang.Integer, minute: int | java.jint | java.lang.Integer, hour: int | java.jint | java.lang.Integer, monthDay: int | java.jint | java.lang.Integer, month: int | java.jint | java.lang.Integer, year: int | java.jint | java.lang.Integer, /) -> None: ...
    def setJulianDay(self, julianDay: int | java.jint | java.lang.Integer, /) -> int: ...
    def setToNow(self) -> None: ...
    def switchTimezone(self, timezone: str | java.lang.String, /) -> None: ...
    def toMillis(self, ignoreDst: bool | java.jboolean | java.lang.Boolean, /) -> int: ...
    def toString(self) -> str: ...
