import typing

import android.content
import android.net.ipsec.ike
import android.os
import java
import java.chaquopy
import java.lang
import java.util
import java.util.concurrent

class VcnCellUnderlyingNetworkTemplate(VcnUnderlyingNetworkTemplate):
    def equals(self, other: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getCbs(self) -> int: ...
    def getDun(self) -> int: ...
    def getIms(self) -> int: ...
    def getInternet(self) -> int: ...
    def getMms(self) -> int: ...
    def getOperatorPlmnIds(self) -> java.util.Set[java.lang.String]: ...
    def getOpportunistic(self) -> int: ...
    def getRcs(self) -> int: ...
    def getRoaming(self) -> int: ...
    def getSimSpecificCarrierIds(self) -> java.util.Set[java.lang.Integer]: ...
    def hashCode(self) -> int: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def build(self) -> VcnCellUnderlyingNetworkTemplate: ...
        def setCbs(self, matchCriteria: int | java.jint | java.lang.Integer, /) -> VcnCellUnderlyingNetworkTemplate.Builder: ...
        def setDun(self, matchCriteria: int | java.jint | java.lang.Integer, /) -> VcnCellUnderlyingNetworkTemplate.Builder: ...
        def setIms(self, matchCriteria: int | java.jint | java.lang.Integer, /) -> VcnCellUnderlyingNetworkTemplate.Builder: ...
        def setInternet(self, matchCriteria: int | java.jint | java.lang.Integer, /) -> VcnCellUnderlyingNetworkTemplate.Builder: ...
        def setMetered(self, matchCriteria: int | java.jint | java.lang.Integer, /) -> VcnCellUnderlyingNetworkTemplate.Builder: ...
        def setMinDownstreamBandwidthKbps(self, minEntryDownstreamBandwidthKbps: int | java.jint | java.lang.Integer, minExitDownstreamBandwidthKbps: int | java.jint | java.lang.Integer, /) -> VcnCellUnderlyingNetworkTemplate.Builder: ...
        def setMinUpstreamBandwidthKbps(self, minEntryUpstreamBandwidthKbps: int | java.jint | java.lang.Integer, minExitUpstreamBandwidthKbps: int | java.jint | java.lang.Integer, /) -> VcnCellUnderlyingNetworkTemplate.Builder: ...
        def setMms(self, matchCriteria: int | java.jint | java.lang.Integer, /) -> VcnCellUnderlyingNetworkTemplate.Builder: ...
        def setOperatorPlmnIds(self, operatorPlmnIds: java.util.Set[java.lang.String], /) -> VcnCellUnderlyingNetworkTemplate.Builder: ...
        def setOpportunistic(self, matchCriteria: int | java.jint | java.lang.Integer, /) -> VcnCellUnderlyingNetworkTemplate.Builder: ...
        def setRcs(self, matchCriteria: int | java.jint | java.lang.Integer, /) -> VcnCellUnderlyingNetworkTemplate.Builder: ...
        def setRoaming(self, matchCriteria: int | java.jint | java.lang.Integer, /) -> VcnCellUnderlyingNetworkTemplate.Builder: ...
        def setSimSpecificCarrierIds(self, simSpecificCarrierIds: java.util.Set[java.lang.Integer], /) -> VcnCellUnderlyingNetworkTemplate.Builder: ...

class VcnConfig(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[VcnConfig]] = ...
    def describeContents(self) -> int: ...
    def equals(self, other: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getGatewayConnectionConfigs(self) -> java.util.Set[VcnGatewayConnectionConfig]: ...
    def getRestrictedUnderlyingNetworkTransports(self) -> java.util.Set[java.lang.Integer]: ...
    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, context: android.content.Context, /) -> None: ...
        def addGatewayConnectionConfig(self, gatewayConnectionConfig: VcnGatewayConnectionConfig, /) -> VcnConfig.Builder: ...
        def build(self) -> VcnConfig: ...
        def setRestrictedUnderlyingNetworkTransports(self, transports: java.util.Set[java.lang.Integer], /) -> VcnConfig.Builder: ...

class VcnGatewayConnectionConfig(java.lang.Object):
    MIN_UDP_PORT_4500_NAT_TIMEOUT_UNSET: typing.ClassVar[int] = ...
    VCN_GATEWAY_OPTION_ENABLE_DATA_STALL_RECOVERY_WITH_MOBILITY: typing.ClassVar[int] = ...
    def equals(self, other: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getExposedCapabilities(self) -> java.chaquopy.JavaArrayJInt: ...
    def getGatewayConnectionName(self) -> str: ...
    def getMaxMtu(self) -> int: ...
    def getMinUdpPort4500NatTimeoutSeconds(self) -> int: ...
    def getRetryIntervalsMillis(self) -> java.chaquopy.JavaArrayJLong: ...
    def getVcnUnderlyingNetworkPriorities(self) -> java.util.List[VcnUnderlyingNetworkTemplate]: ...
    def hasGatewayOption(self, option: int | java.jint | java.lang.Integer, /) -> bool: ...
    def hashCode(self) -> int: ...
    def isSafeModeEnabled(self) -> bool: ...

    class Builder(java.lang.Object):
        def __init__(self, gatewayConnectionName: str | java.lang.String, tunnelConnectionParams: android.net.ipsec.ike.IkeTunnelConnectionParams, /) -> None: ...
        def addExposedCapability(self, exposedCapability: int | java.jint | java.lang.Integer, /) -> VcnGatewayConnectionConfig.Builder: ...
        def addGatewayOption(self, option: int | java.jint | java.lang.Integer, /) -> VcnGatewayConnectionConfig.Builder: ...
        def build(self) -> VcnGatewayConnectionConfig: ...
        def removeExposedCapability(self, exposedCapability: int | java.jint | java.lang.Integer, /) -> VcnGatewayConnectionConfig.Builder: ...
        def removeGatewayOption(self, option: int | java.jint | java.lang.Integer, /) -> VcnGatewayConnectionConfig.Builder: ...
        def setMaxMtu(self, maxMtu: int | java.jint | java.lang.Integer, /) -> VcnGatewayConnectionConfig.Builder: ...
        def setMinUdpPort4500NatTimeoutSeconds(self, minUdpPort4500NatTimeoutSeconds: int | java.jint | java.lang.Integer, /) -> VcnGatewayConnectionConfig.Builder: ...
        def setRetryIntervalsMillis(self, retryIntervalsMs: java.chaquopy.JavaArrayJLong, /) -> VcnGatewayConnectionConfig.Builder: ...
        def setSafeModeEnabled(self, enabled: bool | java.jboolean | java.lang.Boolean, /) -> VcnGatewayConnectionConfig.Builder: ...
        def setVcnUnderlyingNetworkPriorities(self, underlyingNetworkTemplates: java.util.List[VcnUnderlyingNetworkTemplate], /) -> VcnGatewayConnectionConfig.Builder: ...

class VcnManager(java.lang.Object):
    VCN_ERROR_CODE_CONFIG_ERROR: typing.ClassVar[int] = ...
    VCN_ERROR_CODE_INTERNAL_ERROR: typing.ClassVar[int] = ...
    VCN_ERROR_CODE_NETWORK_ERROR: typing.ClassVar[int] = ...
    VCN_STATUS_CODE_ACTIVE: typing.ClassVar[int] = ...
    VCN_STATUS_CODE_INACTIVE: typing.ClassVar[int] = ...
    VCN_STATUS_CODE_NOT_CONFIGURED: typing.ClassVar[int] = ...
    VCN_STATUS_CODE_SAFE_MODE: typing.ClassVar[int] = ...
    def clearVcnConfig(self, subscriptionGroup: android.os.ParcelUuid, /) -> None: ...
    def getConfiguredSubscriptionGroups(self) -> java.util.List[android.os.ParcelUuid]: ...
    def registerVcnStatusCallback(self, subscriptionGroup: android.os.ParcelUuid, executor: java.util.concurrent.Executor, callback: VcnManager.VcnStatusCallback, /) -> None: ...
    def setVcnConfig(self, subscriptionGroup: android.os.ParcelUuid, config: VcnConfig, /) -> None: ...
    def unregisterVcnStatusCallback(self, callback: VcnManager.VcnStatusCallback, /) -> None: ...

    class VcnStatusCallback(java.lang.Object):
        def __init__(self) -> None: ...
        def onGatewayConnectionError(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, arg3: java.lang.Throwable, /) -> None: ...
        def onStatusChanged(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...

class VcnUnderlyingNetworkTemplate(java.lang.Object):
    MATCH_ANY: typing.ClassVar[int] = ...
    MATCH_FORBIDDEN: typing.ClassVar[int] = ...
    MATCH_REQUIRED: typing.ClassVar[int] = ...
    def equals(self, other: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getMetered(self) -> int: ...
    def getMinEntryDownstreamBandwidthKbps(self) -> int: ...
    def getMinEntryUpstreamBandwidthKbps(self) -> int: ...
    def getMinExitDownstreamBandwidthKbps(self) -> int: ...
    def getMinExitUpstreamBandwidthKbps(self) -> int: ...
    def hashCode(self) -> int: ...

class VcnWifiUnderlyingNetworkTemplate(VcnUnderlyingNetworkTemplate):
    def equals(self, other: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getSsids(self) -> java.util.Set[java.lang.String]: ...
    def hashCode(self) -> int: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def build(self) -> VcnWifiUnderlyingNetworkTemplate: ...
        def setMetered(self, matchCriteria: int | java.jint | java.lang.Integer, /) -> VcnWifiUnderlyingNetworkTemplate.Builder: ...
        def setMinDownstreamBandwidthKbps(self, minEntryDownstreamBandwidthKbps: int | java.jint | java.lang.Integer, minExitDownstreamBandwidthKbps: int | java.jint | java.lang.Integer, /) -> VcnWifiUnderlyingNetworkTemplate.Builder: ...
        def setMinUpstreamBandwidthKbps(self, minEntryUpstreamBandwidthKbps: int | java.jint | java.lang.Integer, minExitUpstreamBandwidthKbps: int | java.jint | java.lang.Integer, /) -> VcnWifiUnderlyingNetworkTemplate.Builder: ...
        def setSsids(self, ssids: java.util.Set[java.lang.String], /) -> VcnWifiUnderlyingNetworkTemplate.Builder: ...
