// Path: opfpush/src/main/java/org/onepf/opfpush/listener/CheckManifestHandler.java
// public interface CheckManifestHandler {
// 
//     /**
//      * Called when some check manifest error occurred.
//      *
//      * @param reportMessage The information about error.
//      */
//     void onCheckManifestError(@NonNull final String reportMessage);
// }
// 
// Path: opfpush/src/main/java/org/onepf/opfpush/model/AvailabilityResult.java
// public final class AvailabilityResult {
// 
//     private boolean isAvailable;
// 
//     @Nullable
//     private Integer errorCode;
// 
//     public AvailabilityResult(final boolean isAvailable) {
//         this(isAvailable, null);
//     }
// 
//     public AvailabilityResult(@NonNull final Integer errorCode) {
//         this(false, errorCode);
//     }
// 
//     public AvailabilityResult(final boolean isAvailable, @Nullable final Integer errorCode) {
//         this.isAvailable = isAvailable;
//         this.errorCode = errorCode;
//     }
// 
//     /**
//      * Returns {@code true} if a provider is available, false otherwise.
//      *
//      * @return {@code true} if a provider is available, false otherwise.
//      */
//     public boolean isAvailable() {
//         return isAvailable;
//     }
// 
//     /**
//      * Returns a specific provider error code.
//      *
//      * @return The availability error code, or {@code null} if a provider hasn't returned a error code.
//      */
//     @Nullable
//     public Integer getErrorCode() {
//         return errorCode;
//     }
// }
// 
// Path: opfpush/src/main/java/org/onepf/opfpush/notification/NotificationMaker.java
// public interface NotificationMaker {
// 
//     /**
//      * Returns true if a notification must be shown for the bundle. False otherwise.
//      *
//      * @param bundle The bundle received from a push provider.
//      * @return Returns true if a notification should be shown for the bundle. False otherwise.
//      */
//     boolean needShowNotification(@NonNull final Bundle bundle);
// 
//     /**
//      * Shows notification using bundle data.
//      *
//      * @param context The Context instance.
//      * @param bundle  Received data.
//      */
//     void showNotification(@NonNull final Context context, @NonNull final Bundle bundle);
// }
// 
// Path: opfpush/src/main/java/org/onepf/opfpush/pushprovider/PushProvider.java
// public interface PushProvider {
//     /**
//      * Initiates the registration of the provider. Must be async.
//      * <p/>
//      * Intended for the internal use, should never be called directly.
//      * To start the registration call {@link org.onepf.opfpush.OPFPushHelper#register()}.
//      */
//     void register();
// 
//     /**
//      * Initiates the unregistering of the provider. Must be async.
//      * <p/>
//      * Intended for internal use, should never be called directly.
//      * To start registration call {@link org.onepf.opfpush.OPFPushHelper#unregister()}.
//      */
//     void unregister();
// 
//     /**
//      * Checks whether the provider is available.
//      *
//      * @return The instance of {@link org.onepf.opfpush.model.AvailabilityResult}
//      * that contains result of availability check.
//      */
//     @NonNull
//     AvailabilityResult getAvailabilityResult();
// 
//     /**
//      * Checks whether the application was successfully registered on the service.
//      *
//      * @return {@code true} if the application was successfully registered on the service, otherwise false.
//      */
//     boolean isRegistered();
// 
//     /**
//      * Returns the registration ID or null if provider isn't registered.
//      *
//      * @return The registration ID or null if provider isn't registered.
//      */
//     @Nullable
//     String getRegistrationId();
// 
//     /**
//      * Returns the name of the provider. Must be unique for all providers.
//      *
//      * @return The name of the provider.
//      */
//     @NonNull
//     String getName();
// 
//     /**
//      * Returns the package of the application that contains API of the provider.
//      * Usually, this is a store application.
//      *
//      * @return The package of the application that contains API of the provider.
//      */
//     @Nullable
//     String getHostAppPackage();
// 
//     /**
//      * Returns the {@link NotificationMaker} object associated with provider.
//      *
//      * @return The {@link NotificationMaker} instance.
//      */
//     @NonNull
//     NotificationMaker getNotificationMaker();
// 
//     /**
//      * Verify that application manifest contains all needed permissions.
//      *
//      * @param checkManifestHandler If not null an exception isn't thrown.
//      * @throws java.lang.IllegalStateException If not all required permissions and components have been
//      *                                         described in the AndroidManifest.xml file.
//      */
//     void checkManifest(@Nullable CheckManifestHandler checkManifestHandler);
// 
//     /**
//      * Callback method, that called when the application state change, like update to new version,
//      * or system state changed, like update firmware to a newer version.
//      * <p/>
//      * If this method is called, your registration becomes invalid
//      * and you have to reset all saved registration data.
//      */
//     void onRegistrationInvalid();
// 
//     /**
//      * Callback method for notify that the provider became unavailable.
//      * In this method you have to reset all saved registration data.
//      */
//     void onUnavailable();
// }
// 
// Path: opfpush-providers/adm/src/main/java/org/onepf/opfpush/adm/ADMConstants.java
// public static final String PROVIDER_NAME = "Amazon Device Messaging";


