diff --git a/src/models/common/index.ts b/src/models/common/index.ts new file mode 100644 index 00000000..66ad1f33 --- /dev/null +++ b/src/models/common/index.ts @@ -0,0 +1,20 @@ +export type LedgerIndex = number | ('validated' | 'closed' | 'current') + +export type AccountObjectType = 'check' | 'escrow' | 'offer' | 'payment_channel' | 'signer_list' | 'state' + +export interface XRP { + currency: "XRP" +} + +export interface IssuedCurrency { + currency: string + issuer: string +} + +export type Currency = IssuedCurrency | XRP + +export interface IssuedCurrencyAmount extends IssuedCurrency { + value: string +} + +export type Amount = IssuedCurrencyAmount | string \ No newline at end of file diff --git a/src/models/ledger/accountRoot.ts b/src/models/ledger/accountRoot.ts new file mode 100644 index 00000000..8d12e388 --- /dev/null +++ b/src/models/ledger/accountRoot.ts @@ -0,0 +1,20 @@ +import { BaseLedgerEntry } from "./baseLedgerEntry"; + +export interface AccountRoot extends BaseLedgerEntry{ + LedgerEntryType: 'AccountRoot' + Account: string + Balance: string + Flags: number + OwnerCount: number + PreviousTxnID: string + PreviousTxnLgrSeq: number + Sequence: number + AccountTxnID?: string + Domain?: string + EmailHash?: string + MessageKey?: string + RegularKey?: string + TicketCount?: number + TickSize?: number + TransferRate?: number + } \ No newline at end of file diff --git a/src/models/ledger/amendments.ts b/src/models/ledger/amendments.ts new file mode 100644 index 00000000..79bd3f04 --- /dev/null +++ b/src/models/ledger/amendments.ts @@ -0,0 +1,15 @@ +import { BaseLedgerEntry } from "./baseLedgerEntry"; + +interface Majority { + Majority: { + Amendment: string + CloseTime: number + } +} + +export interface Amendments extends BaseLedgerEntry { + LedgerEntryType: 'Amendments' + Amendments?: string[] + Majorities?: Majority[] + Flags: 0 +} \ No newline at end of file diff --git a/src/models/ledger/baseLedgerEntry.ts b/src/models/ledger/baseLedgerEntry.ts new file mode 100644 index 00000000..d322ccac --- /dev/null +++ b/src/models/ledger/baseLedgerEntry.ts @@ -0,0 +1,3 @@ +export interface BaseLedgerEntry { + index: string +} \ No newline at end of file diff --git a/src/models/ledger/check.ts b/src/models/ledger/check.ts new file mode 100644 index 00000000..6c6d6209 --- /dev/null +++ b/src/models/ledger/check.ts @@ -0,0 +1,19 @@ +import { Amount } from "../common"; +import { BaseLedgerEntry } from "./baseLedgerEntry"; + +export interface Check extends BaseLedgerEntry { + LedgerEntryType: 'Check' + Account: string + Destination: string + Flags: 0 + OwnerNode: string + PreviousTxnID: string + PreviousTxnLgrSeq: number + SendMax: Amount + Sequence: number + DestinationNode?: string + DestinationTag?: number + Expiration?: number + InvoiceID?: string + SourceTag?: number + } \ No newline at end of file diff --git a/src/models/ledger/depositPreauth.ts b/src/models/ledger/depositPreauth.ts new file mode 100644 index 00000000..d10ab671 --- /dev/null +++ b/src/models/ledger/depositPreauth.ts @@ -0,0 +1,11 @@ +import { BaseLedgerEntry } from "./baseLedgerEntry"; + +export interface DepositPreauth extends BaseLedgerEntry { + LedgerEntryType: 'DepositPreauth' + Account: string + Authorize: string + Flags: 0 + OwnerNode: string + PreviousTxnID: string + PreviousTxnLgrSeq: number + } \ No newline at end of file diff --git a/src/models/ledger/directoryNode.ts b/src/models/ledger/directoryNode.ts new file mode 100644 index 00000000..295c46e1 --- /dev/null +++ b/src/models/ledger/directoryNode.ts @@ -0,0 +1,15 @@ +import { BaseLedgerEntry } from "./baseLedgerEntry"; + +export interface DirectoryNode extends BaseLedgerEntry { + LedgerEntryType: 'DirectoryNode' + Flags: number + RootIndex: string + Indexes: string[] + IndexNext?: number + IndexPrevious?: number + Owner?: string + TakerPaysCurrency?: string + TakerPaysIssuer?: string + TakerGetsCurrency?: string + TakerGetsIssuer?: string +} \ No newline at end of file diff --git a/src/models/ledger/escrow.ts b/src/models/ledger/escrow.ts new file mode 100644 index 00000000..264da1ba --- /dev/null +++ b/src/models/ledger/escrow.ts @@ -0,0 +1,18 @@ +import { BaseLedgerEntry } from "./baseLedgerEntry"; + +export interface Escrow extends BaseLedgerEntry { + LedgerEntryType: 'Escrow' + Account: string + Destination: string + Amount: string + Condition?: string + CancelAfter?: number + FinishAfter?: number + Flags: number + SourceTag?: number + DestinationTag?: number + OwnerNode: string + DestinationNode?: string + PreviousTxnID: string + PreviousTxnLgrSeq: number + } \ No newline at end of file diff --git a/src/models/ledger/feeSettings.ts b/src/models/ledger/feeSettings.ts new file mode 100644 index 00000000..c00b69c4 --- /dev/null +++ b/src/models/ledger/feeSettings.ts @@ -0,0 +1,10 @@ +import { BaseLedgerEntry } from "./baseLedgerEntry"; + +export interface FeeSettings extends BaseLedgerEntry { + LedgerEntryType: 'FeeSettings' + BaseFee: string + ReferenceFeeUnits: number + ReserveBase: number + ReserveIncrement: number + Flags: number + } \ No newline at end of file diff --git a/src/models/ledger/index.ts b/src/models/ledger/index.ts new file mode 100644 index 00000000..4301f42b --- /dev/null +++ b/src/models/ledger/index.ts @@ -0,0 +1,46 @@ +import { AccountRoot } from "./accountRoot"; +import { Amendments } from "./amendments"; +import { Check } from "./check"; +import { DepositPreauth } from "./depositPreauth"; +import { DirectoryNode } from "./directoryNode"; +import { Escrow } from "./escrow"; +import { FeeSettings } from "./feeSettings"; +import { LedgerHashes } from "./ledgerHashes"; +import { NegativeUNL } from "./negativeUNL"; +import { Offer } from "./offer"; +import { PayChannel } from "./payChannel"; +import { RippleState } from "./rippleState"; +import { SignerList } from "./signerList"; +import { Ticket } from "./ticket"; + +export type LedgerEntry = AccountRoot + | Amendments + | Check + | DepositPreauth + | DirectoryNode + | Escrow + | FeeSettings + | LedgerHashes + | NegativeUNL + | Offer + | PayChannel + | RippleState + | SignerList + | Ticket + +export { + AccountRoot, + Amendments, + Check, + DepositPreauth, + DirectoryNode, + Escrow, + FeeSettings, + LedgerHashes, + NegativeUNL, + Offer, + PayChannel, + RippleState, + SignerList, + Ticket +} \ No newline at end of file diff --git a/src/models/ledger/ledgerHashes.ts b/src/models/ledger/ledgerHashes.ts new file mode 100644 index 00000000..51292a90 --- /dev/null +++ b/src/models/ledger/ledgerHashes.ts @@ -0,0 +1,8 @@ +import { BaseLedgerEntry } from "./baseLedgerEntry"; + +export interface LedgerHashes extends BaseLedgerEntry { + LedgerEntryType: 'LedgerHashes' + LastLedgerSequence?: number + Hashes: string[] + Flags: number + } \ No newline at end of file diff --git a/src/models/ledger/negativeUNL.ts b/src/models/ledger/negativeUNL.ts new file mode 100644 index 00000000..eff7106d --- /dev/null +++ b/src/models/ledger/negativeUNL.ts @@ -0,0 +1,13 @@ +import { BaseLedgerEntry } from "./baseLedgerEntry"; + +interface DisabledValidator { + FirstLedgerSequence: number + PublicKey: string +} + +export interface NegativeUNL extends BaseLedgerEntry { + LedgerEntryType: "NegativeUNL" + DisabledValidators?: DisabledValidator[] + ValidatorToDisable?: string + ValidatorToReEnable?: string +} \ No newline at end of file diff --git a/src/models/ledger/offer.ts b/src/models/ledger/offer.ts new file mode 100644 index 00000000..138af70f --- /dev/null +++ b/src/models/ledger/offer.ts @@ -0,0 +1,17 @@ +import { Amount } from "../common"; +import { BaseLedgerEntry } from "./baseLedgerEntry"; + +export interface Offer extends BaseLedgerEntry { + LedgerEntryType: 'Offer' + Flags: number + Account: string + Sequence: number + TakerPays: Amount + TakerGets: Amount + BookDirectory: string + BookNode: string + OwnerNode: string + PreviousTxnID: string + PreviousTxnLgrSeq: number + Expiration?: number + } \ No newline at end of file diff --git a/src/models/ledger/payChannel.ts b/src/models/ledger/payChannel.ts new file mode 100644 index 00000000..3ab97a83 --- /dev/null +++ b/src/models/ledger/payChannel.ts @@ -0,0 +1,20 @@ +import { BaseLedgerEntry } from "./baseLedgerEntry"; + +export interface PayChannel extends BaseLedgerEntry { + LedgerEntryType: 'PayChannel' + Account: string + Destination: string + Amount: string + Balance: string + PublicKey: string + SettleDelay: number + OwnerNode: string + PreviousTxnID: string + PreviousTxnLgrSeq: number + Flags: number + Expiration?: number + CancelAfter?: number + SourceTag?: number + DestinationTag?: number + DestinationNode?: string +} \ No newline at end of file diff --git a/src/models/ledger/rippleState.ts b/src/models/ledger/rippleState.ts new file mode 100644 index 00000000..7648b3eb --- /dev/null +++ b/src/models/ledger/rippleState.ts @@ -0,0 +1,18 @@ +import { BaseLedgerEntry } from "./baseLedgerEntry"; +import { IssuedCurrencyAmount } from "../common"; + +export interface RippleState extends BaseLedgerEntry { + LedgerEntryType: 'RippleState' + Flags: number + Balance: IssuedCurrencyAmount + LowLimit: IssuedCurrencyAmount + HighLimit: IssuedCurrencyAmount + PreviousTxnID: string + PreviousTxnLgrSeq: number + LowNode?: string + HighNode?: string + LowQualityIn?: number + LowQualityOut?: number + HighQualityIn?: number + HighQualityOut?: number +} \ No newline at end of file diff --git a/src/models/ledger/signerList.ts b/src/models/ledger/signerList.ts new file mode 100644 index 00000000..6ba41cf3 --- /dev/null +++ b/src/models/ledger/signerList.ts @@ -0,0 +1,19 @@ +import { BaseLedgerEntry } from "./baseLedgerEntry"; + +interface SignerEntry { + SignerEntry: { + Account: string + SignerWeight: number + } +} + +export interface SignerList extends BaseLedgerEntry { + LedgerEntryType: 'SignerList' + Flags: number + PreviousTxnID: string + PreviousTxnLgrSeq: number + OwnerNode: string + SignerEntries: SignerEntry[] + SignerListID: number + SignerQuorum: number +} \ No newline at end of file diff --git a/src/models/ledger/ticket.ts b/src/models/ledger/ticket.ts new file mode 100644 index 00000000..0ae5c754 --- /dev/null +++ b/src/models/ledger/ticket.ts @@ -0,0 +1,11 @@ +import { BaseLedgerEntry } from "./baseLedgerEntry"; + +export interface Ticket extends BaseLedgerEntry { + LedgerEntryType: "Ticket" + Account: string + Flags: number + OwnerNode: string + PreviousTxnID: string + PreviousTxnLgrSeq: number + TicketSequence: number +} \ No newline at end of file