xrpl 3.0.0-beta.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/build/xrpl-latest-min.js +1 -1
  2. package/build/xrpl-latest-min.js.map +1 -1
  3. package/build/xrpl-latest.js +707 -3074
  4. package/build/xrpl-latest.js.map +1 -1
  5. package/dist/npm/Wallet/defaultFaucets.d.ts +1 -3
  6. package/dist/npm/Wallet/defaultFaucets.d.ts.map +1 -1
  7. package/dist/npm/Wallet/defaultFaucets.js +0 -7
  8. package/dist/npm/Wallet/defaultFaucets.js.map +1 -1
  9. package/dist/npm/Wallet/fundWallet.js +4 -4
  10. package/dist/npm/Wallet/fundWallet.js.map +1 -1
  11. package/dist/npm/Wallet/rfc1751.d.ts +1 -2
  12. package/dist/npm/Wallet/rfc1751.d.ts.map +1 -1
  13. package/dist/npm/Wallet/rfc1751.js +21 -5
  14. package/dist/npm/Wallet/rfc1751.js.map +1 -1
  15. package/dist/npm/Wallet/signer.d.ts.map +1 -1
  16. package/dist/npm/Wallet/signer.js +2 -1
  17. package/dist/npm/Wallet/signer.js.map +1 -1
  18. package/dist/npm/client/connection.d.ts.map +1 -1
  19. package/dist/npm/client/connection.js +3 -3
  20. package/dist/npm/client/connection.js.map +1 -1
  21. package/dist/npm/client/index.d.ts +6 -6
  22. package/dist/npm/client/index.d.ts.map +1 -1
  23. package/dist/npm/client/index.js +3 -3
  24. package/dist/npm/client/index.js.map +1 -1
  25. package/dist/npm/client/partialPayment.d.ts.map +1 -1
  26. package/dist/npm/client/partialPayment.js.map +1 -1
  27. package/dist/npm/models/ledger/AMM.d.ts +1 -1
  28. package/dist/npm/models/ledger/AMM.d.ts.map +1 -1
  29. package/dist/npm/models/ledger/Bridge.d.ts +1 -1
  30. package/dist/npm/models/ledger/Bridge.d.ts.map +1 -1
  31. package/dist/npm/models/ledger/DID.d.ts +11 -0
  32. package/dist/npm/models/ledger/DID.d.ts.map +1 -0
  33. package/dist/npm/models/ledger/DID.js +3 -0
  34. package/dist/npm/models/ledger/DID.js.map +1 -0
  35. package/dist/npm/models/ledger/Ledger.d.ts +2 -2
  36. package/dist/npm/models/ledger/Ledger.d.ts.map +1 -1
  37. package/dist/npm/models/ledger/LedgerEntry.d.ts +1 -1
  38. package/dist/npm/models/ledger/LedgerEntry.d.ts.map +1 -1
  39. package/dist/npm/models/ledger/index.d.ts +2 -1
  40. package/dist/npm/models/ledger/index.d.ts.map +1 -1
  41. package/dist/npm/models/ledger/index.js.map +1 -1
  42. package/dist/npm/models/methods/index.d.ts +5 -4
  43. package/dist/npm/models/methods/index.d.ts.map +1 -1
  44. package/dist/npm/models/methods/ledgerEntry.d.ts +1 -0
  45. package/dist/npm/models/methods/ledgerEntry.d.ts.map +1 -1
  46. package/dist/npm/models/methods/serverDefinitions.d.ts +32 -0
  47. package/dist/npm/models/methods/serverDefinitions.d.ts.map +1 -0
  48. package/dist/npm/models/methods/serverDefinitions.js +3 -0
  49. package/dist/npm/models/methods/serverDefinitions.js.map +1 -0
  50. package/dist/npm/models/methods/submit.d.ts +2 -2
  51. package/dist/npm/models/methods/submit.d.ts.map +1 -1
  52. package/dist/npm/models/methods/tx.d.ts +4 -3
  53. package/dist/npm/models/methods/tx.d.ts.map +1 -1
  54. package/dist/npm/models/transactions/DIDDelete.d.ts +6 -0
  55. package/dist/npm/models/transactions/DIDDelete.d.ts.map +1 -0
  56. package/dist/npm/models/transactions/DIDDelete.js +9 -0
  57. package/dist/npm/models/transactions/DIDDelete.js.map +1 -0
  58. package/dist/npm/models/transactions/DIDSet.d.ts +9 -0
  59. package/dist/npm/models/transactions/DIDSet.d.ts.map +1 -0
  60. package/dist/npm/models/transactions/DIDSet.js +18 -0
  61. package/dist/npm/models/transactions/DIDSet.js.map +1 -0
  62. package/dist/npm/models/transactions/index.d.ts +3 -1
  63. package/dist/npm/models/transactions/index.d.ts.map +1 -1
  64. package/dist/npm/models/transactions/index.js.map +1 -1
  65. package/dist/npm/models/transactions/transaction.d.ts +4 -1
  66. package/dist/npm/models/transactions/transaction.d.ts.map +1 -1
  67. package/dist/npm/models/transactions/transaction.js +20 -12
  68. package/dist/npm/models/transactions/transaction.js.map +1 -1
  69. package/dist/npm/snippets/src/bridgeTransfer.js +4 -5
  70. package/dist/npm/snippets/src/bridgeTransfer.js.map +1 -1
  71. package/dist/npm/snippets/tsconfig.tsbuildinfo +1 -1
  72. package/dist/npm/src/Wallet/defaultFaucets.d.ts +1 -3
  73. package/dist/npm/src/Wallet/defaultFaucets.d.ts.map +1 -1
  74. package/dist/npm/src/Wallet/defaultFaucets.js +0 -7
  75. package/dist/npm/src/Wallet/defaultFaucets.js.map +1 -1
  76. package/dist/npm/src/Wallet/fundWallet.js +4 -4
  77. package/dist/npm/src/Wallet/fundWallet.js.map +1 -1
  78. package/dist/npm/src/Wallet/rfc1751.d.ts +1 -2
  79. package/dist/npm/src/Wallet/rfc1751.d.ts.map +1 -1
  80. package/dist/npm/src/Wallet/rfc1751.js +21 -5
  81. package/dist/npm/src/Wallet/rfc1751.js.map +1 -1
  82. package/dist/npm/src/Wallet/signer.d.ts.map +1 -1
  83. package/dist/npm/src/Wallet/signer.js +2 -1
  84. package/dist/npm/src/Wallet/signer.js.map +1 -1
  85. package/dist/npm/src/client/connection.d.ts.map +1 -1
  86. package/dist/npm/src/client/connection.js +3 -3
  87. package/dist/npm/src/client/connection.js.map +1 -1
  88. package/dist/npm/src/client/index.d.ts +6 -6
  89. package/dist/npm/src/client/index.d.ts.map +1 -1
  90. package/dist/npm/src/client/index.js +3 -3
  91. package/dist/npm/src/client/index.js.map +1 -1
  92. package/dist/npm/src/client/partialPayment.d.ts.map +1 -1
  93. package/dist/npm/src/client/partialPayment.js.map +1 -1
  94. package/dist/npm/src/models/ledger/AMM.d.ts +1 -1
  95. package/dist/npm/src/models/ledger/AMM.d.ts.map +1 -1
  96. package/dist/npm/src/models/ledger/Bridge.d.ts +1 -1
  97. package/dist/npm/src/models/ledger/Bridge.d.ts.map +1 -1
  98. package/dist/npm/src/models/ledger/DID.d.ts +11 -0
  99. package/dist/npm/src/models/ledger/DID.d.ts.map +1 -0
  100. package/dist/npm/src/models/ledger/DID.js +3 -0
  101. package/dist/npm/src/models/ledger/DID.js.map +1 -0
  102. package/dist/npm/src/models/ledger/Ledger.d.ts +2 -2
  103. package/dist/npm/src/models/ledger/Ledger.d.ts.map +1 -1
  104. package/dist/npm/src/models/ledger/LedgerEntry.d.ts +1 -1
  105. package/dist/npm/src/models/ledger/LedgerEntry.d.ts.map +1 -1
  106. package/dist/npm/src/models/ledger/index.d.ts +2 -1
  107. package/dist/npm/src/models/ledger/index.d.ts.map +1 -1
  108. package/dist/npm/src/models/ledger/index.js.map +1 -1
  109. package/dist/npm/src/models/methods/index.d.ts +5 -4
  110. package/dist/npm/src/models/methods/index.d.ts.map +1 -1
  111. package/dist/npm/src/models/methods/ledgerEntry.d.ts +1 -0
  112. package/dist/npm/src/models/methods/ledgerEntry.d.ts.map +1 -1
  113. package/dist/npm/src/models/methods/serverDefinitions.d.ts +32 -0
  114. package/dist/npm/src/models/methods/serverDefinitions.d.ts.map +1 -0
  115. package/dist/npm/src/models/methods/serverDefinitions.js +3 -0
  116. package/dist/npm/src/models/methods/serverDefinitions.js.map +1 -0
  117. package/dist/npm/src/models/methods/submit.d.ts +2 -2
  118. package/dist/npm/src/models/methods/submit.d.ts.map +1 -1
  119. package/dist/npm/src/models/methods/tx.d.ts +4 -3
  120. package/dist/npm/src/models/methods/tx.d.ts.map +1 -1
  121. package/dist/npm/src/models/transactions/DIDDelete.d.ts +6 -0
  122. package/dist/npm/src/models/transactions/DIDDelete.d.ts.map +1 -0
  123. package/dist/npm/src/models/transactions/DIDDelete.js +9 -0
  124. package/dist/npm/src/models/transactions/DIDDelete.js.map +1 -0
  125. package/dist/npm/src/models/transactions/DIDSet.d.ts +9 -0
  126. package/dist/npm/src/models/transactions/DIDSet.d.ts.map +1 -0
  127. package/dist/npm/src/models/transactions/DIDSet.js +18 -0
  128. package/dist/npm/src/models/transactions/DIDSet.js.map +1 -0
  129. package/dist/npm/src/models/transactions/index.d.ts +3 -1
  130. package/dist/npm/src/models/transactions/index.d.ts.map +1 -1
  131. package/dist/npm/src/models/transactions/index.js.map +1 -1
  132. package/dist/npm/src/models/transactions/transaction.d.ts +4 -1
  133. package/dist/npm/src/models/transactions/transaction.d.ts.map +1 -1
  134. package/dist/npm/src/models/transactions/transaction.js +20 -12
  135. package/dist/npm/src/models/transactions/transaction.js.map +1 -1
  136. package/dist/npm/src/sugar/submit.d.ts +5 -6
  137. package/dist/npm/src/sugar/submit.d.ts.map +1 -1
  138. package/dist/npm/src/sugar/submit.js.map +1 -1
  139. package/dist/npm/src/utils/collections.d.ts +1 -3
  140. package/dist/npm/src/utils/collections.d.ts.map +1 -1
  141. package/dist/npm/src/utils/collections.js +7 -5
  142. package/dist/npm/src/utils/collections.js.map +1 -1
  143. package/dist/npm/src/utils/hashes/hashLedger.d.ts +1 -2
  144. package/dist/npm/src/utils/hashes/hashLedger.d.ts.map +1 -1
  145. package/dist/npm/src/utils/hashes/hashLedger.js +7 -7
  146. package/dist/npm/src/utils/hashes/hashLedger.js.map +1 -1
  147. package/dist/npm/src/utils/hashes/index.d.ts.map +1 -1
  148. package/dist/npm/src/utils/hashes/index.js +3 -2
  149. package/dist/npm/src/utils/hashes/index.js.map +1 -1
  150. package/dist/npm/src/utils/index.d.ts.map +1 -1
  151. package/dist/npm/src/utils/index.js +6 -29
  152. package/dist/npm/src/utils/index.js.map +1 -1
  153. package/dist/npm/src/utils/parseNFTokenID.d.ts.map +1 -1
  154. package/dist/npm/src/utils/parseNFTokenID.js +12 -2
  155. package/dist/npm/src/utils/parseNFTokenID.js.map +1 -1
  156. package/dist/npm/src/utils/stringConversion.d.ts +1 -2
  157. package/dist/npm/src/utils/stringConversion.d.ts.map +1 -1
  158. package/dist/npm/src/utils/stringConversion.js +3 -2
  159. package/dist/npm/src/utils/stringConversion.js.map +1 -1
  160. package/dist/npm/src/utils/xrpConversion.d.ts +1 -1
  161. package/dist/npm/src/utils/xrpConversion.js +1 -1
  162. package/dist/npm/src/utils/xrpConversion.js.map +1 -1
  163. package/dist/npm/sugar/submit.d.ts +5 -6
  164. package/dist/npm/sugar/submit.d.ts.map +1 -1
  165. package/dist/npm/sugar/submit.js.map +1 -1
  166. package/dist/npm/utils/collections.d.ts +1 -3
  167. package/dist/npm/utils/collections.d.ts.map +1 -1
  168. package/dist/npm/utils/collections.js +7 -5
  169. package/dist/npm/utils/collections.js.map +1 -1
  170. package/dist/npm/utils/hashes/hashLedger.d.ts +1 -2
  171. package/dist/npm/utils/hashes/hashLedger.d.ts.map +1 -1
  172. package/dist/npm/utils/hashes/hashLedger.js +7 -7
  173. package/dist/npm/utils/hashes/hashLedger.js.map +1 -1
  174. package/dist/npm/utils/hashes/index.d.ts.map +1 -1
  175. package/dist/npm/utils/hashes/index.js +3 -2
  176. package/dist/npm/utils/hashes/index.js.map +1 -1
  177. package/dist/npm/utils/index.d.ts.map +1 -1
  178. package/dist/npm/utils/index.js +6 -29
  179. package/dist/npm/utils/index.js.map +1 -1
  180. package/dist/npm/utils/parseNFTokenID.d.ts.map +1 -1
  181. package/dist/npm/utils/parseNFTokenID.js +12 -2
  182. package/dist/npm/utils/parseNFTokenID.js.map +1 -1
  183. package/dist/npm/utils/stringConversion.d.ts +1 -2
  184. package/dist/npm/utils/stringConversion.d.ts.map +1 -1
  185. package/dist/npm/utils/stringConversion.js +3 -2
  186. package/dist/npm/utils/stringConversion.js.map +1 -1
  187. package/dist/npm/utils/xrpConversion.d.ts +1 -1
  188. package/dist/npm/utils/xrpConversion.js +1 -1
  189. package/dist/npm/utils/xrpConversion.js.map +1 -1
  190. package/package.json +7 -7
  191. package/src/Wallet/defaultFaucets.ts +0 -8
  192. package/src/Wallet/fundWallet.ts +7 -7
  193. package/src/Wallet/rfc1751.ts +45 -16
  194. package/src/Wallet/signer.ts +2 -1
  195. package/src/client/connection.ts +6 -4
  196. package/src/client/index.ts +13 -11
  197. package/src/client/partialPayment.ts +2 -6
  198. package/src/models/ledger/AMM.ts +1 -1
  199. package/src/models/ledger/Bridge.ts +7 -7
  200. package/src/models/ledger/DID.ts +22 -0
  201. package/src/models/ledger/Ledger.ts +2 -8
  202. package/src/models/ledger/LedgerEntry.ts +1 -0
  203. package/src/models/ledger/index.ts +2 -0
  204. package/src/models/methods/index.ts +10 -0
  205. package/src/models/methods/ledgerEntry.ts +6 -0
  206. package/src/models/methods/nftInfo.ts +1 -1
  207. package/src/models/methods/serverDefinitions.ts +61 -0
  208. package/src/models/methods/submit.ts +2 -2
  209. package/src/models/methods/subscribe.ts +1 -1
  210. package/src/models/methods/tx.ts +14 -6
  211. package/src/models/transactions/DIDDelete.ts +20 -0
  212. package/src/models/transactions/DIDSet.ts +49 -0
  213. package/src/models/transactions/XChainAccountCreateCommit.ts +1 -1
  214. package/src/models/transactions/index.ts +3 -0
  215. package/src/models/transactions/transaction.ts +47 -21
  216. package/src/sugar/submit.ts +14 -8
  217. package/src/utils/collections.ts +16 -12
  218. package/src/utils/hashes/hashLedger.ts +7 -9
  219. package/src/utils/hashes/index.ts +3 -2
  220. package/src/utils/index.ts +12 -6
  221. package/src/utils/parseNFTokenID.ts +13 -2
  222. package/src/utils/stringConversion.ts +11 -6
  223. package/src/utils/xrpConversion.ts +2 -2
