// // Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023 // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // #pragma once #include "td/telegram/net/DcId.h" #include "td/telegram/net/PublicRsaKeyShared.h" #include "td/mtproto/AuthData.h" #include "td/mtproto/AuthKey.h" #include "td/utils/common.h" #include "td/utils/ScopeGuard.h" #include #include namespace td { class AuthDataShared { public: virtual ~AuthDataShared() = default; class Listener { public: Listener() = default; Listener(const Listener &) = delete; Listener &operator=(const Listener &) = delete; virtual ~Listener() = default; virtual bool notify() = 0; }; virtual DcId dc_id() const = 0; virtual const std::shared_ptr &public_rsa_key() = 0; virtual mtproto::AuthKey get_auth_key() = 0; virtual void set_auth_key(const mtproto::AuthKey &auth_key) = 0; virtual void update_server_time_difference(double diff, bool force) = 0; virtual double get_server_time_difference() = 0; virtual void add_auth_key_listener(unique_ptr listener) = 0; virtual void set_future_salts(const std::vector &future_salts) = 0; virtual std::vector get_future_salts() = 0; static std::shared_ptr create(DcId dc_id, std::shared_ptr public_rsa_key, std::shared_ptr guard); }; } // namespace td