import typing

import java
import java.io
import java.lang
import java.math
import java.util
import javax.xml.namespace

class DatatypeConfigurationException(java.lang.Exception):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, message: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, message: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def printStackTrace(self) -> None: ...
    @typing.overload
    def printStackTrace(self, s: java.io.PrintStream, /) -> None: ...
    @typing.overload
    def printStackTrace(self, s: java.io.PrintWriter, /) -> None: ...

class DatatypeConstants(java.lang.Object):
    APRIL: typing.ClassVar[int] = ...
    AUGUST: typing.ClassVar[int] = ...
    DATE: typing.ClassVar[javax.xml.namespace.QName] = ...
    DATETIME: typing.ClassVar[javax.xml.namespace.QName] = ...
    DAYS: typing.ClassVar[DatatypeConstants.Field] = ...
    DECEMBER: typing.ClassVar[int] = ...
    DURATION: typing.ClassVar[javax.xml.namespace.QName] = ...
    DURATION_DAYTIME: typing.ClassVar[javax.xml.namespace.QName] = ...
    DURATION_YEARMONTH: typing.ClassVar[javax.xml.namespace.QName] = ...
    EQUAL: typing.ClassVar[int] = ...
    FEBRUARY: typing.ClassVar[int] = ...
    FIELD_UNDEFINED: typing.ClassVar[int] = ...
    GDAY: typing.ClassVar[javax.xml.namespace.QName] = ...
    GMONTH: typing.ClassVar[javax.xml.namespace.QName] = ...
    GMONTHDAY: typing.ClassVar[javax.xml.namespace.QName] = ...
    GREATER: typing.ClassVar[int] = ...
    GYEAR: typing.ClassVar[javax.xml.namespace.QName] = ...
    GYEARMONTH: typing.ClassVar[javax.xml.namespace.QName] = ...
    HOURS: typing.ClassVar[DatatypeConstants.Field] = ...
    INDETERMINATE: typing.ClassVar[int] = ...
    JANUARY: typing.ClassVar[int] = ...
    JULY: typing.ClassVar[int] = ...
    JUNE: typing.ClassVar[int] = ...
    LESSER: typing.ClassVar[int] = ...
    MARCH: typing.ClassVar[int] = ...
    MAX_TIMEZONE_OFFSET: typing.ClassVar[int] = ...
    MAY: typing.ClassVar[int] = ...
    MINUTES: typing.ClassVar[DatatypeConstants.Field] = ...
    MIN_TIMEZONE_OFFSET: typing.ClassVar[int] = ...
    MONTHS: typing.ClassVar[DatatypeConstants.Field] = ...
    NOVEMBER: typing.ClassVar[int] = ...
    OCTOBER: typing.ClassVar[int] = ...
    SECONDS: typing.ClassVar[DatatypeConstants.Field] = ...
    SEPTEMBER: typing.ClassVar[int] = ...
    TIME: typing.ClassVar[javax.xml.namespace.QName] = ...
    YEARS: typing.ClassVar[DatatypeConstants.Field] = ...

    class Field(java.lang.Object):
        def getId(self) -> int: ...
        def toString(self) -> str: ...