@@ -1,8 +1,4 @@
1
- import {
2
- PseudoTransaction,
3
- Transaction,
4
- TransactionMetadata,
5
- } from '../transactions'
1
+ import { Transaction, TransactionMetadata } from '../transactions'
6
2
 
7
3
  import { LedgerEntry } from './LedgerEntry'
8
4
 
@@ -65,7 +61,5 @@ export default interface Ledger {
65
61
  * either JSON or binary depending on whether the request specified binary
66
62
  * as true.
67
63
  */
68
- transactions?: Array<
69
- (Transaction | PseudoTransaction) & { metaData?: TransactionMetadata }
70
- >
64
+ transactions?: Array<Transaction & { metaData?: TransactionMetadata }>
71
65
  }
@@ -44,6 +44,7 @@ type LedgerEntryFilter =
44
44
  | 'bridge'
45
45
  | 'check'
46
46
  | 'deposit_preauth'
47
+ | 'did'
47
48
  | 'directory'
48
49
  | 'escrow'
49
50
  | 'fee'
@@ -7,6 +7,7 @@ import AMM, { VoteSlot } from './AMM'
7
7
  import Bridge from './Bridge'
8
8
  import Check from './Check'
9
9
  import DepositPreauth from './DepositPreauth'
10
+ import DID from './DID'
10
11
  import DirectoryNode from './DirectoryNode'
