#ifndef _RIVE_KEY_FRAME_DOUBLE_HPP_
#define _RIVE_KEY_FRAME_DOUBLE_HPP_
#include "rive/generated/animation/keyframe_double_base.hpp"
namespace rive {
    class KeyFrameDouble : public KeyFrameDoubleBase {
    public:
        void apply(Core* object, int propertyKey, float mix) override;
        void applyInterpolation(Core* object,
                                int propertyKey,
                                float seconds,
                                const KeyFrame* nextFrame,
                                float mix) override;
    };
} // namespace rive

#endif