#pragma once #include #include #include #include #include #include namespace xrpl { bool isReserveSponsored(STTx const& tx); bool isSponsorReserveCoSigning(STTx const& tx); std::optional getTxReserveSponsorAccountID(STTx const& tx); inline std::shared_ptr getTxReserveSponsor(ApplyView& view, STTx const& tx) { auto const sponsorID = getTxReserveSponsorAccountID(tx); if (sponsorID) return view.peek(keylet::account(*sponsorID)); return {}; } inline std::shared_ptr getTxReserveSponsor(ReadView const& view, STTx const& tx) { auto const sponsorID = getTxReserveSponsorAccountID(tx); if (sponsorID) return view.read(keylet::account(*sponsorID)); return {}; } std::optional getLedgerEntryReserveSponsorAccountID( std::shared_ptr const& sle, SF_ACCOUNT const& field = sfSponsor); inline std::shared_ptr getLedgerEntryReserveSponsor( ApplyView& view, std::shared_ptr const& sle, SF_ACCOUNT const& field = sfSponsor) { auto const sponsorID = getLedgerEntryReserveSponsorAccountID(sle, field); if (sponsorID) return view.peek(keylet::account(*sponsorID)); return {}; } inline std::shared_ptr getLedgerEntryReserveSponsor( ReadView const& view, std::shared_ptr const& sle, SF_ACCOUNT const& field = sfSponsor) { auto const sponsorID = getLedgerEntryReserveSponsorAccountID(sle, field); if (sponsorID) return view.read(keylet::account(*sponsorID)); return {}; } void addSponsorToLedgerEntry( std::shared_ptr const& sle, std::shared_ptr const& sponsorSle, SF_ACCOUNT const& field = sfSponsor); void removeSponsorFromLedgerEntry(std::shared_ptr const& sle, SF_ACCOUNT const& field = sfSponsor); } // namespace xrpl