+#include <vector>
+
+namespace STG
+{
+
+class Admin;
+struct Tariff;
+struct TariffData;
+
+class Tariffs
+{
+ public:
+ virtual ~Tariffs() = default;
+
+ virtual int ReadTariffs() = 0;
+ virtual const Tariff* FindByName(const std::string& name) const = 0;
+ virtual const Tariff* GetNoTariff() const = 0;
+ virtual int Del(const std::string& name, const Admin* admin) = 0;
+ virtual int Add(const std::string& name, const Admin* admin) = 0;
+ virtual int Chg(const TariffData& td, const Admin* admin) = 0;
+
+ template <typename F>
+ auto onAdd(F&& f) { return m_onAddCallbacks.add(std::forward<F>(f)); }
+ template <typename F>
+ auto onDel(F&& f) { return m_onDelCallbacks.add(std::forward<F>(f)); }