class DatatypeFactory(java.lang.Object):
    DATATYPEFACTORY_IMPLEMENTATION_CLASS: typing.ClassVar[str] = ...
    DATATYPEFACTORY_PROPERTY: typing.ClassVar[str] = ...
    def __init__(self) -> None: ...
    @typing.overload
    def newDuration(self, arg1: int | java.jlong | java.lang.Long, /) -> Duration: ...
    @typing.overload
    def newDuration(self, arg1: str | java.lang.String, /) -> Duration: ...
    @typing.overload
    def newDuration(self, isPositive: bool | java.jboolean | java.lang.Boolean, years: int | java.jint | java.lang.Integer, months: int | java.jint | java.lang.Integer, days: int | java.jint | java.lang.Integer, hours: int | java.jint | java.lang.Integer, minutes: int | java.jint | java.lang.Integer, seconds: int | java.jint | java.lang.Integer, /) -> Duration: ...
    @typing.overload
    def newDuration(self, arg1: bool | java.jboolean | java.lang.Boolean, arg2: java.math.BigInteger, arg3: java.math.BigInteger, arg4: java.math.BigInteger, arg5: java.math.BigInteger, arg6: java.math.BigInteger, arg7: java.math.BigDecimal, /) -> Duration: ...
    @typing.overload
    def newDurationDayTime(self, durationInMilliseconds: int | java.jlong | java.lang.Long, /) -> Duration: ...
    @typing.overload
    def newDurationDayTime(self, lexicalRepresentation: str | java.lang.String, /) -> Duration: ...
    @typing.overload
    def newDurationDayTime(self, isPositive: bool | java.jboolean | java.lang.Boolean, day: int | java.jint | java.lang.Integer, hour: int | java.jint | java.lang.Integer, minute: int | java.jint | java.lang.Integer, second: int | java.jint | java.lang.Integer, /) -> Duration: ...
    @typing.overload
    def newDurationDayTime(self, isPositive: bool | java.jboolean | java.lang.Boolean, day: java.math.BigInteger, hour: java.math.BigInteger, minute: java.math.BigInteger, second: java.math.BigInteger, /) -> Duration: ...
    @typing.overload
    def newDurationYearMonth(self, durationInMilliseconds: int | java.jlong | java.lang.Long, /) -> Duration: ...
    @typing.overload
    def newDurationYearMonth(self, lexicalRepresentation: str | java.lang.String, /) -> Duration: ...
    @typing.overload
    def newDurationYearMonth(self, isPositive: bool | java.jboolean | java.lang.Boolean, year: int | java.jint | java.lang.Integer, month: int | java.jint | java.lang.Integer, /) -> Duration: ...
    @typing.overload
    def newDurationYearMonth(self, isPositive: bool | java.jboolean | java.lang.Boolean, year: java.math.BigInteger, month: java.math.BigInteger, /) -> Duration: ...
    @typing.overload
    @staticmethod
    def newInstance() -> DatatypeFactory: ...
    @typing.overload
    @staticmethod
    def newInstance(factoryClassName: str | java.lang.String, classLoader: java.lang.ClassLoader, /) -> DatatypeFactory: ...
    @typing.overload
    def newXMLGregorianCalendar(self) -> XMLGregorianCalendar: ...
    @typing.overload
    def newXMLGregorianCalendar(self, arg1: str | java.lang.String, /) -> XMLGregorianCalendar: ...
    @typing.overload
    def newXMLGregorianCalendar(self, arg1: java.util.GregorianCalendar, /) -> XMLGregorianCalendar: ...
    @typing.overload
    def newXMLGregorianCalendar(self, year: int | java.jint | java.lang.Integer, month: int | java.jint | java.lang.Integer, day: int | java.jint | java.lang.Integer, hour: int | java.jint | java.lang.Integer, minute: int | java.jint | java.lang.Integer, second: int | java.jint | java.lang.Integer, millisecond: int | java.jint | java.lang.Integer, timezone: int | java.jint | java.lang.Integer, /) -> XMLGregorianCalendar: ...
    @typing.overload
    def newXMLGregorianCalendar(self, arg1: java.math.BigInteger, arg2: int | java.jint | java.lang.Integer, arg3: int | java.jint | java.lang.Integer, arg4: int | java.jint | java.lang.Integer, arg5: int | java.jint | java.lang.Integer, arg6: int | java.jint | java.lang.Integer, arg7: java.math.BigDecimal, arg8: int | java.jint | java.lang.Integer, /) -> XMLGregorianCalendar: ...
    def newXMLGregorianCalendarDate(self, year: int | java.jint | java.lang.Integer, month: int | java.jint | java.lang.Integer, day: int | java.jint | java.lang.Integer, timezone: int | java.jint | java.lang.Integer, /) -> XMLGregorianCalendar: ...
    @typing.overload
    def newXMLGregorianCalendarTime(self, hours: int | java.jint | java.lang.Integer, minutes: int | java.jint | java.lang.Integer, seconds: int | java.jint | java.lang.Integer, timezone: int | java.jint | java.lang.Integer, /) -> XMLGregorianCalendar: ...
    @typing.overload
    def newXMLGregorianCalendarTime(self, hours: int | java.jint | java.lang.Integer, minutes: int | java.jint | java.lang.Integer, seconds: int | java.jint | java.lang.Integer, milliseconds: int | java.jint | java.lang.Integer, timezone: int | java.jint | java.lang.Integer, /) -> XMLGregorianCalendar: ...
    @typing.overload
    def newXMLGregorianCalendarTime(self, hours: int | java.jint | java.lang.Integer, minutes: int | java.jint | java.lang.Integer, seconds: int | java.jint | java.lang.Integer, fractionalSecond: java.math.BigDecimal, timezone: int | java.jint | java.lang.Integer, /) -> XMLGregorianCalendar: ...

