// Signature format: 2.0
package android.app.usage {

  public class NetworkStatsManager {
    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STATS_PROVIDER, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void registerNetworkStatsProvider(@NonNull String, @NonNull android.net.netstats.provider.NetworkStatsProvider);
    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STATS_PROVIDER, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void unregisterNetworkStatsProvider(@NonNull android.net.netstats.provider.NetworkStatsProvider);
  }

}

package android.nearby {

  public interface BroadcastCallback {
    method public void onStatusChanged(int);
    field public static final int STATUS_FAILURE = 1; // 0x1
    field public static final int STATUS_FAILURE_ALREADY_REGISTERED = 2; // 0x2
    field public static final int STATUS_FAILURE_MISSING_PERMISSIONS = 4; // 0x4
    field public static final int STATUS_FAILURE_SIZE_EXCEED_LIMIT = 3; // 0x3
    field public static final int STATUS_OK = 0; // 0x0
  }

  public abstract class BroadcastRequest {
    method @NonNull public java.util.List<java.lang.Integer> getMediums();
    method @IntRange(from=0xffffff81, to=126) public int getTxPower();
    method public int getType();
    method public int getVersion();
    field public static final int BROADCAST_TYPE_NEARBY_PRESENCE = 3; // 0x3
    field public static final int BROADCAST_TYPE_UNKNOWN = -1; // 0xffffffff
    field public static final int MEDIUM_BLE = 1; // 0x1
    field public static final int PRESENCE_VERSION_UNKNOWN = -1; // 0xffffffff
    field public static final int PRESENCE_VERSION_V0 = 0; // 0x0
    field public static final int PRESENCE_VERSION_V1 = 1; // 0x1
    field public static final int UNKNOWN_TX_POWER = -127; // 0xffffff81
  }

  public final class CredentialElement implements android.os.Parcelable {
    ctor public CredentialElement(@NonNull String, @NonNull byte[]);
    method public int describeContents();
    method @NonNull public String getKey();
    method @NonNull public byte[] getValue();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.nearby.CredentialElement> CREATOR;
  }

  public final class DataElement implements android.os.Parcelable {
    ctor public DataElement(int, @NonNull byte[]);
    method public int describeContents();
    method public int getKey();
    method @NonNull public byte[] getValue();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.nearby.DataElement> CREATOR;
  }

  public abstract class NearbyDevice {
    method @NonNull public java.util.List<java.lang.Integer> getMediums();
    method @Nullable public String getName();
    method @IntRange(from=0xffffff81, to=126) public int getRssi();
    method public static boolean isValidMedium(int);
  }

  public class NearbyManager {
    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADVERTISE, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void startBroadcast(@NonNull android.nearby.BroadcastRequest, @NonNull java.util.concurrent.Executor, @NonNull android.nearby.BroadcastCallback);
    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int startScan(@NonNull android.nearby.ScanRequest, @NonNull java.util.concurrent.Executor, @NonNull android.nearby.ScanCallback);
    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADVERTISE, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void stopBroadcast(@NonNull android.nearby.BroadcastCallback);
    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void stopScan(@NonNull android.nearby.ScanCallback);
  }

  public final class PresenceBroadcastRequest extends android.nearby.BroadcastRequest implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public java.util.List<java.lang.Integer> getActions();
    method @NonNull public android.nearby.PrivateCredential getCredential();
    method @NonNull public java.util.List<android.nearby.DataElement> getExtendedProperties();
    method @NonNull public byte[] getSalt();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.nearby.PresenceBroadcastRequest> CREATOR;
  }

  public static final class PresenceBroadcastRequest.Builder {
    ctor public PresenceBroadcastRequest.Builder(@NonNull java.util.List<java.lang.Integer>, @NonNull byte[], @NonNull android.nearby.PrivateCredential);
    method @NonNull public android.nearby.PresenceBroadcastRequest.Builder addAction(@IntRange(from=1, to=255) int);
    method @NonNull public android.nearby.PresenceBroadcastRequest.Builder addExtendedProperty(@NonNull android.nearby.DataElement);
    method @NonNull public android.nearby.PresenceBroadcastRequest build();
    method @NonNull public android.nearby.PresenceBroadcastRequest.Builder setTxPower(@IntRange(from=0xffffff81, to=126) int);
    method @NonNull public android.nearby.PresenceBroadcastRequest.Builder setVersion(int);
  }

  public abstract class PresenceCredential {
    method @NonNull public byte[] getAuthenticityKey();
    method @NonNull public java.util.List<android.nearby.CredentialElement> getCredentialElements();
    method public int getIdentityType();
    method @NonNull public byte[] getSecretId();
    method public int getType();
    field public static final int CREDENTIAL_TYPE_PRIVATE = 0; // 0x0
    field public static final int CREDENTIAL_TYPE_PUBLIC = 1; // 0x1
    field public static final int IDENTITY_TYPE_PRIVATE = 1; // 0x1
    field public static final int IDENTITY_TYPE_PROVISIONED = 2; // 0x2
    field public static final int IDENTITY_TYPE_TRUSTED = 3; // 0x3
    field public static final int IDENTITY_TYPE_UNKNOWN = 0; // 0x0
  }

  public final class PresenceDevice extends android.nearby.NearbyDevice implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public String getDeviceId();
    method @Nullable public String getDeviceImageUrl();
    method public int getDeviceType();
    method public long getDiscoveryTimestampMillis();
    method @NonNull public byte[] getEncryptedIdentity();
    method @NonNull public java.util.List<android.nearby.DataElement> getExtendedProperties();
    method @NonNull public byte[] getSalt();
    method @NonNull public byte[] getSecretId();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.nearby.PresenceDevice> CREATOR;
  }

  public static final class PresenceDevice.Builder {
    ctor public PresenceDevice.Builder(@NonNull String, @NonNull byte[], @NonNull byte[], @NonNull byte[]);
    method @NonNull public android.nearby.PresenceDevice.Builder addExtendedProperty(@NonNull android.nearby.DataElement);
    method @NonNull public android.nearby.PresenceDevice.Builder addMedium(int);
    method @NonNull public android.nearby.PresenceDevice build();
    method @NonNull public android.nearby.PresenceDevice.Builder setDeviceImageUrl(@Nullable String);
    method @NonNull public android.nearby.PresenceDevice.Builder setDeviceType(int);
    method @NonNull public android.nearby.PresenceDevice.Builder setDiscoveryTimestampMillis(long);
    method @NonNull public android.nearby.PresenceDevice.Builder setName(@Nullable String);
    method @NonNull public android.nearby.PresenceDevice.Builder setRssi(int);
  }

  public final class PresenceScanFilter extends android.nearby.ScanFilter implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public java.util.List<android.nearby.PublicCredential> getCredentials();
    method @NonNull public java.util.List<android.nearby.DataElement> getExtendedProperties();
    method @NonNull public java.util.List<java.lang.Integer> getPresenceActions();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.nearby.PresenceScanFilter> CREATOR;
  }

  public static final class PresenceScanFilter.Builder {
    ctor public PresenceScanFilter.Builder();
    method @NonNull public android.nearby.PresenceScanFilter.Builder addCredential(@NonNull android.nearby.PublicCredential);
    method @NonNull public android.nearby.PresenceScanFilter.Builder addExtendedProperty(@NonNull android.nearby.DataElement);
    method @NonNull public android.nearby.PresenceScanFilter.Builder addPresenceAction(@IntRange(from=1, to=255) int);
    method @NonNull public android.nearby.PresenceScanFilter build();
    method @NonNull public android.nearby.PresenceScanFilter.Builder setMaxPathLoss(@IntRange(from=0, to=127) int);
  }

  public final class PrivateCredential extends android.nearby.PresenceCredential implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public String getDeviceName();
    method @NonNull public byte[] getMetadataEncryptionKey();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.nearby.PrivateCredential> CREATOR;
  }

  public static final class PrivateCredential.Builder {
    ctor public PrivateCredential.Builder(@NonNull byte[], @NonNull byte[], @NonNull byte[], @NonNull String);
    method @NonNull public android.nearby.PrivateCredential.Builder addCredentialElement(@NonNull android.nearby.CredentialElement);
    method @NonNull public android.nearby.PrivateCredential build();
    method @NonNull public android.nearby.PrivateCredential.Builder setIdentityType(int);
  }

  public final class PublicCredential extends android.nearby.PresenceCredential implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public byte[] getEncryptedMetadata();
    method @NonNull public byte[] getEncryptedMetadataKeyTag();
    method @NonNull public byte[] getPublicKey();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.nearby.PublicCredential> CREATOR;
  }

  public static final class PublicCredential.Builder {
    ctor public PublicCredential.Builder(@NonNull byte[], @NonNull byte[], @NonNull byte[], @NonNull byte[], @NonNull byte[]);
    method @NonNull public android.nearby.PublicCredential.Builder addCredentialElement(@NonNull android.nearby.CredentialElement);
    method @NonNull public android.nearby.PublicCredential build();
    method @NonNull public android.nearby.PublicCredential.Builder setIdentityType(int);
  }

  public interface ScanCallback {
    method public void onDiscovered(@NonNull android.nearby.NearbyDevice);
    method public void onLost(@NonNull android.nearby.NearbyDevice);
    method public void onUpdated(@NonNull android.nearby.NearbyDevice);
  }

  public abstract class ScanFilter {
    method @IntRange(from=0, to=127) public int getMaxPathLoss();
    method public int getType();
  }

  public final class ScanRequest implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public java.util.List<android.nearby.ScanFilter> getScanFilters();
    method public int getScanMode();
    method public int getScanType();
    method @NonNull public android.os.WorkSource getWorkSource();
    method public boolean isBleEnabled();
    method public static boolean isValidScanMode(int);
    method public static boolean isValidScanType(int);
    method @NonNull public static String scanModeToString(int);
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.nearby.ScanRequest> CREATOR;
    field public static final int SCAN_MODE_BALANCED = 1; // 0x1
    field public static final int SCAN_MODE_LOW_LATENCY = 2; // 0x2
    field public static final int SCAN_MODE_LOW_POWER = 0; // 0x0
    field public static final int SCAN_MODE_NO_POWER = -1; // 0xffffffff
    field public static final int SCAN_TYPE_FAST_PAIR = 1; // 0x1
    field public static final int SCAN_TYPE_NEARBY_PRESENCE = 2; // 0x2
  }

  public static final class ScanRequest.Builder {
    ctor public ScanRequest.Builder();
    method @NonNull public android.nearby.ScanRequest.Builder addScanFilter(@NonNull android.nearby.ScanFilter);
    method @NonNull public android.nearby.ScanRequest build();
    method @NonNull public android.nearby.ScanRequest.Builder setBleEnabled(boolean);
    method @NonNull public android.nearby.ScanRequest.Builder setScanMode(int);
    method @NonNull public android.nearby.ScanRequest.Builder setScanType(int);
    method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public android.nearby.ScanRequest.Builder setWorkSource(@Nullable android.os.WorkSource);
  }

}

