#pragma once

#include <stddef.h>

#include "taikohook/taiko-dll.h"
#include "taikohook/network.h"

#include "platform/config.h"
#include "gfxhook/config.h"
#include "amcus/config.h"
#include "board/config.h"

struct taiko_hook_config {
    struct platform_config platform;
    struct taiko_dll_config dll;
    struct gfx_config gfx;
    struct amcus_config amcus;
    struct qr_config qr;
    struct taiko_network_config network;
    struct bpreader_config reader;
    struct usio_config usio;
};

void taiko_dll_config_load(
    struct taiko_dll_config *cfg,
    const wchar_t *filename);

void qr_config_load(
    struct qr_config *cfg,
    const wchar_t *filename);

void network_config_load(
    struct taiko_network_config *cfg,
    const wchar_t *filename);

void taiko_hook_config_load(
    struct taiko_hook_config *cfg,
    const wchar_t *filename);