// Generated by mpgen from /build/bitcoin/src/bitcoin-30.2/src/ipc/capnp/mining.capnp

#ifndef CAPNP_MINING_CAPNP_PROXY_TYPES_H
#define CAPNP_MINING_CAPNP_PROXY_TYPES_H

// IWYU pragma: no_include "mp/proxy.h"
#include <mp/proxy.h> // IWYU pragma: keep
#include <src/ipc/capnp/mining.capnp.proxy.h> // IWYU pragma: keep
#include "ipc/capnp/mining-types.h" // IWYU pragma: export
namespace mp {
template<>
struct ProxyType<node::BlockCreateOptions>
{
public:
    using Struct = ipc::capnp::messages::BlockCreateOptions;
    static decltype(auto) get(std::integral_constant<size_t, 0>) { return &node::BlockCreateOptions::use_mempool; }
    static decltype(auto) get(std::integral_constant<size_t, 1>) { return &node::BlockCreateOptions::block_reserved_weight; }
    static decltype(auto) get(std::integral_constant<size_t, 2>) { return &node::BlockCreateOptions::coinbase_output_max_additional_sigops; }
    static constexpr size_t fields = 3;
};
template<>
struct ProxyType<node::BlockWaitOptions>
{
public:
    using Struct = ipc::capnp::messages::BlockWaitOptions;
    static decltype(auto) get(std::integral_constant<size_t, 0>) { return &node::BlockWaitOptions::timeout; }
    static decltype(auto) get(std::integral_constant<size_t, 1>) { return &node::BlockWaitOptions::fee_threshold; }
    static constexpr size_t fields = 2;
};
template<>
struct ProxyType<node::BlockCheckOptions>
{
public:
    using Struct = ipc::capnp::messages::BlockCheckOptions;
    static decltype(auto) get(std::integral_constant<size_t, 0>) { return &node::BlockCheckOptions::check_merkle_root; }
    static decltype(auto) get(std::integral_constant<size_t, 1>) { return &node::BlockCheckOptions::check_pow; }
    static constexpr size_t fields = 2;
};
} // namespace mp
#endif
