#ifndef CHROMEOS_ASH_SERVICES_IME_DECODER_SYSTEM_ENGINE_H_
#define CHROMEOS_ASH_SERVICES_IME_DECODER_SYSTEM_ENGINE_H_
#include <optional>
#include "base/scoped_native_library.h"
#include "chromeos/ash/services/ime/ime_shared_library_wrapper.h"
#include "chromeos/ash/services/ime/public/cpp/shared_lib/interfaces.h"
#include "chromeos/ash/services/ime/public/mojom/connection_factory.mojom.h"
#include "chromeos/ash/services/ime/public/mojom/input_engine.mojom.h"
#include "chromeos/ash/services/ime/public/mojom/input_method.mojom.h"
#include "chromeos/ash/services/ime/public/mojom/input_method_host.mojom.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
namespace ash {
namespace ime {
class SystemEngine {
public:
explicit SystemEngine(
ImeCrosPlatform* platform,
std::optional<ImeSharedLibraryWrapper::EntryPoints> entry_points);
SystemEngine(const SystemEngine&) = delete;
SystemEngine& operator=(const SystemEngine&) = delete;
~SystemEngine();
bool BindConnectionFactory(
mojo::PendingReceiver<mojom::ConnectionFactory> receiver);
bool IsConnected();
private:
std::optional<ImeSharedLibraryWrapper::EntryPoints> decoder_entry_points_;
};
}
}
#endif