#ifndef _RIVE_TRANSITION_CONDITION_HPP_
#define _RIVE_TRANSITION_CONDITION_HPP_
#include "rive/generated/animation/transition_condition_base.hpp"

namespace rive {
    class StateMachineInput;
    class SMIInput;

    class TransitionCondition : public TransitionConditionBase {
    public:
        StatusCode onAddedDirty(CoreContext* context) override;
        StatusCode onAddedClean(CoreContext* context) override;

        StatusCode import(ImportStack& importStack) override;

        virtual bool evaluate(const SMIInput* inputInstance) const {
            return true;
        }

    protected:
        virtual bool validateInputType(const StateMachineInput* input) const {
            return true;
        }
    };
} // namespace rive

#endif