#pragma once #include #include #include #include #include #include #include #include namespace xrpl { /** * Price Oracle is a system that acts as a bridge between * a blockchain network and the external world, providing off-chain price data * to decentralized applications (dApps) on the blockchain. This implementation * conforms to the requirements specified in the XLS-47d. * * The OracleSet transactor implements creating or updating Oracle objects. */ class OracleSet : public Transactor { public: static constexpr auto kConsequencesFactory = ConsequencesFactoryType::Normal; explicit OracleSet(ApplyContext& ctx) : Transactor(ctx) { } static NotTEC preflight(PreflightContext const& ctx); static TER preclaim(PreclaimContext const& ctx); TER doApply() override; void visitInvariantEntry(bool isDelete, SLE::const_ref before, SLE::const_ref after) override; [[nodiscard]] bool finalizeInvariants( STTx const& tx, TER result, XRPAmount fee, ReadView const& view, beast::Journal const& j) override; }; } // namespace xrpl