#pragma once

#include <AK/Utf16String.h>
#include <LibJS/Forward.h>
#include <LibJS/Runtime/Value.h>
#include <LibWeb/Bindings/PredefinedColorSpace.h>

namespace Web::Bindings {

enum class CanvasColorType : u8 {
    Unorm8,
    Float16,
};

JS::ThrowCompletionOr<CanvasColorType> convert_to_idl_value_for_canvas_color_type(JS::VM&, JS::Value);

Utf16String idl_enum_to_string(CanvasColorType);

struct CanvasRenderingContext2DSettings {
    bool alpha { true };
    PredefinedColorSpace color_space { PredefinedColorSpace::Srgb };
    CanvasColorType color_type { CanvasColorType::Unorm8 };
    bool desynchronized { false };
    bool will_read_frequently { false };
};

JS::ThrowCompletionOr<CanvasRenderingContext2DSettings> convert_to_idl_value_for_canvas_rendering_context2d_settings(JS::VM&, JS::Value);

} // namespace Web::Bindings