class Duration(java.lang.Object):
    def __init__(self) -> None: ...
    def add(self, arg1: Duration, /) -> Duration: ...
    @typing.overload
    def addTo(self, arg1: java.util.Calendar, /) -> None: ...
    @typing.overload
    def addTo(self, date: java.util.Date, /) -> None: ...
    def compare(self, arg1: Duration, /) -> int: ...
    def equals(self, duration: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getDays(self) -> int: ...
    def getField(self, arg1: DatatypeConstants.Field, /) -> java.lang.Number: ...
    def getHours(self) -> int: ...
    def getMinutes(self) -> int: ...
    def getMonths(self) -> int: ...
    def getSeconds(self) -> int: ...
    def getSign(self) -> int: ...
    @typing.overload
    def getTimeInMillis(self, startInstant: java.util.Calendar, /) -> int: ...
    @typing.overload
    def getTimeInMillis(self, startInstant: java.util.Date, /) -> int: ...
    def getXMLSchemaType(self) -> javax.xml.namespace.QName: ...
    def getYears(self) -> int: ...
    def hashCode(self) -> int: ...
    def isLongerThan(self, duration: Duration, /) -> bool: ...
    def isSet(self, arg1: DatatypeConstants.Field, /) -> bool: ...
    def isShorterThan(self, duration: Duration, /) -> bool: ...
    @typing.overload
    def multiply(self, factor: int | java.jint | java.lang.Integer, /) -> Duration: ...
    @typing.overload
    def multiply(self, arg1: java.math.BigDecimal, /) -> Duration: ...
    def negate(self) -> Duration: ...
    def normalizeWith(self, arg1: java.util.Calendar, /) -> Duration: ...
    def subtract(self, rhs: Duration, /) -> Duration: ...
    def toString(self) -> str: ...

class XMLGregorianCalendar(java.lang.Cloneable):
    def __init__(self) -> None: ...
    def add(self, arg1: Duration, /) -> None: ...
    def clear(self) -> None: ...
    def clone(self) -> java.lang.Object: ...
    def compare(self, arg1: XMLGregorianCalendar, /) -> int: ...
    def equals(self, obj: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getDay(self) -> int: ...
    def getEon(self) -> java.math.BigInteger: ...
    def getEonAndYear(self) -> java.math.BigInteger: ...
    def getFractionalSecond(self) -> java.math.BigDecimal: ...
    def getHour(self) -> int: ...
    def getMillisecond(self) -> int: ...
    def getMinute(self) -> int: ...
    def getMonth(self) -> int: ...
    def getSecond(self) -> int: ...
    def getTimeZone(self, arg1: int | java.jint | java.lang.Integer, /) -> java.util.TimeZone: ...
    def getTimezone(self) -> int: ...
    def getXMLSchemaType(self) -> javax.xml.namespace.QName: ...
    def getYear(self) -> int: ...
    def hashCode(self) -> int: ...
    def isValid(self) -> bool: ...
    def normalize(self) -> XMLGregorianCalendar: ...
    def reset(self) -> None: ...
    def setDay(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setFractionalSecond(self, arg1: java.math.BigDecimal, /) -> None: ...
    def setHour(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setMillisecond(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setMinute(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setMonth(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setSecond(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setTime(self, hour: int | java.jint | java.lang.Integer, minute: int | java.jint | java.lang.Integer, second: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setTime(self, hour: int | java.jint | java.lang.Integer, minute: int | java.jint | java.lang.Integer, second: int | java.jint | java.lang.Integer, millisecond: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setTime(self, hour: int | java.jint | java.lang.Integer, minute: int | java.jint | java.lang.Integer, second: int | java.jint | java.lang.Integer, fractional: java.math.BigDecimal, /) -> None: ...
    def setTimezone(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setYear(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setYear(self, arg1: java.math.BigInteger, /) -> None: ...
    @typing.overload
    def toGregorianCalendar(self) -> java.util.GregorianCalendar: ...
    @typing.overload
    def toGregorianCalendar(self, arg1: java.util.TimeZone, arg2: java.util.Locale, arg3: XMLGregorianCalendar, /) -> java.util.GregorianCalendar: ...
    def toString(self) -> str: ...
    def toXMLFormat(self) -> str: ...
