#ifndef _RIVE_NESTED_STATE_MACHINE_HPP_
#define _RIVE_NESTED_STATE_MACHINE_HPP_
#include "rive/generated/animation/nested_state_machine_base.hpp"
#include "rive/math/vec2d.hpp"
#include <memory>

namespace rive {
class ArtboardInstance;
class StateMachineInstance;
class NestedStateMachine : public NestedStateMachineBase {
private:
    std::unique_ptr<StateMachineInstance> m_StateMachineInstance;

public:
    NestedStateMachine();
    ~NestedStateMachine() override;
    void advance(float elapsedSeconds) override;
    void initializeAnimation(ArtboardInstance*) override;
    StateMachineInstance* stateMachineInstance();

    void pointerMove(Vec2D position);
    void pointerDown(Vec2D position);
    void pointerUp(Vec2D position);
};
} // namespace rive

#endif