#ifndef _RIVE_NESTED_ARTBOARD_HPP_
#define _RIVE_NESTED_ARTBOARD_HPP_
#include "rive/generated/nested_artboard_base.hpp"
#include <stdio.h>
namespace rive
{
    class NestedAnimation;
    class NestedArtboard : public NestedArtboardBase
    {

    private:
        Artboard* m_NestedInstance = nullptr;
        std::vector<NestedAnimation*> m_NestedAnimations;

    public:
        ~NestedArtboard();
        StatusCode onAddedClean(CoreContext* context) override;
        void draw(Renderer* renderer) override;
        void addNestedAnimation(NestedAnimation* nestedAnimation);

        void nest(Artboard* artboard);

        StatusCode import(ImportStack& importStack) override;
        Core* clone() const override;
        bool advance(float elapsedSeconds);
        void update(ComponentDirt value) override;
    };
} // namespace rive

#endif