class PurchaseManager {

    @NonNull
    public Observable<Set<InAppPurchase>> getAllAvailablePurchaseSkus() {
        return getAllAvailablePurchases()
                .map(availablePurchases ->{
                        final Set<InAppPurchase> inAppPurchases = new HashSet<>();
                        for (final AvailablePurchase availablePurchase : availablePurchases) {
                            inAppPurchases.add(availablePurchase.getInAppPurchase());
                        }
                        return inAppPurchases;
                });
    }

    @Inject public  PurchaseManager(@NonNull Context context,
                           @NonNull RemoteSubscriptionManager remoteSubscriptionManager,
                           @NonNull PurchaseWallet purchaseWallet,
                           @NonNull Analytics analytics);
    @VisibleForTesting  PurchaseManager(@NonNull Context context,
                    @NonNull RemoteSubscriptionManager remoteSubscriptionManager,
                    @NonNull PurchaseWallet purchaseWallet,
                    @NonNull Analytics analytics,
                    @NonNull Scheduler subscribeOnScheduler,
                    @NonNull Scheduler observeOnScheduler);

}