mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-12-06 17:27:59 +00:00
Compare commits
29 Commits
@transia/r
...
iouescrow-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2698f5f645 | ||
|
|
41f694b137 | ||
|
|
a4c64c8b26 | ||
|
|
ccde41b949 | ||
|
|
145940c010 | ||
|
|
b8b6e91a96 | ||
|
|
fa599162d2 | ||
|
|
0a0f5afb66 | ||
|
|
424a2533bc | ||
|
|
c7018d6dad | ||
|
|
9b4a202c78 | ||
|
|
6f4984acd6 | ||
|
|
94cf02dbb7 | ||
|
|
ca773ae876 | ||
|
|
e5a2323d7c | ||
|
|
cbac35ab43 | ||
|
|
1ef14433b7 | ||
|
|
0d1eea1667 | ||
|
|
c9852eb1a3 | ||
|
|
147f7be7f6 | ||
|
|
3b19974634 | ||
|
|
b7283c5841 | ||
|
|
c8d24d65f5 | ||
|
|
e712d8fd8c | ||
|
|
8fbcb20129 | ||
|
|
a679128f02 | ||
|
|
9f15deed15 | ||
|
|
9b540c89f0 | ||
|
|
5541632b7f |
8
package-lock.json
generated
8
package-lock.json
generated
@@ -17148,7 +17148,7 @@
|
|||||||
},
|
},
|
||||||
"packages/ripple-binary-codec": {
|
"packages/ripple-binary-codec": {
|
||||||
"name": "@transia/ripple-binary-codec",
|
"name": "@transia/ripple-binary-codec",
|
||||||
"version": "1.4.6-alpha.2",
|
"version": "1.4.6-alpha.1",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@transia/ripple-address-codec": "^4.2.8-alpha.0",
|
"@transia/ripple-address-codec": "^4.2.8-alpha.0",
|
||||||
@@ -17188,11 +17188,11 @@
|
|||||||
},
|
},
|
||||||
"packages/xrpl": {
|
"packages/xrpl": {
|
||||||
"name": "@transia/xrpl",
|
"name": "@transia/xrpl",
|
||||||
"version": "2.7.3-alpha.5",
|
"version": "2.7.3-alpha.1",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@transia/ripple-address-codec": "^4.2.8-alpha.0",
|
"@transia/ripple-address-codec": "^4.2.8-alpha.0",
|
||||||
"@transia/ripple-binary-codec": "^1.4.6-alpha.2",
|
"@transia/ripple-binary-codec": "^1.4.6-alpha.1",
|
||||||
"@transia/ripple-keypairs": "^1.1.8-alpha.0",
|
"@transia/ripple-keypairs": "^1.1.8-alpha.0",
|
||||||
"bignumber.js": "^9.0.0",
|
"bignumber.js": "^9.0.0",
|
||||||
"bip32": "^2.0.6",
|
"bip32": "^2.0.6",
|
||||||
@@ -19388,7 +19388,7 @@
|
|||||||
"requires": {
|
"requires": {
|
||||||
"@geut/browser-node-core": "^2.0.13",
|
"@geut/browser-node-core": "^2.0.13",
|
||||||
"@transia/ripple-address-codec": "^4.2.8-alpha.0",
|
"@transia/ripple-address-codec": "^4.2.8-alpha.0",
|
||||||
"@transia/ripple-binary-codec": "^1.4.6-alpha.2",
|
"@transia/ripple-binary-codec": "^1.4.6-alpha.1",
|
||||||
"@transia/ripple-keypairs": "^1.1.8-alpha.0",
|
"@transia/ripple-keypairs": "^1.1.8-alpha.0",
|
||||||
"@types/node": "^14.18.36",
|
"@types/node": "^14.18.36",
|
||||||
"assert-browserify": "^2.0.0",
|
"assert-browserify": "^2.0.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@transia/ripple-binary-codec",
|
"name": "@transia/ripple-binary-codec",
|
||||||
"version": "1.4.6-alpha.3",
|
"version": "1.4.6-alpha.1",
|
||||||
"description": "XRP Ledger binary codec",
|
"description": "XRP Ledger binary codec",
|
||||||
"files": [
|
"files": [
|
||||||
"dist/*",
|
"dist/*",
|
||||||
|
|||||||
@@ -37,7 +37,6 @@
|
|||||||
"LedgerHashes": 104,
|
"LedgerHashes": 104,
|
||||||
"Amendments": 102,
|
"Amendments": 102,
|
||||||
"FeeSettings": 115,
|
"FeeSettings": 115,
|
||||||
"ImportVlseq": 73,
|
|
||||||
"Escrow": 117,
|
"Escrow": 117,
|
||||||
"PayChannel": 120,
|
"PayChannel": 120,
|
||||||
"Check": 67,
|
"Check": 67,
|
||||||
@@ -797,16 +796,6 @@
|
|||||||
"type": "UInt32"
|
"type": "UInt32"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[
|
|
||||||
"XahauActivationLgrSeq",
|
|
||||||
{
|
|
||||||
"nth": 96,
|
|
||||||
"isVLEncoded": false,
|
|
||||||
"isSerialized": true,
|
|
||||||
"isSigningField": true,
|
|
||||||
"type": "UInt32"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
[
|
||||||
"ImportSequence",
|
"ImportSequence",
|
||||||
{
|
{
|
||||||
@@ -817,36 +806,6 @@
|
|||||||
"type": "UInt32"
|
"type": "UInt32"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[
|
|
||||||
"RewardTime",
|
|
||||||
{
|
|
||||||
"nth": 98,
|
|
||||||
"isVLEncoded": false,
|
|
||||||
"isSerialized": true,
|
|
||||||
"isSigningField": true,
|
|
||||||
"type": "UInt32"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"RewardLgrFirst",
|
|
||||||
{
|
|
||||||
"nth": 99,
|
|
||||||
"isVLEncoded": false,
|
|
||||||
"isSerialized": true,
|
|
||||||
"isSigningField": true,
|
|
||||||
"type": "UInt32"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"RewardLgrLast",
|
|
||||||
{
|
|
||||||
"nth": 100,
|
|
||||||
"isVLEncoded": false,
|
|
||||||
"isSerialized": true,
|
|
||||||
"isSigningField": true,
|
|
||||||
"type": "UInt32"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
[
|
||||||
"IndexNext",
|
"IndexNext",
|
||||||
{
|
{
|
||||||
@@ -1007,36 +966,6 @@
|
|||||||
"type": "UInt64"
|
"type": "UInt64"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[
|
|
||||||
"AccountIndex",
|
|
||||||
{
|
|
||||||
"nth": 98,
|
|
||||||
"isVLEncoded": false,
|
|
||||||
"isSerialized": true,
|
|
||||||
"isSigningField": true,
|
|
||||||
"type": "UInt64"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"AccountCount",
|
|
||||||
{
|
|
||||||
"nth": 99,
|
|
||||||
"isVLEncoded": false,
|
|
||||||
"isSerialized": true,
|
|
||||||
"isSigningField": true,
|
|
||||||
"type": "UInt64"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"RewardAccumulator",
|
|
||||||
{
|
|
||||||
"nth": 100,
|
|
||||||
"isVLEncoded": false,
|
|
||||||
"isSerialized": true,
|
|
||||||
"isSigningField": true,
|
|
||||||
"type": "UInt64"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
[
|
||||||
"EmailHash",
|
"EmailHash",
|
||||||
{
|
{
|
||||||
@@ -1427,36 +1356,6 @@
|
|||||||
"type": "Hash256"
|
"type": "Hash256"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[
|
|
||||||
"GovernanceFlags",
|
|
||||||
{
|
|
||||||
"nth": 99,
|
|
||||||
"isVLEncoded": false,
|
|
||||||
"isSerialized": true,
|
|
||||||
"isSigningField": true,
|
|
||||||
"type": "Hash256"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"GovernanceMarks",
|
|
||||||
{
|
|
||||||
"nth": 98,
|
|
||||||
"isVLEncoded": false,
|
|
||||||
"isSerialized": true,
|
|
||||||
"isSigningField": true,
|
|
||||||
"type": "Hash256"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"EmittedTxnID",
|
|
||||||
{
|
|
||||||
"nth": 97,
|
|
||||||
"isVLEncoded": false,
|
|
||||||
"isSerialized": true,
|
|
||||||
"isSigningField": true,
|
|
||||||
"type": "Hash256"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
[
|
||||||
"Amount",
|
"Amount",
|
||||||
{
|
{
|
||||||
@@ -2267,46 +2166,6 @@
|
|||||||
"type": "STObject"
|
"type": "STObject"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[
|
|
||||||
"GenesisMint",
|
|
||||||
{
|
|
||||||
"nth": 96,
|
|
||||||
"isVLEncoded": false,
|
|
||||||
"isSerialized": true,
|
|
||||||
"isSigningField": true,
|
|
||||||
"type": "STObject"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ActiveValidator",
|
|
||||||
{
|
|
||||||
"nth": 95,
|
|
||||||
"isVLEncoded": false,
|
|
||||||
"isSerialized": true,
|
|
||||||
"isSigningField": true,
|
|
||||||
"type": "STObject"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ImportVLKey",
|
|
||||||
{
|
|
||||||
"nth": 94,
|
|
||||||
"isVLEncoded": false,
|
|
||||||
"isSerialized": true,
|
|
||||||
"isSigningField": true,
|
|
||||||
"type": "STObject"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"HookEmission",
|
|
||||||
{
|
|
||||||
"nth": 93,
|
|
||||||
"isVLEncoded": false,
|
|
||||||
"isSerialized": true,
|
|
||||||
"isSigningField": true,
|
|
||||||
"type": "STObject"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
[
|
||||||
"Signers",
|
"Signers",
|
||||||
{
|
{
|
||||||
@@ -2446,46 +2305,6 @@
|
|||||||
"isSigningField": true,
|
"isSigningField": true,
|
||||||
"type": "STArray"
|
"type": "STArray"
|
||||||
}
|
}
|
||||||
],
|
|
||||||
[
|
|
||||||
"GenesisMints",
|
|
||||||
{
|
|
||||||
"nth": 96,
|
|
||||||
"isVLEncoded": false,
|
|
||||||
"isSerialized": true,
|
|
||||||
"isSigningField": true,
|
|
||||||
"type": "STArray"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ActiveValidators",
|
|
||||||
{
|
|
||||||
"nth": 95,
|
|
||||||
"isVLEncoded": false,
|
|
||||||
"isSerialized": true,
|
|
||||||
"isSigningField": true,
|
|
||||||
"type": "STArray"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ImportVLKeys",
|
|
||||||
{
|
|
||||||
"nth": 94,
|
|
||||||
"isVLEncoded": false,
|
|
||||||
"isSerialized": true,
|
|
||||||
"isSigningField": true,
|
|
||||||
"type": "STArray"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"HookEmissions",
|
|
||||||
{
|
|
||||||
"nth": 93,
|
|
||||||
"isVLEncoded": false,
|
|
||||||
"isSerialized": true,
|
|
||||||
"isSigningField": true,
|
|
||||||
"type": "STArray"
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"TRANSACTION_RESULTS": {
|
"TRANSACTION_RESULTS": {
|
||||||
@@ -2580,7 +2399,6 @@
|
|||||||
"tefNO_TICKET": -180,
|
"tefNO_TICKET": -180,
|
||||||
"tefNFTOKEN_IS_NOT_TRANSFERABLE": -179,
|
"tefNFTOKEN_IS_NOT_TRANSFERABLE": -179,
|
||||||
"tefPAST_IMPORT_SEQ": -178,
|
"tefPAST_IMPORT_SEQ": -178,
|
||||||
"tefPAST_IMPORT_VL_SEQ": -177,
|
|
||||||
|
|
||||||
"terRETRY": -99,
|
"terRETRY": -99,
|
||||||
"terFUNDS_SPENT": -98,
|
"terFUNDS_SPENT": -98,
|
||||||
@@ -2708,14 +2526,11 @@
|
|||||||
"URITokenBuy": 47,
|
"URITokenBuy": 47,
|
||||||
"URITokenCreateSellOffer": 48,
|
"URITokenCreateSellOffer": 48,
|
||||||
"URITokenCancelSellOffer": 49,
|
"URITokenCancelSellOffer": 49,
|
||||||
"GenesisMint": 96,
|
|
||||||
"Import": 97,
|
"Import": 97,
|
||||||
"ClaimReward": 98,
|
|
||||||
"Invoke": 99,
|
"Invoke": 99,
|
||||||
"EnableAmendment": 100,
|
"EnableAmendment": 100,
|
||||||
"SetFee": 101,
|
"SetFee": 101,
|
||||||
"UNLModify": 102,
|
"UNLModify": 102,
|
||||||
"EmitFailure": 103,
|
"EmitFailure": 103
|
||||||
"UNLReport": 104
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ describe('encode and decode using new types as a parameter', function () {
|
|||||||
definitions.FIELDS.push([
|
definitions.FIELDS.push([
|
||||||
'NewFieldDefinition',
|
'NewFieldDefinition',
|
||||||
{
|
{
|
||||||
nth: 101,
|
nth: 100,
|
||||||
isVLEncoded: false,
|
isVLEncoded: false,
|
||||||
isSerialized: true,
|
isSerialized: true,
|
||||||
isSigningField: true,
|
isSigningField: true,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@transia/xrpl",
|
"name": "@transia/xrpl",
|
||||||
"version": "2.7.3-alpha.12",
|
"version": "2.7.3-alpha.1",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"description": "A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser",
|
"description": "A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser",
|
||||||
"files": [
|
"files": [
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@transia/ripple-address-codec": "^4.2.8-alpha.0",
|
"@transia/ripple-address-codec": "^4.2.8-alpha.0",
|
||||||
"@transia/ripple-binary-codec": "^1.4.6-alpha.3",
|
"@transia/ripple-binary-codec": "^1.4.6-alpha.1",
|
||||||
"@transia/ripple-keypairs": "^1.1.8-alpha.0",
|
"@transia/ripple-keypairs": "^1.1.8-alpha.0",
|
||||||
"bignumber.js": "^9.0.0",
|
"bignumber.js": "^9.0.0",
|
||||||
"bip32": "^2.0.6",
|
"bip32": "^2.0.6",
|
||||||
|
|||||||
@@ -195,13 +195,3 @@ export interface NFTOffer {
|
|||||||
destination?: string
|
destination?: string
|
||||||
expiration?: number
|
expiration?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* This information is added to emitted Transactions.
|
|
||||||
*/
|
|
||||||
export interface EmitDetails {
|
|
||||||
EmitBurden: number
|
|
||||||
EmitGeneration: number
|
|
||||||
EmitHookHash: string
|
|
||||||
EmitParentTxnID: string
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
import { Amount } from '../common'
|
|
||||||
|
|
||||||
import BaseLedgerEntry from './BaseLedgerEntry'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The URIToken object type contains the
|
|
||||||
*
|
|
||||||
* @category Ledger Entries
|
|
||||||
*/
|
|
||||||
export default interface URIToken extends BaseLedgerEntry {
|
|
||||||
LedgerEntryType: 'URIToken'
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
Owner: string
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A hint indicating which page of the sender's owner directory links to this
|
|
||||||
* object, in case the directory consists of multiple pages.
|
|
||||||
*/
|
|
||||||
OwnerNode: string
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
Issuer: string
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
URI: string
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
Digest: string
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
Amount: Amount
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
Destination: string
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The identifying hash of the transaction that most recently modified this
|
|
||||||
* object.
|
|
||||||
*/
|
|
||||||
PreviousTxnID: string
|
|
||||||
/**
|
|
||||||
* The index of the ledger that contains the transaction that most recently
|
|
||||||
* modified this object.
|
|
||||||
*/
|
|
||||||
PreviousTxnLgrSeq: number
|
|
||||||
}
|
|
||||||
@@ -21,7 +21,6 @@ import PayChannel from './PayChannel'
|
|||||||
import RippleState, { RippleStateFlags } from './RippleState'
|
import RippleState, { RippleStateFlags } from './RippleState'
|
||||||
import SignerList, { SignerListFlags } from './SignerList'
|
import SignerList, { SignerListFlags } from './SignerList'
|
||||||
import Ticket from './Ticket'
|
import Ticket from './Ticket'
|
||||||
import URIToken from './URIToken'
|
|
||||||
|
|
||||||
export {
|
export {
|
||||||
AccountRoot,
|
AccountRoot,
|
||||||
@@ -49,5 +48,4 @@ export {
|
|||||||
SignerList,
|
SignerList,
|
||||||
SignerListFlags,
|
SignerListFlags,
|
||||||
Ticket,
|
Ticket,
|
||||||
URIToken,
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import {
|
|||||||
RippleState,
|
RippleState,
|
||||||
SignerList,
|
SignerList,
|
||||||
Ticket,
|
Ticket,
|
||||||
URIToken,
|
|
||||||
} from '../ledger'
|
} from '../ledger'
|
||||||
|
|
||||||
import { BaseRequest, BaseResponse } from './baseMethod'
|
import { BaseRequest, BaseResponse } from './baseMethod'
|
||||||
@@ -23,7 +22,6 @@ type AccountObjectType =
|
|||||||
| 'signer_list'
|
| 'signer_list'
|
||||||
| 'state'
|
| 'state'
|
||||||
| 'ticket'
|
| 'ticket'
|
||||||
| 'uritoken'
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The account_objects command returns the raw ledger format for all objects
|
* The account_objects command returns the raw ledger format for all objects
|
||||||
@@ -80,7 +78,6 @@ type AccountObject =
|
|||||||
| SignerList
|
| SignerList
|
||||||
| RippleState
|
| RippleState
|
||||||
| Ticket
|
| Ticket
|
||||||
| URIToken
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Response expected from an {@link AccountObjectsRequest}.
|
* Response expected from an {@link AccountObjectsRequest}.
|
||||||
|
|||||||
@@ -79,11 +79,6 @@ export interface LedgerEntryRequest extends BaseRequest {
|
|||||||
}
|
}
|
||||||
| string
|
| string
|
||||||
|
|
||||||
/**
|
|
||||||
* The object ID of a transaction emitted by the ledger entry.
|
|
||||||
*/
|
|
||||||
emitted_txn?: string
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Escrow object to retrieve. If a string, must be the object ID of the
|
* The Escrow object to retrieve. If a string, must be the object ID of the
|
||||||
* escrow, as hexadecimal. If an object, requires owner and seq sub-fields.
|
* escrow, as hexadecimal. If an object, requires owner and seq sub-fields.
|
||||||
@@ -97,36 +92,6 @@ export interface LedgerEntryRequest extends BaseRequest {
|
|||||||
}
|
}
|
||||||
| string
|
| string
|
||||||
|
|
||||||
/**
|
|
||||||
* The hash of the Hook object to retrieve.
|
|
||||||
*/
|
|
||||||
hook_definition?: string
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Hook object to retrieve. If a string, must be the object ID of the Hook.
|
|
||||||
* If an object, requires `account` sub-field.
|
|
||||||
*/
|
|
||||||
hook?:
|
|
||||||
| {
|
|
||||||
/** The account of the Hook object. */
|
|
||||||
account: string
|
|
||||||
}
|
|
||||||
| string
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Object specifying the HookState object to retrieve. Requires the sub-fields
|
|
||||||
* `account`, `key`, and `namespace_id` to uniquely specify the HookState entry
|
|
||||||
* to retrieve.
|
|
||||||
*/
|
|
||||||
hook_state?: {
|
|
||||||
/** The account of the Hook object. */
|
|
||||||
account: string
|
|
||||||
/** The key of the state. */
|
|
||||||
key: string
|
|
||||||
/** The namespace of the state. */
|
|
||||||
namespace_id: string
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Offer object to retrieve. If a string, interpret as the unique object
|
* The Offer object to retrieve. If a string, interpret as the unique object
|
||||||
* ID to the Offer. If an object, requires the sub-fields `account` and `seq`
|
* ID to the Offer. If an object, requires the sub-fields `account` and `seq`
|
||||||
@@ -172,20 +137,40 @@ export interface LedgerEntryRequest extends BaseRequest {
|
|||||||
ticket_sequence: number
|
ticket_sequence: number
|
||||||
}
|
}
|
||||||
| string
|
| string
|
||||||
|
/**
|
||||||
|
* The object ID of a transaction emitted by the ledger entry.
|
||||||
|
*/
|
||||||
|
emitted_txn?: string
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The URIToken object to retrieve. If a string, must be the object ID of the
|
* The hash of the Hook object to retrieve.
|
||||||
* URIToken, as hexadecimal. If an object, the `issuer` and `uri`
|
|
||||||
* sub-fields are required to uniquely specify the URIToken entry.
|
|
||||||
*/
|
*/
|
||||||
uri_token?:
|
hook_definition?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Hook object to retrieve. If a string, must be the object ID of the Hook.
|
||||||
|
* If an object, requires `account` sub-field.
|
||||||
|
*/
|
||||||
|
hook?:
|
||||||
| {
|
| {
|
||||||
/** The issuer of the URIToken object. */
|
/** The account of the Hook object. */
|
||||||
issuer: string
|
account: string
|
||||||
/** The URIToken uri string (ascii). */
|
|
||||||
uri: string
|
|
||||||
}
|
}
|
||||||
| string
|
| string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Object specifying the HookState object to retrieve. Requires the sub-fields
|
||||||
|
* `account`, `key`, and `namespace_id` to uniquely specify the HookState entry
|
||||||
|
* to retrieve.
|
||||||
|
*/
|
||||||
|
hook_state?: {
|
||||||
|
/** The account of the Hook object. */
|
||||||
|
account: string
|
||||||
|
/** The key of the state. */
|
||||||
|
key: string
|
||||||
|
/** The namespace of the state. */
|
||||||
|
namespace_id: string
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -48,7 +48,6 @@ export enum AccountSetAsfFlags {
|
|||||||
*/
|
*/
|
||||||
asfAuthorizedNFTokenMinter = 10,
|
asfAuthorizedNFTokenMinter = 10,
|
||||||
/** asf 11 is reserved for Hooks amendment */
|
/** asf 11 is reserved for Hooks amendment */
|
||||||
asfTshCollect = 11,
|
|
||||||
/** Disallow other accounts from creating incoming NFTOffers */
|
/** Disallow other accounts from creating incoming NFTOffers */
|
||||||
asfDisallowIncomingNFTokenOffer = 12,
|
asfDisallowIncomingNFTokenOffer = 12,
|
||||||
/** Disallow other accounts from creating incoming Checks */
|
/** Disallow other accounts from creating incoming Checks */
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
import { ValidationError } from '../../errors'
|
|
||||||
|
|
||||||
import { BaseTransaction, validateBaseTransaction } from './common'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ClaimReward is a transaction model that allows an account to claim rewards.
|
|
||||||
*
|
|
||||||
* @category Transaction Models
|
|
||||||
*/
|
|
||||||
export interface ClaimReward extends BaseTransaction {
|
|
||||||
TransactionType: 'ClaimReward'
|
|
||||||
/** The unique address of the issuer where the reward.c hook is installed. */
|
|
||||||
Issuer?: string
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Verify the form and type of an ClaimReward at runtime.
|
|
||||||
*
|
|
||||||
* @param tx - An ClaimReward Transaction.
|
|
||||||
* @throws When the ClaimReward is Malformed.
|
|
||||||
*/
|
|
||||||
export function validateClaimReward(tx: Record<string, unknown>): void {
|
|
||||||
validateBaseTransaction(tx)
|
|
||||||
|
|
||||||
if (tx.Issuer !== undefined && typeof tx.Issuer !== 'string') {
|
|
||||||
throw new ValidationError('ClaimReward: invalid Issuer')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -10,7 +10,6 @@ import {
|
|||||||
IssuedCurrencyAmount,
|
IssuedCurrencyAmount,
|
||||||
Memo,
|
Memo,
|
||||||
Signer,
|
Signer,
|
||||||
EmitDetails,
|
|
||||||
} from '../common'
|
} from '../common'
|
||||||
import { onlyHasFields } from '../utils'
|
import { onlyHasFields } from '../utils'
|
||||||
|
|
||||||
@@ -174,10 +173,6 @@ export interface BaseTransaction {
|
|||||||
* The hook parameters of the transaction.
|
* The hook parameters of the transaction.
|
||||||
*/
|
*/
|
||||||
HookParameters?: HookParameter[]
|
HookParameters?: HookParameter[]
|
||||||
/**
|
|
||||||
* The hook parameters of the transaction.
|
|
||||||
*/
|
|
||||||
EmitDetails?: EmitDetails
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
import { ValidationError } from '../../errors'
|
|
||||||
|
|
||||||
import { BaseTransaction, validateBaseTransaction } from './common'
|
import { BaseTransaction, validateBaseTransaction } from './common'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -9,10 +7,6 @@ import { BaseTransaction, validateBaseTransaction } from './common'
|
|||||||
*/
|
*/
|
||||||
export interface Import extends BaseTransaction {
|
export interface Import extends BaseTransaction {
|
||||||
TransactionType: 'Import'
|
TransactionType: 'Import'
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
Issuer?: string
|
|
||||||
/**
|
/**
|
||||||
* Hex value representing a VL Blob.
|
* Hex value representing a VL Blob.
|
||||||
*/
|
*/
|
||||||
@@ -27,12 +21,4 @@ export interface Import extends BaseTransaction {
|
|||||||
*/
|
*/
|
||||||
export function validateImport(tx: Record<string, unknown>): void {
|
export function validateImport(tx: Record<string, unknown>): void {
|
||||||
validateBaseTransaction(tx)
|
validateBaseTransaction(tx)
|
||||||
|
|
||||||
if (tx.Issuer !== undefined && typeof tx.Issuer !== 'string') {
|
|
||||||
throw new ValidationError('Import: Issuer must be a string')
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tx.Account === tx.Issuer) {
|
|
||||||
throw new ValidationError('Import: Issuer and Account must not be equal')
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ export { AccountDelete } from './accountDelete'
|
|||||||
export { CheckCancel } from './checkCancel'
|
export { CheckCancel } from './checkCancel'
|
||||||
export { CheckCash } from './checkCash'
|
export { CheckCash } from './checkCash'
|
||||||
export { CheckCreate } from './checkCreate'
|
export { CheckCreate } from './checkCreate'
|
||||||
export { ClaimReward } from './claimReward'
|
|
||||||
export { DepositPreauth } from './depositPreauth'
|
export { DepositPreauth } from './depositPreauth'
|
||||||
export { EscrowCancel } from './escrowCancel'
|
export { EscrowCancel } from './escrowCancel'
|
||||||
export { EscrowCreate } from './escrowCreate'
|
export { EscrowCreate } from './escrowCreate'
|
||||||
@@ -49,12 +48,3 @@ export { SetHookFlagsInterface, SetHookFlags, SetHook } from './setHook'
|
|||||||
export { SignerListSet } from './signerListSet'
|
export { SignerListSet } from './signerListSet'
|
||||||
export { TicketCreate } from './ticketCreate'
|
export { TicketCreate } from './ticketCreate'
|
||||||
export { TrustSetFlagsInterface, TrustSetFlags, TrustSet } from './trustSet'
|
export { TrustSetFlagsInterface, TrustSetFlags, TrustSet } from './trustSet'
|
||||||
export {
|
|
||||||
URITokenMintFlagsInterface,
|
|
||||||
URITokenMintFlags,
|
|
||||||
URITokenMint,
|
|
||||||
} from './uriTokenMint'
|
|
||||||
export { URITokenBurn } from './uriTokenBurn'
|
|
||||||
export { URITokenCreateSellOffer } from './uriTokenCreateSellOffer'
|
|
||||||
export { URITokenBuy } from './uriTokenBuy'
|
|
||||||
export { URITokenCancelSellOffer } from './uriTokenCancelSellOffer'
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ export interface HookExecution {
|
|||||||
HookHash: string
|
HookHash: string
|
||||||
HookInstructionCount: string
|
HookInstructionCount: string
|
||||||
HookResult: number
|
HookResult: number
|
||||||
HookReturnCode: string
|
HookReturnCode: number
|
||||||
HookReturnString: string
|
HookReturnString: string
|
||||||
HookStateChangeCount: number
|
HookStateChangeCount: number
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,10 +14,10 @@ export enum SetHookFlags {
|
|||||||
hsfOverride = 0x00000001,
|
hsfOverride = 0x00000001,
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
hsfNSDelete = 0x0000002,
|
hsfNSDelete = 0x00000010,
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
hsfCollect = 0x00000004,
|
hsfCollect = 0x00000100,
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SetHookFlagsInterface extends GlobalFlags {
|
export interface SetHookFlagsInterface extends GlobalFlags {
|
||||||
@@ -41,7 +41,7 @@ export interface SetHook extends BaseTransaction {
|
|||||||
Flags?: number | SetHookFlagsInterface
|
Flags?: number | SetHookFlagsInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
const MAX_HOOKS = 10
|
const MAX_HOOKS = 4
|
||||||
const HEX_REGEX = /^[0-9A-Fa-f]{64}$/u
|
const HEX_REGEX = /^[0-9A-Fa-f]{64}$/u
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ export interface SignerListSet extends BaseTransaction {
|
|||||||
* more than 32 members. No address may appear more than once in the list, nor
|
* more than 32 members. No address may appear more than once in the list, nor
|
||||||
* may the Account submitting the transaction appear in the list.
|
* may the Account submitting the transaction appear in the list.
|
||||||
*/
|
*/
|
||||||
SignerEntries?: SignerEntry[]
|
SignerEntries: SignerEntry[]
|
||||||
}
|
}
|
||||||
|
|
||||||
const MAX_SIGNERS = 32
|
const MAX_SIGNERS = 32
|
||||||
@@ -36,7 +36,6 @@ const HEX_WALLET_LOCATOR_REGEX = /^[0-9A-Fa-f]{64}$/u
|
|||||||
* @param tx - An SignerListSet Transaction.
|
* @param tx - An SignerListSet Transaction.
|
||||||
* @throws When the SignerListSet is Malformed.
|
* @throws When the SignerListSet is Malformed.
|
||||||
*/
|
*/
|
||||||
// eslint-disable-next-line complexity -- validation can be complex
|
|
||||||
export function validateSignerListSet(tx: Record<string, unknown>): void {
|
export function validateSignerListSet(tx: Record<string, unknown>): void {
|
||||||
validateBaseTransaction(tx)
|
validateBaseTransaction(tx)
|
||||||
|
|
||||||
@@ -48,10 +47,6 @@ export function validateSignerListSet(tx: Record<string, unknown>): void {
|
|||||||
throw new ValidationError('SignerListSet: invalid SignerQuorum')
|
throw new ValidationError('SignerListSet: invalid SignerQuorum')
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tx.SignerQuorum === 0) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tx.SignerEntries === undefined) {
|
if (tx.SignerEntries === undefined) {
|
||||||
throw new ValidationError('SignerListSet: missing field SignerEntries')
|
throw new ValidationError('SignerListSet: missing field SignerEntries')
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import { AccountSet, validateAccountSet } from './accountSet'
|
|||||||
import { CheckCancel, validateCheckCancel } from './checkCancel'
|
import { CheckCancel, validateCheckCancel } from './checkCancel'
|
||||||
import { CheckCash, validateCheckCash } from './checkCash'
|
import { CheckCash, validateCheckCash } from './checkCash'
|
||||||
import { CheckCreate, validateCheckCreate } from './checkCreate'
|
import { CheckCreate, validateCheckCreate } from './checkCreate'
|
||||||
import { ClaimReward, validateClaimReward } from './claimReward'
|
|
||||||
import { DepositPreauth, validateDepositPreauth } from './depositPreauth'
|
import { DepositPreauth, validateDepositPreauth } from './depositPreauth'
|
||||||
import { EscrowCancel, validateEscrowCancel } from './escrowCancel'
|
import { EscrowCancel, validateEscrowCancel } from './escrowCancel'
|
||||||
import { EscrowCreate, validateEscrowCreate } from './escrowCreate'
|
import { EscrowCreate, validateEscrowCreate } from './escrowCreate'
|
||||||
@@ -51,17 +50,6 @@ import { SetRegularKey, validateSetRegularKey } from './setRegularKey'
|
|||||||
import { SignerListSet, validateSignerListSet } from './signerListSet'
|
import { SignerListSet, validateSignerListSet } from './signerListSet'
|
||||||
import { TicketCreate, validateTicketCreate } from './ticketCreate'
|
import { TicketCreate, validateTicketCreate } from './ticketCreate'
|
||||||
import { TrustSet, validateTrustSet } from './trustSet'
|
import { TrustSet, validateTrustSet } from './trustSet'
|
||||||
import { URITokenBurn, validateURITokenBurn } from './uriTokenBurn'
|
|
||||||
import { URITokenBuy, validateURITokenBuy } from './uriTokenBuy'
|
|
||||||
import {
|
|
||||||
URITokenCancelSellOffer,
|
|
||||||
validateURITokenCancelSellOffer,
|
|
||||||
} from './uriTokenCancelSellOffer'
|
|
||||||
import {
|
|
||||||
URITokenCreateSellOffer,
|
|
||||||
validateURITokenCreateSellOffer,
|
|
||||||
} from './uriTokenCreateSellOffer'
|
|
||||||
import { URITokenMint, validateURITokenMint } from './uriTokenMint'
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @category Transaction Models
|
* @category Transaction Models
|
||||||
@@ -72,7 +60,6 @@ export type Transaction =
|
|||||||
| CheckCancel
|
| CheckCancel
|
||||||
| CheckCash
|
| CheckCash
|
||||||
| CheckCreate
|
| CheckCreate
|
||||||
| ClaimReward
|
|
||||||
| DepositPreauth
|
| DepositPreauth
|
||||||
| EscrowCancel
|
| EscrowCancel
|
||||||
| EscrowCreate
|
| EscrowCreate
|
||||||
@@ -95,11 +82,6 @@ export type Transaction =
|
|||||||
| SignerListSet
|
| SignerListSet
|
||||||
| TicketCreate
|
| TicketCreate
|
||||||
| TrustSet
|
| TrustSet
|
||||||
| URITokenBurn
|
|
||||||
| URITokenBuy
|
|
||||||
| URITokenCancelSellOffer
|
|
||||||
| URITokenMint
|
|
||||||
| URITokenCreateSellOffer
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @category Transaction Models
|
* @category Transaction Models
|
||||||
@@ -148,10 +130,6 @@ export function validate(transaction: Record<string, unknown>): void {
|
|||||||
validateCheckCreate(tx)
|
validateCheckCreate(tx)
|
||||||
break
|
break
|
||||||
|
|
||||||
case 'ClaimReward':
|
|
||||||
validateClaimReward(tx)
|
|
||||||
break
|
|
||||||
|
|
||||||
case 'DepositPreauth':
|
case 'DepositPreauth':
|
||||||
validateDepositPreauth(tx)
|
validateDepositPreauth(tx)
|
||||||
break
|
break
|
||||||
@@ -240,26 +218,6 @@ export function validate(transaction: Record<string, unknown>): void {
|
|||||||
validateTrustSet(tx)
|
validateTrustSet(tx)
|
||||||
break
|
break
|
||||||
|
|
||||||
case 'URITokenMint':
|
|
||||||
validateURITokenMint(tx)
|
|
||||||
break
|
|
||||||
|
|
||||||
case 'URITokenBurn':
|
|
||||||
validateURITokenBurn(tx)
|
|
||||||
break
|
|
||||||
|
|
||||||
case 'URITokenCreateSellOffer':
|
|
||||||
validateURITokenCreateSellOffer(tx)
|
|
||||||
break
|
|
||||||
|
|
||||||
case 'URITokenBuy':
|
|
||||||
validateURITokenBuy(tx)
|
|
||||||
break
|
|
||||||
|
|
||||||
case 'URITokenCancelSellOffer':
|
|
||||||
validateURITokenCancelSellOffer(tx)
|
|
||||||
break
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw new ValidationError(
|
throw new ValidationError(
|
||||||
`Invalid field TransactionType: ${tx.TransactionType}`,
|
`Invalid field TransactionType: ${tx.TransactionType}`,
|
||||||
|
|||||||
@@ -1,60 +0,0 @@
|
|||||||
import { ValidationError } from '../../errors'
|
|
||||||
|
|
||||||
import { BaseTransaction, validateBaseTransaction } from './common'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Map of flags to boolean values representing {@link URITokenBurn} transaction
|
|
||||||
* flags.
|
|
||||||
*
|
|
||||||
* @category Transaction Flags
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* ```typescript
|
|
||||||
* const tx: URITokenBurn = {
|
|
||||||
* Account: 'rhFcpWDHLqpBmX4ezWiA5VLSS4e1BHqhHd',
|
|
||||||
* URITokenID: '7AFCE32EBA8BD310CC2D00BE10B76E2183337EA20444D4580E4DBDB396C101FB',
|
|
||||||
* TransactionType: 'URITokenBurn',
|
|
||||||
* }
|
|
||||||
*
|
|
||||||
* // Autofill the tx to see how flags actually look compared to the interface usage.
|
|
||||||
* const autofilledTx = await client.autofill(tx)
|
|
||||||
* console.log(autofilledTx)
|
|
||||||
* // {
|
|
||||||
* // Account: 'rhFcpWDHLqpBmX4ezWiA5VLSS4e1BHqhHd',
|
|
||||||
* // URITokenID: '7AFCE32EBA8BD310CC2D00BE10B76E2183337EA20444D4580E4DBDB396C101FB',
|
|
||||||
* // TransactionType: 'URITokenBurn',
|
|
||||||
* // Sequence: 21970384,
|
|
||||||
* // Fee: '12',
|
|
||||||
* // LastLedgerSequence: 21970404
|
|
||||||
* // }
|
|
||||||
* ```
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An URITokenBurn transaction is effectively a limit order . It defines an
|
|
||||||
* intent to exchange currencies, and creates an Offer object if not completely.
|
|
||||||
* Fulfilled when placed. Offers can be partially fulfilled.
|
|
||||||
*
|
|
||||||
* @category Transaction Models
|
|
||||||
*/
|
|
||||||
export interface URITokenBurn extends BaseTransaction {
|
|
||||||
TransactionType: 'URITokenBurn'
|
|
||||||
/**
|
|
||||||
* Identifies the URIToken object to be removed by the transaction.
|
|
||||||
*/
|
|
||||||
URITokenID: string
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Verify the form and type of an URITokenBurn at runtime.
|
|
||||||
*
|
|
||||||
* @param tx - An URITokenBurn Transaction.
|
|
||||||
* @throws When the URITokenBurn is Malformed.
|
|
||||||
*/
|
|
||||||
export function validateURITokenBurn(tx: Record<string, unknown>): void {
|
|
||||||
validateBaseTransaction(tx)
|
|
||||||
|
|
||||||
if (tx.URITokenID == null) {
|
|
||||||
throw new ValidationError('NFTokenBurn: missing field URITokenID')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
import { ValidationError } from '../../errors'
|
|
||||||
import { Amount } from '../common'
|
|
||||||
|
|
||||||
import { BaseTransaction, isAmount, validateBaseTransaction } from './common'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Map of flags to boolean values representing {@link URITokenBuy} transaction
|
|
||||||
* flags.
|
|
||||||
*
|
|
||||||
* @category Transaction Flags
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* ```typescript
|
|
||||||
* const tx: URITokenBuy = {
|
|
||||||
* Account: 'rhFcpWDHLqpBmX4ezWiA5VLSS4e1BHqhHd',
|
|
||||||
* URITokenID: '7AFCE32EBA8BD310CC2D00BE10B76E2183337EA20444D4580E4DBDB396C101FB',
|
|
||||||
* Amount: '1000000',
|
|
||||||
* TransactionType: 'URITokenBuy',
|
|
||||||
* }
|
|
||||||
*
|
|
||||||
* // Autofill the tx to see how flags actually look compared to the interface usage.
|
|
||||||
* const autofilledTx = await client.autofill(tx)
|
|
||||||
* console.log(autofilledTx)
|
|
||||||
* // {
|
|
||||||
* // Account: 'rhFcpWDHLqpBmX4ezWiA5VLSS4e1BHqhHd',
|
|
||||||
* // URITokenID: '7AFCE32EBA8BD310CC2D00BE10B76E2183337EA20444D4580E4DBDB396C101FB',
|
|
||||||
* // Amount: '1000000',
|
|
||||||
* // TransactionType: 'URITokenBuy',
|
|
||||||
* // Sequence: 21970384,
|
|
||||||
* // Fee: '12',
|
|
||||||
* // LastLedgerSequence: 21970404
|
|
||||||
* // }
|
|
||||||
* ```
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An URITokenBuy transaction is effectively a limit order . It defines an
|
|
||||||
* intent to exchange currencies, and creates an Offer object if not completely.
|
|
||||||
* Fulfilled when placed. Offers can be partially fulfilled.
|
|
||||||
*
|
|
||||||
* @category Transaction Models
|
|
||||||
*/
|
|
||||||
export interface URITokenBuy extends BaseTransaction {
|
|
||||||
TransactionType: 'URITokenBuy'
|
|
||||||
/**
|
|
||||||
* Identifies the URITokenID of the NFToken object that the
|
|
||||||
* offer references.
|
|
||||||
*/
|
|
||||||
URITokenID: string
|
|
||||||
/**
|
|
||||||
* Indicates the amount expected or offered for the Token.
|
|
||||||
*
|
|
||||||
* The amount must be non-zero, except when this is a sell
|
|
||||||
* offer and the asset is XRP. This would indicate that the current
|
|
||||||
* owner of the token is giving it away free, either to anyone at all,
|
|
||||||
* or to the account identified by the Destination field.
|
|
||||||
*/
|
|
||||||
Amount: Amount
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Verify the form and type of an URITokenBuy at runtime.
|
|
||||||
*
|
|
||||||
* @param tx - An URITokenBuy Transaction.
|
|
||||||
* @throws When the URITokenBuy is Malformed.
|
|
||||||
*/
|
|
||||||
export function validateURITokenBuy(tx: Record<string, unknown>): void {
|
|
||||||
validateBaseTransaction(tx)
|
|
||||||
|
|
||||||
if (tx.Account === tx.Destination) {
|
|
||||||
throw new ValidationError(
|
|
||||||
'URITokenBuy: Destination and Account must not be equal',
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tx.URITokenID == null) {
|
|
||||||
throw new ValidationError('URITokenBuy: missing field URITokenID')
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isAmount(tx.Amount)) {
|
|
||||||
throw new ValidationError('URITokenBuy: invalid Amount')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
import { ValidationError } from '../../errors'
|
|
||||||
|
|
||||||
import { BaseTransaction, validateBaseTransaction } from './common'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Map of flags to boolean values representing {@link URITokenCancelSellOffer} transaction
|
|
||||||
* flags.
|
|
||||||
*
|
|
||||||
* @category Transaction Flags
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* ```typescript
|
|
||||||
* const tx: URITokenCancelSellOffer = {
|
|
||||||
* Account: 'rhFcpWDHLqpBmX4ezWiA5VLSS4e1BHqhHd',
|
|
||||||
* URITokenID: '7AFCE32EBA8BD310CC2D00BE10B76E2183337EA20444D4580E4DBDB396C101FB',
|
|
||||||
* TransactionType: 'URITokenCancelSellOffer',
|
|
||||||
* }
|
|
||||||
*
|
|
||||||
* // Autofill the tx to see how flags actually look compared to the interface usage.
|
|
||||||
* const autofilledTx = await client.autofill(tx)
|
|
||||||
* console.log(autofilledTx)
|
|
||||||
* // {
|
|
||||||
* // Account: 'rhFcpWDHLqpBmX4ezWiA5VLSS4e1BHqhHd',
|
|
||||||
* // URITokenID: '7AFCE32EBA8BD310CC2D00BE10B76E2183337EA20444D4580E4DBDB396C101FB',
|
|
||||||
* // TransactionType: 'URITokenCancelSellOffer',
|
|
||||||
* // Sequence: 21970384,
|
|
||||||
* // Fee: '12',
|
|
||||||
* // LastLedgerSequence: 21970404
|
|
||||||
* // }
|
|
||||||
* ```
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An URITokenCancelSellOffer transaction is effectively a limit order . It defines an
|
|
||||||
* intent to exchange currencies, and creates an Offer object if not completely.
|
|
||||||
* Fulfilled when placed. Offers can be partially fulfilled.
|
|
||||||
*
|
|
||||||
* @category Transaction Models
|
|
||||||
*/
|
|
||||||
export interface URITokenCancelSellOffer extends BaseTransaction {
|
|
||||||
TransactionType: 'URITokenCancelSellOffer'
|
|
||||||
/**
|
|
||||||
* Identifies the URITokenID of the NFToken object that the
|
|
||||||
* offer references.
|
|
||||||
*/
|
|
||||||
URITokenID: string
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Verify the form and type of an URITokenCancelSellOffer at runtime.
|
|
||||||
*
|
|
||||||
* @param tx - An URITokenCancelSellOffer Transaction.
|
|
||||||
* @throws When the URITokenCancelSellOffer is Malformed.
|
|
||||||
*/
|
|
||||||
export function validateURITokenCancelSellOffer(
|
|
||||||
tx: Record<string, unknown>,
|
|
||||||
): void {
|
|
||||||
validateBaseTransaction(tx)
|
|
||||||
|
|
||||||
if (tx.URITokenID == null) {
|
|
||||||
throw new ValidationError(
|
|
||||||
'URITokenCancelSellOffer: missing field URITokenID',
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
import { ValidationError } from '../../errors'
|
|
||||||
import { Amount } from '../common'
|
|
||||||
|
|
||||||
import { BaseTransaction, isAmount, validateBaseTransaction } from './common'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Map of flags to boolean values representing {@link URITokenCreateSellOffer} transaction
|
|
||||||
* flags.
|
|
||||||
*
|
|
||||||
* @category Transaction Flags
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* ```typescript
|
|
||||||
* const tx: URITokenCreateSellOffer = {
|
|
||||||
* Account: 'rhFcpWDHLqpBmX4ezWiA5VLSS4e1BHqhHd',
|
|
||||||
* URITokenID: '7AFCE32EBA8BD310CC2D00BE10B76E2183337EA20444D4580E4DBDB396C101FB',
|
|
||||||
* Amount: '1000000',
|
|
||||||
* TransactionType: 'URITokenCreateSellOffer',
|
|
||||||
* }
|
|
||||||
*
|
|
||||||
* // Autofill the tx to see how flags actually look compared to the interface usage.
|
|
||||||
* const autofilledTx = await client.autofill(tx)
|
|
||||||
* console.log(autofilledTx)
|
|
||||||
* // {
|
|
||||||
* // Account: 'rhFcpWDHLqpBmX4ezWiA5VLSS4e1BHqhHd',
|
|
||||||
* // URITokenID: '7AFCE32EBA8BD310CC2D00BE10B76E2183337EA20444D4580E4DBDB396C101FB',
|
|
||||||
* // Amount: '1000000',
|
|
||||||
* // TransactionType: 'URITokenCreateSellOffer',
|
|
||||||
* // Sequence: 21970384,
|
|
||||||
* // Fee: '12',
|
|
||||||
* // LastLedgerSequence: 21970404
|
|
||||||
* // }
|
|
||||||
* ```
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An URITokenCreateSellOffer transaction is effectively a limit order . It defines an
|
|
||||||
* intent to exchange currencies, and creates an Offer object if not completely.
|
|
||||||
* Fulfilled when placed. Offers can be partially fulfilled.
|
|
||||||
*
|
|
||||||
* @category Transaction Models
|
|
||||||
*/
|
|
||||||
export interface URITokenCreateSellOffer extends BaseTransaction {
|
|
||||||
TransactionType: 'URITokenCreateSellOffer'
|
|
||||||
/**
|
|
||||||
* Identifies the URITokenID of the NFToken object that the
|
|
||||||
* offer references.
|
|
||||||
*/
|
|
||||||
URITokenID: string
|
|
||||||
/**
|
|
||||||
* Indicates the amount expected or offered for the Token.
|
|
||||||
*
|
|
||||||
* The amount must be non-zero, except when this is a sell
|
|
||||||
* offer and the asset is XRP. This would indicate that the current
|
|
||||||
* owner of the token is giving it away free, either to anyone at all,
|
|
||||||
* or to the account identified by the Destination field.
|
|
||||||
*/
|
|
||||||
Amount: Amount
|
|
||||||
/**
|
|
||||||
* If present, indicates that this offer may only be
|
|
||||||
* accepted by the specified account. Attempts by other
|
|
||||||
* accounts to accept this offer MUST fail.
|
|
||||||
*/
|
|
||||||
Destination?: string
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Verify the form and type of an URITokenCreateSellOffer at runtime.
|
|
||||||
*
|
|
||||||
* @param tx - An URITokenCreateSellOffer Transaction.
|
|
||||||
* @throws When the URITokenCreateSellOffer is Malformed.
|
|
||||||
*/
|
|
||||||
export function validateURITokenCreateSellOffer(
|
|
||||||
tx: Record<string, unknown>,
|
|
||||||
): void {
|
|
||||||
validateBaseTransaction(tx)
|
|
||||||
|
|
||||||
if (tx.Account === tx.Destination) {
|
|
||||||
throw new ValidationError(
|
|
||||||
'URITokenCreateSellOffer: Destination and Account must not be equal',
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tx.URITokenID == null) {
|
|
||||||
throw new ValidationError(
|
|
||||||
'URITokenCreateSellOffer: missing field URITokenID',
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isAmount(tx.Amount)) {
|
|
||||||
throw new ValidationError('URITokenCreateSellOffer: invalid Amount')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
import { ValidationError } from '../../errors'
|
|
||||||
import { isHex } from '../utils'
|
|
||||||
|
|
||||||
import { BaseTransaction, GlobalFlags, validateBaseTransaction } from './common'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Transaction Flags for an URITokenMint Transaction.
|
|
||||||
*
|
|
||||||
* @category Transaction Flags
|
|
||||||
*/
|
|
||||||
export enum URITokenMintFlags {
|
|
||||||
/**
|
|
||||||
* If set, indicates that the minted token may be burned by the issuer even
|
|
||||||
* if the issuer does not currently hold the token. The current holder of
|
|
||||||
* the token may always burn it.
|
|
||||||
*/
|
|
||||||
tfBurnable = 0x00000001,
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Map of flags to boolean values representing {@link URITokenMint} transaction
|
|
||||||
* flags.
|
|
||||||
*
|
|
||||||
* @category Transaction Flags
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* ```typescript
|
|
||||||
* const tx: URITokenMint = {
|
|
||||||
* Account: 'rhFcpWDHLqpBmX4ezWiA5VLSS4e1BHqhHd',
|
|
||||||
* URI: '697066733A2F2F434944',
|
|
||||||
* TransactionType: 'URITokenMint',
|
|
||||||
* Flags: {
|
|
||||||
* tfBurnable: true,
|
|
||||||
* },
|
|
||||||
* }
|
|
||||||
*
|
|
||||||
* // Autofill the tx to see how flags actually look compared to the interface usage.
|
|
||||||
* const autofilledTx = await client.autofill(tx)
|
|
||||||
* console.log(autofilledTx)
|
|
||||||
* // {
|
|
||||||
* // Account: 'rhFcpWDHLqpBmX4ezWiA5VLSS4e1BHqhHd',
|
|
||||||
* // URI: '697066733A2F2F434944',
|
|
||||||
* // TransactionType: 'URITokenMint',
|
|
||||||
* // Flags: 0,
|
|
||||||
* // Sequence: 21970384,
|
|
||||||
* // Fee: '12',
|
|
||||||
* // LastLedgerSequence: 21970404
|
|
||||||
* // }
|
|
||||||
* ```
|
|
||||||
*/
|
|
||||||
export interface URITokenMintFlagsInterface extends GlobalFlags {
|
|
||||||
tfBurnable?: boolean
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An URITokenMint transaction is effectively a limit order . It defines an
|
|
||||||
* intent to exchange currencies, and creates an Offer object if not completely.
|
|
||||||
* Fulfilled when placed. Offers can be partially fulfilled.
|
|
||||||
*
|
|
||||||
* @category Transaction Models
|
|
||||||
*/
|
|
||||||
export interface URITokenMint extends BaseTransaction {
|
|
||||||
TransactionType: 'URITokenMint'
|
|
||||||
Flags?: number | URITokenMintFlagsInterface
|
|
||||||
/**
|
|
||||||
* URI that points to the data and/or metadata associated with the NFT.
|
|
||||||
* This field need not be an HTTP or HTTPS URL; it could be an IPFS URI, a
|
|
||||||
* magnet link, immediate data encoded as an RFC2379 "data" URL, or even an
|
|
||||||
* opaque issuer-specific encoding. The URI is NOT checked for validity, but
|
|
||||||
* the field is limited to a maximum length of 256 bytes.
|
|
||||||
*
|
|
||||||
* This field must be hex-encoded. You can use `convertStringToHex` to
|
|
||||||
* convert this field to the proper encoding.
|
|
||||||
*/
|
|
||||||
URI: string
|
|
||||||
|
|
||||||
Digest?: string
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Verify the form and type of an URITokenMint at runtime.
|
|
||||||
*
|
|
||||||
* @param tx - An URITokenMint Transaction.
|
|
||||||
* @throws When the URITokenMint is Malformed.
|
|
||||||
*/
|
|
||||||
export function validateURITokenMint(tx: Record<string, unknown>): void {
|
|
||||||
validateBaseTransaction(tx)
|
|
||||||
|
|
||||||
if (typeof tx.URI === 'string' && !isHex(tx.URI)) {
|
|
||||||
throw new ValidationError('URITokenMint: URI must be in hex format')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -83,11 +83,7 @@ export function hashSignedTx(tx: Transaction | string): string {
|
|||||||
txObject = tx
|
txObject = tx
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (txObject.TxnSignature === undefined && txObject.Signers === undefined) {
|
||||||
!txObject.EmitDetails &&
|
|
||||||
txObject.TxnSignature === undefined &&
|
|
||||||
txObject.Signers === undefined
|
|
||||||
) {
|
|
||||||
throw new ValidationError('The transaction must be signed to hash it.')
|
throw new ValidationError('The transaction must be signed to hash it.')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,6 @@
|
|||||||
import { decodeAccountID } from '@transia/ripple-address-codec'
|
import { decodeAccountID } from '@transia/ripple-address-codec'
|
||||||
import BigNumber from 'bignumber.js'
|
import BigNumber from 'bignumber.js'
|
||||||
|
|
||||||
import { convertStringToHex } from '../stringConversion'
|
|
||||||
|
|
||||||
import hashLedger, {
|
import hashLedger, {
|
||||||
hashLedgerHeader,
|
hashLedgerHeader,
|
||||||
hashSignedTx,
|
hashSignedTx,
|
||||||
@@ -186,18 +184,4 @@ export function hashPaymentChannel(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Compute the Hash of an URIToken LedgerEntry.
|
|
||||||
*
|
|
||||||
* @param issuer - Address of the issuer of the URIToken.
|
|
||||||
* @param uri - string uri of the URIToken (not the hex).
|
|
||||||
* @returns The hash of the URIToken LedgerEntry.
|
|
||||||
* @category Utilities
|
|
||||||
*/
|
|
||||||
export function hashURIToken(issuer: string, uri: string): string {
|
|
||||||
return sha512Half(
|
|
||||||
ledgerSpaceHex('uriToken') + addressToHex(issuer) + convertStringToHex(uri),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export { hashLedgerHeader, hashSignedTx, hashLedger, hashStateTree, hashTxTree }
|
export { hashLedgerHeader, hashSignedTx, hashLedger, hashStateTree, hashTxTree }
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ const ledgerSpaces = {
|
|||||||
signerList: 'S',
|
signerList: 'S',
|
||||||
paychan: 'x',
|
paychan: 'x',
|
||||||
check: 'C',
|
check: 'C',
|
||||||
uriToken: 'U',
|
|
||||||
depositPreauth: 'p',
|
depositPreauth: 'p',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ import {
|
|||||||
hashLedgerHeader,
|
hashLedgerHeader,
|
||||||
hashEscrow,
|
hashEscrow,
|
||||||
hashPaymentChannel,
|
hashPaymentChannel,
|
||||||
hashURIToken,
|
|
||||||
} from './hashes'
|
} from './hashes'
|
||||||
import { calculateHookOn, hexHookParameters, TTS } from './hooks'
|
import { calculateHookOn, hexHookParameters, TTS } from './hooks'
|
||||||
import parseNFTokenID from './parseNFTokenID'
|
import parseNFTokenID from './parseNFTokenID'
|
||||||
@@ -174,7 +173,6 @@ const hashes = {
|
|||||||
hashLedgerHeader,
|
hashLedgerHeader,
|
||||||
hashEscrow,
|
hashEscrow,
|
||||||
hashPaymentChannel,
|
hashPaymentChannel,
|
||||||
hashURIToken,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
|||||||
@@ -18,9 +18,8 @@ describe('SignerListSet', function () {
|
|||||||
})
|
})
|
||||||
afterEach(async () => teardownClient(testContext))
|
afterEach(async () => teardownClient(testContext))
|
||||||
|
|
||||||
// Add signerlist
|
|
||||||
it(
|
it(
|
||||||
'add',
|
'base',
|
||||||
async () => {
|
async () => {
|
||||||
const tx: SignerListSet = {
|
const tx: SignerListSet = {
|
||||||
TransactionType: 'SignerListSet',
|
TransactionType: 'SignerListSet',
|
||||||
@@ -45,18 +44,4 @@ describe('SignerListSet', function () {
|
|||||||
},
|
},
|
||||||
TIMEOUT,
|
TIMEOUT,
|
||||||
)
|
)
|
||||||
|
|
||||||
// Remove signerlist
|
|
||||||
it(
|
|
||||||
'remove',
|
|
||||||
async () => {
|
|
||||||
const tx: SignerListSet = {
|
|
||||||
TransactionType: 'SignerListSet',
|
|
||||||
Account: testContext.wallet.classicAddress,
|
|
||||||
SignerQuorum: 0,
|
|
||||||
}
|
|
||||||
await testTransaction(testContext.client, tx, testContext.wallet)
|
|
||||||
},
|
|
||||||
TIMEOUT,
|
|
||||||
)
|
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ describe('SetHook', function () {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
it(`throws w/ maximum of 10 members allowed in Hooks`, function () {
|
it(`throws w/ maximum of 4 members allowed in Hooks`, function () {
|
||||||
setHookTx.Hooks = []
|
setHookTx.Hooks = []
|
||||||
const hook = {
|
const hook = {
|
||||||
Hook: {
|
Hook: {
|
||||||
@@ -88,14 +88,8 @@ describe('SetHook', function () {
|
|||||||
setHookTx.Hooks.push(hook)
|
setHookTx.Hooks.push(hook)
|
||||||
setHookTx.Hooks.push(hook)
|
setHookTx.Hooks.push(hook)
|
||||||
setHookTx.Hooks.push(hook)
|
setHookTx.Hooks.push(hook)
|
||||||
setHookTx.Hooks.push(hook)
|
|
||||||
setHookTx.Hooks.push(hook)
|
|
||||||
setHookTx.Hooks.push(hook)
|
|
||||||
setHookTx.Hooks.push(hook)
|
|
||||||
setHookTx.Hooks.push(hook)
|
|
||||||
setHookTx.Hooks.push(hook)
|
|
||||||
|
|
||||||
const errorMessage = 'SetHook: maximum of 10 hooks allowed in Hooks'
|
const errorMessage = 'SetHook: maximum of 4 hooks allowed in Hooks'
|
||||||
assert.throws(
|
assert.throws(
|
||||||
() => validateSetHook(setHookTx),
|
() => validateSetHook(setHookTx),
|
||||||
ValidationError,
|
ValidationError,
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import {
|
|||||||
hashAccountRoot,
|
hashAccountRoot,
|
||||||
hashOfferId,
|
hashOfferId,
|
||||||
hashSignerListId,
|
hashSignerListId,
|
||||||
hashURIToken,
|
|
||||||
} from '../../src/utils/hashes'
|
} from '../../src/utils/hashes'
|
||||||
import fixtures from '../fixtures/rippled'
|
import fixtures from '../fixtures/rippled'
|
||||||
import { assertResultMatch } from '../testUtils'
|
import { assertResultMatch } from '../testUtils'
|
||||||
@@ -144,16 +143,6 @@ describe('Hashes', function () {
|
|||||||
assert.equal(actualEntryHash, expectedEntryHash)
|
assert.equal(actualEntryHash, expectedEntryHash)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('calcURITokenEntryHash', function () {
|
|
||||||
const issuer = 'rDx69ebzbowuqztksVDmZXjizTd12BVr4x'
|
|
||||||
const uri = 'ipfs://cid'
|
|
||||||
const expectedEntryHash =
|
|
||||||
'AFC4233E5C4094952DEF5483DC41488C8744D1268F897C0CB25DE66399591399'
|
|
||||||
const actualEntryHash = hashURIToken(issuer, uri)
|
|
||||||
|
|
||||||
assert.equal(actualEntryHash, expectedEntryHash)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Hash a signed transaction correctly', function () {
|
it('Hash a signed transaction correctly', function () {
|
||||||
const expected_hash =
|
const expected_hash =
|
||||||
'458101D51051230B1D56E9ACAFAA34451BF65FA000F95DF6F0FF5B3A62D83FC2'
|
'458101D51051230B1D56E9ACAFAA34451BF65FA000F95DF6F0FF5B3A62D83FC2'
|
||||||
|
|||||||
Reference in New Issue
Block a user