import typing

import android.content
import android.graphics
import android.os
import android.service.autofill
import android.util
import android.view
import java
import java.chaquopy
import java.lang
import java.util

class AutofillId(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[AutofillId]] = ...
    @staticmethod
    def create(host: android.view.View, virtualId: int | java.jint | java.lang.Integer, /) -> AutofillId: ...
    def describeContents(self) -> int: ...
    def equals(self, obj: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getAutofillVirtualId(self) -> int: ...
    def getSessionId(self) -> int: ...
    def getViewId(self) -> int: ...
    def hashCode(self) -> int: ...
    def isInAutofillSession(self) -> bool: ...
    def isVirtual(self) -> bool: ...
    def toString(self) -> str: ...
    def writeToParcel(self, parcel: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class AutofillManager(java.lang.Object):
    EXTRA_ASSIST_STRUCTURE: typing.ClassVar[str] = ...
    EXTRA_AUTHENTICATION_RESULT: typing.ClassVar[str] = ...
    EXTRA_AUTHENTICATION_RESULT_EPHEMERAL_DATASET: typing.ClassVar[str] = ...
    EXTRA_CLIENT_STATE: typing.ClassVar[str] = ...
    EXTRA_INLINE_SUGGESTIONS_REQUEST: typing.ClassVar[str] = ...
    def cancel(self) -> None: ...
    def commit(self) -> None: ...
    def disableAutofillServices(self) -> None: ...
    def getAutofillServiceComponentName(self) -> android.content.ComponentName | None: ...
    def getAvailableFieldClassificationAlgorithms(self) -> java.util.List[java.lang.String]: ...
    def getDefaultFieldClassificationAlgorithm(self) -> str | None: ...
    def getNextAutofillId(self) -> AutofillId | None: ...
    def getUserData(self) -> android.service.autofill.UserData | None: ...
    def getUserDataId(self) -> str | None: ...
    def hasEnabledAutofillServices(self) -> bool: ...
    def isAutofillSupported(self) -> bool: ...
    def isEnabled(self) -> bool: ...
    def isFieldClassificationEnabled(self) -> bool: ...
    @typing.overload
    def notifyValueChanged(self, view: android.view.View, /) -> None: ...
    @typing.overload
    def notifyValueChanged(self, view: android.view.View, virtualId: int | java.jint | java.lang.Integer, value: AutofillValue, /) -> None: ...
    @typing.overload
    def notifyViewClicked(self, view: android.view.View, /) -> None: ...
    @typing.overload
    def notifyViewClicked(self, view: android.view.View, virtualId: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def notifyViewEntered(self, view: android.view.View, /) -> None: ...
    @typing.overload
    def notifyViewEntered(self, view: android.view.View, virtualId: int | java.jint | java.lang.Integer, absBounds: android.graphics.Rect, /) -> None: ...
    @typing.overload
    def notifyViewExited(self, view: android.view.View, /) -> None: ...
    @typing.overload
    def notifyViewExited(self, view: android.view.View, virtualId: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def notifyViewVisibilityChanged(self, view: android.view.View, isVisible: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def notifyViewVisibilityChanged(self, view: android.view.View, virtualId: int | java.jint | java.lang.Integer, isVisible: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def notifyVirtualViewsReady(self, view: android.view.View, infos: android.util.SparseArray[VirtualViewFillInfo], /) -> None: ...
    def registerCallback(self, callback: AutofillManager.AutofillCallback, /) -> None: ...
    @typing.overload
    def requestAutofill(self, view: android.view.View, /) -> None: ...
    @typing.overload
    def requestAutofill(self, view: android.view.View, virtualId: int | java.jint | java.lang.Integer, absBounds: android.graphics.Rect, /) -> None: ...
    def setUserData(self, userData: android.service.autofill.UserData, /) -> None: ...
    @typing.overload
    def showAutofillDialog(self, view: android.view.View, /) -> bool: ...
    @typing.overload
    def showAutofillDialog(self, view: android.view.View, virtualId: int | java.jint | java.lang.Integer, /) -> bool: ...
    def unregisterCallback(self, callback: AutofillManager.AutofillCallback, /) -> None: ...

    class AutofillCallback(java.lang.Object):
        EVENT_INPUT_HIDDEN: typing.ClassVar[int] = ...
        EVENT_INPUT_SHOWN: typing.ClassVar[int] = ...
        EVENT_INPUT_UNAVAILABLE: typing.ClassVar[int] = ...
        def __init__(self) -> None: ...
        @typing.overload
        def onAutofillEvent(self, view: android.view.View, event: int | java.jint | java.lang.Integer, /) -> None: ...
        @typing.overload
        def onAutofillEvent(self, view: android.view.View, virtualId: int | java.jint | java.lang.Integer, event: int | java.jint | java.lang.Integer, /) -> None: ...

class AutofillValue(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[AutofillValue]] = ...
    def describeContents(self) -> int: ...
    def equals(self, obj: java.lang.Object | int | bool | float | str, /) -> bool: ...
    @staticmethod
    def forDate(value: int | java.jlong | java.lang.Long, /) -> AutofillValue: ...
    @staticmethod
    def forList(value: int | java.jint | java.lang.Integer, /) -> AutofillValue: ...
    @staticmethod
    def forText(value: java.lang.CharSequence, /) -> AutofillValue: ...
    @staticmethod
    def forToggle(value: bool | java.jboolean | java.lang.Boolean, /) -> AutofillValue: ...
    def getDateValue(self) -> int: ...
    def getListValue(self) -> int: ...
    def getTextValue(self) -> java.lang.CharSequence: ...
    def getToggleValue(self) -> bool: ...
    def hashCode(self) -> int: ...
    def isDate(self) -> bool: ...
    def isList(self) -> bool: ...
    def isText(self) -> bool: ...
    def isToggle(self) -> bool: ...
    def toString(self) -> str: ...
    def writeToParcel(self, parcel: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class VirtualViewFillInfo(java.lang.Object):
    def getAutofillHints(self) -> java.chaquopy.JavaArray[java.lang.String] | None: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def build(self) -> VirtualViewFillInfo: ...
        def setAutofillHints(self, *value: java.lang.String) -> VirtualViewFillInfo.Builder: ...