11
12
  import Escrow from './Escrow'
12
13
  import FeeSettings, {
@@ -39,6 +40,7 @@ export {
39
40
  Check,
40
41
  DepositPreauth,
41
42
  DirectoryNode,
43
+ DID,
42
44
  Escrow,
43
45
  FEE_SETTINGS_ID,
44
46
  FeeSettings,
@@ -114,6 +114,10 @@ import {
114
114
  RipplePathFindResponse,
115
115
  SourceCurrencyAmount,
116
116
  } from './ripplePathFind'
117
+ import {
118
+ ServerDefinitionsRequest,
119
+ ServerDefinitionsResponse,
120
+ } from './serverDefinitions'
117
121
  import {
118
122
  JobType,
119
123
  ServerInfoRequest,
@@ -192,6 +196,7 @@ type Request =
192
196
  // server info methods
193
197
  | FeeRequest
194
198
  | ManifestRequest
199
+ | ServerDefinitionsRequest
195
200
  | ServerInfoRequest
196
201
  | ServerStateRequest
197
202
  // utility methods
@@ -245,6 +250,7 @@ type Response =
245
250
  // server info methods
246
251
  | FeeResponse
247
252
  | ManifestResponse
253
+ | ServerDefinitionsResponse
248
254
  | ServerInfoResponse
249
255
  | ServerStateResponse
250
256
  // utility methods
@@ -385,6 +391,8 @@ export type RequestResponseMap<T> = T extends AccountChannelsRequest
385
391
  ? ServerInfoResponse
386
392
  : T extends ServerStateRequest
387
393
  ? ServerStateResponse
394
+ : T extends ServerDefinitionsRequest
395
+ ? ServerDefinitionsResponse
388
396
  : T extends PingRequest
389
397
  ? PingResponse
390
398
  : T extends RandomRequest
@@ -535,6 +543,8 @@ export {
535
543
  FeeResponse,
536
544
  ManifestRequest,
537
545
  ManifestResponse,
546
+ ServerDefinitionsRequest,
547
+ ServerDefinitionsResponse,
538
548
  ServerInfoRequest,
539
549
  ServerInfoResponse,
540
550
  ServerStateRequest,
@@ -74,6 +74,12 @@ export interface LedgerEntryRequest extends BaseRequest, LookupByLedgerRequest {
74
74
  }
75
75
  | string
76
76
 
77
+ /**
78
+ * Specify a DID object to retrieve. If a string, must be the
79
+ * object ID of the DID object, as hexadecimal, or the account ID.
80
+ */
81
+ did?: string
82
+
77
83
  /**
78
84
  * The DirectoryNode to retrieve. If a string, must be the object ID of the
79
85
  * directory, as hexadecimal. If an object, requires either `dir_root` o
@@ -16,7 +16,7 @@ export interface NFTInfoRequest extends BaseRequest, LookupByLedgerRequest {
16
16
  }
17
17
 
18
18
  /**
19
- * Response expected from an {@link NFTInfoResponse}.
19
+ * Response expected from an {@link NFTInfoRequest}.
20
20
  *
21
21
  * @category Responses
22
22
  */
@@ -0,0 +1,61 @@
1
+ import { BaseRequest, BaseResponse } from './baseMethod'
2
+
3
+ /**
4
+ * The `server_definitions` method retrieves information about the definition
5
+ * enums available in this rippled node. Expects a response in the form of a
6
+ * {@link ServerDefinitionsResponse}.
7
+ *
8
+ * @category Requests
9
+ */
10
+ export interface ServerDefinitionsRequest extends BaseRequest {
11
+ command: 'server_definitions'
12
+ /**
13
+ * The hash of a `server_definitions` response.
14
+ */
15
+ hash?: string
16
+ }
17
+
18
+ /**
19
+ * Response expected from an {@link ServerDefinitionsRequest}.
20
+ *
21
+ * @category Responses
22
+ */
23
+ export interface ServerDefinitionsResponse extends BaseResponse {
24
+ result: {
25
+ hash: string
26
+ } & (
27
+ | {
28
+ FIELDS: Array<
29
+ [
30
+ string,
31
+ {
32
+ nth: number
33
+ isVLEncoded: boolean
34
+ isSerialized: boolean
35
+ isSigningField: boolean
36
+ type: string
37
+ },
38
+ ]
39
+ >
40
+
41
+ LEDGER_ENTRY_TYPES: Record<string, number>
42
+
43
+ TRANSACTION_RESULTS: Record<string, number>
44
+
45
+ TRANSACTION_TYPES: Record<string, number>
46
+
47
+ TYPES: Record<string, number>
48
+ }
49
+ | {
50
+ FIELDS?: never
51
+
52
+ LEDGER_ENTRY_TYPES?: never
53
+
54
+ TRANSACTION_RESULTS?: never
55
+
56
+ TRANSACTION_TYPES?: never
57
+
58
+ TYPES?: never
59
+ }
60
+ )
61
+ }
@@ -1,4 +1,4 @@
1
- import { Transaction } from '../transactions'
1
+ import { SubmittableTransaction } from '../transactions'
2
2
 
3
3
  import { BaseRequest, BaseResponse } from './baseMethod'
4
4
 
@@ -39,7 +39,7 @@ export interface SubmitResponse extends BaseResponse {
39
39
  /** The complete transaction in hex string format. */
40
40
  tx_blob: string
41
41
  /** The complete transaction in JSON format. */
42
- tx_json: Transaction & { hash?: string }
42
+ tx_json: SubmittableTransaction & { hash?: string }
43
43
  /**
44
44
  * The value true indicates that the transaction was applied, queued,
45
45
  * broadcast, or kept for later. The value `false` indicates that none of
@@ -39,7 +39,7 @@ export interface SubscribeBook {
39
39
 
40
40
  /**
41
41
  * The subscribe method requests periodic notifications from the server when
42
- * certain events happen. Expects a response in the form of a.
42
+ * certain events happen. Expects a response in the form of a
43
43
  * {@link SubscribeResponse}.
44
44
  *
45
45
  * @category Requests
@@ -1,6 +1,5 @@
1
1
  import { Transaction, TransactionMetadata } from '../transactions'
2
2
  import { BaseTransaction } from '../transactions/common'
3
- import { PseudoTransaction } from '../transactions/transaction'
4
3
 
5
4
  import { BaseRequest, BaseResponse } from './baseMethod'
6
5
 
@@ -12,8 +11,14 @@ import { BaseRequest, BaseResponse } from './baseMethod'
12
11
  */
13
12
  export interface TxRequest extends BaseRequest {
14
13
  command: 'tx'
15
- /** The 256-bit hash of the transaction, as hex. */
16
- transaction: string
14
+ /**
15
+ * The transaction hash to look up. Exactly one of `transaction` or `ctid` must be specified for a TxRequest.
16
+ */
17
+ transaction?: string
18
+ /**
19
+ * The Concise Transaction ID to look up. Exactly one of `transaction` or `ctid` must be specified for a TxRequest.
20
+ */
21
+ ctid?: string
17
22
  /**
18
23
  * If true, return transaction data and metadata as binary serialized to
19
24
  * hexadecimal strings. If false, return transaction data and metadata as.
@@ -41,12 +46,15 @@ export interface TxRequest extends BaseRequest {
41
46
  *
42
47
  * @category Responses
43
48
  */
44
- export interface TxResponse<
45
- T extends BaseTransaction = Transaction | PseudoTransaction,
46
- > extends BaseResponse {
49
+ export interface TxResponse<T extends BaseTransaction = Transaction>
50
+ extends BaseResponse {
47
51
  result: {
48
52
  /** The SHA-512 hash of the transaction. */
49
53
  hash: string
54
+ /**
55
+ * The Concise Transaction Identifier of the transaction (16-byte hex string)
56
+ */
57
+ ctid?: string
50
58
  /** The ledger index of the ledger that includes this transaction. */
51
59
  ledger_index?: number
52
60
  /** Transaction metadata, which describes the results of the transaction.
@@ -0,0 +1,20 @@
1
+ import { BaseTransaction, validateBaseTransaction } from './common'
2
+
3
+ // TODO: add docs
4
+
5
+ /**
6
+ * @category Transaction Models
7
+ */
8
+ export interface DIDDelete extends BaseTransaction {
9
+ TransactionType: 'DIDDelete'
10
+ }
11
+
12
+ /**
13
+ * Verify the form and type of a DIDDelete at runtime.
14
+ *
15
+ * @param tx - A DIDDelete Transaction.
16
+ * @throws When the DIDDelete is malformed.
17
+ */
18
+ export function validateDIDDelete(tx: Record<string, unknown>): void {
19
+ validateBaseTransaction(tx)
20
+ }
@@ -0,0 +1,49 @@
1
+ import { ValidationError } from '../../errors'
2
+
3
+ import {
4
+ BaseTransaction,
5
+ isString,
6
+ validateBaseTransaction,
7
+ validateOptionalField,
8
+ } from './common'
9
+
10
+ // TODO: add docs
11
+
12
+ /**
13
+ * @category Transaction Models
14
+ */
15
+ export interface DIDSet extends BaseTransaction {
16
+ TransactionType: 'DIDSet'
17
+
18
+ Data?: string
19
+
20
+ DIDDocument?: string
21
+
22
+ URI?: string
23
+ }
24
+
25
+ /**
26
+ * Verify the form and type of a DIDSet at runtime.
27
+ *
28
+ * @param tx - A DIDSet Transaction.
29
+ * @throws When the DIDSet is malformed.
30
+ */
31
+ export function validateDIDSet(tx: Record<string, unknown>): void {
32
+ validateBaseTransaction(tx)
33
+
34
+ validateOptionalField(tx, 'Data', isString)
35
+
36
+ validateOptionalField(tx, 'DIDDocument', isString)
37
+
38
+ validateOptionalField(tx, 'URI', isString)
39
+
40
+ if (
41
+ tx.Data === undefined &&
42
+ tx.DIDDocument === undefined &&
43
+ tx.URI === undefined
44
+ ) {
45
+ throw new ValidationError(
46
+ 'DIDSet: Must have at least one of `Data`, `DIDDocument`, and `URI`',
47
+ )
48
+ }
49
+ }
@@ -14,7 +14,7 @@ import {
14
14
  * The XChainAccountCreateCommit transaction creates a new account on one of the
15
15
  * chains a bridge connects, which serves as the bridge entrance for that chain.
16
16
  *
17
- * Warning: This transaction should only be executed if the witness attestations
17
+ * WARNING: This transaction should only be executed if the witness attestations
18
18
  * will be reliably delivered to the destination chain. If the signatures aren't
19
19
  * delivered, then account creation will be blocked until attestations are received.
20
20
  * This can be used maliciously; to disable this transaction on XRP-XRP bridges,
@@ -2,6 +2,7 @@ export { BaseTransaction } from './common'
2
2
  export {
3
3
  validate,
4
4
  PseudoTransaction,
5
+ SubmittableTransaction,
5
6
  TransactionAndMetadata,
6
7
  Transaction,
7
8
  } from './transaction'
@@ -31,6 +32,8 @@ export { CheckCancel } from './checkCancel'
31
32
  export { CheckCash } from './checkCash'
32
33
  export { CheckCreate } from './checkCreate'
33
34
  export { Clawback } from './clawback'
35
+ export { DIDDelete } from './DIDDelete'
36
+ export { DIDSet } from './DIDSet'
34
37
  export { DepositPreauth } from './depositPreauth'
35
38
  export { EscrowCancel } from './escrowCancel'
36
39
  export { EscrowCreate } from './escrowCreate'
@@ -20,6 +20,8 @@ import { CheckCreate, validateCheckCreate } from './checkCreate'
20
20
  import { Clawback, validateClawback } from './clawback'
21
21
  import { BaseTransaction, isIssuedCurrency } from './common'
22
22
  import { DepositPreauth, validateDepositPreauth } from './depositPreauth'
23
+ import { DIDDelete, validateDIDDelete } from './DIDDelete'
24
+ import { DIDSet, validateDIDSet } from './DIDSet'
23
25
  import { EnableAmendment } from './enableAmendment'
24
26
  import { EscrowCancel, validateEscrowCancel } from './escrowCancel'
25
27
  import { EscrowCreate, validateEscrowCreate } from './escrowCreate'
@@ -88,21 +90,25 @@ import {
88
90
  } from './XChainModifyBridge'
89
91
 
90
92
  /**
93
+ * Transactions that can be submitted by clients
94
+ *
91
95
  * @category Transaction Models
92
96
  */
93
- export type Transaction =
94
- | AccountDelete
95
- | AccountSet
97
+ export type SubmittableTransaction =
96
98
  | AMMBid
99
+ | AMMCreate
97
100
  | AMMDelete
98
101
  | AMMDeposit
99
- | AMMCreate
100
102
  | AMMVote
101
103
  | AMMWithdraw
104
+ | AccountDelete
105
+ | AccountSet
102
106
  | CheckCancel
103
107
  | CheckCash
104
108
  | CheckCreate
105
109
  | Clawback
110
+ | DIDDelete
111
+ | DIDSet
106
112
  | DepositPreauth
107
113
  | EscrowCancel
108
114
  | EscrowCreate
@@ -122,17 +128,29 @@ export type Transaction =
122
128
  | SignerListSet
123
129
  | TicketCreate
124
130
  | TrustSet
131
+ | XChainAccountCreateCommit
125
132
  | XChainAddAccountCreateAttestation
126
133
  | XChainAddClaimAttestation
127
134
  | XChainClaim
128
135
  | XChainCommit
129
136
  | XChainCreateBridge
130
137
  | XChainCreateClaimID
131
- | XChainAccountCreateCommit
132
138
  | XChainModifyBridge
133
139
 
140
+ /**
141
+ * Transactions that can only be created by validators.
142
+ *
143
+ * @category Transaction Models
144
+ */
134
145
  export type PseudoTransaction = EnableAmendment | SetFee | UNLModify
135
146
 
147
+ /**
148
+ * All transactions that can live on the XRPL
149
+ *
150
+ * @category Transaction Models
151
+ */
152
+ export type Transaction = SubmittableTransaction | PseudoTransaction
153
+
136
154
  /**
137
155
  * @category Transaction Models
138
156
  */
@@ -212,18 +230,14 @@ export function validate(transaction: Record<string, unknown>): void {
212
230
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- okay here
213
231
  setTransactionFlagsToNumber(tx as unknown as Transaction)
214
232
  switch (tx.TransactionType) {
215
- case 'AccountDelete':
216
- validateAccountDelete(tx)
217
- break
218
-
219
- case 'AccountSet':
220
- validateAccountSet(tx)
221
- break
222
-
223
233
  case 'AMMBid':
224
234
  validateAMMBid(tx)
225
235
  break
226
236
 
237
+ case 'AMMCreate':
238
+ validateAMMCreate(tx)
239
+ break
240
+
227
241
  case 'AMMDelete':
228
242
  validateAMMDelete(tx)
229
243
  break
@@ -232,10 +246,6 @@ export function validate(transaction: Record<string, unknown>): void {
232
246
  validateAMMDeposit(tx)
233
247
  break
234
248
 
235
- case 'AMMCreate':
236
- validateAMMCreate(tx)
237
- break
238
-
239
249
  case 'AMMVote':
240
250
  validateAMMVote(tx)
241
251
  break
@@ -244,6 +254,14 @@ export function validate(transaction: Record<string, unknown>): void {
244
254
  validateAMMWithdraw(tx)
245
255
  break
246
256
 
257
+ case 'AccountDelete':
258
+ validateAccountDelete(tx)
259
+ break
260
+
261
+ case 'AccountSet':
262
+ validateAccountSet(tx)
263
+ break
264
+
247
265
  case 'CheckCancel':
248
266
  validateCheckCancel(tx)
249
267
  break
@@ -260,6 +278,14 @@ export function validate(transaction: Record<string, unknown>): void {
260
278
  validateClawback(tx)
261
279
  break
262
280
 
281
+ case 'DIDDelete':
282
+ validateDIDDelete(tx)
283
+ break
284
+
285
+ case 'DIDSet':
286
+ validateDIDSet(tx)
287
+ break
288
+
263
289
  case 'DepositPreauth':
264
290
  validateDepositPreauth(tx)
265
291
  break
@@ -336,6 +362,10 @@ export function validate(transaction: Record<string, unknown>): void {
336
362
  validateTrustSet(tx)
337
363
  break
338
364
 
365
+ case 'XChainAccountCreateCommit':
366
+ validateXChainAccountCreateCommit(tx)
367
+ break
368
+
339
369
  case 'XChainAddAccountCreateAttestation':
340
370
  validateXChainAddAccountCreateAttestation(tx)
341
371
  break
@@ -360,10 +390,6 @@ export function validate(transaction: Record<string, unknown>): void {
360
390
  validateXChainCreateClaimID(tx)
361
391
  break
362
392
 
363
- case 'XChainAccountCreateCommit':
364
- validateXChainAccountCreateCommit(tx)
365
- break
366
-
367
393
  case 'XChainModifyBridge':
368
394
  validateXChainModifyBridge(tx)
369
395
  break
@@ -1,10 +1,16 @@
1
1
  import { decode, encode } from 'ripple-binary-codec'
2
2
 
3
- import type { Client, SubmitRequest, SubmitResponse, Wallet } from '..'
3
+ import type {
4
+ Client,
5
+ SubmitRequest,
6
+ SubmitResponse,
7
+ SubmittableTransaction,
8
+ Transaction,
9
+ Wallet,
10
+ } from '..'
4
11
  import { ValidationError, XrplError } from '../errors'
5
12
  import { Signer } from '../models/common'
6
13
  import { TxRequest, TxResponse } from '../models/methods'
7
- import { Transaction } from '../models/transactions'
8
14
  import { BaseTransaction } from '../models/transactions/common'
9
15
 
10
16
  /** Approximate time for a ledger to close, in milliseconds */
@@ -42,7 +48,7 @@ async function sleep(ms: number): Promise<void> {
42
48
  */
43
49
  export async function submitRequest(
44
50
  client: Client,
45
- signedTransaction: Transaction | string,
51
+ signedTransaction: SubmittableTransaction | string,
46
52
  failHard = false,
47
53
  ): Promise<SubmitResponse> {
48
54
  if (!isSigned(signedTransaction)) {
@@ -104,7 +110,7 @@ export async function submitRequest(
104
110
  */
105
111
  // eslint-disable-next-line max-params, max-lines-per-function -- this function needs to display and do with more information.
106
112
  export async function waitForFinalTransactionOutcome<
107
- T extends BaseTransaction = Transaction,
113
+ T extends BaseTransaction = SubmittableTransaction,
108
114
  >(
109
115
  client: Client,
110
116
  txHash: string,
@@ -159,7 +165,7 @@ export async function waitForFinalTransactionOutcome<
159
165
  }
160
166
 
161
167
  // checks if the transaction has been signed
162
- function isSigned(transaction: Transaction | string): boolean {
168
+ function isSigned(transaction: SubmittableTransaction | string): boolean {
163
169
  const tx = typeof transaction === 'string' ? decode(transaction) : transaction
164
170
  if (typeof tx === 'string') {
165
171
  return false
@@ -218,7 +224,7 @@ function isSigned(transaction: Transaction | string): boolean {
218
224
  */
219
225
  export async function getSignedTx(
220
226
  client: Client,
221
- transaction: Transaction | string,
227
+ transaction: SubmittableTransaction | string,
222
228
  {
223
229
  autofill = true,
224
230
  wallet,
@@ -228,7 +234,7 @@ export async function getSignedTx(
228
234
  // A wallet to sign a transaction. It must be provided when submitting an unsigned transaction.
229
235
  wallet?: Wallet
230
236
  } = {},
231
- ): Promise<Transaction | string> {
237
+ ): Promise<SubmittableTransaction | string> {
232
238
  if (isSigned(transaction)) {
233
239
  return transaction
234
240
  }
@@ -242,7 +248,7 @@ export async function getSignedTx(
242
248
  let tx =
243
249
  typeof transaction === 'string'
244
250
  ? // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- converts JsonObject to correct Transaction type
245
- (decode(transaction) as unknown as Transaction)
251
+ (decode(transaction) as unknown as SubmittableTransaction)
246
252
  : transaction
247
253
 
248
254
  if (autofill) {
@@ -14,20 +14,24 @@ type ValueOf<T> = T[keyof T]
14
14
  */
15
15
  export function groupBy<T>(
16
16
  array: T[],
17
- iteratee: (value: T, index: number, array: T[]) => string,
18
- ): { [p: string]: T[] } {
17
+ iteratee: (value: T, index: number, array: T[]) => string | number,
18
+ ): Record<string | number, T[]> {
19
19
  // eslint-disable-next-line max-params -- need all the params for the fallback
20
- return array.reduce<{ [key: string]: T[] }>(function predicate(
21
- acc,
22
- value,
23
- index,
24
- arrayReference,
25
- ) {
26
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- being safe for js users
27
- ;(acc[iteratee(value, index, arrayReference)] ||= []).push(value)
20
+ function predicate(
21
+ acc: Record<string | number, T[]>,
22
+ value: T,
23
+ index: number,
24
+ arrayReference: T[],
25
+ ): Record<string | number, T[]> {
26
+ const key = iteratee(value, index, arrayReference) || 0
27
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Find existing group or create a new one
28
+ const group = acc[key] || []
29
+ group.push(value)
30
+ acc[key] = group
28
31
  return acc
29
- },
30
- {})
32
+ }
33
+
34
+ return array.reduce(predicate, {})
31
35
  }
32
36
 
33
37
  /**
@@ -3,6 +3,7 @@
3
3
  /* eslint-disable no-bitwise -- this file mimics behavior in rippled. It uses
4
4
  bitwise operators for and-ing numbers with a mask and bit shifting. */
5
5
 
6
+ import { bytesToHex } from '@xrplf/isomorphic/utils'
6
7
  import BigNumber from 'bignumber.js'
7
8
  import { decode, encode } from 'ripple-binary-codec'
8
9
 
@@ -10,7 +11,6 @@ import { ValidationError, XrplError } from '../../errors'
10
11
  import type { Ledger } from '../../models/ledger'
11
12
  import { LedgerEntry } from '../../models/ledger'
12
13
  import { Transaction, TransactionMetadata } from '../../models/transactions'
13
- import { PseudoTransaction } from '../../models/transactions/transaction'
14
14
 
15
15
  import HashPrefix from './HashPrefix'
16
16
  import sha512Half from './sha512Half'
@@ -30,10 +30,6 @@ function intToHex(integer: number, byteLength: number): string {
30
30
  return foo
31
31
  }
32
32
 
33
- function bytesToHex(bytes: number[]): string {
34
- return Buffer.from(bytes).toString('hex')
35
- }
36
-
37
33
  function bigintToHex(
38
34
  integerString: string | number | BigNumber,
39
35
  byteLength: number,
@@ -84,7 +80,11 @@ export function hashSignedTx(tx: Transaction | string): string {
84
80
  txObject = tx
85
81
  }
86
82
 
87
- if (txObject.TxnSignature === undefined && txObject.Signers === undefined) {
83
+ if (
84
+ txObject.TxnSignature === undefined &&
85
+ txObject.Signers === undefined &&
86
+ txObject.SigningPubKey === undefined
87
+ ) {
88
88
  throw new ValidationError('The transaction must be signed to hash it.')
89
89
  }
90
90
 
@@ -125,9 +125,7 @@ export function hashLedgerHeader(ledgerHeader: Ledger): string {
125
125
  * @category Utilities
126
126
  */
127
127
  export function hashTxTree(
128
- transactions: Array<
129
- (Transaction | PseudoTransaction) & { metaData?: TransactionMetadata }
130
- >,
128
+ transactions: Array<Transaction & { metaData?: TransactionMetadata }>,
131
129
  ): string {
132
130
  const shamap = new SHAMap()
133
131
  for (const txJSON of transactions) {
@@ -3,6 +3,7 @@
3
3
  /* eslint-disable no-bitwise -- this file mimics behavior in rippled. It uses
4
4
  bitwise operators for and-ing numbers with a mask and bit shifting. */
5
5
 
6
+ import { bytesToHex } from '@xrplf/isomorphic/utils'
6
7
  import BigNumber from 'bignumber.js'
7
8
  import { decodeAccountID } from 'ripple-address-codec'
8
9
 
@@ -20,7 +21,7 @@ const HEX = 16
20
21
  const BYTE_LENGTH = 4
21
22
 
22
23
  function addressToHex(address: string): string {
23
- return Buffer.from(decodeAccountID(address)).toString('hex')
24
+ return bytesToHex(decodeAccountID(address))
24
25
  }
25
26
 
26
27
  function ledgerSpaceHex(name: keyof typeof ledgerSpaces): string {
@@ -37,7 +38,7 @@ function currencyToHex(currency: string): string {
37
38
  bytes[12] = currency.charCodeAt(0) & MASK
38
39
  bytes[13] = currency.charCodeAt(1) & MASK
39
40
  bytes[14] = currency.charCodeAt(2) & MASK
40
- return Buffer.from(bytes).toString('hex')
41
+ return bytesToHex(Uint8Array.from(bytes))
41
42
  }
42
43
 
43
44
  /**