#pragma once
#include "configobject.hpp"
#include <qhashfunctions.h>
#include <qobject.h>
#include <qqmlintegration.h>

namespace ZShell::config {

class LlmAppearance : public ConfigObject {
	Q_OBJECT
	QML_ANONYMOUS

	CFG_PROPERTY(QString, scheme, QStringLiteral("tokyoNight"))

	public:
	explicit LlmAppearance(QObject* parent = nullptr) : ConfigObject(parent) {}
};

class Llm : public ConfigObject {
	Q_OBJECT
	QML_ANONYMOUS

	CFG_PROPERTY(QString, endpoint, "http://localhost:8080")
	CFG_PROPERTY(QString, model, "")
	CFG_PROPERTY(double, temperature, 0.7)
	CFG_PROPERTY(bool, tools, true)
	CFG_PROPERTY(bool, enabled, true)
	CONFIG_SUBOBJECT(LlmAppearance, appearance)

	public:
	explicit Llm(QObject* parent = nullptr)
		: ConfigObject(parent), m_appearance(new LlmAppearance(this)) {}
};

} // namespace ZShell::config
