#ifndef SRC_APP_APPLICATION_H_
#define SRC_APP_APPLICATION_H_

#include <set>
#include <string>

namespace App {

class Document;

class ProbeSignal
{
public:
    template<typename Callback>
    void connect(Callback&&)
    {}
};

class Application
{
public:
    Document* getActiveDocument() const
    {
        return nullptr;
    }

    ProbeSignal signalStartSaveDocument;
    ProbeSignal signalFinishSaveDocument;
    ProbeSignal signalStartRestoreDocument;
    ProbeSignal signalFinishRestoreDocument;
};

inline Application& GetApplication()
{
    static Application application;
    return application;
}

}  // namespace App

#endif