package android.net {

  public class EthernetManager {
    method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.MANAGE_ETHERNET_NETWORKS}) public void disableInterface(@NonNull String, @Nullable java.util.concurrent.Executor, @Nullable android.os.OutcomeReceiver<java.lang.String,android.net.EthernetNetworkManagementException>);
    method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.MANAGE_ETHERNET_NETWORKS}) public void enableInterface(@NonNull String, @Nullable java.util.concurrent.Executor, @Nullable android.os.OutcomeReceiver<java.lang.String,android.net.EthernetNetworkManagementException>);
    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public android.net.EthernetManager.TetheredInterfaceRequest requestTetheredInterface(@NonNull java.util.concurrent.Executor, @NonNull android.net.EthernetManager.TetheredInterfaceCallback);
    method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.MANAGE_ETHERNET_NETWORKS}) public void updateConfiguration(@NonNull String, @NonNull android.net.EthernetNetworkUpdateRequest, @Nullable java.util.concurrent.Executor, @Nullable android.os.OutcomeReceiver<java.lang.String,android.net.EthernetNetworkManagementException>);
  }

  public static interface EthernetManager.TetheredInterfaceCallback {
    method public void onAvailable(@NonNull String);
    method public void onUnavailable();
  }

  public static class EthernetManager.TetheredInterfaceRequest {
    method public void release();
  }

  public final class EthernetNetworkManagementException extends java.lang.RuntimeException implements android.os.Parcelable {
    ctor public EthernetNetworkManagementException(@NonNull String);
    method public int describeContents();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.EthernetNetworkManagementException> CREATOR;
  }

  public final class EthernetNetworkUpdateRequest implements android.os.Parcelable {
    method public int describeContents();
    method @Nullable public android.net.IpConfiguration getIpConfiguration();
    method @Nullable public android.net.NetworkCapabilities getNetworkCapabilities();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.EthernetNetworkUpdateRequest> CREATOR;
  }

  public static final class EthernetNetworkUpdateRequest.Builder {
    ctor public EthernetNetworkUpdateRequest.Builder();
    ctor public EthernetNetworkUpdateRequest.Builder(@NonNull android.net.EthernetNetworkUpdateRequest);
    method @NonNull public android.net.EthernetNetworkUpdateRequest build();
    method @NonNull public android.net.EthernetNetworkUpdateRequest.Builder setIpConfiguration(@Nullable android.net.IpConfiguration);
    method @NonNull public android.net.EthernetNetworkUpdateRequest.Builder setNetworkCapabilities(@Nullable android.net.NetworkCapabilities);
  }

  public class IpSecManager {
    method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void applyTunnelModeTransform(@NonNull android.net.IpSecManager.IpSecTunnelInterface, int, @NonNull android.net.IpSecTransform) throws java.io.IOException;
    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public android.net.IpSecManager.IpSecTunnelInterface createIpSecTunnelInterface(@NonNull java.net.InetAddress, @NonNull java.net.InetAddress, @NonNull android.net.Network) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException;
    method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void startTunnelModeTransformMigration(@NonNull android.net.IpSecTransform, @NonNull java.net.InetAddress, @NonNull java.net.InetAddress);
  }

  public static final class IpSecManager.IpSecTunnelInterface implements java.lang.AutoCloseable {
    method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void addAddress(@NonNull java.net.InetAddress, int) throws java.io.IOException;
    method public void close();
    method @NonNull public String getInterfaceName();
    method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void removeAddress(@NonNull java.net.InetAddress, int) throws java.io.IOException;
    method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void setUnderlyingNetwork(@NonNull android.net.Network) throws java.io.IOException;
  }

  public static class IpSecTransform.Builder {
    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public android.net.IpSecTransform buildTunnelModeTransform(@NonNull java.net.InetAddress, @NonNull android.net.IpSecManager.SecurityParameterIndex) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException, android.net.IpSecManager.SpiUnavailableException;
  }

  public final class NetworkStats implements java.lang.Iterable<android.net.NetworkStats.Entry> android.os.Parcelable {
    ctor public NetworkStats(long, int);
    method @NonNull public android.net.NetworkStats add(@NonNull android.net.NetworkStats);
    method @NonNull public android.net.NetworkStats addEntry(@NonNull android.net.NetworkStats.Entry);
    method public int describeContents();
    method @NonNull public java.util.Iterator<android.net.NetworkStats.Entry> iterator();
    method @NonNull public android.net.NetworkStats subtract(@NonNull android.net.NetworkStats);
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkStats> CREATOR;
    field public static final int DEFAULT_NETWORK_ALL = -1; // 0xffffffff
    field public static final int DEFAULT_NETWORK_NO = 0; // 0x0
    field public static final int DEFAULT_NETWORK_YES = 1; // 0x1
    field public static final String IFACE_VT = "vt_data0";
    field public static final int METERED_ALL = -1; // 0xffffffff
    field public static final int METERED_NO = 0; // 0x0
    field public static final int METERED_YES = 1; // 0x1
    field public static final int ROAMING_ALL = -1; // 0xffffffff
    field public static final int ROAMING_NO = 0; // 0x0
    field public static final int ROAMING_YES = 1; // 0x1
    field public static final int SET_ALL = -1; // 0xffffffff
    field public static final int SET_DEFAULT = 0; // 0x0
    field public static final int SET_FOREGROUND = 1; // 0x1
    field public static final int TAG_NONE = 0; // 0x0
    field public static final int UID_ALL = -1; // 0xffffffff
    field public static final int UID_TETHERING = -5; // 0xfffffffb
  }

  public static class NetworkStats.Entry {
    ctor public NetworkStats.Entry(@Nullable String, int, int, int, int, int, int, long, long, long, long, long);
    method public int getDefaultNetwork();
    method public int getMetered();
    method public long getOperations();
    method public int getRoaming();
    method public long getRxBytes();
    method public long getRxPackets();
    method public int getSet();
    method public int getTag();
    method public long getTxBytes();
    method public long getTxPackets();
    method public int getUid();
  }

  public class TrafficStats {
    method public static void setThreadStatsTagApp();
    method public static void setThreadStatsTagBackup();
    method public static void setThreadStatsTagRestore();
    field public static final int TAG_NETWORK_STACK_IMPERSONATION_RANGE_END = -113; // 0xffffff8f
    field public static final int TAG_NETWORK_STACK_IMPERSONATION_RANGE_START = -128; // 0xffffff80
    field public static final int TAG_NETWORK_STACK_RANGE_END = -257; // 0xfffffeff
    field public static final int TAG_NETWORK_STACK_RANGE_START = -768; // 0xfffffd00
    field public static final int TAG_SYSTEM_IMPERSONATION_RANGE_END = -241; // 0xffffff0f
    field public static final int TAG_SYSTEM_IMPERSONATION_RANGE_START = -256; // 0xffffff00
  }

}

package android.net.netstats.provider {

  public abstract class NetworkStatsProvider {
    ctor public NetworkStatsProvider();
    method public void notifyAlertReached();
    method public void notifyLimitReached();
    method public void notifyStatsUpdated(int, @NonNull android.net.NetworkStats, @NonNull android.net.NetworkStats);
    method public void notifyWarningReached();
    method public abstract void onRequestStatsUpdate(int);
    method public abstract void onSetAlert(long);
    method public abstract void onSetLimit(@NonNull String, long);
    method public void onSetWarningAndLimit(@NonNull String, long, long);
    field public static final int QUOTA_UNLIMITED = -1; // 0xffffffff
  }

}

