#pragma once #include #include #include namespace xrpl { struct MPTCreateArgs { std::optional priorBalance; AccountID const& account; std::uint32_t sequence = 0; std::uint32_t flags = 0; std::optional maxAmount = std::nullopt; // NOLINT(readability-redundant-member-init) std::optional assetScale = std::nullopt; // NOLINT(readability-redundant-member-init) std::optional transferFee = std::nullopt; // NOLINT(readability-redundant-member-init) std::optional const& metadata{}; std::optional domainId = std::nullopt; // NOLINT(readability-redundant-member-init) std::optional mutableFlags = std::nullopt; // NOLINT(readability-redundant-member-init) }; class MPTokenIssuanceCreate : public Transactor { public: static constexpr ConsequencesFactoryType ConsequencesFactory{Normal}; explicit MPTokenIssuanceCreate(ApplyContext& ctx) : Transactor(ctx) { } static bool checkExtraFeatures(PreflightContext const& ctx); static std::uint32_t getFlagsMask(PreflightContext const& ctx); static NotTEC preflight(PreflightContext const& ctx); TER doApply() override; void visitInvariantEntry( bool isDelete, std::shared_ptr const& before, std::shared_ptr const& after) override; [[nodiscard]] bool finalizeInvariants( STTx const& tx, TER result, XRPAmount fee, ReadView const& view, beast::Journal const& j) override; static Expected create(ApplyView& view, beast::Journal journal, MPTCreateArgs const& args); }; } // namespace xrpl