import typing

import android.adservices.common
import android.content
import android.net
import android.os
import android.view
import java
import java.lang
import java.time
import java.util
import java.util.concurrent

class DeletionRequest(java.lang.Object):
    DELETION_MODE_ALL: typing.ClassVar[int] = ...
    DELETION_MODE_EXCLUDE_INTERNAL_DATA: typing.ClassVar[int] = ...
    MATCH_BEHAVIOR_DELETE: typing.ClassVar[int] = ...
    MATCH_BEHAVIOR_PRESERVE: typing.ClassVar[int] = ...
    def getDeletionMode(self) -> int: ...
    def getDomainUris(self) -> java.util.List[android.net.Uri]: ...
    def getEnd(self) -> java.time.Instant: ...
    def getMatchBehavior(self) -> int: ...
    def getOriginUris(self) -> java.util.List[android.net.Uri]: ...
    def getStart(self) -> java.time.Instant: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def build(self) -> DeletionRequest: ...
        def setDeletionMode(self, deletionMode: int | java.jint | java.lang.Integer, /) -> DeletionRequest.Builder: ...
        def setDomainUris(self, domainUris: java.util.List[android.net.Uri], /) -> DeletionRequest.Builder: ...
        def setEnd(self, end: java.time.Instant, /) -> DeletionRequest.Builder: ...
        def setMatchBehavior(self, matchBehavior: int | java.jint | java.lang.Integer, /) -> DeletionRequest.Builder: ...
        def setOriginUris(self, originUris: java.util.List[android.net.Uri], /) -> DeletionRequest.Builder: ...
        def setStart(self, start: java.time.Instant, /) -> DeletionRequest.Builder: ...

class MeasurementManager(java.lang.Object):
    MEASUREMENT_API_STATE_DISABLED: typing.ClassVar[int] = ...
    MEASUREMENT_API_STATE_ENABLED: typing.ClassVar[int] = ...
    @typing.overload
    def deleteRegistrations(self, deletionRequest: DeletionRequest, executor: java.util.concurrent.Executor, callback: android.adservices.common.AdServicesOutcomeReceiver[java.lang.Object, java.lang.Exception], /) -> None: ...
    @typing.overload
    def deleteRegistrations(self, deletionRequest: DeletionRequest, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[java.lang.Object, java.lang.Exception], /) -> None: ...
    @staticmethod
    def get(context: android.content.Context, /) -> MeasurementManager: ...
    @typing.overload
    def getMeasurementApiStatus(self, executor: java.util.concurrent.Executor, callback: android.adservices.common.AdServicesOutcomeReceiver[java.lang.Integer, java.lang.Exception], /) -> None: ...
    @typing.overload
    def getMeasurementApiStatus(self, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[java.lang.Integer, java.lang.Exception], /) -> None: ...
    @typing.overload
    def registerSource(self, request: SourceRegistrationRequest, executor: java.util.concurrent.Executor, callback: android.adservices.common.AdServicesOutcomeReceiver[java.lang.Object, java.lang.Exception], /) -> None: ...
    @typing.overload
    def registerSource(self, request: SourceRegistrationRequest, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[java.lang.Object, java.lang.Exception], /) -> None: ...
    @typing.overload
    def registerSource(self, attributionSource: android.net.Uri, inputEvent: android.view.InputEvent, executor: java.util.concurrent.Executor, callback: android.adservices.common.AdServicesOutcomeReceiver[java.lang.Object, java.lang.Exception], /) -> None: ...
    @typing.overload
    def registerSource(self, attributionSource: android.net.Uri, inputEvent: android.view.InputEvent, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[java.lang.Object, java.lang.Exception], /) -> None: ...
    @typing.overload
    def registerTrigger(self, trigger: android.net.Uri, executor: java.util.concurrent.Executor, callback: android.adservices.common.AdServicesOutcomeReceiver[java.lang.Object, java.lang.Exception], /) -> None: ...
    @typing.overload
    def registerTrigger(self, trigger: android.net.Uri, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[java.lang.Object, java.lang.Exception], /) -> None: ...
    @typing.overload
    def registerWebSource(self, request: WebSourceRegistrationRequest, executor: java.util.concurrent.Executor, callback: android.adservices.common.AdServicesOutcomeReceiver[java.lang.Object, java.lang.Exception], /) -> None: ...
    @typing.overload
    def registerWebSource(self, request: WebSourceRegistrationRequest, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[java.lang.Object, java.lang.Exception], /) -> None: ...
    @typing.overload
    def registerWebTrigger(self, request: WebTriggerRegistrationRequest, executor: java.util.concurrent.Executor, callback: android.adservices.common.AdServicesOutcomeReceiver[java.lang.Object, java.lang.Exception], /) -> None: ...
    @typing.overload
    def registerWebTrigger(self, request: WebTriggerRegistrationRequest, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[java.lang.Object, java.lang.Exception], /) -> None: ...

