#ifndef TGCALLS_INSTANCE_IMPL_H #define TGCALLS_INSTANCE_IMPL_H #include "Instance.h" namespace tgcalls { class LogSinkImpl; class Manager; template class ThreadLocalObject; class InstanceImpl final : public Instance { public: explicit InstanceImpl(Descriptor &&descriptor); ~InstanceImpl() override; static int GetConnectionMaxLayer(); static std::vector GetVersions(); void receiveSignalingData(const std::vector &data) override; void setVideoCapture(std::shared_ptr videoCapture) override; void setRequestedVideoAspect(float aspect) override; void setNetworkType(NetworkType networkType) override; void setMuteMicrophone(bool muteMicrophone) override; bool supportsVideo() override { return true; } void setIncomingVideoOutput(std::shared_ptr> sink) override; void setAudioOutputGainControlEnabled(bool enabled) override; void setEchoCancellationStrength(int strength) override; void setAudioInputDevice(std::string id) override; void setAudioOutputDevice(std::string id) override; void setInputVolume(float level) override; void setOutputVolume(float level) override; void setAudioOutputDuckingEnabled(bool enabled) override; void setIsLowBatteryLevel(bool isLowBatteryLevel) override; std::string getLastError() override; std::string getDebugInfo() override; int64_t getPreferredRelayId() override; TrafficStats getTrafficStats() override; PersistentState getPersistentState() override; void stop(std::function completion) override; private: std::unique_ptr> _manager; std::unique_ptr _logSink; }; } // namespace tgcalls #endif