#pragma once

#include <memory>

class IApplicationContext
{
public:
    IApplicationContext() = default;
    virtual ~IApplicationContext() = default;
};

class AbstractApp
{
public:
    AbstractApp() = default;

    virtual ~AbstractApp() = default;
    IApplicationContext* GetApplicationContext() const
    {
        return mApplicationContext.get();
    }
protected:
    std::unique_ptr<IApplicationContext> mApplicationContext{ nullptr };
};

using AbstractAppPtr = std::unique_ptr<AbstractApp>;
