Skip to content

src/runtime/block_builder.hpp

Namespaces

Name
sgns
sgns::runtime

Classes

Name
class sgns::runtime::BlockBuilder

Source code

#ifndef SUPERGENIUS_RUNTIME_BLOCK_BUILDER_HPP
#define SUPERGENIUS_RUNTIME_BLOCK_BUILDER_HPP

#include <list>

#include "outcome/outcome.hpp"
#include "primitives/apply_result.hpp"
#include "primitives/block.hpp"
#include "primitives/block_header.hpp"
#include "primitives/check_inherents_result.hpp"
#include "primitives/extrinsic.hpp"
#include "primitives/inherent_data.hpp"

namespace sgns::runtime {
  class BlockBuilder {
   public:
    virtual ~BlockBuilder() = default;

    virtual outcome::result<primitives::ApplyResult> apply_extrinsic(
        const primitives::Extrinsic &extrinsic) = 0;

    virtual outcome::result<primitives::BlockHeader> finalise_block() = 0;

    virtual outcome::result<std::vector<primitives::Extrinsic>>
    inherent_extrinsics(const primitives::InherentData &data) = 0;

    virtual outcome::result<primitives::CheckInherentsResult> check_inherents(
        const primitives::Block &block,
        const primitives::InherentData &data) = 0;

    virtual outcome::result<base::Hash256> random_seed() = 0;
  };
}  // namespace sgns::runtime

#endif  // SUPERGENIUS_RUNTIME_BLOCK_BUILDER_HPP

Updated on 2026-03-04 at 13:10:45 -0800