import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import org.onepf.opfpush.listener.CheckManifestHandler;
import org.onepf.opfpush.model.AvailabilityResult;
import org.onepf.opfpush.notification.NotificationMaker;
import org.onepf.opfpush.pushprovider.PushProvider;
import org.onepf.opfutils.OPFLog;
import static org.onepf.opfpush.adm.ADMConstants.PROVIDER_NAME;

    @Override
    public boolean isRegistered() {
        OPFLog.logMethod();
        return false;
    }

    @Nullable
    @Override
    public String getRegistrationId() {
        OPFLog.logMethod();
        return null;
    }

    @NonNull
    @Override
    public String getName() {
        OPFLog.logMethod();
        return PROVIDER_NAME;
    }

    @Nullable
    @Override
    public String getHostAppPackage() {
        OPFLog.logMethod();
        return null;
    }

    @NonNull
    @Override
// Path: opfpush/src/main/java/org/onepf/opfpush/listener/CheckManifestHandler.java
// public interface CheckManifestHandler {
// 
//     /**
//      * Called when some check manifest error occurred.
//      *
//      * @param reportMessage The information about error.
//      */
//     void onCheckManifestError(@NonNull final String reportMessage);
// }
// 
// Path: opfpush/src/main/java/org/onepf/opfpush/model/AvailabilityResult.java
// public final class AvailabilityResult {
// 
//     private boolean isAvailable;
// 
//     @Nullable
//     private Integer errorCode;
// 
//     public AvailabilityResult(final boolean isAvailable) {
//         this(isAvailable, null);
//     }
// 
//     public AvailabilityResult(@NonNull final Integer errorCode) {
//         this(false, errorCode);
//     }
// 
//     public AvailabilityResult(final boolean isAvailable, @Nullable final Integer errorCode) {
//         this.isAvailable = isAvailable;
//         this.errorCode = errorCode;
//     }
// 
//     /**
//      * Returns {@code true} if a provider is available, false otherwise.
//      *
//      * @return {@code true} if a provider is available, false otherwise.
//      */
//     public boolean isAvailable() {
//         return isAvailable;
//     }
// 
//     /**
//      * Returns a specific provider error code.
//      *
//      * @return The availability error code, or {@code null} if a provider hasn't returned a error code.
//      */
//     @Nullable
//     public Integer getErrorCode() {
//         return errorCode;
//     }
// }
// 
// Path: opfpush/src/main/java/org/onepf/opfpush/notification/NotificationMaker.java
// public interface NotificationMaker {
// 
//     /**
//      * Returns true if a notification must be shown for the bundle. False otherwise.
//      *
//      * @param bundle The bundle received from a push provider.
//      * @return Returns true if a notification should be shown for the bundle. False otherwise.
//      */
//     boolean needShowNotification(@NonNull final Bundle bundle);
// 
//     /**
//      * Shows notification using bundle data.
//      *
//      * @param context The Context instance.
//      * @param bundle  Received data.
//      */
//     void showNotification(@NonNull final Context context, @NonNull final Bundle bundle);
// }
// 
// Path: opfpush/src/main/java/org/onepf/opfpush/pushprovider/PushProvider.java
// public interface PushProvider {
//     /**
//      * Initiates the registration of the provider. Must be async.
//      * <p/>
//      * Intended for the internal use, should never be called directly.
//      * To start the registration call {@link org.onepf.opfpush.OPFPushHelper#register()}.
//      */
//     void register();
// 
//     /**
//      * Initiates the unregistering of the provider. Must be async.
//      * <p/>
//      * Intended for internal use, should never be called directly.
//      * To start registration call {@link org.onepf.opfpush.OPFPushHelper#unregister()}.
//      */
//     void unregister();
// 
//     /**
//      * Checks whether the provider is available.
//      *
//      * @return The instance of {@link org.onepf.opfpush.model.AvailabilityResult}
//      * that contains result of availability check.
//      */
//     @NonNull
//     AvailabilityResult getAvailabilityResult();
// 
//     /**
//      * Checks whether the application was successfully registered on the service.
//      *
//      * @return {@code true} if the application was successfully registered on the service, otherwise false.
//      */
//     boolean isRegistered();
// 
//     /**
//      * Returns the registration ID or null if provider isn't registered.
//      *
//      * @return The registration ID or null if provider isn't registered.
//      */
//     @Nullable
//     String getRegistrationId();
// 
//     /**
//      * Returns the name of the provider. Must be unique for all providers.
//      *
//      * @return The name of the provider.
//      */
//     @NonNull
//     String getName();
// 
//     /**
//      * Returns the package of the application that contains API of the provider.
//      * Usually, this is a store application.
//      *
//      * @return The package of the application that contains API of the provider.
//      */
//     @Nullable
//     String getHostAppPackage();
// 
//     /**
//      * Returns the {@link NotificationMaker} object associated with provider.
//      *
//      * @return The {@link NotificationMaker} instance.
//      */
//     @NonNull
//     NotificationMaker getNotificationMaker();
// 
//     /**
//      * Verify that application manifest contains all needed permissions.
//      *
//      * @param checkManifestHandler If not null an exception isn't thrown.
//      * @throws java.lang.IllegalStateException If not all required permissions and components have been
//      *                                         described in the AndroidManifest.xml file.
//      */
//     void checkManifest(@Nullable CheckManifestHandler checkManifestHandler);
// 
//     /**
//      * Callback method, that called when the application state change, like update to new version,
//      * or system state changed, like update firmware to a newer version.
//      * <p/>
//      * If this method is called, your registration becomes invalid
//      * and you have to reset all saved registration data.
//      */
//     void onRegistrationInvalid();
// 
//     /**
//      * Callback method for notify that the provider became unavailable.
//      * In this method you have to reset all saved registration data.
//      */
//     void onUnavailable();
// }
// 
// Path: opfpush-providers/adm/src/main/java/org/onepf/opfpush/adm/ADMConstants.java
// public static final String PROVIDER_NAME = "Amazon Device Messaging";


// Path: opfpush-providers/adm/src/main/java/org/onepf/opfpush/adm/ADMProviderStub.java
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import org.onepf.opfpush.listener.CheckManifestHandler;
import org.onepf.opfpush.model.AvailabilityResult;
import org.onepf.opfpush.notification.NotificationMaker;
import org.onepf.opfpush.pushprovider.PushProvider;
import org.onepf.opfutils.OPFLog;
import static org.onepf.opfpush.adm.ADMConstants.PROVIDER_NAME;


    @Override
    public boolean isRegistered() {
        OPFLog.logMethod();
        return false;
    }

    @Nullable
    @Override
    public String getRegistrationId() {
        OPFLog.logMethod();
        return null;
    }

    @NonNull
    @Override
    public String getName() {
        OPFLog.logMethod();
        return PROVIDER_NAME;
    }

    @Nullable
    @Override
    public String getHostAppPackage() {
        OPFLog.logMethod();
        return null;
    }

    @NonNull
    @Override
    public NotificationMaker getNotificationMaker() {