class SourceRegistrationRequest(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[SourceRegistrationRequest]] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getInputEvent(self) -> android.view.InputEvent | None: ...
    def getRegistrationUris(self) -> java.util.List[android.net.Uri]: ...
    def hashCode(self) -> int: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self, registrationUris: java.util.List[android.net.Uri], /) -> None: ...
        def build(self) -> SourceRegistrationRequest: ...
        def setInputEvent(self, inputEvent: android.view.InputEvent, /) -> SourceRegistrationRequest.Builder: ...

class WebSourceParams(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[WebSourceParams]] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getRegistrationUri(self) -> android.net.Uri: ...
    def hashCode(self) -> int: ...
    def isDebugKeyAllowed(self) -> bool: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self, registrationUri: android.net.Uri, /) -> None: ...
        def build(self) -> WebSourceParams: ...
        def setDebugKeyAllowed(self, debugKeyAllowed: bool | java.jboolean | java.lang.Boolean, /) -> WebSourceParams.Builder: ...

class WebSourceRegistrationRequest(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[WebSourceRegistrationRequest]] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getAppDestination(self) -> android.net.Uri | None: ...
    def getInputEvent(self) -> android.view.InputEvent | None: ...
    def getSourceParams(self) -> java.util.List[WebSourceParams]: ...
    def getTopOriginUri(self) -> android.net.Uri: ...
    def getVerifiedDestination(self) -> android.net.Uri | None: ...
    def getWebDestination(self) -> android.net.Uri | None: ...
    def hashCode(self) -> int: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self, webSourceParams: java.util.List[WebSourceParams], topOriginUri: android.net.Uri, /) -> None: ...
        def build(self) -> WebSourceRegistrationRequest: ...
        def setAppDestination(self, appDestination: android.net.Uri, /) -> WebSourceRegistrationRequest.Builder: ...
        def setInputEvent(self, inputEvent: android.view.InputEvent, /) -> WebSourceRegistrationRequest.Builder: ...
        def setVerifiedDestination(self, verifiedDestination: android.net.Uri, /) -> WebSourceRegistrationRequest.Builder: ...
        def setWebDestination(self, webDestination: android.net.Uri, /) -> WebSourceRegistrationRequest.Builder: ...

class WebTriggerParams(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[WebTriggerParams]] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getRegistrationUri(self) -> android.net.Uri: ...
    def hashCode(self) -> int: ...
    def isDebugKeyAllowed(self) -> bool: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self, registrationUri: android.net.Uri, /) -> None: ...
        def build(self) -> WebTriggerParams: ...
        def setDebugKeyAllowed(self, debugKeyAllowed: bool | java.jboolean | java.lang.Boolean, /) -> WebTriggerParams.Builder: ...

class WebTriggerRegistrationRequest(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[WebTriggerRegistrationRequest]] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getDestination(self) -> android.net.Uri: ...
    def getTriggerParams(self) -> java.util.List[WebTriggerParams]: ...
    def hashCode(self) -> int: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self, webTriggerParams: java.util.List[WebTriggerParams], destination: android.net.Uri, /) -> None: ...
        def build(self) -> WebTriggerRegistrationRequest: ...
