/*
 * Copyright (C) 2012-2026 MotionSystems
 *
 * This file is part of ForceSeatMI SDK.
 *
 * www.motionsystems.eu
 *
 */

#pragma once

#include "IForceSeatMI.h"
#include "ForceSeatMI_Functions.h"

class IForceSeatMI_API;

class ForceSeatMI_Impl : public IForceSeatMI
{
	explicit ForceSeatMI_Impl(const ForceSeatMI_Impl& other) = delete;
	explicit ForceSeatMI_Impl(const ForceSeatMI_Impl&& other) = delete;

public:
	ForceSeatMI_Impl();
	virtual ~ForceSeatMI_Impl();

public:
	virtual IForceSeatMI_API* CreateAPI(const char* profile = nullptr, const char* appID = nullptr) override;

public:
	virtual void StartupModule() override;
	virtual void ShutdownModule() override;

private:
	FSMI_Handle m_handle;
};
