// Signature format: 2.0
package android.net {

  public class CaptivePortal implements android.os.Parcelable {
    method @Deprecated public void logEvent(int, @NonNull String);
    method @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public void reevaluateNetwork();
    method public void useNetwork();
    field public static final int APP_REQUEST_REEVALUATION_REQUIRED = 100; // 0x64
    field public static final int APP_RETURN_DISMISSED = 0; // 0x0
    field public static final int APP_RETURN_UNWANTED = 1; // 0x1
    field public static final int APP_RETURN_WANTED_AS_IS = 2; // 0x2
  }

  public final class CaptivePortalData implements android.os.Parcelable {
    method public int describeContents();
    method public long getByteLimit();
    method public long getExpiryTimeMillis();
    method public long getRefreshTimeMillis();
    method @Nullable public android.net.Uri getUserPortalUrl();
    method public int getUserPortalUrlSource();
    method @Nullable public CharSequence getVenueFriendlyName();
    method @Nullable public android.net.Uri getVenueInfoUrl();
    method public int getVenueInfoUrlSource();
    method public boolean isCaptive();
    method public boolean isSessionExtendable();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field public static final int CAPTIVE_PORTAL_DATA_SOURCE_OTHER = 0; // 0x0
    field public static final int CAPTIVE_PORTAL_DATA_SOURCE_PASSPOINT = 1; // 0x1
    field @NonNull public static final android.os.Parcelable.Creator<android.net.CaptivePortalData> CREATOR;
  }

  public static class CaptivePortalData.Builder {
    ctor public CaptivePortalData.Builder();
    ctor public CaptivePortalData.Builder(@Nullable android.net.CaptivePortalData);
    method @NonNull public android.net.CaptivePortalData build();
    method @NonNull public android.net.CaptivePortalData.Builder setBytesRemaining(long);
    method @NonNull public android.net.CaptivePortalData.Builder setCaptive(boolean);
    method @NonNull public android.net.CaptivePortalData.Builder setExpiryTime(long);
    method @NonNull public android.net.CaptivePortalData.Builder setRefreshTime(long);
    method @NonNull public android.net.CaptivePortalData.Builder setSessionExtendable(boolean);
    method @NonNull public android.net.CaptivePortalData.Builder setUserPortalUrl(@Nullable android.net.Uri);
    method @NonNull public android.net.CaptivePortalData.Builder setUserPortalUrl(@Nullable android.net.Uri, int);
    method @NonNull public android.net.CaptivePortalData.Builder setVenueFriendlyName(@Nullable CharSequence);
    method @NonNull public android.net.CaptivePortalData.Builder setVenueInfoUrl(@Nullable android.net.Uri);
    method @NonNull public android.net.CaptivePortalData.Builder setVenueInfoUrl(@Nullable android.net.Uri, int);
  }

  public class ConnectivityManager {
    method @NonNull @RequiresPermission(android.Manifest.permission.PACKET_KEEPALIVE_OFFLOAD) public android.net.SocketKeepalive createNattKeepalive(@NonNull android.net.Network, @NonNull android.os.ParcelFileDescriptor, @NonNull java.net.InetAddress, @NonNull java.net.InetAddress, @NonNull java.util.concurrent.Executor, @NonNull android.net.SocketKeepalive.Callback);
    method @NonNull @RequiresPermission(android.Manifest.permission.PACKET_KEEPALIVE_OFFLOAD) public android.net.SocketKeepalive createSocketKeepalive(@NonNull android.net.Network, @NonNull java.net.Socket, @NonNull java.util.concurrent.Executor, @NonNull android.net.SocketKeepalive.Callback);
    method @Deprecated @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public String getCaptivePortalServerUrl();
    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void getLatestTetheringEntitlementResult(int, boolean, @NonNull java.util.concurrent.Executor, @NonNull android.net.ConnectivityManager.OnTetheringEntitlementResultListener);
    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public boolean isTetheringSupported();
    method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_FACTORY}) public int registerNetworkProvider(@NonNull android.net.NetworkProvider);
    method public void registerQosCallback(@NonNull android.net.QosSocketInfo, @NonNull java.util.concurrent.Executor, @NonNull android.net.QosCallback);
    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void registerTetheringEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.ConnectivityManager.OnTetheringEventCallback);
    method @RequiresPermission(android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) public void requestNetwork(@NonNull android.net.NetworkRequest, int, int, @NonNull android.os.Handler, @NonNull android.net.ConnectivityManager.NetworkCallback);
    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_AIRPLANE_MODE, android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void setAirplaneMode(boolean);
    method @RequiresPermission(android.Manifest.permission.CONTROL_OEM_PAID_NETWORK_PREFERENCE) public void setOemNetworkPreference(@NonNull android.net.OemNetworkPreferences, @Nullable java.util.concurrent.Executor, @Nullable Runnable);
    method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK}) public boolean shouldAvoidBadWifi();
    method @RequiresPermission(android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) public void startCaptivePortalApp(@NonNull android.net.Network, @NonNull android.os.Bundle);
    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void startTethering(int, boolean, android.net.ConnectivityManager.OnStartTetheringCallback);
    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void startTethering(int, boolean, android.net.ConnectivityManager.OnStartTetheringCallback, android.os.Handler);
    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void stopTethering(int);
    method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_FACTORY}) public void unregisterNetworkProvider(@NonNull android.net.NetworkProvider);
    method public void unregisterQosCallback(@NonNull android.net.QosCallback);
    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void unregisterTetheringEventCallback(@NonNull android.net.ConnectivityManager.OnTetheringEventCallback);
    field public static final String EXTRA_CAPTIVE_PORTAL_PROBE_SPEC = "android.net.extra.CAPTIVE_PORTAL_PROBE_SPEC";
    field public static final String EXTRA_CAPTIVE_PORTAL_USER_AGENT = "android.net.extra.CAPTIVE_PORTAL_USER_AGENT";
    field public static final int TETHERING_BLUETOOTH = 2; // 0x2
    field public static final int TETHERING_USB = 1; // 0x1
    field public static final int TETHERING_WIFI = 0; // 0x0
    field @Deprecated public static final int TETHER_ERROR_ENTITLEMENT_UNKONWN = 13; // 0xd
    field @Deprecated public static final int TETHER_ERROR_NO_ERROR = 0; // 0x0
    field @Deprecated public static final int TETHER_ERROR_PROVISION_FAILED = 11; // 0xb
    field public static final int TYPE_NONE = -1; // 0xffffffff
    field @Deprecated public static final int TYPE_PROXY = 16; // 0x10
    field @Deprecated public static final int TYPE_WIFI_P2P = 13; // 0xd
  }

  @Deprecated public abstract static class ConnectivityManager.OnStartTetheringCallback {
    ctor @Deprecated public ConnectivityManager.OnStartTetheringCallback();
    method @Deprecated public void onTetheringFailed();
    method @Deprecated public void onTetheringStarted();
  }

  @Deprecated public static interface ConnectivityManager.OnTetheringEntitlementResultListener {
    method @Deprecated public void onTetheringEntitlementResult(int);
  }

  @Deprecated public abstract static class ConnectivityManager.OnTetheringEventCallback {
    ctor @Deprecated public ConnectivityManager.OnTetheringEventCallback();
    method @Deprecated public void onUpstreamChanged(@Nullable android.net.Network);
  }

  public final class InvalidPacketException extends java.lang.Exception {
    ctor public InvalidPacketException(int);
    method public int getError();
    field public static final int ERROR_INVALID_IP_ADDRESS = -21; // 0xffffffeb
    field public static final int ERROR_INVALID_LENGTH = -23; // 0xffffffe9
    field public static final int ERROR_INVALID_PORT = -22; // 0xffffffea
  }

  public final class IpConfiguration implements android.os.Parcelable {
    ctor public IpConfiguration();
    ctor public IpConfiguration(@NonNull android.net.IpConfiguration);
    method public int describeContents();
    method @Nullable public android.net.ProxyInfo getHttpProxy();
    method @NonNull public android.net.IpConfiguration.IpAssignment getIpAssignment();
    method @NonNull public android.net.IpConfiguration.ProxySettings getProxySettings();
    method @Nullable public android.net.StaticIpConfiguration getStaticIpConfiguration();
    method public void setHttpProxy(@Nullable android.net.ProxyInfo);
    method public void setIpAssignment(@NonNull android.net.IpConfiguration.IpAssignment);
    method public void setProxySettings(@NonNull android.net.IpConfiguration.ProxySettings);
    method public void setStaticIpConfiguration(@Nullable android.net.StaticIpConfiguration);
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.IpConfiguration> CREATOR;
  }

  public enum IpConfiguration.IpAssignment {
    enum_constant public static final android.net.IpConfiguration.IpAssignment DHCP;
    enum_constant public static final android.net.IpConfiguration.IpAssignment STATIC;
    enum_constant public static final android.net.IpConfiguration.IpAssignment UNASSIGNED;
  }

  public enum IpConfiguration.ProxySettings {
    enum_constant public static final android.net.IpConfiguration.ProxySettings NONE;
    enum_constant public static final android.net.IpConfiguration.ProxySettings PAC;
    enum_constant public static final android.net.IpConfiguration.ProxySettings STATIC;
    enum_constant public static final android.net.IpConfiguration.ProxySettings UNASSIGNED;
  }

  public final class IpPrefix implements android.os.Parcelable {
    ctor public IpPrefix(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int);
    ctor public IpPrefix(@NonNull String);
  }

  public class KeepalivePacketData {
    ctor protected KeepalivePacketData(@NonNull java.net.InetAddress, @IntRange(from=0, to=65535) int, @NonNull java.net.InetAddress, @IntRange(from=0, to=65535) int, @NonNull byte[]) throws android.net.InvalidPacketException;
    method @NonNull public java.net.InetAddress getDstAddress();
    method public int getDstPort();
    method @NonNull public byte[] getPacket();
    method @NonNull public java.net.InetAddress getSrcAddress();
    method public int getSrcPort();
  }

  public class LinkAddress implements android.os.Parcelable {
    ctor public LinkAddress(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int, int, int);
    ctor public LinkAddress(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int, int, int, long, long);
    ctor public LinkAddress(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int);
    ctor public LinkAddress(@NonNull String);
    ctor public LinkAddress(@NonNull String, int, int);
    method public long getDeprecationTime();
    method public long getExpirationTime();
    method public boolean isGlobalPreferred();
    method public boolean isIpv4();
    method public boolean isIpv6();
    method public boolean isSameAddressAs(@Nullable android.net.LinkAddress);
    field public static final long LIFETIME_PERMANENT = 9223372036854775807L; // 0x7fffffffffffffffL
    field public static final long LIFETIME_UNKNOWN = -1L; // 0xffffffffffffffffL
  }

  public final class LinkProperties implements android.os.Parcelable {
    ctor public LinkProperties(@Nullable android.net.LinkProperties);
    ctor public LinkProperties(@Nullable android.net.LinkProperties, boolean);
    method public boolean addDnsServer(@NonNull java.net.InetAddress);
    method public boolean addLinkAddress(@NonNull android.net.LinkAddress);
    method public boolean addPcscfServer(@NonNull java.net.InetAddress);
    method @NonNull public java.util.List<java.net.InetAddress> getAddresses();
    method @NonNull public java.util.List<java.lang.String> getAllInterfaceNames();
    method @NonNull public java.util.List<android.net.LinkAddress> getAllLinkAddresses();
    method @NonNull public java.util.List<android.net.RouteInfo> getAllRoutes();
    method @Nullable public android.net.Uri getCaptivePortalApiUrl();
    method @Nullable public android.net.CaptivePortalData getCaptivePortalData();
    method @NonNull public java.util.List<java.net.InetAddress> getPcscfServers();
    method @Nullable public String getTcpBufferSizes();
    method @NonNull public java.util.List<java.net.InetAddress> getValidatedPrivateDnsServers();
    method public boolean hasGlobalIpv6Address();
    method public boolean hasIpv4Address();
    method public boolean hasIpv4DefaultRoute();
    method public boolean hasIpv4DnsServer();
    method public boolean hasIpv6DefaultRoute();
    method public boolean hasIpv6DnsServer();
    method public boolean isIpv4Provisioned();
    method public boolean isIpv6Provisioned();
    method public boolean isProvisioned();
    method public boolean isReachable(@NonNull java.net.InetAddress);
    method public boolean removeDnsServer(@NonNull java.net.InetAddress);
    method public boolean removeLinkAddress(@NonNull android.net.LinkAddress);
    method public boolean removeRoute(@NonNull android.net.RouteInfo);
    method public void setCaptivePortalApiUrl(@Nullable android.net.Uri);
    method public void setCaptivePortalData(@Nullable android.net.CaptivePortalData);
    method public void setPcscfServers(@NonNull java.util.Collection<java.net.InetAddress>);
    method public void setPrivateDnsServerName(@Nullable String);
    method public void setTcpBufferSizes(@Nullable String);
    method public void setUsePrivateDns(boolean);
    method public void setValidatedPrivateDnsServers(@NonNull java.util.Collection<java.net.InetAddress>);
  }

  public final class NattKeepalivePacketData extends android.net.KeepalivePacketData implements android.os.Parcelable {
    ctor public NattKeepalivePacketData(@NonNull java.net.InetAddress, int, @NonNull java.net.InetAddress, int, @NonNull byte[]) throws android.net.InvalidPacketException;
    method public int describeContents();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.NattKeepalivePacketData> CREATOR;
  }

  public class Network implements android.os.Parcelable {
    ctor public Network(@NonNull android.net.Network);
    method public int getNetId();
    method @NonNull public android.net.Network getPrivateDnsBypassingCopy();
  }

  public abstract class NetworkAgent {
    ctor public NetworkAgent(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String, @NonNull android.net.NetworkCapabilities, @NonNull android.net.LinkProperties, int, @NonNull android.net.NetworkAgentConfig, @Nullable android.net.NetworkProvider);
    ctor public NetworkAgent(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String, @NonNull android.net.NetworkCapabilities, @NonNull android.net.LinkProperties, @NonNull android.net.NetworkScore, @NonNull android.net.NetworkAgentConfig, @Nullable android.net.NetworkProvider);
    method @Nullable public android.net.Network getNetwork();
    method public void markConnected();
    method public void onAddKeepalivePacketFilter(int, @NonNull android.net.KeepalivePacketData);
    method public void onAutomaticReconnectDisabled();
    method public void onNetworkCreated();
    method public void onNetworkUnwanted();
    method public void onQosCallbackRegistered(int, @NonNull android.net.QosFilter);
    method public void onQosCallbackUnregistered(int);
    method public void onRemoveKeepalivePacketFilter(int);
    method public void onSaveAcceptUnvalidated(boolean);
    method public void onSignalStrengthThresholdsUpdated(@NonNull int[]);
    method public void onStartSocketKeepalive(int, @NonNull java.time.Duration, @NonNull android.net.KeepalivePacketData);
    method public void onStopSocketKeepalive(int);
    method public void onValidationStatus(int, @Nullable android.net.Uri);
    method @NonNull public android.net.Network register();
    method public final void sendLinkProperties(@NonNull android.net.LinkProperties);
    method public final void sendNetworkCapabilities(@NonNull android.net.NetworkCapabilities);
    method public final void sendNetworkScore(@IntRange(from=0, to=99) int);
    method public final void sendQosCallbackError(int, int);
    method public final void sendQosSessionAvailable(int, int, @NonNull android.net.QosSessionAttributes);
    method public final void sendQosSessionLost(int, int, int);
    method public final void sendSocketKeepaliveEvent(int, int);
    method public final void setUnderlyingNetworks(@Nullable java.util.List<android.net.Network>);
    method public void unregister();
    field public static final int VALIDATION_STATUS_NOT_VALID = 2; // 0x2
    field public static final int VALIDATION_STATUS_VALID = 1; // 0x1
  }

  public final class NetworkAgentConfig implements android.os.Parcelable {
    method public int describeContents();
    method public int getLegacyType();
    method @NonNull public String getLegacyTypeName();
    method public boolean isExplicitlySelected();
    method public boolean isPartialConnectivityAcceptable();
    method public boolean isUnvalidatedConnectivityAcceptable();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkAgentConfig> CREATOR;
  }

  public static final class NetworkAgentConfig.Builder {
    ctor public NetworkAgentConfig.Builder();
    method @NonNull public android.net.NetworkAgentConfig build();
    method @NonNull public android.net.NetworkAgentConfig.Builder setExplicitlySelected(boolean);
    method @NonNull public android.net.NetworkAgentConfig.Builder setLegacyType(int);
    method @NonNull public android.net.NetworkAgentConfig.Builder setLegacyTypeName(@NonNull String);
    method @NonNull public android.net.NetworkAgentConfig.Builder setPartialConnectivityAcceptable(boolean);
    method @NonNull public android.net.NetworkAgentConfig.Builder setUnvalidatedConnectivityAcceptable(boolean);
  }

  public final class NetworkCapabilities implements android.os.Parcelable {
    method @NonNull public int[] getAdministratorUids();
    method @Nullable public String getSsid();
    method @NonNull public int[] getTransportTypes();
    method public boolean isPrivateDnsBroken();
    method public boolean satisfiedByNetworkCapabilities(@Nullable android.net.NetworkCapabilities);
    field public static final int NET_CAPABILITY_NOT_VCN_MANAGED = 28; // 0x1c
    field public static final int NET_CAPABILITY_OEM_PAID = 22; // 0x16
    field public static final int NET_CAPABILITY_OEM_PRIVATE = 26; // 0x1a
    field public static final int NET_CAPABILITY_PARTIAL_CONNECTIVITY = 24; // 0x18
    field public static final int NET_CAPABILITY_VEHICLE_INTERNAL = 27; // 0x1b
  }

  public static final class NetworkCapabilities.Builder {
    ctor public NetworkCapabilities.Builder();
    ctor public NetworkCapabilities.Builder(@NonNull android.net.NetworkCapabilities);
    method @NonNull public android.net.NetworkCapabilities.Builder addCapability(int);
    method @NonNull public android.net.NetworkCapabilities.Builder addTransportType(int);
    method @NonNull public android.net.NetworkCapabilities build();
    method @NonNull public android.net.NetworkCapabilities.Builder clearAll();
    method @NonNull public android.net.NetworkCapabilities.Builder removeCapability(int);
    method @NonNull public android.net.NetworkCapabilities.Builder removeTransportType(int);
    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setAdministratorUids(@NonNull int[]);
    method @NonNull public android.net.NetworkCapabilities.Builder setLinkDownstreamBandwidthKbps(int);
    method @NonNull public android.net.NetworkCapabilities.Builder setLinkUpstreamBandwidthKbps(int);
    method @NonNull public android.net.NetworkCapabilities.Builder setNetworkSpecifier(@Nullable android.net.NetworkSpecifier);
    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setOwnerUid(int);
    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setRequestorPackageName(@Nullable String);
    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setRequestorUid(int);
    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP) public android.net.NetworkCapabilities.Builder setSignalStrength(int);
    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setSsid(@Nullable String);
    method @NonNull public android.net.NetworkCapabilities.Builder setSubIds(@NonNull java.util.Set<java.lang.Integer>);
    method @NonNull public android.net.NetworkCapabilities.Builder setTransportInfo(@Nullable android.net.TransportInfo);
  }

  public class NetworkProvider {
    ctor public NetworkProvider(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String);
    method @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public void declareNetworkRequestUnfulfillable(@NonNull android.net.NetworkRequest);
    method public int getProviderId();
    method public void onNetworkRequestWithdrawn(@NonNull android.net.NetworkRequest);
    method public void onNetworkRequested(@NonNull android.net.NetworkRequest, @IntRange(from=0, to=99) int, int);
    field public static final int ID_NONE = -1; // 0xffffffff
  }

  public class NetworkReleasedException extends java.lang.Exception {
  }

  public class NetworkRequest implements android.os.Parcelable {
    method @Nullable public String getRequestorPackageName();
    method public int getRequestorUid();
  }

  public static class NetworkRequest.Builder {
    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP) public android.net.NetworkRequest.Builder setSignalStrength(int);
  }

  public final class NetworkScore implements android.os.Parcelable {
    method public int describeContents();
    method public int getLegacyInt();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkScore> CREATOR;
  }

  public static final class NetworkScore.Builder {
    ctor public NetworkScore.Builder();
    method @NonNull public android.net.NetworkScore build();
    method @NonNull public android.net.NetworkScore.Builder setLegacyInt(int);
  }

  public final class OemNetworkPreferences implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public java.util.Map<java.lang.String,java.lang.Integer> getNetworkPreferences();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.OemNetworkPreferences> CREATOR;
    field public static final int OEM_NETWORK_PREFERENCE_OEM_PAID = 1; // 0x1
    field public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_NO_FALLBACK = 2; // 0x2
    field public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY = 3; // 0x3
    field public static final int OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY = 4; // 0x4
    field public static final int OEM_NETWORK_PREFERENCE_UNINITIALIZED = 0; // 0x0
  }

  public static final class OemNetworkPreferences.Builder {
    ctor public OemNetworkPreferences.Builder();
    ctor public OemNetworkPreferences.Builder(@NonNull android.net.OemNetworkPreferences);
    method @NonNull public android.net.OemNetworkPreferences.Builder addNetworkPreference(@NonNull String, int);
    method @NonNull public android.net.OemNetworkPreferences build();
    method @NonNull public android.net.OemNetworkPreferences.Builder clearNetworkPreference(@NonNull String);
  }

  public abstract class QosCallback {
    ctor public QosCallback();
    method public void onError(@NonNull android.net.QosCallbackException);
    method public void onQosSessionAvailable(@NonNull android.net.QosSession, @NonNull android.net.QosSessionAttributes);
    method public void onQosSessionLost(@NonNull android.net.QosSession);
  }

  public static class QosCallback.QosCallbackRegistrationException extends java.lang.RuntimeException {
  }

  public final class QosCallbackException extends java.lang.Exception {
  }

  public abstract class QosFilter {
    method @NonNull public abstract android.net.Network getNetwork();
    method public abstract boolean matchesLocalAddress(@NonNull java.net.InetAddress, int, int);
  }

  public final class QosSession implements android.os.Parcelable {
    ctor public QosSession(int, int);
    method public int describeContents();
    method public int getSessionId();
    method public int getSessionType();
    method public long getUniqueId();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.QosSession> CREATOR;
    field public static final int TYPE_EPS_BEARER = 1; // 0x1
    field public static final int TYPE_NR_BEARER = 2; // 0x2
  }

  public interface QosSessionAttributes {
  }

  public final class QosSocketInfo implements android.os.Parcelable {
    ctor public QosSocketInfo(@NonNull android.net.Network, @NonNull java.net.Socket) throws java.io.IOException;
    method public int describeContents();
    method @NonNull public java.net.InetSocketAddress getLocalSocketAddress();
    method @NonNull public android.net.Network getNetwork();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.QosSocketInfo> CREATOR;
  }

  public final class RouteInfo implements android.os.Parcelable {
    ctor public RouteInfo(@Nullable android.net.IpPrefix, @Nullable java.net.InetAddress, @Nullable String, int);
    ctor public RouteInfo(@Nullable android.net.IpPrefix, @Nullable java.net.InetAddress, @Nullable String, int, int);
    method public int getMtu();
    method public int getType();
    field public static final int RTN_THROW = 9; // 0x9
    field public static final int RTN_UNICAST = 1; // 0x1
    field public static final int RTN_UNREACHABLE = 7; // 0x7
  }

  public abstract class SocketKeepalive implements java.lang.AutoCloseable {
    field public static final int SUCCESS = 0; // 0x0
  }

  public class SocketLocalAddressChangedException extends java.lang.Exception {
  }

  public class SocketNotBoundException extends java.lang.Exception {
  }

  public final class StaticIpConfiguration implements android.os.Parcelable {
    ctor public StaticIpConfiguration();
    ctor public StaticIpConfiguration(@Nullable android.net.StaticIpConfiguration);
    method public void addDnsServer(@NonNull java.net.InetAddress);
    method public void clear();
    method public int describeContents();
    method @NonNull public java.util.List<java.net.InetAddress> getDnsServers();
    method @Nullable public String getDomains();
    method @Nullable public java.net.InetAddress getGateway();
    method @Nullable public android.net.LinkAddress getIpAddress();
    method @NonNull public java.util.List<android.net.RouteInfo> getRoutes(@Nullable String);
    method public void writeToParcel(android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.StaticIpConfiguration> CREATOR;
  }

  public static final class StaticIpConfiguration.Builder {
    ctor public StaticIpConfiguration.Builder();
    method @NonNull public android.net.StaticIpConfiguration build();
    method @NonNull public android.net.StaticIpConfiguration.Builder setDnsServers(@NonNull Iterable<java.net.InetAddress>);
    method @NonNull public android.net.StaticIpConfiguration.Builder setDomains(@Nullable String);
    method @NonNull public android.net.StaticIpConfiguration.Builder setGateway(@Nullable java.net.InetAddress);
    method @NonNull public android.net.StaticIpConfiguration.Builder setIpAddress(@Nullable android.net.LinkAddress);
  }

  public final class TcpKeepalivePacketData extends android.net.KeepalivePacketData implements android.os.Parcelable {
    ctor public TcpKeepalivePacketData(@NonNull java.net.InetAddress, int, @NonNull java.net.InetAddress, int, @NonNull byte[], int, int, int, int, int, int) throws android.net.InvalidPacketException;
    method public int describeContents();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.TcpKeepalivePacketData> CREATOR;
    field public final int ipTos;
    field public final int ipTtl;
    field public final int tcpAck;
    field public final int tcpSeq;
    field public final int tcpWindow;
    field public final int tcpWindowScale;
  }

}

package android.net.apf {

  public final class ApfCapabilities implements android.os.Parcelable {
    ctor public ApfCapabilities(int, int, int);
    method public int describeContents();
    method public static boolean getApfDrop8023Frames();
    method @NonNull public static int[] getApfEtherTypeBlackList();
    method public boolean hasDataAccess();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.net.apf.ApfCapabilities> CREATOR;
    field public final int apfPacketFormat;
    field public final int apfVersionSupported;
    field public final int maximumApfProgramSize;
  }

}

