Compare commits

...

12 Commits

Author SHA1 Message Date
Denis Angell
7981faf92f Publish
- @transia/xrpl@2.7.3-alpha.15
2023-09-27 08:19:48 +02:00
Denis Angell
0cf024cab1 Update UNLReport.ts 2023-09-27 08:19:15 +02:00
Denis Angell
ab34fbeced Publish
- @transia/xrpl@2.7.3-alpha.14
2023-09-27 08:17:01 +02:00
Denis Angell
254ac23893 fixup ledger entries 2023-09-27 08:16:41 +02:00
Denis Angell
68cfcac284 Publish
- @transia/xrpl@2.7.3-alpha.13
2023-09-27 07:38:08 +02:00
Denis Angell
7550476b1a update ledger entries 2023-09-27 07:37:41 +02:00
Denis Angell
39d0a04c22 Update accountObjects.ts 2023-09-26 09:18:57 +02:00
Denis Angell
edc11a1f88 Publish
- @transia/ripple-binary-codec@1.4.6-alpha.3
 - @transia/xrpl@2.7.3-alpha.12
2023-09-26 09:05:42 +02:00
Denis Angell
7c81f14ebf bump new field def test 2023-09-26 09:04:42 +02:00
Denis Angell
37b4848023 lint 2023-09-26 09:04:33 +02:00
Denis Angell
2de5da180e Update definitions.json 2023-09-26 08:59:46 +02:00
Denis Angell
659c5c7a22 add claim reward 2023-09-26 08:48:14 +02:00
16 changed files with 321 additions and 6 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "@transia/ripple-binary-codec",
"version": "1.4.6-alpha.2",
"version": "1.4.6-alpha.3",
"description": "XRP Ledger binary codec",
"files": [
"dist/*",

View File

@@ -37,6 +37,7 @@
"LedgerHashes": 104,
"Amendments": 102,
"FeeSettings": 115,
"ImportVlseq": 73,
"Escrow": 117,
"PayChannel": 120,
"Check": 67,
@@ -796,6 +797,16 @@
"type": "UInt32"
}
],
[
"XahauActivationLgrSeq",
{
"nth": 96,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "UInt32"
}
],
[
"ImportSequence",
{
@@ -806,6 +817,36 @@
"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",
{
@@ -966,6 +1007,36 @@
"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",
{
@@ -1356,6 +1427,36 @@
"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",
{
@@ -2166,6 +2267,46 @@
"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",
{
@@ -2305,6 +2446,46 @@
"isSigningField": true,
"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": {
@@ -2399,6 +2580,7 @@
"tefNO_TICKET": -180,
"tefNFTOKEN_IS_NOT_TRANSFERABLE": -179,
"tefPAST_IMPORT_SEQ": -178,
"tefPAST_IMPORT_VL_SEQ": -177,
"terRETRY": -99,
"terFUNDS_SPENT": -98,
@@ -2526,11 +2708,14 @@
"URITokenBuy": 47,
"URITokenCreateSellOffer": 48,
"URITokenCancelSellOffer": 49,
"GenesisMint": 96,
"Import": 97,
"ClaimReward": 98,
"Invoke": 99,
"EnableAmendment": 100,
"SetFee": 101,
"UNLModify": 102,
"EmitFailure": 103
"EmitFailure": 103,
"UNLReport": 104
}
}

View File

@@ -44,7 +44,7 @@ describe('encode and decode using new types as a parameter', function () {
definitions.FIELDS.push([
'NewFieldDefinition',
{
nth: 100,
nth: 101,
isVLEncoded: false,
isSerialized: true,
isSigningField: true,

View File

@@ -1,6 +1,6 @@
{
"name": "@transia/xrpl",
"version": "2.7.3-alpha.11",
"version": "2.7.3-alpha.15",
"license": "ISC",
"description": "A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser",
"files": [
@@ -23,7 +23,7 @@
},
"dependencies": {
"@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.3",
"@transia/ripple-keypairs": "^1.1.8-alpha.0",
"bignumber.js": "^9.0.0",
"bip32": "^2.0.6",

View File

@@ -72,6 +72,10 @@ export default interface AccountRoot extends BaseLedgerEntry {
* account to each other.
*/
TransferRate?: number
ImportSequence?: string
GovernanceFlags?: string
GovernanceMarks?: string
AccountIndex?: number
}
/**

View File

@@ -24,4 +24,6 @@ export default interface FeeSettings extends BaseLedgerEntry {
* type.
*/
Flags: number
XahauActivationLgrSeq?: number
AccountCount?: number
}

View File

@@ -0,0 +1,19 @@
import BaseLedgerEntry from './BaseLedgerEntry'
/**
*
*
*
* @category Ledger Entries
*/
export default interface ImportVLSequence extends BaseLedgerEntry {
LedgerEntryType: 'ImportVLSequence'
/**
*
*/
PublicKey: string
/**
*
*/
ImportSequence: string
}

View File

@@ -9,6 +9,7 @@ import FeeSettings from './FeeSettings'
import Hook from './Hook'
import HookDefinition from './HookDefinition'
import HookState from './HookState'
import ImportVLSequence from './ImportVLSequence'
import LedgerHashes from './LedgerHashes'
import NegativeUNL from './NegativeUNL'
import Offer from './Offer'
@@ -16,6 +17,8 @@ import PayChannel from './PayChannel'
import RippleState from './RippleState'
import SignerList from './SignerList'
import Ticket from './Ticket'
import UNLReport from './UNLReport'
import URIToken from './URIToken'
type LedgerEntry =
| AccountRoot
@@ -29,6 +32,7 @@ type LedgerEntry =
| Hook
| HookDefinition
| HookState
| ImportVLSequence
| LedgerHashes
| NegativeUNL
| Offer
@@ -36,5 +40,7 @@ type LedgerEntry =
| RippleState
| SignerList
| Ticket
| UNLReport
| URIToken
export default LedgerEntry

View File

@@ -0,0 +1,42 @@
import BaseLedgerEntry from './BaseLedgerEntry'
interface ImportVLKey {
ImportVLKey: {
PublicKey: string
Account?: string
}
}
interface ActiveValidator {
ActiveValidator: {
PublicKey: string
Account?: string
}
}
/**
*
*
*
* @category Ledger Entries
*/
export default interface UNLReport extends BaseLedgerEntry {
LedgerEntryType: 'UNLReport'
/**
*
*/
ImportVLKeys?: ImportVLKey[]
/**
*
*/
ActiveValidators?: ActiveValidator[]
/**
* 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
}

View File

@@ -12,6 +12,7 @@ import FeeSettings from './FeeSettings'
import Hook from './Hook'
import HookDefinition from './HookDefinition'
import HookState from './HookState'
import ImportVLSequence from './ImportVLSequence'
import Ledger from './Ledger'
import LedgerEntry from './LedgerEntry'
import LedgerHashes from './LedgerHashes'
@@ -21,6 +22,7 @@ import PayChannel from './PayChannel'
import RippleState, { RippleStateFlags } from './RippleState'
import SignerList, { SignerListFlags } from './SignerList'
import Ticket from './Ticket'
import UNLReport from './UNLReport'
import URIToken from './URIToken'
export {
@@ -37,6 +39,7 @@ export {
Hook,
HookDefinition,
HookState,
ImportVLSequence,
Ledger,
LedgerEntry,
LedgerHashes,
@@ -49,5 +52,6 @@ export {
SignerList,
SignerListFlags,
Ticket,
UNLReport,
URIToken,
}

View File

@@ -3,6 +3,7 @@ import {
Check,
DepositPreauth,
Escrow,
Hook,
Offer,
PayChannel,
RippleState,
@@ -17,6 +18,7 @@ type AccountObjectType =
| 'check'
| 'deposit_preauth'
| 'escrow'
| 'hook'
| 'nft_offer'
| 'offer'
| 'payment_channel'
@@ -75,6 +77,7 @@ type AccountObject =
| Check
| DepositPreauth
| Escrow
| Hook
| Offer
| PayChannel
| SignerList

View File

@@ -127,6 +127,17 @@ export interface LedgerEntryRequest extends BaseRequest {
namespace_id: string
}
/**
* The Import VL Sequence object to retrieve. If a string, must be the object ID of the VLSequence.
* If an object, requires `public_key` sub-field.
*/
import_vlseq?:
| {
/** The public_key of the Import VL Sequence object. */
public_key: string
}
| string
/**
* 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`

View File

@@ -0,0 +1,28 @@
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')
}
}

View File

@@ -10,6 +10,7 @@ export { AccountDelete } from './accountDelete'
export { CheckCancel } from './checkCancel'
export { CheckCash } from './checkCash'
export { CheckCreate } from './checkCreate'
export { ClaimReward } from './claimReward'
export { DepositPreauth } from './depositPreauth'
export { EscrowCancel } from './escrowCancel'
export { EscrowCreate } from './escrowCreate'

View File

@@ -9,6 +9,7 @@ import { AccountSet, validateAccountSet } from './accountSet'
import { CheckCancel, validateCheckCancel } from './checkCancel'
import { CheckCash, validateCheckCash } from './checkCash'
import { CheckCreate, validateCheckCreate } from './checkCreate'
import { ClaimReward, validateClaimReward } from './claimReward'
import { DepositPreauth, validateDepositPreauth } from './depositPreauth'
import { EscrowCancel, validateEscrowCancel } from './escrowCancel'
import { EscrowCreate, validateEscrowCreate } from './escrowCreate'
@@ -71,6 +72,7 @@ export type Transaction =
| CheckCancel
| CheckCash
| CheckCreate
| ClaimReward
| DepositPreauth
| EscrowCancel
| EscrowCreate
@@ -146,6 +148,10 @@ export function validate(transaction: Record<string, unknown>): void {
validateCheckCreate(tx)
break
case 'ClaimReward':
validateClaimReward(tx)
break
case 'DepositPreauth':
validateDepositPreauth(tx)
break

View File

@@ -83,7 +83,11 @@ export function hashSignedTx(tx: Transaction | string): string {
txObject = tx
}
if (!txObject.EmitDetails && txObject.TxnSignature === undefined && txObject.Signers === undefined) {
if (
!txObject.EmitDetails &&
txObject.TxnSignature === undefined &&
txObject.Signers === undefined
) {
throw new ValidationError('The transaction must be signed to hash it.')
}