diff --git a/xrpl-common-stdlib/src/objects/generated/loan_broker.rs b/xrpl-common-stdlib/src/objects/generated/loan_broker.rs index b7f462f8..bad6bd3c 100644 --- a/xrpl-common-stdlib/src/objects/generated/loan_broker.rs +++ b/xrpl-common-stdlib/src/objects/generated/loan_broker.rs @@ -104,6 +104,11 @@ pub trait LoanBrokerFields: LedgerObjectCommonFields { fn cover_rate_liquidation(&self) -> Result> { ledger_object::get_field_optional(self.get_slot_num(), sfield::CoverRateLiquidation) } + + /// The DomainID field (Optional). + fn domain_id(&self) -> Result> { + ledger_object::get_field_optional(self.get_slot_num(), sfield::DomainID) + } } /// Trait providing access to fields specific to the current LoanBroker object. @@ -200,6 +205,11 @@ pub trait CurrentLoanBrokerFields: CurrentLedgerObjectCommonFields { fn cover_rate_liquidation(&self) -> Result> { current_ledger_object::get_field_optional(sfield::CoverRateLiquidation) } + + /// The DomainID field (Optional). + fn domain_id(&self) -> Result> { + current_ledger_object::get_field_optional(sfield::DomainID) + } } #[derive(Debug, Clone, Copy, Eq, PartialEq)] @@ -254,6 +264,7 @@ mod tests { assert!(obj.cover_available().is_ok()); assert!(obj.cover_rate_minimum().is_ok()); assert!(obj.cover_rate_liquidation().is_ok()); + assert!(obj.domain_id().is_ok()); } #[test] @@ -268,5 +279,6 @@ mod tests { assert!(obj.owner_count().unwrap().is_none()); assert!(obj.cover_rate_minimum().unwrap().is_none()); assert!(obj.cover_rate_liquidation().unwrap().is_none()); + assert!(obj.domain_id().unwrap().is_none()); } } diff --git a/xrpl-common-stdlib/src/objects/generated/mod.rs b/xrpl-common-stdlib/src/objects/generated/mod.rs index d518effd..ee25798c 100644 --- a/xrpl-common-stdlib/src/objects/generated/mod.rs +++ b/xrpl-common-stdlib/src/objects/generated/mod.rs @@ -32,6 +32,7 @@ mod ripple_state; mod signer_list; mod sponsorship; mod ticket; +mod transaction_proposal; mod vault; mod xchain_owned_claim_id; mod xchain_owned_create_account_claim_id; @@ -66,6 +67,9 @@ pub use ripple_state::{CurrentRippleStateFields, RippleState, RippleStateFields} pub use signer_list::{CurrentSignerListFields, SignerList, SignerListFields}; pub use sponsorship::{CurrentSponsorshipFields, Sponsorship, SponsorshipFields}; pub use ticket::{CurrentTicketFields, Ticket, TicketFields}; +pub use transaction_proposal::{ + CurrentTransactionProposalFields, TransactionProposal, TransactionProposalFields, +}; pub use vault::{CurrentVaultFields, Vault, VaultFields}; pub use xchain_owned_claim_id::{ CurrentXChainOwnedClaimIDFields, XChainOwnedClaimID, XChainOwnedClaimIDFields, diff --git a/xrpl-common-stdlib/src/objects/generated/mptoken.rs b/xrpl-common-stdlib/src/objects/generated/mptoken.rs index f13d25ae..a5e435e4 100644 --- a/xrpl-common-stdlib/src/objects/generated/mptoken.rs +++ b/xrpl-common-stdlib/src/objects/generated/mptoken.rs @@ -97,6 +97,11 @@ pub trait MPTokenFields: LedgerObjectCommonFields { fn holder_encryption_key(&self) -> Result> { ledger_object::get_field_optional(self.get_slot_num(), sfield::HolderEncryptionKey) } + + /// The RecoveryKey field (Optional). + fn recovery_key(&self) -> Result> { + ledger_object::get_field_optional(self.get_slot_num(), sfield::RecoveryKey) + } } /// Trait providing access to fields specific to the current MPToken object. @@ -187,6 +192,11 @@ pub trait CurrentMPTokenFields: CurrentLedgerObjectCommonFields { fn holder_encryption_key(&self) -> Result> { current_ledger_object::get_field_optional(sfield::HolderEncryptionKey) } + + /// The RecoveryKey field (Optional). + fn recovery_key(&self) -> Result> { + current_ledger_object::get_field_optional(sfield::RecoveryKey) + } } #[derive(Debug, Clone, Copy, Eq, PartialEq)] @@ -239,6 +249,7 @@ mod tests { assert!(obj.issuer_key_mirror_epoch().is_ok()); assert!(obj.auditor_key_mirror_epoch().is_ok()); assert!(obj.holder_encryption_key().is_ok()); + assert!(obj.recovery_key().is_ok()); } #[test] diff --git a/xrpl-common-stdlib/src/objects/generated/transaction_proposal.rs b/xrpl-common-stdlib/src/objects/generated/transaction_proposal.rs new file mode 100644 index 00000000..528e7bcf --- /dev/null +++ b/xrpl-common-stdlib/src/objects/generated/transaction_proposal.rs @@ -0,0 +1,108 @@ +// GENERATED -- do not hand-edit. Run scripts/generate-ledger-objects.sh to regenerate. + +use crate::host::Result; +use crate::objects::traits::CurrentLedgerObjectCommonFields; +use crate::objects::traits::LedgerObjectCommonFields; +use crate::objects::{current_ledger_object, ledger_object}; +use crate::sfield; +use crate::types::account_id::AccountID; +use crate::types::uint::Hash256; + +/// Trait providing access to fields specific to TransactionProposal objects in any ledger. +pub trait TransactionProposalFields: LedgerObjectCommonFields { + /// The PreviousTxnID field (Required). + fn previous_txn_id(&self) -> Result { + ledger_object::get_field(self.get_slot_num(), sfield::PreviousTxnID) + } + + /// The PreviousTxnLgrSeq field (Required). + fn previous_txn_lgr_seq(&self) -> Result { + ledger_object::get_field(self.get_slot_num(), sfield::PreviousTxnLgrSeq) + } + + /// The Owner field (Required). + fn owner(&self) -> Result { + ledger_object::get_field(self.get_slot_num(), sfield::Owner) + } + + /// The Expiration field (Required). + fn expiration(&self) -> Result { + ledger_object::get_field(self.get_slot_num(), sfield::Expiration) + } + + /// The OwnerNode field (Required). + fn owner_node(&self) -> Result { + ledger_object::get_field(self.get_slot_num(), sfield::OwnerNode) + } +} + +/// Trait providing access to fields specific to the current TransactionProposal object. +pub trait CurrentTransactionProposalFields: CurrentLedgerObjectCommonFields { + /// The PreviousTxnID field (Required). + fn previous_txn_id(&self) -> Result { + current_ledger_object::get_field(sfield::PreviousTxnID) + } + + /// The PreviousTxnLgrSeq field (Required). + fn previous_txn_lgr_seq(&self) -> Result { + current_ledger_object::get_field(sfield::PreviousTxnLgrSeq) + } + + /// The Owner field (Required). + fn owner(&self) -> Result { + current_ledger_object::get_field(sfield::Owner) + } + + /// The Expiration field (Required). + fn expiration(&self) -> Result { + current_ledger_object::get_field(sfield::Expiration) + } + + /// The OwnerNode field (Required). + fn owner_node(&self) -> Result { + current_ledger_object::get_field(sfield::OwnerNode) + } +} + +#[derive(Debug, Clone, Copy, Eq, PartialEq)] +pub struct TransactionProposal { + pub(crate) slot_num: i32, +} + +impl TransactionProposal { + /// Binds this handle to a host-managed slot holding a TransactionProposal ledger object. + pub fn new(slot_num: i32) -> Self { + Self { slot_num } + } +} + +impl LedgerObjectCommonFields for TransactionProposal { + fn get_slot_num(&self) -> i32 { + self.slot_num + } +} + +impl TransactionProposalFields for TransactionProposal {} + +#[cfg(test)] +mod tests { + use super::*; + use crate::host::host_bindings_trait::MockHostBindings; + use crate::host::setup_mock; + use crate::objects::test_utils::*; + + #[test] + fn read_all_fields() { + let mut mock = MockHostBindings::new(); + mock_all_fields_present(&mut mock); + let _guard = setup_mock(mock); + + let obj = TransactionProposal::new(0); + + assert!(obj.previous_txn_id().is_ok()); + assert!(obj.previous_txn_lgr_seq().is_ok()); + assert!(obj.owner().is_ok()); + assert!(obj.expiration().is_ok()); + assert!(obj.owner_node().is_ok()); + } +} diff --git a/xrpl-common-stdlib/src/objects/generated/vault.rs b/xrpl-common-stdlib/src/objects/generated/vault.rs index 849d1ca5..017c7066 100644 --- a/xrpl-common-stdlib/src/objects/generated/vault.rs +++ b/xrpl-common-stdlib/src/objects/generated/vault.rs @@ -81,7 +81,9 @@ pub trait VaultFields: LedgerObjectCommonFields { ledger_object::get_field_optional(self.get_slot_num(), sfield::LossUnrealized) } - /// The identifier of the share `MPTokenIssuance` object. + /// The identifier of the share MPTokenIssuance object. The `Vault` entry doesn't store a total + /// share count; the `OutstandingAmount` field of the share issuance is the vault's total + /// outstanding shares. fn share_mpt_id(&self) -> Result { ledger_object::get_field(self.get_slot_num(), sfield::ShareMPTID) } @@ -197,7 +199,9 @@ pub trait CurrentVaultFields: CurrentLedgerObjectCommonFields { current_ledger_object::get_field_optional(sfield::LossUnrealized) } - /// The identifier of the share `MPTokenIssuance` object. + /// The identifier of the share MPTokenIssuance object. The `Vault` entry doesn't store a total + /// share count; the `OutstandingAmount` field of the share issuance is the vault's total + /// outstanding shares. fn share_mpt_id(&self) -> Result { current_ledger_object::get_field(sfield::ShareMPTID) } diff --git a/xrpl-common-stdlib/src/objects/mod.rs b/xrpl-common-stdlib/src/objects/mod.rs index 6796975d..b3d79885 100644 --- a/xrpl-common-stdlib/src/objects/mod.rs +++ b/xrpl-common-stdlib/src/objects/mod.rs @@ -59,15 +59,16 @@ pub use generated::{ CurrentNFTokenOfferFields, CurrentNFTokenPageFields, CurrentNegativeUNLFields, CurrentOfferFields, CurrentOracleFields, CurrentPayChannelFields, CurrentPermissionedDomainFields, CurrentRippleStateFields, CurrentSignerListFields, - CurrentSponsorshipFields, CurrentTicketFields, CurrentVaultFields, - CurrentXChainOwnedClaimIDFields, CurrentXChainOwnedCreateAccountClaimIDFields, DID, DIDFields, - Delegate, DelegateFields, DepositPreauth, DepositPreauthFields, DirectoryNode, - DirectoryNodeFields, Escrow, EscrowFields, FeeSettings, FeeSettingsFields, LedgerHashes, - LedgerHashesFields, Loan, LoanBroker, LoanBrokerFields, LoanFields, MPToken, MPTokenFields, - MPTokenIssuance, MPTokenIssuanceFields, NFTokenOffer, NFTokenOfferFields, NFTokenPage, - NFTokenPageFields, NegativeUNL, NegativeUNLFields, Offer, OfferFields, Oracle, OracleFields, - PayChannel, PayChannelFields, PermissionedDomain, PermissionedDomainFields, RippleState, - RippleStateFields, SignerList, SignerListFields, Sponsorship, SponsorshipFields, Ticket, - TicketFields, Vault, VaultFields, XChainOwnedClaimID, XChainOwnedClaimIDFields, + CurrentSponsorshipFields, CurrentTicketFields, CurrentTransactionProposalFields, + CurrentVaultFields, CurrentXChainOwnedClaimIDFields, + CurrentXChainOwnedCreateAccountClaimIDFields, DID, DIDFields, Delegate, DelegateFields, + DepositPreauth, DepositPreauthFields, DirectoryNode, DirectoryNodeFields, Escrow, EscrowFields, + FeeSettings, FeeSettingsFields, LedgerHashes, LedgerHashesFields, Loan, LoanBroker, + LoanBrokerFields, LoanFields, MPToken, MPTokenFields, MPTokenIssuance, MPTokenIssuanceFields, + NFTokenOffer, NFTokenOfferFields, NFTokenPage, NFTokenPageFields, NegativeUNL, + NegativeUNLFields, Offer, OfferFields, Oracle, OracleFields, PayChannel, PayChannelFields, + PermissionedDomain, PermissionedDomainFields, RippleState, RippleStateFields, SignerList, + SignerListFields, Sponsorship, SponsorshipFields, Ticket, TicketFields, TransactionProposal, + TransactionProposalFields, Vault, VaultFields, XChainOwnedClaimID, XChainOwnedClaimIDFields, XChainOwnedCreateAccountClaimID, XChainOwnedCreateAccountClaimIDFields, }; diff --git a/xrpl-common-stdlib/src/sfield.rs b/xrpl-common-stdlib/src/sfield.rs index 8ecdb9e1..0e9b6de7 100644 --- a/xrpl-common-stdlib/src/sfield.rs +++ b/xrpl-common-stdlib/src/sfield.rs @@ -261,7 +261,7 @@ pub const LoanID: SField = SField::new(); pub const ReferenceHolding: SField = SField::new(); pub const BlindingFactor: SField = SField::new(); pub const ObjectID: SField = SField::new(); -pub const ContractHash: SField = SField::new(); +pub const ProposalID: SField = SField::new(); pub const ContractID: SField = SField::new(); pub const Amount: SField = SField::new(); pub const Balance: SField = SField::new(); @@ -335,7 +335,7 @@ pub const AuditorEncryptionKey: SField = SField::new(); pub const AmountCommitment: SField = SField::new(); pub const BalanceCommitment: SField = SField::new(); pub const Bytecode: SField = SField::new(); -pub const ContractCode: SField = SField::new(); +pub const RecoveryKey: SField = SField::new(); pub const FunctionName: SField = SField::new(); pub const Account: SField = SField::new(); pub const Owner: SField = SField::new(); @@ -362,7 +362,7 @@ pub const HighSponsor: SField = SField::new(); pub const LowSponsor: SField = SField::new(); pub const CounterpartySponsor: SField = SField::new(); pub const Sponsee: SField = SField::new(); -pub const ContractAccount: SField = SField::new(); +pub const SigningFor: SField = SField::new(); pub const Number: SField = SField::new(); pub const AssetsAvailable: SField = SField::new(); pub const AssetsMaximum: SField = SField::new(); @@ -413,7 +413,7 @@ pub const BatchSigner: SField = SField::new(); pub const Book: SField = SField::new(); pub const CounterpartySignature: SField = SField::new(); pub const SponsorSignature: SField = SField::new(); -pub const Function: SField = SField::new(); +pub const ProposedTransaction: SField = SField::new(); pub const InstanceParameter: SField = SField::new(); pub const InstanceParameterValue: SField = SField::new(); pub const Parameter: SField = SField::new();