public void handleInit(final String callback, final String funcName, final CLRemoteResultReceiver receiver, final Promise promise, final String... args) {
        try {
            initialiseNPCICL(new Promise() {
                @Override
                public void resolve(@Nullable Object value) {
                    switch (funcName) {
                        case "getChallenge":
                            String challenge = npciClServices.getChallenge(args[0], args[1]);
                            if(promise!=null) promise.resolve(challenge);
                            break;
                        case "registerApp":
                            Boolean registrationFlag = npciClServices.registerApp(args[0], args[1], args[2], args[3], args[4]);
                            if(promise!=null) promise.resolve(registrationFlag);
                            break;
                        case GET_CREDENTIAL:
                            onResumeCallback = callback;
                            npciClServices.getCredential(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], receiver);
                            break;
                        case "unbindService":
                            try {
                                npciClServices.unbindService();
                            } catch (Exception ex) {
                                Logger.e(TAG, "Exception in unbind npci Service", ex);
                            }
                            break;
                        case "execute":
                            npciClServices.execute(args[0]);
                            break;
                        case "isUpiLiteSupported":
                            if (npciClServices != null) {
                            boolean isSupported = npciClServices.isDeviceSupported();
                                promise.resolve(isSupported);
                            } else promise.resolve("");
                            if (promise != null) promise.resolve("");
                            break;
                        case "isUpiLiteBound":
                            String isBound = npciClServices.isBound(args[0], args[1], args[2]);
                            if (promise != null) promise.resolve(isBound);
                            break;
                        case "unBindDevice":
                            boolean isUnbound = npciClServices.unBindDevice(args[0], args[1], args[2]);
                            if (promise != null) promise.resolve(isUnbound);
                            break;
                        case "registerUPILiteOnboarding":
                            boolean isRegistered = npciClServices.registerVaultOnboarding(args[0], args[1], args[2], args[3]);
                            if (promise != null) promise.resolve(isRegistered);
                            break;
                        case "registerUPILiteState":
                            boolean isStateUpdated = npciClServices.registerState(args[0], args[1], args[2], args[3]);
                            if (promise != null) promise.resolve(isStateUpdated);
                            break;
                        case "getUPILiteBalance":
                            String balance = npciClServices.getBalance(args[0], args[1], args[2]);
                            if (promise != null) promise.resolve(balance);

                            break;
                        case "offlineTxnFlow":
                            String liteOfflineTxnFlow = npciClServices.offlineTxnFlow(args[0], args[1], args[2], args[3], args[4]);
                            if (promise != null) promise.resolve(liteOfflineTxnFlow);
                            break;
                        case "listKeysVersion":
                            String listKeysVersion = npciClServices.getClVersion();
                            if(promise!=null) promise.resolve(listKeysVersion);
                            break;
                        default:
                            break;
                    }
                }
                @Override
                public void reject(String code, String message) {
                    throw new UnsupportedOperationException(message);
                }
                @Override
                public void reject(String code, Throwable throwable) {
                    throw new UnsupportedOperationException(throwable);
                }
                @Override
                public void reject(String code, String message, Throwable throwable) {
                    throw new UnsupportedOperationException(message);
                }
                @Override
                public void reject(Throwable throwable) {
                    throw new UnsupportedOperationException(throwable);
                }
                @Override
                public void reject(Throwable throwable, WritableMap userInfo) {
                    throw new UnsupportedOperationException(throwable);
                }
                @Override
                public void reject(String code, @NonNull WritableMap userInfo) {
                    throw new UnsupportedOperationException(code);
                }
                @Override
                public void reject(String code, Throwable throwable, WritableMap userInfo) {
                    throw new UnsupportedOperationException(throwable);
                }
                @Override
                public void reject(String code, String message, @NonNull WritableMap userInfo) {
                    throw new UnsupportedOperationException(message);
                }
                @Override
                public void reject(String code, String message, Throwable throwable, WritableMap userInfo) {
                    throw new UnsupportedOperationException(throwable);
                }
                @Override
                public void reject(String message) {
                    throw new UnsupportedOperationException(message);
                }
            });
        } catch (Exception e) {
            Logger.e(TAG, "Description : NPCI Service serviceConnected : RuntimeException : " + e);
        }
    }


add logger.d with input and output of each api req and response

tag, req/res