import typing

import android.os
import java
import java.lang
import java.util

class DocumentChangeInfo(java.lang.Object):
    def __init__(self, packageName: str | java.lang.String, database: str | java.lang.String, namespace: str | java.lang.String, schemaName: str | java.lang.String, changedDocumentIds: java.util.Set[java.lang.String], /) -> None: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getChangedDocumentIds(self) -> java.util.Set[java.lang.String]: ...
    def getDatabaseName(self) -> str: ...
    def getNamespace(self) -> str: ...
    def getPackageName(self) -> str: ...
    def getSchemaName(self) -> str: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...

class ObserverCallback(java.lang.Object):
    def onDocumentChanged(self, arg1: DocumentChangeInfo, /) -> None: ...
    def onSchemaChanged(self, arg1: SchemaChangeInfo, /) -> None: ...

class ObserverSpec(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[ObserverSpec]] = ...
    def describeContents(self) -> int: ...
    def getFilterSchemas(self) -> java.util.Set[java.lang.String]: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        @typing.overload
        def addFilterSchemas(self, schemas: java.util.Collection[java.lang.String], /) -> ObserverSpec.Builder: ...
        @typing.overload
        def addFilterSchemas(self, *schemas: java.lang.String) -> ObserverSpec.Builder: ...
        def build(self) -> ObserverSpec: ...

class SchemaChangeInfo(java.lang.Object):
    def __init__(self, packageName: str | java.lang.String, databaseName: str | java.lang.String, changedSchemaNames: java.util.Set[java.lang.String], /) -> None: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getChangedSchemaNames(self) -> java.util.Set[java.lang.String]: ...
    def getDatabaseName(self) -> str: ...
    def getPackageName(self) -> str: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...
