From 1460cf50264b5704f231c4b7f02b1fe705934d02 Mon Sep 17 00:00:00 2001 From: Mayukha Vadari Date: Mon, 8 Jul 2024 17:24:38 -0400 Subject: [PATCH] feat: add support for the `fixPreviousTxnID` amendment (#2720) * add support for fixPreviousTxnID * update history --- packages/xrpl/HISTORY.md | 1 + packages/xrpl/src/models/ledger/AMM.ts | 4 ++-- packages/xrpl/src/models/ledger/Amendments.ts | 4 ++-- packages/xrpl/src/models/ledger/BaseLedgerEntry.ts | 14 +++++++++----- packages/xrpl/src/models/ledger/DirectoryNode.ts | 4 ++-- packages/xrpl/src/models/ledger/FeeSettings.ts | 6 ++++-- packages/xrpl/src/models/ledger/LedgerHashes.ts | 6 ++---- packages/xrpl/src/models/ledger/NegativeUNL.ts | 4 ++-- 8 files changed, 24 insertions(+), 19 deletions(-) diff --git a/packages/xrpl/HISTORY.md b/packages/xrpl/HISTORY.md index 2c534d05..6164a127 100644 --- a/packages/xrpl/HISTORY.md +++ b/packages/xrpl/HISTORY.md @@ -10,6 +10,7 @@ Subscribe to [the **xrpl-announce** mailing list](https://groups.google.com/g/xr ### Added * Add `nfts_by_issuer` clio-only API definition +* Support for the `fixPreviousTxnID` amendment. ## 3.1.0 (2024-06-03) diff --git a/packages/xrpl/src/models/ledger/AMM.ts b/packages/xrpl/src/models/ledger/AMM.ts index 5e72e1ac..5db38227 100644 --- a/packages/xrpl/src/models/ledger/AMM.ts +++ b/packages/xrpl/src/models/ledger/AMM.ts @@ -1,6 +1,6 @@ import { AuthAccount, Currency, IssuedCurrencyAmount } from '../common' -import { BaseLedgerEntry, MissingPreviousTxnID } from './BaseLedgerEntry' +import { BaseLedgerEntry, HasOptionalPreviousTxnID } from './BaseLedgerEntry' export interface VoteSlot { VoteEntry: { @@ -15,7 +15,7 @@ export interface VoteSlot { * * @category Ledger Entries */ -export default interface AMM extends BaseLedgerEntry, MissingPreviousTxnID { +export default interface AMM extends BaseLedgerEntry, HasOptionalPreviousTxnID { LedgerEntryType: 'AMM' /** * The address of the special account that holds this AMM's assets. diff --git a/packages/xrpl/src/models/ledger/Amendments.ts b/packages/xrpl/src/models/ledger/Amendments.ts index 1b88e515..f80e2079 100644 --- a/packages/xrpl/src/models/ledger/Amendments.ts +++ b/packages/xrpl/src/models/ledger/Amendments.ts @@ -1,4 +1,4 @@ -import { BaseLedgerEntry, MissingPreviousTxnID } from './BaseLedgerEntry' +import { BaseLedgerEntry, HasOptionalPreviousTxnID } from './BaseLedgerEntry' /** * The unique id for the Amendments object https://xrpl.org/amendments-object.html#amendments-id-format @@ -26,7 +26,7 @@ export interface Majority { */ export default interface Amendments extends BaseLedgerEntry, - MissingPreviousTxnID { + HasOptionalPreviousTxnID { LedgerEntryType: 'Amendments' /** * Array of 256-bit amendment IDs for all currently-enabled amendments. If diff --git a/packages/xrpl/src/models/ledger/BaseLedgerEntry.ts b/packages/xrpl/src/models/ledger/BaseLedgerEntry.ts index 96bc5566..abc474c1 100644 --- a/packages/xrpl/src/models/ledger/BaseLedgerEntry.ts +++ b/packages/xrpl/src/models/ledger/BaseLedgerEntry.ts @@ -15,13 +15,17 @@ export interface HasPreviousTxnID { PreviousTxnLgrSeq: number } -export interface MissingPreviousTxnID { +export interface HasOptionalPreviousTxnID { /** - * This field is missing on this object but is present on most other returned objects. + * The identifying hash of the transaction that most recently modified this + * object. This field was added in the `fixPreviousTxnID` amendment, so it + * may not be present in every object. */ - PreviousTxnID: never + PreviousTxnID?: string /** - * This field is missing on this object but is present on most other returned objects. + * The index of the ledger that contains the transaction that most recently + * modified this object. This field was added in the `fixPreviousTxnID` + * amendment, so it may not be present in every object. */ - PreviousTxnLgrSeq: never + PreviousTxnLgrSeq?: number } diff --git a/packages/xrpl/src/models/ledger/DirectoryNode.ts b/packages/xrpl/src/models/ledger/DirectoryNode.ts index 26552d7a..ea9d2405 100644 --- a/packages/xrpl/src/models/ledger/DirectoryNode.ts +++ b/packages/xrpl/src/models/ledger/DirectoryNode.ts @@ -1,4 +1,4 @@ -import { BaseLedgerEntry, MissingPreviousTxnID } from './BaseLedgerEntry' +import { BaseLedgerEntry, HasOptionalPreviousTxnID } from './BaseLedgerEntry' /** * The DirectoryNode object type provides a list of links to other objects in @@ -8,7 +8,7 @@ import { BaseLedgerEntry, MissingPreviousTxnID } from './BaseLedgerEntry' */ export default interface DirectoryNode extends BaseLedgerEntry, - MissingPreviousTxnID { + HasOptionalPreviousTxnID { LedgerEntryType: 'DirectoryNode' /** * A bit-map of boolean flags enabled for this directory. Currently, the diff --git a/packages/xrpl/src/models/ledger/FeeSettings.ts b/packages/xrpl/src/models/ledger/FeeSettings.ts index 3d7e6662..25de4b88 100644 --- a/packages/xrpl/src/models/ledger/FeeSettings.ts +++ b/packages/xrpl/src/models/ledger/FeeSettings.ts @@ -1,4 +1,4 @@ -import { BaseLedgerEntry, MissingPreviousTxnID } from './BaseLedgerEntry' +import { BaseLedgerEntry, HasOptionalPreviousTxnID } from './BaseLedgerEntry' /** * The unique id for the FeeSettings object https://xrpl.org/feesettings.html#feesettings-id-format @@ -26,7 +26,9 @@ export interface FeeSettingsPostAmendmentFields { ReserveIncrementDrops: string } -export interface FeeSettingsBase extends BaseLedgerEntry, MissingPreviousTxnID { +export interface FeeSettingsBase + extends BaseLedgerEntry, + HasOptionalPreviousTxnID { LedgerEntryType: 'FeeSettings' /** * A bit-map of boolean flags for this object. No flags are defined for this type. diff --git a/packages/xrpl/src/models/ledger/LedgerHashes.ts b/packages/xrpl/src/models/ledger/LedgerHashes.ts index 21d37f60..be35f816 100644 --- a/packages/xrpl/src/models/ledger/LedgerHashes.ts +++ b/packages/xrpl/src/models/ledger/LedgerHashes.ts @@ -1,4 +1,4 @@ -import { BaseLedgerEntry, MissingPreviousTxnID } from './BaseLedgerEntry' +import { BaseLedgerEntry } from './BaseLedgerEntry' /** * The LedgerHashes objects exist to make it possible to look up a previous @@ -7,9 +7,7 @@ import { BaseLedgerEntry, MissingPreviousTxnID } from './BaseLedgerEntry' * * @category Ledger Entries */ -export default interface LedgerHashes - extends BaseLedgerEntry, - MissingPreviousTxnID { +export default interface LedgerHashes extends BaseLedgerEntry { LedgerEntryType: 'LedgerHashes' /** The Ledger Index of the last entry in this object's Hashes array. */ LastLedgerSequence?: number diff --git a/packages/xrpl/src/models/ledger/NegativeUNL.ts b/packages/xrpl/src/models/ledger/NegativeUNL.ts index daad90c8..b9c0d51f 100644 --- a/packages/xrpl/src/models/ledger/NegativeUNL.ts +++ b/packages/xrpl/src/models/ledger/NegativeUNL.ts @@ -1,4 +1,4 @@ -import { BaseLedgerEntry, MissingPreviousTxnID } from './BaseLedgerEntry' +import { BaseLedgerEntry, HasOptionalPreviousTxnID } from './BaseLedgerEntry' /** * The unique id for the nUNL object https://xrpl.org/negativeunl.html#negativeunl-id-format @@ -14,7 +14,7 @@ export const NEGATIVE_UNL_ID = */ export default interface NegativeUNL extends BaseLedgerEntry, - MissingPreviousTxnID { + HasOptionalPreviousTxnID { LedgerEntryType: 'NegativeUNL' /** * A list of trusted validators that are currently disabled.