/*
 * This file is auto-generated.  DO NOT MODIFY.
 */
package org.chromium.webapk.lib.runtime_library;
/** Interface for communicating between WebAPK service and Chrome. */
public interface IWebApkApi extends android.os.IInterface
{
    /** Default implementation for IWebApkApi. */
    public static class Default implements org.chromium.webapk.lib.runtime_library.IWebApkApi {
        // Gets the id of the icon to represent WebAPK notifications in status bar.
        @Override
        public int getSmallIconId() throws android.os.RemoteException {
            return 0;
        }
        // Display a notification.
        // DEPRECATED: Use notifyNotificationWithChannel.
        @Override
        public void notifyNotification(java.lang.String platformTag, int platformID,
                android.app.Notification notification) throws android.os.RemoteException {}
        // Cancel a notification.
        @Override
        public void cancelNotification(java.lang.String platformTag, int platformID)
                throws android.os.RemoteException {}
        // Get if notification permission is enabled.
        // DEPRECATED: Use checkNotificationPermission instead.
        @Override
        public boolean notificationPermissionEnabled() throws android.os.RemoteException {
            return false;
        }
        // Display a notification with a specified channel name.
        @Override
        public void notifyNotificationWithChannel(java.lang.String platformTag, int platformID,
                android.app.Notification notification, java.lang.String channelName)
                throws android.os.RemoteException {}
        // Finishes and removes the WebAPK's task. Returns true on success.
        @Override
        public boolean finishAndRemoveTaskSdk23() throws android.os.RemoteException {
            return false;
        }
        // Gets the notification permission status.
        @Override
        public int checkNotificationPermission() throws android.os.RemoteException {
            return 0;
        }
        // Creates a pending intent for requesting notification permission.
        @Override
        public android.app.PendingIntent requestNotificationPermission(java.lang.String channelName,
                java.lang.String channelId) 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 org.chromium.webapk.lib.runtime_library.IWebApkApi {
        /** Construct the stub at attach it to the interface. */
        public Stub() {
            this.attachInterface(this, DESCRIPTOR);
        }
        /**
         * Cast an IBinder object into an org.chromium.webapk.lib.runtime_library.IWebApkApi
         * interface, generating a proxy if needed.
         */
        public static org.chromium.webapk.lib.runtime_library.IWebApkApi asInterface(
                android.os.IBinder obj) {
            if ((obj == null)) {
                return null;
            }
            android.os.IInterface iin = obj.queryLocalInterface(DESCRIPTOR);
            if (((iin != null)
                        && (iin instanceof org.chromium.webapk.lib.runtime_library.IWebApkApi))) {
                return ((org.chromium.webapk.lib.runtime_library.IWebApkApi) iin);
            }
            return new org.chromium.webapk.lib.runtime_library.IWebApkApi.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);
            }
            switch (code) {
                case INTERFACE_TRANSACTION: {
                    reply.writeString(descriptor);
                    return true;
                }
            }
            switch (code) {
                case TRANSACTION_getSmallIconId: {
                    int _result = this.getSmallIconId();
                    reply.writeNoException();
                    reply.writeInt(_result);
                    break;
                }
                case TRANSACTION_notifyNotification: {
                    java.lang.String _arg0;
                    _arg0 = data.readString();
                    int _arg1;
                    _arg1 = data.readInt();
                    android.app.Notification _arg2;
                    _arg2 = _Parcel.readTypedObject(data, android.app.Notification.CREATOR);
                    this.notifyNotification(_arg0, _arg1, _arg2);
                    reply.writeNoException();
                    break;
                }
                case TRANSACTION_cancelNotification: {
                    java.lang.String _arg0;
                    _arg0 = data.readString();
                    int _arg1;
                    _arg1 = data.readInt();
                    this.cancelNotification(_arg0, _arg1);
                    reply.writeNoException();
                    break;
                }
                case TRANSACTION_notificationPermissionEnabled: {
                    boolean _result = this.notificationPermissionEnabled();
                    reply.writeNoException();
                    reply.writeInt(((_result) ? (1) : (0)));
                    break;
                }
                case TRANSACTION_notifyNotificationWithChannel: {
                    java.lang.String _arg0;
                    _arg0 = data.readString();
                    int _arg1;
                    _arg1 = data.readInt();
                    android.app.Notification _arg2;
                    _arg2 = _Parcel.readTypedObject(data, android.app.Notification.CREATOR);
                    java.lang.String _arg3;
                    _arg3 = data.readString();
                    this.notifyNotificationWithChannel(_arg0, _arg1, _arg2, _arg3);
                    reply.writeNoException();
                    break;
                }
                case TRANSACTION_finishAndRemoveTaskSdk23: {
                    boolean _result = this.finishAndRemoveTaskSdk23();
                    reply.writeNoException();
                    reply.writeInt(((_result) ? (1) : (0)));
                    break;
                }
                case TRANSACTION_checkNotificationPermission: {
                    int _result = this.checkNotificationPermission();
                    reply.writeNoException();
                    reply.writeInt(_result);
                    break;
                }
                case TRANSACTION_requestNotificationPermission: {
                    java.lang.String _arg0;
                    _arg0 = data.readString();
                    java.lang.String _arg1;
                    _arg1 = data.readString();
                    android.app.PendingIntent _result =
                            this.requestNotificationPermission(_arg0, _arg1);
                    reply.writeNoException();
                    _Parcel.writeTypedObject(
                            reply, _result, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
                    break;
                }
                default: {
                    return super.onTransact(code, data, reply, flags);
                }
            }
            return true;
        }
        private static class Proxy implements org.chromium.webapk.lib.runtime_library.IWebApkApi {
            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;
            }
            // Gets the id of the icon to represent WebAPK notifications in status bar.
            @Override
            public int getSmallIconId() throws android.os.RemoteException {
                android.os.Parcel _data = android.os.Parcel.obtain();
                android.os.Parcel _reply = android.os.Parcel.obtain();
                int _result;
                try {
                    _data.writeInterfaceToken(DESCRIPTOR);
                    boolean _status =
                            mRemote.transact(Stub.TRANSACTION_getSmallIconId, _data, _reply, 0);
                    _reply.readException();
                    _result = _reply.readInt();
                } finally {
                    _reply.recycle();
                    _data.recycle();
                }
                return _result;
            }
            // Display a notification.
            // DEPRECATED: Use notifyNotificationWithChannel.
            @Override
            public void notifyNotification(java.lang.String platformTag, int platformID,
                    android.app.Notification notification) 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(platformTag);
                    _data.writeInt(platformID);
                    _Parcel.writeTypedObject(_data, notification, 0);
                    boolean _status =
                            mRemote.transact(Stub.TRANSACTION_notifyNotification, _data, _reply, 0);
                    _reply.readException();
                } finally {
                    _reply.recycle();
                    _data.recycle();
                }
            }
            // Cancel a notification.
            @Override
            public void cancelNotification(java.lang.String platformTag, int platformID)
                    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(platformTag);
                    _data.writeInt(platformID);
                    boolean _status =
                            mRemote.transact(Stub.TRANSACTION_cancelNotification, _data, _reply, 0);
                    _reply.readException();
                } finally {
                    _reply.recycle();
                    _data.recycle();
                }
            }
            // Get if notification permission is enabled.
            // DEPRECATED: Use checkNotificationPermission instead.
            @Override
            public boolean notificationPermissionEnabled() throws android.os.RemoteException {
                android.os.Parcel _data = android.os.Parcel.obtain();
                android.os.Parcel _reply = android.os.Parcel.obtain();
                boolean _result;
                try {
                    _data.writeInterfaceToken(DESCRIPTOR);
                    boolean _status = mRemote.transact(
                            Stub.TRANSACTION_notificationPermissionEnabled, _data, _reply, 0);
                    _reply.readException();
                    _result = (0 != _reply.readInt());
                } finally {
                    _reply.recycle();
                    _data.recycle();
                }
                return _result;
            }
            // Display a notification with a specified channel name.
            @Override
            public void notifyNotificationWithChannel(java.lang.String platformTag, int platformID,
                    android.app.Notification notification, java.lang.String channelName)
                    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(platformTag);
                    _data.writeInt(platformID);
                    _Parcel.writeTypedObject(_data, notification, 0);
                    _data.writeString(channelName);
                    boolean _status = mRemote.transact(
                            Stub.TRANSACTION_notifyNotificationWithChannel, _data, _reply, 0);
                    _reply.readException();
                } finally {
                    _reply.recycle();
                    _data.recycle();
                }
            }
            // Finishes and removes the WebAPK's task. Returns true on success.
            @Override
            public boolean finishAndRemoveTaskSdk23() throws android.os.RemoteException {
                android.os.Parcel _data = android.os.Parcel.obtain();
                android.os.Parcel _reply = android.os.Parcel.obtain();
                boolean _result;
                try {
                    _data.writeInterfaceToken(DESCRIPTOR);
                    boolean _status = mRemote.transact(
                            Stub.TRANSACTION_finishAndRemoveTaskSdk23, _data, _reply, 0);
                    _reply.readException();
                    _result = (0 != _reply.readInt());
                } finally {
                    _reply.recycle();
                    _data.recycle();
                }
                return _result;
            }
            // Gets the notification permission status.
            @Override
            public int checkNotificationPermission() throws android.os.RemoteException {
                android.os.Parcel _data = android.os.Parcel.obtain();
                android.os.Parcel _reply = android.os.Parcel.obtain();
                int _result;
                try {
                    _data.writeInterfaceToken(DESCRIPTOR);
                    boolean _status = mRemote.transact(
                            Stub.TRANSACTION_checkNotificationPermission, _data, _reply, 0);
                    _reply.readException();
                    _result = _reply.readInt();
                } finally {
                    _reply.recycle();
                    _data.recycle();
                }
                return _result;
            }
            // Creates a pending intent for requesting notification permission.
            @Override
            public android.app.PendingIntent requestNotificationPermission(
                    java.lang.String channelName, java.lang.String channelId)
                    throws android.os.RemoteException {
                android.os.Parcel _data = android.os.Parcel.obtain();
                android.os.Parcel _reply = android.os.Parcel.obtain();
                android.app.PendingIntent _result;
                try {
                    _data.writeInterfaceToken(DESCRIPTOR);
                    _data.writeString(channelName);
                    _data.writeString(channelId);
                    boolean _status = mRemote.transact(
                            Stub.TRANSACTION_requestNotificationPermission, _data, _reply, 0);
                    _reply.readException();
                    _result = _Parcel.readTypedObject(_reply, android.app.PendingIntent.CREATOR);
                } finally {
                    _reply.recycle();
                    _data.recycle();
                }
                return _result;
            }
        }
        static final int TRANSACTION_getSmallIconId =
                (android.os.IBinder.FIRST_CALL_TRANSACTION + 0);
        static final int TRANSACTION_notifyNotification =
                (android.os.IBinder.FIRST_CALL_TRANSACTION + 1);
        static final int TRANSACTION_cancelNotification =
                (android.os.IBinder.FIRST_CALL_TRANSACTION + 2);
        static final int TRANSACTION_notificationPermissionEnabled =
                (android.os.IBinder.FIRST_CALL_TRANSACTION + 3);
        static final int TRANSACTION_notifyNotificationWithChannel =
                (android.os.IBinder.FIRST_CALL_TRANSACTION + 4);
        static final int TRANSACTION_finishAndRemoveTaskSdk23 =
                (android.os.IBinder.FIRST_CALL_TRANSACTION + 5);
        static final int TRANSACTION_checkNotificationPermission =
                (android.os.IBinder.FIRST_CALL_TRANSACTION + 6);
        static final int TRANSACTION_requestNotificationPermission =
                (android.os.IBinder.FIRST_CALL_TRANSACTION + 7);
    }
    public static final java.lang.String DESCRIPTOR =
            "org.chromium.webapk.lib.runtime_library.IWebApkApi";
    // Gets the id of the icon to represent WebAPK notifications in status bar.
    public int getSmallIconId() throws android.os.RemoteException;
    // Display a notification.
    // DEPRECATED: Use notifyNotificationWithChannel.
    public void notifyNotification(java.lang.String platformTag, int platformID,
            android.app.Notification notification) throws android.os.RemoteException;
    // Cancel a notification.
    public void cancelNotification(java.lang.String platformTag, int platformID)
            throws android.os.RemoteException;
    // Get if notification permission is enabled.
    // DEPRECATED: Use checkNotificationPermission instead.
    public boolean notificationPermissionEnabled() throws android.os.RemoteException;
    // Display a notification with a specified channel name.
    public void notifyNotificationWithChannel(java.lang.String platformTag, int platformID,
            android.app.Notification notification, java.lang.String channelName)
            throws android.os.RemoteException;
    // Finishes and removes the WebAPK's task. Returns true on success.
    public boolean finishAndRemoveTaskSdk23() throws android.os.RemoteException;
    // Gets the notification permission status.
    public int checkNotificationPermission() throws android.os.RemoteException;
    // Creates a pending intent for requesting notification permission.
    public android.app.PendingIntent requestNotificationPermission(java.lang.String channelName,
            java.lang.String channelId) throws android.os.RemoteException;
    /** @hide */
    static class _Parcel {
        static private <T> T readTypedObject(
                android.os.Parcel parcel, android.os.Parcelable.Creator<T> c) {
            if (parcel.readInt() != 0) {
                return c.createFromParcel(parcel);
            } else {
                return null;
            }
        }
        static private <T extends android.os.Parcelable> void writeTypedObject(
                android.os.Parcel parcel, T value, int parcelableFlags) {
            if (value != null) {
                parcel.writeInt(1);
                value.writeToParcel(parcel, parcelableFlags);
            } else {
                parcel.writeInt(0);
            }
        }
    }
}
