import typing

import android.content
import android.os
import java
import java.chaquopy
import java.lang
import java.util
import java.util.concurrent

class EncryptedTopic(java.lang.Object):
    def __init__(self, encryptedTopic: java.chaquopy.JavaArrayJByte, keyIdentifier: str | java.lang.String, encapsulatedKey: java.chaquopy.JavaArrayJByte, /) -> None: ...
    def equals(self, object: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getEncapsulatedKey(self) -> java.chaquopy.JavaArrayJByte: ...
    def getEncryptedTopic(self) -> java.chaquopy.JavaArrayJByte: ...
    def getKeyIdentifier(self) -> str: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...

class GetTopicsRequest(java.lang.Object):
    def getAdsSdkName(self) -> str: ...
    def shouldRecordObservation(self) -> bool: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def build(self) -> GetTopicsRequest: ...
        def setAdsSdkName(self, adsSdkName: str | java.lang.String, /) -> GetTopicsRequest.Builder: ...
        def setShouldRecordObservation(self, recordObservation: bool | java.jboolean | java.lang.Boolean, /) -> GetTopicsRequest.Builder: ...

class GetTopicsResponse(java.lang.Object):
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getEncryptedTopics(self) -> java.util.List[EncryptedTopic]: ...
    def getTopics(self) -> java.util.List[Topic]: ...
    def hashCode(self) -> int: ...

    class Builder(java.lang.Object):
        @typing.overload
        def __init__(self, topics: java.util.List[Topic], /) -> None: ...
        @typing.overload
        def __init__(self, topics: java.util.List[Topic], encryptedTopics: java.util.List[EncryptedTopic], /) -> None: ...
        def build(self) -> GetTopicsResponse: ...

class Topic(java.lang.Object):
    def __init__(self, mTaxonomyVersion: int | java.jlong | java.lang.Long, mModelVersion: int | java.jlong | java.lang.Long, mTopicId: int | java.jint | java.lang.Integer, /) -> None: ...
    def equals(self, object: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getModelVersion(self) -> int: ...
    def getTaxonomyVersion(self) -> int: ...
    def getTopicId(self) -> int: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...

class TopicsManager(java.lang.Object):
    @staticmethod
    def get(context: android.content.Context, /) -> TopicsManager: ...
    def getTopics(self, getTopicsRequest: GetTopicsRequest, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[GetTopicsResponse, java.lang.Exception], /) -> None: ...
