#ifndef _RIVE_ARTBOARD_HOST_HPP_
#define _RIVE_ARTBOARD_HOST_HPP_
#include "rive/refcnt.hpp"
#include "rive/file.hpp"
#include "rive/data_bind_path_referencer.hpp"
#include "rive/math/mat2d.hpp"
#include <stdio.h>
namespace rive
{
class ArtboardInstance;
class DataBind;
class DataContext;
class ViewModelInstance;

class ArtboardHost : public DataBindPathReferencer
{
public:
    virtual size_t artboardCount() = 0;
    virtual ArtboardInstance* artboardInstance(int index = 0) = 0;
    virtual void internalDataContext(rcp<DataContext> dataContext) = 0;
    virtual void bindViewModelInstance(rcp<ViewModelInstance> viewModelInstance,
                                       rcp<DataContext> parent) = 0;
    virtual void clearDataContext() = 0;
    virtual void unbind() = 0;
    virtual void updateDataBinds() = 0;
    virtual void markHostingLayoutDirty(ArtboardInstance* artboardInstance) {}
    // The artboard that contains this ArtboardHost
    virtual Artboard* parentArtboard() = 0;
    virtual bool hitTestHost(const Vec2D& position,
                             bool skipOnUnclipped,
                             ArtboardInstance* artboard) = 0;
    virtual Vec2D hostTransformPoint(const Vec2D&, ArtboardInstance*) = 0;
    /// Returns the transform matrix from nested artboard space to parent
    /// artboard space. Unlike hostTransformPoint, this does NOT include
    /// rootTransform.
    virtual Mat2D worldTransformForArtboard(ArtboardInstance*) = 0;
    virtual void markHostTransformDirty() = 0;
    virtual bool isLayoutProvider() { return false; }
    virtual void file(File* value) = 0;
    virtual File* file() const = 0;

    /// Return this host as a Component, if applicable (e.g., NestedArtboard).
    /// Returns nullptr if the host is not a Component.
    virtual class Component* hostComponent() { return nullptr; }
    virtual void relinkDataContext(rcp<ViewModelInstance> viewModelInstance) {}
    virtual int type() const = 0;
};
} // namespace rive

#endif