#pragma once

#include "CoreMinimal.h"
#include "SubPresenter.h"
#include "ShopWalletUpdate.h"
#include "StoreSubPresenter.generated.h"

class UStoreMenuFlowEventsGenerator;
class UShopManager;

UCLASS(Blueprintable, Abstract)
class UStoreSubPresenter : public USubPresenter
{
	GENERATED_BODY()

protected:
	UPROPERTY(BlueprintReadWrite, Transient)
	UStoreMenuFlowEventsGenerator* _storeMenuFlowEventGenerator;

private:
	UPROPERTY(BlueprintReadWrite, Transient, meta=(AllowPrivateAccess=true))
	UShopManager* _shopManager;

protected:
	UFUNCTION(BlueprintCallable)
	void SetItemSeen(const FString& itemId);

	UFUNCTION(BlueprintCallable)
	void OnWalletUpdated(const TArray<FShopWalletUpdate>& walletUpdates);

	UFUNCTION(BlueprintCallable)
	void OnSubTabSelected(int32 subTabId);

public:
	UStoreSubPresenter();
};

FORCEINLINE uint32 GetTypeHash(const UStoreSubPresenter) { return 0; }
