#pragma once #include #include #include namespace xrpl { struct MPTCreateArgs { std::optional priorBalance; AccountID const& account; std::uint32_t sequence; std::uint32_t flags = 0; std::optional maxAmount{}; std::optional assetScale{}; std::optional transferFee{}; std::optional const& metadata{}; std::optional domainId{}; std::optional mutableFlags{}; }; 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; static Expected create(ApplyView& view, STTx const& tx, beast::Journal journal, MPTCreateArgs const& args); }; } // namespace xrpl