#ifndef TGCALLS_INSTANCE_IMPL_REFERENCE_H #define TGCALLS_INSTANCE_IMPL_REFERENCE_H #include "Instance.h" #include "ThreadLocalObject.h" namespace tgcalls { class LogSinkImpl; class InstanceImplReferenceInternal; class InstanceImplReference : public Instance { public: explicit InstanceImplReference(Descriptor &&descriptor); ~InstanceImplReference(); void receiveSignalingData(const std::vector &data) override; void setNetworkType(NetworkType networkType) override; void setMuteMicrophone(bool muteMicrophone) override; void setVideoCapture(std::shared_ptr videoCapture) override; void setRequestedVideoAspect(float aspect) 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; static int GetConnectionMaxLayer(); static std::vector GetVersions(); 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 logSink_; std::unique_ptr> internal_; }; } // namespace tgcalls #endif