/*
 * This file is auto-generated.  DO NOT MODIFY.
 * Using: out/host/linux-x86/bin/aidl --lang=java -Weverything -Wno-missing-permission-annotation --min_sdk_version 28 --ninja -d out/soong/.intermediates/system/apex/apexd/apex_aidl_interface-java-source/gen/android/apex/IApexService.java.d -o out/soong/.intermediates/system/apex/apexd/apex_aidl_interface-java-source/gen -Nsystem/apex/apexd/aidl system/apex/apexd/aidl/android/apex/IApexService.aidl
 */
package android.apex;
public interface IApexService extends android.os.IInterface
{
  /** Default implementation for IApexService. */
  public static class Default implements android.apex.IApexService
  {
    @Override public void submitStagedSession(android.apex.ApexSessionParams params, android.apex.ApexInfoList packages) throws android.os.RemoteException
    {
    }
    @Override public void markStagedSessionReady(int session_id) throws android.os.RemoteException
    {
    }
    @Override public void markStagedSessionSuccessful(int session_id) throws android.os.RemoteException
    {
    }
    @Override public android.apex.ApexSessionInfo[] getSessions() throws android.os.RemoteException
    {
      return null;
    }
    @Override public android.apex.ApexSessionInfo getStagedSessionInfo(int session_id) throws android.os.RemoteException
    {
      return null;
    }
    @Override public android.apex.ApexInfo[] getStagedApexInfos(android.apex.ApexSessionParams params) throws android.os.RemoteException
    {
      return null;
    }
    @Override public android.apex.ApexInfo[] getActivePackages() throws android.os.RemoteException
    {
      return null;
    }
    @Override public android.apex.ApexInfo[] getAllPackages() throws android.os.RemoteException
    {
      return null;
    }
    @Override public void abortStagedSession(int session_id) throws android.os.RemoteException
    {
    }
    @Override public void revertActiveSessions() throws android.os.RemoteException
    {
    }
    /**
     * Copies the CE apex data directory for the given user to the backup
     * location.
     */
    @Override public void snapshotCeData(int user_id, int rollback_id, java.lang.String apex_name) throws android.os.RemoteException
    {
    }
    /**
     * Restores the snapshot of the CE apex data directory for the given user and
     * apex. Note the snapshot will be deleted after restoration succeeded.
     */
    @Override public void restoreCeData(int user_id, int rollback_id, java.lang.String apex_name) throws android.os.RemoteException
    {
    }
    /** Deletes device-encrypted snapshots for the given rollback id. */
    @Override public void destroyDeSnapshots(int rollback_id) throws android.os.RemoteException
    {
    }
    /** Deletes credential-encrypted snapshots for the given user, for the given rollback id. */
    @Override public void destroyCeSnapshots(int user_id, int rollback_id) throws android.os.RemoteException
    {
    }
    /**
     * Deletes all credential-encrypted snapshots for the given user, except for
     * those listed in retain_rollback_ids.
     */
    @Override public void destroyCeSnapshotsNotSpecified(int user_id, int[] retain_rollback_ids) throws android.os.RemoteException
    {
    }
    @Override public void unstagePackages(java.util.List<java.lang.String> active_package_paths) throws android.os.RemoteException
    {
    }
    /**
     * Returns the active package corresponding to |package_name| and null
     * if none exists.
     */
    @Override public android.apex.ApexInfo getActivePackage(java.lang.String package_name) throws android.os.RemoteException
    {
      return null;
    }
    /**
     * Not meant for use outside of testing. The call will not be
     * functional on user builds.
     */
    @Override public void stagePackages(java.util.List<java.lang.String> package_tmp_paths) throws android.os.RemoteException
    {
    }
    /**
     * Not meant for use outside of testing. The call will not be
     * functional on user builds.
     */
    @Override public void resumeRevertIfNeeded() throws android.os.RemoteException
    {
    }
    /**
     * Forces apexd to remount all active packages.
     * 
     * This call is mostly useful for speeding up development of APEXes.
     * Instead of going through a full APEX installation that requires a reboot,
     * developers can incorporate this method in much faster `adb sync` based
     * workflow:
     * 
     * 1. adb shell stop
     * 2. adb sync
     * 3. adb shell cmd -w apexservice remountPackages
     * 4. adb shell start
     * 
     * Note, that for an APEX package will be successfully remounted only if
     * there are no alive processes holding a reference to it.
     * 
     * Not meant for use outside of testing. This call will not be functional
     * on user builds. Only root is allowed to call this method.
     */
    @Override public void remountPackages() throws android.os.RemoteException
    {
    }
    /**
     * Forces apexd to recollect pre-installed data from the given |paths|.
     * 
     * Not meant for use outside of testing. This call will not be functional
     * on user builds. Only root is allowed to call this method.
     */
    @Override public void recollectPreinstalledData(java.util.List<java.lang.String> paths) throws android.os.RemoteException
    {
    }
    /**
     * Forces apexd to recollect data apex from the given |path|.
     * 
     * Not meant for use outside of testing. This call will not be functional
     * on user builds. Only root is allowed to call this method.
     */
    @Override public void recollectDataApex(java.lang.String path, java.lang.String decompression_dir) throws android.os.RemoteException
    {
    }
    /** Informs apexd that the boot has completed. */
    @Override public void markBootCompleted() throws android.os.RemoteException
    {
    }
    /**
     * Assuming the provided compressed APEX will be installed on next boot,
     * calculate how much space will be required for decompression
     */
    @Override public long calculateSizeForCompressedApex(android.apex.CompressedApexInfoList compressed_apex_info_list) throws android.os.RemoteException
    {
      return 0L;
    }
    /**
     * Reserve space on /data partition for compressed APEX decompression. Returns error if
     * reservation fails. If empty list is passed, then reserved space is deallocated.
     */
    @Override public void reserveSpaceForCompressedApex(android.apex.CompressedApexInfoList compressed_apex_info_list) throws android.os.RemoteException
    {
    }
    /** Performs a non-staged install of the given APEX. */
    @Override public android.apex.ApexInfo installAndActivatePackage(java.lang.String packagePath, boolean force) throws android.os.RemoteException
    {
      return null;
    }
    @Override
    public android.os.IBinder asBinder() {
      return null;
    }
  }
  /** Local-side IPC implementation stub class. */
  public static abstract class Stub extends android.os.Binder implements android.apex.IApexService
  {
    /** Construct the stub at attach it to the interface. */
    @SuppressWarnings("this-escape")
    public Stub()
    {
      this.attachInterface(this, DESCRIPTOR);
    }
    /**
     * Cast an IBinder object into an android.apex.IApexService interface,
     * generating a proxy if needed.
     */
    public static android.apex.IApexService asInterface(android.os.IBinder obj)
    {
      if ((obj==null)) {
        return null;
      }
      android.os.IInterface iin = obj.queryLocalInterface(DESCRIPTOR);
      if (((iin!=null)&&(iin instanceof android.apex.IApexService))) {
        return ((android.apex.IApexService)iin);
      }
      return new android.apex.IApexService.Stub.Proxy(obj);
    }
    @Override public android.os.IBinder asBinder()
    {
      return this;
    }
    @Override public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags) throws android.os.RemoteException
    {
      java.lang.String descriptor = DESCRIPTOR;
      if (code >= android.os.IBinder.FIRST_CALL_TRANSACTION && code <= android.os.IBinder.LAST_CALL_TRANSACTION) {
        data.enforceInterface(descriptor);
      }
      if (code == INTERFACE_TRANSACTION) {
        reply.writeString(descriptor);
        return true;
      }
      switch (code)
      {
        case TRANSACTION_submitStagedSession:
        {
          android.apex.ApexSessionParams _arg0;
          _arg0 = data.readTypedObject(android.apex.ApexSessionParams.CREATOR);
          android.apex.ApexInfoList _arg1;
          _arg1 = new android.apex.ApexInfoList();
          this.submitStagedSession(_arg0, _arg1);
          reply.writeNoException();
          reply.writeTypedObject(_arg1, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
          break;
        }
        case TRANSACTION_markStagedSessionReady:
        {
          int _arg0;
          _arg0 = data.readInt();
          this.markStagedSessionReady(_arg0);
          reply.writeNoException();
          break;
        }
        case TRANSACTION_markStagedSessionSuccessful:
        {
          int _arg0;
          _arg0 = data.readInt();
          this.markStagedSessionSuccessful(_arg0);
          reply.writeNoException();
          break;
        }
        case TRANSACTION_getSessions:
        {
          android.apex.ApexSessionInfo[] _result = this.getSessions();
          reply.writeNoException();
          reply.writeTypedArray(_result, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
          break;
        }
        case TRANSACTION_getStagedSessionInfo:
        {
          int _arg0;
          _arg0 = data.readInt();
          android.apex.ApexSessionInfo _result = this.getStagedSessionInfo(_arg0);
          reply.writeNoException();
          reply.writeTypedObject(_result, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
          break;
        }
        case TRANSACTION_getStagedApexInfos:
        {
          android.apex.ApexSessionParams _arg0;
          _arg0 = data.readTypedObject(android.apex.ApexSessionParams.CREATOR);
          android.apex.ApexInfo[] _result = this.getStagedApexInfos(_arg0);
          reply.writeNoException();
          reply.writeTypedArray(_result, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
          break;
        }
        case TRANSACTION_getActivePackages:
        {
          android.apex.ApexInfo[] _result = this.getActivePackages();
          reply.writeNoException();
          reply.writeTypedArray(_result, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
          break;
        }
        case TRANSACTION_getAllPackages:
        {
          android.apex.ApexInfo[] _result = this.getAllPackages();
          reply.writeNoException();
          reply.writeTypedArray(_result, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
          break;
        }
        case TRANSACTION_abortStagedSession:
        {
          int _arg0;
          _arg0 = data.readInt();
          this.abortStagedSession(_arg0);
          reply.writeNoException();
          break;
        }
        case TRANSACTION_revertActiveSessions:
        {
          this.revertActiveSessions();
          reply.writeNoException();
          break;
        }
        case TRANSACTION_snapshotCeData:
        {
          int _arg0;
          _arg0 = data.readInt();
          int _arg1;
          _arg1 = data.readInt();
          java.lang.String _arg2;
          _arg2 = data.readString();
          this.snapshotCeData(_arg0, _arg1, _arg2);
          reply.writeNoException();
          break;
        }
        case TRANSACTION_restoreCeData:
        {
          int _arg0;
          _arg0 = data.readInt();
          int _arg1;
          _arg1 = data.readInt();
          java.lang.String _arg2;
          _arg2 = data.readString();
          this.restoreCeData(_arg0, _arg1, _arg2);
          reply.writeNoException();
          break;
        }
        case TRANSACTION_destroyDeSnapshots:
        {
          int _arg0;
          _arg0 = data.readInt();
          this.destroyDeSnapshots(_arg0);
          reply.writeNoException();
          break;
        }
        case TRANSACTION_destroyCeSnapshots:
        {
          int _arg0;
          _arg0 = data.readInt();
          int _arg1;
          _arg1 = data.readInt();
          this.destroyCeSnapshots(_arg0, _arg1);
          reply.writeNoException();
          break;
        }
        case TRANSACTION_destroyCeSnapshotsNotSpecified:
        {
          int _arg0;
          _arg0 = data.readInt();
          int[] _arg1;
          _arg1 = data.createIntArray();
          this.destroyCeSnapshotsNotSpecified(_arg0, _arg1);
          reply.writeNoException();
          break;
        }
        case TRANSACTION_unstagePackages:
        {
          java.util.List<java.lang.String> _arg0;
          _arg0 = data.createStringArrayList();
          this.unstagePackages(_arg0);
          reply.writeNoException();
          break;
        }
        case TRANSACTION_getActivePackage:
        {
          java.lang.String _arg0;
          _arg0 = data.readString();
          android.apex.ApexInfo _result = this.getActivePackage(_arg0);
          reply.writeNoException();
          reply.writeTypedObject(_result, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
          break;
        }
        case TRANSACTION_stagePackages:
        {
          java.util.List<java.lang.String> _arg0;
          _arg0 = data.createStringArrayList();
          this.stagePackages(_arg0);
          reply.writeNoException();
          break;
        }
        case TRANSACTION_resumeRevertIfNeeded:
        {
          this.resumeRevertIfNeeded();
          reply.writeNoException();
          break;
        }
        case TRANSACTION_remountPackages:
        {
          this.remountPackages();
          reply.writeNoException();
          break;
        }
        case TRANSACTION_recollectPreinstalledData:
        {
          java.util.List<java.lang.String> _arg0;
          _arg0 = data.createStringArrayList();
          this.recollectPreinstalledData(_arg0);
          reply.writeNoException();
          break;
        }
        case TRANSACTION_recollectDataApex:
        {
          java.lang.String _arg0;
          _arg0 = data.readString();
          java.lang.String _arg1;
          _arg1 = data.readString();
          this.recollectDataApex(_arg0, _arg1);
          reply.writeNoException();
          break;
        }
        case TRANSACTION_markBootCompleted:
        {
          this.markBootCompleted();
          reply.writeNoException();
          break;
        }
        case TRANSACTION_calculateSizeForCompressedApex:
        {
          android.apex.CompressedApexInfoList _arg0;
          _arg0 = data.readTypedObject(android.apex.CompressedApexInfoList.CREATOR);
          long _result = this.calculateSizeForCompressedApex(_arg0);
          reply.writeNoException();
          reply.writeLong(_result);
          break;
        }
        case TRANSACTION_reserveSpaceForCompressedApex:
        {
          android.apex.CompressedApexInfoList _arg0;
          _arg0 = data.readTypedObject(android.apex.CompressedApexInfoList.CREATOR);
          this.reserveSpaceForCompressedApex(_arg0);
          reply.writeNoException();
          break;
        }
        case TRANSACTION_installAndActivatePackage:
        {
          java.lang.String _arg0;
          _arg0 = data.readString();
          boolean _arg1;
          _arg1 = (0!=data.readInt());
          android.apex.ApexInfo _result = this.installAndActivatePackage(_arg0, _arg1);
          reply.writeNoException();
          reply.writeTypedObject(_result, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
          break;
        }
        default:
        {
          return super.onTransact(code, data, reply, flags);
        }
      }
      return true;
    }
    private static class Proxy implements android.apex.IApexService
    {
      private android.os.IBinder mRemote;
      Proxy(android.os.IBinder remote)
      {
        mRemote = remote;
      }
      @Override public android.os.IBinder asBinder()
      {
        return mRemote;
      }
      public java.lang.String getInterfaceDescriptor()
      {
        return DESCRIPTOR;
      }
      @Override public void submitStagedSession(android.apex.ApexSessionParams params, android.apex.ApexInfoList packages) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeTypedObject(params, 0);
          boolean _status = mRemote.transact(Stub.TRANSACTION_submitStagedSession, _data, _reply, 0);
          _reply.readException();
          if ((0!=_reply.readInt())) {
            packages.readFromParcel(_reply);
          }
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
      }
      @Override public void markStagedSessionReady(int session_id) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeInt(session_id);
          boolean _status = mRemote.transact(Stub.TRANSACTION_markStagedSessionReady, _data, _reply, 0);
          _reply.readException();
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
      }
      @Override public void markStagedSessionSuccessful(int session_id) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeInt(session_id);
          boolean _status = mRemote.transact(Stub.TRANSACTION_markStagedSessionSuccessful, _data, _reply, 0);
          _reply.readException();
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
      }
      @Override public android.apex.ApexSessionInfo[] getSessions() throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        android.apex.ApexSessionInfo[] _result;
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          boolean _status = mRemote.transact(Stub.TRANSACTION_getSessions, _data, _reply, 0);
          _reply.readException();
          _result = _reply.createTypedArray(android.apex.ApexSessionInfo.CREATOR);
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
        return _result;
      }
      @Override public android.apex.ApexSessionInfo getStagedSessionInfo(int session_id) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        android.apex.ApexSessionInfo _result;
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeInt(session_id);
          boolean _status = mRemote.transact(Stub.TRANSACTION_getStagedSessionInfo, _data, _reply, 0);
          _reply.readException();
          _result = _reply.readTypedObject(android.apex.ApexSessionInfo.CREATOR);
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
        return _result;
      }
      @Override public android.apex.ApexInfo[] getStagedApexInfos(android.apex.ApexSessionParams params) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        android.apex.ApexInfo[] _result;
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeTypedObject(params, 0);
          boolean _status = mRemote.transact(Stub.TRANSACTION_getStagedApexInfos, _data, _reply, 0);
          _reply.readException();
          _result = _reply.createTypedArray(android.apex.ApexInfo.CREATOR);
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
        return _result;
      }
      @Override public android.apex.ApexInfo[] getActivePackages() throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        android.apex.ApexInfo[] _result;
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          boolean _status = mRemote.transact(Stub.TRANSACTION_getActivePackages, _data, _reply, 0);
          _reply.readException();
          _result = _reply.createTypedArray(android.apex.ApexInfo.CREATOR);
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
        return _result;
      }
      @Override public android.apex.ApexInfo[] getAllPackages() throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        android.apex.ApexInfo[] _result;
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          boolean _status = mRemote.transact(Stub.TRANSACTION_getAllPackages, _data, _reply, 0);
          _reply.readException();
          _result = _reply.createTypedArray(android.apex.ApexInfo.CREATOR);
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
        return _result;
      }
      @Override public void abortStagedSession(int session_id) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeInt(session_id);
          boolean _status = mRemote.transact(Stub.TRANSACTION_abortStagedSession, _data, _reply, 0);
          _reply.readException();
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
      }
      @Override public void revertActiveSessions() throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          boolean _status = mRemote.transact(Stub.TRANSACTION_revertActiveSessions, _data, _reply, 0);
          _reply.readException();
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
      }
      /**
       * Copies the CE apex data directory for the given user to the backup
       * location.
       */
      @Override public void snapshotCeData(int user_id, int rollback_id, java.lang.String apex_name) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeInt(user_id);
          _data.writeInt(rollback_id);
          _data.writeString(apex_name);
          boolean _status = mRemote.transact(Stub.TRANSACTION_snapshotCeData, _data, _reply, 0);
          _reply.readException();
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
      }
      /**
       * Restores the snapshot of the CE apex data directory for the given user and
       * apex. Note the snapshot will be deleted after restoration succeeded.
       */
      @Override public void restoreCeData(int user_id, int rollback_id, java.lang.String apex_name) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeInt(user_id);
          _data.writeInt(rollback_id);
          _data.writeString(apex_name);
          boolean _status = mRemote.transact(Stub.TRANSACTION_restoreCeData, _data, _reply, 0);
          _reply.readException();
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
      }
      /** Deletes device-encrypted snapshots for the given rollback id. */
      @Override public void destroyDeSnapshots(int rollback_id) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeInt(rollback_id);
          boolean _status = mRemote.transact(Stub.TRANSACTION_destroyDeSnapshots, _data, _reply, 0);
          _reply.readException();
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
      }
      /** Deletes credential-encrypted snapshots for the given user, for the given rollback id. */
      @Override public void destroyCeSnapshots(int user_id, int rollback_id) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeInt(user_id);
          _data.writeInt(rollback_id);
          boolean _status = mRemote.transact(Stub.TRANSACTION_destroyCeSnapshots, _data, _reply, 0);
          _reply.readException();
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
      }
      /**
       * Deletes all credential-encrypted snapshots for the given user, except for
       * those listed in retain_rollback_ids.
       */
      @Override public void destroyCeSnapshotsNotSpecified(int user_id, int[] retain_rollback_ids) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeInt(user_id);
          _data.writeIntArray(retain_rollback_ids);
          boolean _status = mRemote.transact(Stub.TRANSACTION_destroyCeSnapshotsNotSpecified, _data, _reply, 0);
          _reply.readException();
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
      }
      @Override public void unstagePackages(java.util.List<java.lang.String> active_package_paths) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeStringList(active_package_paths);
          boolean _status = mRemote.transact(Stub.TRANSACTION_unstagePackages, _data, _reply, 0);
          _reply.readException();
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
      }
      /**
       * Returns the active package corresponding to |package_name| and null
       * if none exists.
       */
      @Override public android.apex.ApexInfo getActivePackage(java.lang.String package_name) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        android.apex.ApexInfo _result;
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeString(package_name);
          boolean _status = mRemote.transact(Stub.TRANSACTION_getActivePackage, _data, _reply, 0);
          _reply.readException();
          _result = _reply.readTypedObject(android.apex.ApexInfo.CREATOR);
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
        return _result;
      }
      /**
       * Not meant for use outside of testing. The call will not be
       * functional on user builds.
       */
      @Override public void stagePackages(java.util.List<java.lang.String> package_tmp_paths) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeStringList(package_tmp_paths);
          boolean _status = mRemote.transact(Stub.TRANSACTION_stagePackages, _data, _reply, 0);
          _reply.readException();
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
      }
      /**
       * Not meant for use outside of testing. The call will not be
       * functional on user builds.
       */
      @Override public void resumeRevertIfNeeded() throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          boolean _status = mRemote.transact(Stub.TRANSACTION_resumeRevertIfNeeded, _data, _reply, 0);
          _reply.readException();
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
      }
      /**
       * Forces apexd to remount all active packages.
       * 
       * This call is mostly useful for speeding up development of APEXes.
       * Instead of going through a full APEX installation that requires a reboot,
       * developers can incorporate this method in much faster `adb sync` based
       * workflow:
       * 
       * 1. adb shell stop
       * 2. adb sync
       * 3. adb shell cmd -w apexservice remountPackages
       * 4. adb shell start
       * 
       * Note, that for an APEX package will be successfully remounted only if
       * there are no alive processes holding a reference to it.
       * 
       * Not meant for use outside of testing. This call will not be functional
       * on user builds. Only root is allowed to call this method.
       */
      @Override public void remountPackages() throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          boolean _status = mRemote.transact(Stub.TRANSACTION_remountPackages, _data, _reply, 0);
          _reply.readException();
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
      }
      /**
       * Forces apexd to recollect pre-installed data from the given |paths|.
       * 
       * Not meant for use outside of testing. This call will not be functional
       * on user builds. Only root is allowed to call this method.
       */
      @Override public void recollectPreinstalledData(java.util.List<java.lang.String> paths) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeStringList(paths);
          boolean _status = mRemote.transact(Stub.TRANSACTION_recollectPreinstalledData, _data, _reply, 0);
          _reply.readException();
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
      }
      /**
       * Forces apexd to recollect data apex from the given |path|.
       * 
       * Not meant for use outside of testing. This call will not be functional
       * on user builds. Only root is allowed to call this method.
       */
      @Override public void recollectDataApex(java.lang.String path, java.lang.String decompression_dir) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeString(path);
          _data.writeString(decompression_dir);
          boolean _status = mRemote.transact(Stub.TRANSACTION_recollectDataApex, _data, _reply, 0);
          _reply.readException();
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
      }
      /** Informs apexd that the boot has completed. */
      @Override public void markBootCompleted() throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          boolean _status = mRemote.transact(Stub.TRANSACTION_markBootCompleted, _data, _reply, 0);
          _reply.readException();
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
      }
      /**
       * Assuming the provided compressed APEX will be installed on next boot,
       * calculate how much space will be required for decompression
       */
      @Override public long calculateSizeForCompressedApex(android.apex.CompressedApexInfoList compressed_apex_info_list) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        long _result;
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeTypedObject(compressed_apex_info_list, 0);
          boolean _status = mRemote.transact(Stub.TRANSACTION_calculateSizeForCompressedApex, _data, _reply, 0);
          _reply.readException();
          _result = _reply.readLong();
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
        return _result;
      }
      /**
       * Reserve space on /data partition for compressed APEX decompression. Returns error if
       * reservation fails. If empty list is passed, then reserved space is deallocated.
       */
      @Override public void reserveSpaceForCompressedApex(android.apex.CompressedApexInfoList compressed_apex_info_list) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeTypedObject(compressed_apex_info_list, 0);
          boolean _status = mRemote.transact(Stub.TRANSACTION_reserveSpaceForCompressedApex, _data, _reply, 0);
          _reply.readException();
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
      }
      /** Performs a non-staged install of the given APEX. */
      @Override public android.apex.ApexInfo installAndActivatePackage(java.lang.String packagePath, boolean force) throws android.os.RemoteException
      {
        android.os.Parcel _data = android.os.Parcel.obtain();
        android.os.Parcel _reply = android.os.Parcel.obtain();
        android.apex.ApexInfo _result;
        try {
          _data.writeInterfaceToken(DESCRIPTOR);
          _data.writeString(packagePath);
          _data.writeInt(((force)?(1):(0)));
          boolean _status = mRemote.transact(Stub.TRANSACTION_installAndActivatePackage, _data, _reply, 0);
          _reply.readException();
          _result = _reply.readTypedObject(android.apex.ApexInfo.CREATOR);
        }
        finally {
          _reply.recycle();
          _data.recycle();
        }
        return _result;
      }
    }
    static final int TRANSACTION_submitStagedSession = (android.os.IBinder.FIRST_CALL_TRANSACTION + 0);
    static final int TRANSACTION_markStagedSessionReady = (android.os.IBinder.FIRST_CALL_TRANSACTION + 1);
    static final int TRANSACTION_markStagedSessionSuccessful = (android.os.IBinder.FIRST_CALL_TRANSACTION + 2);
    static final int TRANSACTION_getSessions = (android.os.IBinder.FIRST_CALL_TRANSACTION + 3);
    static final int TRANSACTION_getStagedSessionInfo = (android.os.IBinder.FIRST_CALL_TRANSACTION + 4);
    static final int TRANSACTION_getStagedApexInfos = (android.os.IBinder.FIRST_CALL_TRANSACTION + 5);
    static final int TRANSACTION_getActivePackages = (android.os.IBinder.FIRST_CALL_TRANSACTION + 6);
    static final int TRANSACTION_getAllPackages = (android.os.IBinder.FIRST_CALL_TRANSACTION + 7);
    static final int TRANSACTION_abortStagedSession = (android.os.IBinder.FIRST_CALL_TRANSACTION + 8);
    static final int TRANSACTION_revertActiveSessions = (android.os.IBinder.FIRST_CALL_TRANSACTION + 9);
    static final int TRANSACTION_snapshotCeData = (android.os.IBinder.FIRST_CALL_TRANSACTION + 10);
    static final int TRANSACTION_restoreCeData = (android.os.IBinder.FIRST_CALL_TRANSACTION + 11);
    static final int TRANSACTION_destroyDeSnapshots = (android.os.IBinder.FIRST_CALL_TRANSACTION + 12);
    static final int TRANSACTION_destroyCeSnapshots = (android.os.IBinder.FIRST_CALL_TRANSACTION + 13);
    static final int TRANSACTION_destroyCeSnapshotsNotSpecified = (android.os.IBinder.FIRST_CALL_TRANSACTION + 14);
    static final int TRANSACTION_unstagePackages = (android.os.IBinder.FIRST_CALL_TRANSACTION + 15);
    static final int TRANSACTION_getActivePackage = (android.os.IBinder.FIRST_CALL_TRANSACTION + 16);
    static final int TRANSACTION_stagePackages = (android.os.IBinder.FIRST_CALL_TRANSACTION + 17);
    static final int TRANSACTION_resumeRevertIfNeeded = (android.os.IBinder.FIRST_CALL_TRANSACTION + 18);
    static final int TRANSACTION_remountPackages = (android.os.IBinder.FIRST_CALL_TRANSACTION + 19);
    static final int TRANSACTION_recollectPreinstalledData = (android.os.IBinder.FIRST_CALL_TRANSACTION + 20);
    static final int TRANSACTION_recollectDataApex = (android.os.IBinder.FIRST_CALL_TRANSACTION + 21);
    static final int TRANSACTION_markBootCompleted = (android.os.IBinder.FIRST_CALL_TRANSACTION + 22);
    static final int TRANSACTION_calculateSizeForCompressedApex = (android.os.IBinder.FIRST_CALL_TRANSACTION + 23);
    static final int TRANSACTION_reserveSpaceForCompressedApex = (android.os.IBinder.FIRST_CALL_TRANSACTION + 24);
    static final int TRANSACTION_installAndActivatePackage = (android.os.IBinder.FIRST_CALL_TRANSACTION + 25);
  }
  /** @hide */
  public static final java.lang.String DESCRIPTOR = "android.apex.IApexService";
  public void submitStagedSession(android.apex.ApexSessionParams params, android.apex.ApexInfoList packages) throws android.os.RemoteException;
  public void markStagedSessionReady(int session_id) throws android.os.RemoteException;
  public void markStagedSessionSuccessful(int session_id) throws android.os.RemoteException;
  public android.apex.ApexSessionInfo[] getSessions() throws android.os.RemoteException;
  public android.apex.ApexSessionInfo getStagedSessionInfo(int session_id) throws android.os.RemoteException;
  public android.apex.ApexInfo[] getStagedApexInfos(android.apex.ApexSessionParams params) throws android.os.RemoteException;
  public android.apex.ApexInfo[] getActivePackages() throws android.os.RemoteException;
  public android.apex.ApexInfo[] getAllPackages() throws android.os.RemoteException;
  public void abortStagedSession(int session_id) throws android.os.RemoteException;
  public void revertActiveSessions() throws android.os.RemoteException;
  /**
   * Copies the CE apex data directory for the given user to the backup
   * location.
   */
  public void snapshotCeData(int user_id, int rollback_id, java.lang.String apex_name) throws android.os.RemoteException;
  /**
   * Restores the snapshot of the CE apex data directory for the given user and
   * apex. Note the snapshot will be deleted after restoration succeeded.
   */
  public void restoreCeData(int user_id, int rollback_id, java.lang.String apex_name) throws android.os.RemoteException;
  /** Deletes device-encrypted snapshots for the given rollback id. */
  public void destroyDeSnapshots(int rollback_id) throws android.os.RemoteException;
  /** Deletes credential-encrypted snapshots for the given user, for the given rollback id. */
  public void destroyCeSnapshots(int user_id, int rollback_id) throws android.os.RemoteException;
  /**
   * Deletes all credential-encrypted snapshots for the given user, except for
   * those listed in retain_rollback_ids.
   */
  public void destroyCeSnapshotsNotSpecified(int user_id, int[] retain_rollback_ids) throws android.os.RemoteException;
  public void unstagePackages(java.util.List<java.lang.String> active_package_paths) throws android.os.RemoteException;
  /**
   * Returns the active package corresponding to |package_name| and null
   * if none exists.
   */
  public android.apex.ApexInfo getActivePackage(java.lang.String package_name) throws android.os.RemoteException;
  /**
   * Not meant for use outside of testing. The call will not be
   * functional on user builds.
   */
  public void stagePackages(java.util.List<java.lang.String> package_tmp_paths) throws android.os.RemoteException;
  /**
   * Not meant for use outside of testing. The call will not be
   * functional on user builds.
   */
  public void resumeRevertIfNeeded() throws android.os.RemoteException;
  /**
   * Forces apexd to remount all active packages.
   * 
   * This call is mostly useful for speeding up development of APEXes.
   * Instead of going through a full APEX installation that requires a reboot,
   * developers can incorporate this method in much faster `adb sync` based
   * workflow:
   * 
   * 1. adb shell stop
   * 2. adb sync
   * 3. adb shell cmd -w apexservice remountPackages
   * 4. adb shell start
   * 
   * Note, that for an APEX package will be successfully remounted only if
   * there are no alive processes holding a reference to it.
   * 
   * Not meant for use outside of testing. This call will not be functional
   * on user builds. Only root is allowed to call this method.
   */
  public void remountPackages() throws android.os.RemoteException;
  /**
   * Forces apexd to recollect pre-installed data from the given |paths|.
   * 
   * Not meant for use outside of testing. This call will not be functional
   * on user builds. Only root is allowed to call this method.
   */
  public void recollectPreinstalledData(java.util.List<java.lang.String> paths) throws android.os.RemoteException;
  /**
   * Forces apexd to recollect data apex from the given |path|.
   * 
   * Not meant for use outside of testing. This call will not be functional
   * on user builds. Only root is allowed to call this method.
   */
  public void recollectDataApex(java.lang.String path, java.lang.String decompression_dir) throws android.os.RemoteException;
  /** Informs apexd that the boot has completed. */
  public void markBootCompleted() throws android.os.RemoteException;
  /**
   * Assuming the provided compressed APEX will be installed on next boot,
   * calculate how much space will be required for decompression
   */
  public long calculateSizeForCompressedApex(android.apex.CompressedApexInfoList compressed_apex_info_list) throws android.os.RemoteException;
  /**
   * Reserve space on /data partition for compressed APEX decompression. Returns error if
   * reservation fails. If empty list is passed, then reserved space is deallocated.
   */
  public void reserveSpaceForCompressedApex(android.apex.CompressedApexInfoList compressed_apex_info_list) throws android.os.RemoteException;
  /** Performs a non-staged install of the given APEX. */
  public android.apex.ApexInfo installAndActivatePackage(java.lang.String packagePath, boolean force) throws android.os.RemoteException;
}
