evernode-js-client 0.6.36 → 0.6.37

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 (2) hide show
  1. package/index.js +129 -83
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -52488,7 +52488,7 @@ class BaseEvernodeClient {
52488
52488
  * Get the hosts registered in Evernode.
52489
52489
  * @returns The list of hosts.
52490
52490
  */
52491
- async getAllHostsFromLedger() {
52491
+ async getAllHostsFromLedger(skipGetDomain = false) {
52492
52492
  const states = await this.getHookStates();
52493
52493
  let hosts = {};
52494
52494
 
@@ -52508,7 +52508,9 @@ class BaseEvernodeClient {
52508
52508
  const curMomentStartIdx = await this.getMomentStartIndex();
52509
52509
  await Promise.all((hostList).map(async host => {
52510
52510
  const hostAcc = new XrplAccount(host.address, null, { xrplApi: this.xrplApi });
52511
- host.domain = await hostAcc.getDomain();
52511
+ if (!skipGetDomain) {
52512
+ host.domain = await hostAcc.getDomain();
52513
+ }
52512
52514
  host.active = (host.lastHeartbeatIndex > (this.config.hostHeartbeatFreq * this.config.momentSize) ?
52513
52515
  (host.lastHeartbeatIndex >= (curMomentStartIdx - (this.config.hostHeartbeatFreq * this.config.momentSize))) :
52514
52516
  (host.lastHeartbeatIndex > 0));
@@ -53315,10 +53317,11 @@ class HostClient extends BaseEvernodeClient {
53315
53317
  let attempt = 0;
53316
53318
  let feeUplift = 0;
53317
53319
  const maxAttempts = (options?.maxRetryAttempts || 1);
53320
+ let submissionRef = options.submissionRef || {};
53318
53321
  while (attempt <= maxAttempts) {
53319
53322
  attempt++;
53320
53323
  try {
53321
- return await callback(feeUplift);
53324
+ return await callback(feeUplift, submissionRef);
53322
53325
  }
53323
53326
  catch (e) {
53324
53327
  if (attempt == maxAttempts || e.code === "tecDUPLICATE" || e.code === "tefPAST_SEQ" || e.code === "tefALREADY")
@@ -53329,6 +53332,16 @@ class HostClient extends BaseEvernodeClient {
53329
53332
  console.error(e);
53330
53333
  console.error(`Submission attempt ${attempt} failed. Retrying...`);
53331
53334
  await new Promise(resolve => setTimeout(resolve, TX_RETRY_INTERVAL));
53335
+
53336
+ // Check again wether the transaction is validated before retry.
53337
+ const txHash = submissionRef?.submissionResult?.result?.tx_json?.hash;
53338
+ if (txHash) {
53339
+ const txResponse = await this.xrplApi.getTransactionValidatedResults(txHash);
53340
+ if (txResponse && txResponse.code === "tesSUCCESS") {
53341
+ console.log('Transaction is validated and success, Retry skipped!')
53342
+ return txResponse;
53343
+ }
53344
+ }
53332
53345
  }
53333
53346
  }
53334
53347
  }
@@ -53353,15 +53366,15 @@ class HostClient extends BaseEvernodeClient {
53353
53366
  { ...accountSetFields, Domain: domain } : accountSetFields;
53354
53367
 
53355
53368
  if (Object.keys(accountSetFields).length !== 0) {
53356
- await this.#submitWithRetry(async (feeUplift) => {
53357
- await this.xrplAcc.setAccountFields(accountSetFields, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift });
53358
- }, options.retryOptions);
53369
+ await this.#submitWithRetry(async (feeUplift, submissionRef) => {
53370
+ await this.xrplAcc.setAccountFields(accountSetFields, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift, submissionRef: submissionRef });
53371
+ }, { ...(options.retryOptions ? options.retryOptions : {}), submissionRef: options.submissionRef });
53359
53372
  }
53360
53373
 
53361
53374
  if (trustLines.length === 0) {
53362
- await this.#submitWithRetry(async (feeUplift) => {
53363
- await this.xrplAcc.setTrustLine(EvernodeConstants.EVR, this.config.evrIssuerAddress, "99999999999999", null, null, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift });
53364
- }, options.retryOptions);
53375
+ await this.#submitWithRetry(async (feeUplift, submissionRef) => {
53376
+ await this.xrplAcc.setTrustLine(EvernodeConstants.EVR, this.config.evrIssuerAddress, "99999999999999", null, null, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift, submissionRef: submissionRef });
53377
+ }, { ...(options.retryOptions ? options.retryOptions : {}), submissionRef: options.submissionRef });
53365
53378
  }
53366
53379
  }
53367
53380
 
@@ -53424,9 +53437,9 @@ class HostClient extends BaseEvernodeClient {
53424
53437
  const uri = uriBuf.toString('base64');
53425
53438
 
53426
53439
  try {
53427
- await this.#submitWithRetry(async (feeUplift) => {
53428
- await this.xrplAcc.mintURIToken(uri, null, { isBurnable: true, isHexUri: false }, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift });
53429
- }, options.retryOptions);
53440
+ await this.#submitWithRetry(async (feeUplift, submissionRef) => {
53441
+ await this.xrplAcc.mintURIToken(uri, null, { isBurnable: true, isHexUri: false }, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift, submissionRef: submissionRef });
53442
+ }, { ...(options.retryOptions ? options.retryOptions : {}), submissionRef: options.submissionRef });
53430
53443
  } catch (e) {
53431
53444
  // Re-minting the URIToken after burning that sold URIToken.
53432
53445
  if (e.code === "tecDUPLICATE") {
@@ -53442,12 +53455,12 @@ class HostClient extends BaseEvernodeClient {
53442
53455
  if (!uriToken)
53443
53456
  throw "Offer lease NFT creation error.";
53444
53457
 
53445
- await this.#submitWithRetry(async (feeUplift) => {
53458
+ await this.#submitWithRetry(async (feeUplift, submissionRef) => {
53446
53459
  await this.xrplAcc.sellURIToken(uriToken.index,
53447
53460
  leaseAmount.toString(),
53448
53461
  EvernodeConstants.EVR,
53449
- this.config.evrIssuerAddress, null, null, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift });
53450
- }, options.retryOptions);
53462
+ this.config.evrIssuerAddress, null, null, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift, submissionRef: submissionRef });
53463
+ }, { ...(options.retryOptions ? options.retryOptions : {}), submissionRef: options.submissionRef });
53451
53464
  }
53452
53465
 
53453
53466
  /**
@@ -53509,9 +53522,9 @@ class HostClient extends BaseEvernodeClient {
53509
53522
  const uri = uriBuf.toString('base64');
53510
53523
 
53511
53524
  try {
53512
- await this.#submitWithRetry(async (feeUplift) => {
53513
- await this.xrplAcc.mintURIToken(uri, null, { isBurnable: true, isHexUri: false }, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift });
53514
- }, options.retryOptions);
53525
+ await this.#submitWithRetry(async (feeUplift, submissionRef) => {
53526
+ await this.xrplAcc.mintURIToken(uri, null, { isBurnable: true, isHexUri: false }, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift, submissionRef: submissionRef });
53527
+ }, { ...(options.retryOptions ? options.retryOptions : {}), submissionRef: options.submissionRef });
53515
53528
  } catch (e) {
53516
53529
  // Re-minting the URIToken after burning that sold URIToken.
53517
53530
  if (e.code === "tecDUPLICATE") {
@@ -53530,11 +53543,11 @@ class HostClient extends BaseEvernodeClient {
53530
53543
  * @param {number} leaseAmount Amount (EVRs) of the lease offer.
53531
53544
  */
53532
53545
  async offerMintedLease(uriTokenId, leaseAmount, options = {}) {
53533
- await this.#submitWithRetry(async (feeUplift) => {
53546
+ await this.#submitWithRetry(async (feeUplift, submissionRef) => {
53534
53547
  await this.xrplAcc.sellURIToken(uriTokenId, leaseAmount.toString(),
53535
53548
  EvernodeConstants.EVR,
53536
- this.config.evrIssuerAddress, null, null, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift });
53537
- }, options.retryOptions);
53549
+ this.config.evrIssuerAddress, null, null, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift, submissionRef: submissionRef });
53550
+ }, { ...(options.retryOptions ? options.retryOptions : {}), submissionRef: options.submissionRef });
53538
53551
  }
53539
53552
 
53540
53553
  /**
@@ -53542,9 +53555,9 @@ class HostClient extends BaseEvernodeClient {
53542
53555
  * @param {string} uriTokenId Hex URI token id of the lease.
53543
53556
  */
53544
53557
  async expireLease(uriTokenId, options = {}) {
53545
- await this.#submitWithRetry(async (feeUplift) => {
53546
- await this.xrplAcc.burnURIToken(uriTokenId, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift });
53547
- }, options.retryOptions);
53558
+ await this.#submitWithRetry(async (feeUplift, submissionRef) => {
53559
+ await this.xrplAcc.burnURIToken(uriTokenId, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift, submissionRef: submissionRef });
53560
+ }, { ...(options.retryOptions ? options.retryOptions : {}), submissionRef: options.submissionRef });
53548
53561
  }
53549
53562
 
53550
53563
  /**
@@ -53564,9 +53577,9 @@ class HostClient extends BaseEvernodeClient {
53564
53577
  const sellOffer = (await registryAcc.getURITokens()).find(o => o.index == regInfo.uriTokenId && o.Amount);
53565
53578
  console.log('Pending sell offer found.')
53566
53579
  if (sellOffer) {
53567
- await this.#submitWithRetry(async (feeUplift) => {
53568
- await this.xrplAcc.buyURIToken(sellOffer, null, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift });
53569
- }, options.retryOptions);
53580
+ await this.#submitWithRetry(async (feeUplift, submissionRef) => {
53581
+ await this.xrplAcc.buyURIToken(sellOffer, null, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift, submissionRef: submissionRef });
53582
+ }, { ...(options.retryOptions ? options.retryOptions : {}), submissionRef: options.submissionRef });
53570
53583
  console.log("Registration was successfully completed after acquiring the NFT.");
53571
53584
  return await this.isRegistered();
53572
53585
  }
@@ -53627,9 +53640,9 @@ class HostClient extends BaseEvernodeClient {
53627
53640
  if (existingLeaseURITokens) {
53628
53641
  console.log("Burning unsold URITokens related to the previous leases.");
53629
53642
  for (const uriToken of existingLeaseURITokens) {
53630
- await this.#submitWithRetry(async (feeUplift) => {
53631
- await this.xrplAcc.burnURIToken(uriToken.index, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift });
53632
- }, options.retryOptions);
53643
+ await this.#submitWithRetry(async (feeUplift, submissionRef) => {
53644
+ await this.xrplAcc.burnURIToken(uriToken.index, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift, submissionRef: submissionRef });
53645
+ }, { ...(options.retryOptions ? options.retryOptions : {}), submissionRef: options.submissionRef });
53633
53646
  }
53634
53647
  }
53635
53648
 
@@ -53669,7 +53682,7 @@ class HostClient extends BaseEvernodeClient {
53669
53682
  Buffer.from(description.substr(0, 26), "utf-8").copy(paramBuf, HOST_DESCRIPTION_PARAM_OFFSET);
53670
53683
  Buffer.from(emailAddress.substr(0, 40), "utf-8").copy(paramBuf, HOST_EMAIL_ADDRESS_PARAM_OFFSET);
53671
53684
 
53672
- const tx = await this.#submitWithRetry(async (feeUplift) => {
53685
+ const tx = await this.#submitWithRetry(async (feeUplift, submissionRef) => {
53673
53686
  return await this.xrplAcc.makePayment(this.config.registryAddress,
53674
53687
  (transferredNFTokenId) ? EvernodeConstants.NOW_IN_EVRS : this.config.hostRegFee.toString(),
53675
53688
  EvernodeConstants.EVR,
@@ -53681,10 +53694,10 @@ class HostClient extends BaseEvernodeClient {
53681
53694
  { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: paramBuf.toString('hex').toUpperCase() }
53682
53695
  ],
53683
53696
  maxLedgerIndex: this.#getMaxLedgerSequence(),
53684
- feeUplift: feeUplift,
53697
+ feeUplift: feeUplift, submissionRef: submissionRef,
53685
53698
  ...options.transactionOptions
53686
53699
  });
53687
- }, options.retryOptions);
53700
+ }, { ...(options.retryOptions ? options.retryOptions : {}), submissionRef: options.submissionRef });
53688
53701
 
53689
53702
  console.log('Waiting for the sell offer', tx.id)
53690
53703
  const registryAcc = new XrplAccount(this.config.registryAddress, null, { xrplApi: this.xrplApi });
@@ -53722,9 +53735,9 @@ class HostClient extends BaseEvernodeClient {
53722
53735
  resolve();
53723
53736
  });
53724
53737
 
53725
- await this.#submitWithRetry(async (feeUplift) => {
53726
- await this.xrplAcc.buyURIToken(sellOffer, null, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift });
53727
- }, options.retryOptions);
53738
+ await this.#submitWithRetry(async (feeUplift, submissionRef) => {
53739
+ await this.xrplAcc.buyURIToken(sellOffer, null, { maxLedgerIndex: this.#getMaxLedgerSequence(), feeUplift: feeUplift, submissionRef: submissionRef });
53740
+ }, { ...(options.retryOptions ? options.retryOptions : {}), submissionRef: options.submissionRef });
53728
53741
  return await this.isRegistered();
53729
53742
  }
53730
53743
 
@@ -53747,7 +53760,7 @@ class HostClient extends BaseEvernodeClient {
53747
53760
  paramBuf.writeUInt8(1, 32);
53748
53761
  }
53749
53762
 
53750
- await this.#submitWithRetry(async (feeUplift) => {
53763
+ await this.#submitWithRetry(async (feeUplift, submissionRef) => {
53751
53764
  await this.xrplAcc.makePayment(this.config.registryAddress,
53752
53765
  XrplConstants.MIN_DROPS,
53753
53766
  null,
@@ -53759,10 +53772,10 @@ class HostClient extends BaseEvernodeClient {
53759
53772
  { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: paramBuf.toString('hex').toUpperCase() }
53760
53773
  ],
53761
53774
  maxLedgerIndex: this.#getMaxLedgerSequence(),
53762
- feeUplift: feeUplift,
53775
+ feeUplift: feeUplift, submissionRef: submissionRef,
53763
53776
  ...options.transactionOptions
53764
53777
  });
53765
- }, options.retryOptions);
53778
+ }, { ...(options.retryOptions ? options.retryOptions : {}), submissionRef: options.submissionRef });
53766
53779
 
53767
53780
  return await this.isRegistered();
53768
53781
  }
@@ -53812,7 +53825,7 @@ class HostClient extends BaseEvernodeClient {
53812
53825
  paramBuf.writeUInt8(components[2], HOST_UPDATE_VERSION_PARAM_OFFSET + 2);
53813
53826
  }
53814
53827
 
53815
- return await this.#submitWithRetry(async (feeUplift) => {
53828
+ return await this.#submitWithRetry(async (feeUplift, submissionRef) => {
53816
53829
  return await this.xrplAcc.makePayment(this.config.registryAddress,
53817
53830
  XrplConstants.MIN_DROPS,
53818
53831
  null,
@@ -53824,10 +53837,10 @@ class HostClient extends BaseEvernodeClient {
53824
53837
  { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: paramBuf.toString('hex') }
53825
53838
  ],
53826
53839
  maxLedgerIndex: this.#getMaxLedgerSequence(),
53827
- feeUplift: feeUplift,
53840
+ feeUplift: feeUplift, submissionRef: submissionRef,
53828
53841
  ...options.transactionOptions
53829
53842
  });
53830
- }, options.retryOptions);
53843
+ }, { ...(options.retryOptions ? options.retryOptions : {}), submissionRef: options.submissionRef });
53831
53844
 
53832
53845
  }
53833
53846
 
@@ -53865,7 +53878,8 @@ class HostClient extends BaseEvernodeClient {
53865
53878
  ...(data ? [{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: data }] : [])
53866
53879
  ],
53867
53880
  maxLedgerIndex: this.#getMaxLedgerSequence(),
53868
- ...options.transactionOptions
53881
+ ...options.transactionOptions,
53882
+ submissionRef: options.submissionRef
53869
53883
  });
53870
53884
  return res;
53871
53885
  }
@@ -53932,7 +53946,8 @@ class HostClient extends BaseEvernodeClient {
53932
53946
  { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: txHash }
53933
53947
  ],
53934
53948
  maxLedgerIndex: this.#getMaxLedgerSequence(),
53935
- ...options.transactionOptions
53949
+ ...options.transactionOptions,
53950
+ submissionRef: options.submissionRef
53936
53951
  });
53937
53952
  }
53938
53953
 
@@ -53960,7 +53975,8 @@ class HostClient extends BaseEvernodeClient {
53960
53975
  { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: txHash }
53961
53976
  ],
53962
53977
  maxLedgerIndex: this.#getMaxLedgerSequence(),
53963
- ...options.transactionOptions
53978
+ ...options.transactionOptions,
53979
+ submissionRef: options.submissionRef
53964
53980
  });
53965
53981
  }
53966
53982
 
@@ -53989,7 +54005,8 @@ class HostClient extends BaseEvernodeClient {
53989
54005
  { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: txHash }
53990
54006
  ],
53991
54007
  maxLedgerIndex: this.#getMaxLedgerSequence(),
53992
- ...options.transactionOptions
54008
+ ...options.transactionOptions,
54009
+ submissionRef: options.submissionRef
53993
54010
  });
53994
54011
  }
53995
54012
 
@@ -54018,7 +54035,8 @@ class HostClient extends BaseEvernodeClient {
54018
54035
  { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: txHash }
54019
54036
  ],
54020
54037
  maxLedgerIndex: this.#getMaxLedgerSequence(),
54021
- ...options.transactionOptions
54038
+ ...options.transactionOptions,
54039
+ submissionRef: options.submissionRef
54022
54040
  });
54023
54041
  }
54024
54042
 
@@ -54044,7 +54062,8 @@ class HostClient extends BaseEvernodeClient {
54044
54062
  { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: txHash }
54045
54063
  ],
54046
54064
  maxLedgerIndex: this.#getMaxLedgerSequence(),
54047
- ...options.transactionOptions
54065
+ ...options.transactionOptions,
54066
+ submissionRef: options.submissionRef
54048
54067
  });
54049
54068
  }
54050
54069
 
@@ -54066,7 +54085,8 @@ class HostClient extends BaseEvernodeClient {
54066
54085
  { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.HOST_REBATE }
54067
54086
  ],
54068
54087
  maxLedgerIndex: this.#getMaxLedgerSequence(),
54069
- ...options.transactionOptions
54088
+ ...options.transactionOptions,
54089
+ submissionRef: options.submissionRef
54070
54090
  });
54071
54091
  }
54072
54092
 
@@ -54092,7 +54112,7 @@ class HostClient extends BaseEvernodeClient {
54092
54112
 
54093
54113
  const regUriToken = await this.getRegistrationUriToken();
54094
54114
 
54095
- await this.#submitWithRetry(async (feeUplift) => {
54115
+ await this.#submitWithRetry(async (feeUplift, submissionRef) => {
54096
54116
  await this.xrplAcc.sellURIToken(regUriToken.index,
54097
54117
  XrplConstants.MIN_DROPS,
54098
54118
  null,
@@ -54105,10 +54125,10 @@ class HostClient extends BaseEvernodeClient {
54105
54125
  { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: paramData.toString('hex') }
54106
54126
  ],
54107
54127
  maxLedgerIndex: this.#getMaxLedgerSequence(),
54108
- feeUplift: feeUplift,
54128
+ feeUplift: feeUplift, submissionRef: submissionRef,
54109
54129
  ...options.transactionOptions
54110
54130
  });
54111
- }, options.retryOptions);
54131
+ }, { ...(options.retryOptions ? options.retryOptions : {}), submissionRef: options.submissionRef });
54112
54132
 
54113
54133
  let token = null;
54114
54134
  let attempts = 0;
@@ -56518,7 +56538,7 @@ class XrplAccount {
56518
56538
 
56519
56539
  async setAccountFields(fields, options = {}) {
56520
56540
  const preparedTxn = await this.prepareSetAccountFields(fields, options);
56521
- return await this.signAndSubmit(preparedTxn);
56541
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
56522
56542
  }
56523
56543
 
56524
56544
  async prepareSetAccountFields(fields, options = {}) {
@@ -56565,7 +56585,7 @@ class XrplAccount {
56565
56585
  async setSignerList(signerList = [], options = {}) {
56566
56586
 
56567
56587
  const preparedTxn = await this.prepareSetSignerList(signerList, options);
56568
- return await this.signAndSubmit(preparedTxn);
56588
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
56569
56589
  }
56570
56590
 
56571
56591
  /**
@@ -56611,7 +56631,7 @@ class XrplAccount {
56611
56631
 
56612
56632
  async makePayment(toAddr, amount, currency = null, issuer = null, memos = null, options = {}) {
56613
56633
  const preparedTxn = await this.prepareMakePayment(toAddr, amount, currency, issuer, memos, options);
56614
- return await this.signAndSubmit(preparedTxn);
56634
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
56615
56635
  }
56616
56636
 
56617
56637
  async prepareMakePayment(toAddr, amount, currency = null, issuer = null, memos = null, options = {}) {
@@ -56630,7 +56650,7 @@ class XrplAccount {
56630
56650
 
56631
56651
  async setTrustLine(currency, issuer, limit, allowRippling = false, memos = null, options = {}) {
56632
56652
  const preparedTxn = await this.prepareSetTrustLine(currency, issuer, limit, allowRippling, memos, options);
56633
- return await this.signAndSubmit(preparedTxn);
56653
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
56634
56654
  }
56635
56655
 
56636
56656
  async prepareSetTrustLine(currency, issuer, limit, allowRippling = false, memos = null, options = {}) {
@@ -56658,7 +56678,7 @@ class XrplAccount {
56658
56678
 
56659
56679
  async setRegularKey(regularKey, memos = null, options = {}) {
56660
56680
  const preparedTxn = await this.prepareSetRegularKey(regularKey, memos, options);
56661
- return await this.signAndSubmit(preparedTxn);
56681
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
56662
56682
  }
56663
56683
 
56664
56684
  async prepareSetRegularKey(regularKey, memos = null, options = {}) {
@@ -56674,7 +56694,7 @@ class XrplAccount {
56674
56694
 
56675
56695
  async cashCheck(check, options = {}) {
56676
56696
  const preparedTxn = await this.prepareCashCheck(check, options);
56677
- return await this.signAndSubmit(preparedTxn);
56697
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
56678
56698
  }
56679
56699
 
56680
56700
  async prepareCashCheck(check, options = {}) {
@@ -56701,7 +56721,7 @@ class XrplAccount {
56701
56721
 
56702
56722
  async offerSell(sellAmount, sellCurrency, sellIssuer, forAmount, forCurrency, forIssuer = null, expiration = 4294967295, memos = null, options = {}) {
56703
56723
  const preparedTxn = await this.prepareOfferSell(sellAmount, sellCurrency, sellIssuer, forAmount, forCurrency, forIssuer, expiration, memos, options);
56704
- return await this.signAndSubmit(preparedTxn);
56724
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
56705
56725
  }
56706
56726
 
56707
56727
  async prepareOfferSell(sellAmount, sellCurrency, sellIssuer, forAmount, forCurrency, forIssuer = null, expiration = 4294967295, memos = null, options = {}) {
@@ -56722,7 +56742,7 @@ class XrplAccount {
56722
56742
 
56723
56743
  async offerBuy(buyAmount, buyCurrency, buyIssuer, forAmount, forCurrency, forIssuer = null, expiration = 4294967295, memos = null, options = {}) {
56724
56744
  const preparedTxn = await this.prepareOfferBuy(buyAmount, buyCurrency, buyIssuer, forAmount, forCurrency, forIssuer, expiration, memos, options);
56725
- return await this.signAndSubmit(preparedTxn);
56745
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
56726
56746
  }
56727
56747
 
56728
56748
  async prepareOfferBuy(buyAmount, buyCurrency, buyIssuer, forAmount, forCurrency, forIssuer = null, expiration = 4294967295, memos = null, options = {}) {
@@ -56743,7 +56763,7 @@ class XrplAccount {
56743
56763
 
56744
56764
  async cancelOffer(offerSequence, memos = null, options = {}) {
56745
56765
  const preparedTxn = await this.prepareCancelOffer(offerSequence, memos, options);
56746
- return await this.signAndSubmit(preparedTxn);
56766
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
56747
56767
  }
56748
56768
 
56749
56769
  async prepareCancelOffer(offerSequence, memos = null, options = {}) {
@@ -56758,7 +56778,7 @@ class XrplAccount {
56758
56778
 
56759
56779
  async mintNft(uri, taxon, transferFee, flags = {}, memos = null, options = {}) {
56760
56780
  const preparedTxn = await this.prepareMintNft(uri, taxon, transferFee, flags, memos, options);
56761
- return await this.signAndSubmit(preparedTxn);
56781
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
56762
56782
  }
56763
56783
 
56764
56784
  async prepareMintNft(uri, taxon, transferFee, flags = {}, memos = null, options = {}) {
@@ -56776,7 +56796,7 @@ class XrplAccount {
56776
56796
 
56777
56797
  async offerSellNft(nfTokenId, amount, currency, issuer = null, destination = null, expiration = 4294967295, memos = null, options = {}) {
56778
56798
  const preparedTxn = await this.prepareOfferSellNft(nfTokenId, amount, currency, issuer, destination, expiration, memos, options);
56779
- return await this.signAndSubmit(preparedTxn);
56799
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
56780
56800
  }
56781
56801
 
56782
56802
  async prepareOfferSellNft(nfTokenId, amount, currency, issuer = null, destination = null, expiration = 4294967295, memos = null, options = {}) {
@@ -56798,7 +56818,7 @@ class XrplAccount {
56798
56818
 
56799
56819
  async offerBuyNft(nfTokenId, owner, amount, currency, issuer = null, expiration = 4294967295, memos = null, options = {}) {
56800
56820
  const preparedTxn = await this.prepareOfferSellNft(nfTokenId, owner, amount, currency, issuer, expiration, memos, options);
56801
- return await this.signAndSubmit(preparedTxn);
56821
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
56802
56822
  }
56803
56823
 
56804
56824
  async prepareOfferBuyNft(nfTokenId, owner, amount, currency, issuer = null, expiration = 4294967295, memos = null, options = {}) {
@@ -56821,7 +56841,7 @@ class XrplAccount {
56821
56841
 
56822
56842
  async sellNft(offerId, memos = null, options = {}) {
56823
56843
  const preparedTxn = await this.prepareSellNft(offerId, memos, options);
56824
- return await this.signAndSubmit(preparedTxn);
56844
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
56825
56845
  }
56826
56846
 
56827
56847
  async prepareSellNft(offerId, memos = null, options = {}) {
@@ -56837,7 +56857,7 @@ class XrplAccount {
56837
56857
 
56838
56858
  async buyNft(offerId, memos = null, options = {}) {
56839
56859
  const preparedTxn = await this.prepareBuyNft(offerId, memos, options);
56840
- return await this.signAndSubmit(preparedTxn);
56860
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
56841
56861
  }
56842
56862
 
56843
56863
  async prepareBuyNft(offerId, memos = null, options = {}) {
@@ -56853,7 +56873,7 @@ class XrplAccount {
56853
56873
 
56854
56874
  async burnNft(nfTokenId, owner = null, memos = null, options = {}) {
56855
56875
  const preparedTxn = await this.prepareBurnNft(nfTokenId, owner, memos, options);
56856
- return await this.signAndSubmit(preparedTxn);
56876
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
56857
56877
  }
56858
56878
 
56859
56879
  async prepareBurnNft(nfTokenId, owner = null, memos = null, options = {}) {
@@ -56969,7 +56989,7 @@ class XrplAccount {
56969
56989
 
56970
56990
  async mintURIToken(uri, digest = null, flags = {}, options = {}) {
56971
56991
  const preparedTxn = await this.prepareMintURIToken(uri, digest, flags, options);
56972
- return await this.signAndSubmit(preparedTxn);
56992
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
56973
56993
  }
56974
56994
 
56975
56995
  async prepareMintURIToken(uri, digest = null, flags = {}, options = {}) {
@@ -56989,7 +57009,7 @@ class XrplAccount {
56989
57009
 
56990
57010
  async burnURIToken(uriTokenID, options = {}) {
56991
57011
  const preparedTxn = await this.prepareBurnURIToken(uriTokenID, options);
56992
- return await this.signAndSubmit(preparedTxn);
57012
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
56993
57013
  }
56994
57014
 
56995
57015
  async prepareBurnURIToken(uriTokenID, options = {}) {
@@ -57003,7 +57023,7 @@ class XrplAccount {
57003
57023
 
57004
57024
  async sellURIToken(uriTokenID, amount, currency, issuer = null, toAddr = null, memos = null, options = {}) {
57005
57025
  const preparedTxn = await this.prepareSellURIToken(uriTokenID, amount, currency, issuer, toAddr, memos, options);
57006
- return await this.signAndSubmit(preparedTxn);
57026
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
57007
57027
  }
57008
57028
 
57009
57029
  async prepareSellURIToken(uriTokenID, amount, currency, issuer = null, toAddr = null, memos = null, options = {}) {
@@ -57029,7 +57049,7 @@ class XrplAccount {
57029
57049
 
57030
57050
  async buyURIToken(uriToken, memos = null, options = {}) {
57031
57051
  const preparedTxn = await this.prepareBuyURIToken(uriToken, memos, options);
57032
- return await this.signAndSubmit(preparedTxn);
57052
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
57033
57053
  }
57034
57054
 
57035
57055
  async prepareBuyURIToken(uriToken, memos = null, options = {}) {
@@ -57051,7 +57071,7 @@ class XrplAccount {
57051
57071
 
57052
57072
  async clearURITokenOffer(uriTokenID, options = {}) {
57053
57073
  const preparedTxn = await this.prepareClearURITokenOffer(uriTokenID, options);
57054
- return await this.signAndSubmit(preparedTxn);
57074
+ return await this.signAndSubmit(preparedTxn, options.submissionRef);
57055
57075
  }
57056
57076
 
57057
57077
  async prepareClearURITokenOffer(uriTokenID, options = {}) {
@@ -57133,11 +57153,12 @@ class XrplAccount {
57133
57153
  /**
57134
57154
  * Sign and submit prepared transaction.
57135
57155
  * @param {object} preparedTransaction Prepared transaction.
57156
+ * @param {object} submissionRef [Optional] Reference object to take submission references.
57136
57157
  * @returns result of the submitted transaction.
57137
57158
  */
57138
- async signAndSubmit(preparedTransaction) {
57159
+ async signAndSubmit(preparedTransaction, submissionRef = {}) {
57139
57160
  const signedTxn = this.sign(preparedTransaction, false);
57140
- return await this.xrplApi.submitAndWait(preparedTransaction, signedTxn.tx_blob);
57161
+ return await this.xrplApi.submitAndWait(preparedTransaction, signedTxn.tx_blob, submissionRef);
57141
57162
  }
57142
57163
 
57143
57164
  /**
@@ -57458,12 +57479,12 @@ class XrplApi {
57458
57479
  if (res.filter(r => r && !r.error).length == 0)
57459
57480
  throw res.filter(r => r && r.error).map(r => r.error);
57460
57481
 
57461
- await this.#waitForConnection();
57462
- this.#releaseClient();
57463
-
57464
57482
  // After connection established, check again whether maintainConnections has become false.
57465
57483
  // This is in case the consumer has called disconnect() while connection is being established.
57466
57484
  if (!this.#isPermanentlyDisconnected) {
57485
+ await this.#waitForConnection();
57486
+ this.#releaseClient();
57487
+
57467
57488
  this.ledgerIndex = await this.#getLedgerIndex();
57468
57489
 
57469
57490
  this.#subscribeToStream('ledger');
@@ -57473,6 +57494,7 @@ class XrplApi {
57473
57494
  await this.#handleClientRequest({ command: 'subscribe', accounts: this.#addressSubscriptions.map(s => s.address) });
57474
57495
  }
57475
57496
  else {
57497
+ this.#releaseClient();
57476
57498
  await this.disconnect();
57477
57499
  }
57478
57500
  }
@@ -57691,6 +57713,28 @@ class XrplApi {
57691
57713
  await this.#handleClientRequest({ command: 'subscribe', streams: [streamName] });
57692
57714
  }
57693
57715
 
57716
+ /**
57717
+ * Get the transaction results if validated.
57718
+ * @param {string} txHash Hash of the transaction to check.
57719
+ * @returns Validated results of the transaction.
57720
+ */
57721
+ async getTransactionValidatedResults(txHash) {
57722
+ const txResponse = await this.getTxnInfo(txHash)
57723
+ .catch((e) => {
57724
+ return null;
57725
+ });
57726
+
57727
+ if (txResponse?.validated) {
57728
+ return {
57729
+ id: txResponse?.hash,
57730
+ code: txResponse?.meta?.TransactionResult,
57731
+ details: txResponse
57732
+ };
57733
+ }
57734
+
57735
+ return null;
57736
+ }
57737
+
57694
57738
  /**
57695
57739
  * Watching to acquire the transaction submission. (Waits until txn. is applied to the ledger.)
57696
57740
  * @param {string} txHash Transaction Hash
@@ -57764,12 +57808,13 @@ class XrplApi {
57764
57808
  /**
57765
57809
  * Submit a multi-signature transaction and wait for validation.
57766
57810
  * @param {object} tx Multi-signed transaction object.
57811
+ * @param {object} submissionRef [Optional] Reference object to take submission references.
57767
57812
  * @returns response object of the validated transaction.
57768
57813
  */
57769
- async submitMultisignedAndWait(tx) {
57814
+ async submitMultisignedAndWait(tx, submissionRef = {}) {
57770
57815
  tx.SigningPubKey = "";
57771
- const submissionResult = await this.#handleClientRequest({ command: 'submit_multisigned', tx_json: tx });
57772
- return await this.#prepareResponse(tx, submissionResult);
57816
+ submissionRef.submissionResult = await this.#handleClientRequest({ command: 'submit_multisigned', tx_json: tx });
57817
+ return await this.#prepareResponse(tx, submissionRef.submissionResult);
57773
57818
  }
57774
57819
 
57775
57820
  /**
@@ -57785,11 +57830,12 @@ class XrplApi {
57785
57830
  /**
57786
57831
  * Submit a single-signature transaction.
57787
57832
  * @param {string} tx_blob Signed transaction object.
57833
+ * @param {object} submissionRef [Optional] Reference object to take submission references.
57788
57834
  * @returns response object of the validated transaction.
57789
57835
  */
57790
- async submitAndWait(tx, tx_blob) {
57791
- const submissionResult = await this.#handleClientRequest({ command: 'submit', tx_blob: tx_blob });
57792
- return await this.#prepareResponse(tx, submissionResult);
57836
+ async submitAndWait(tx, tx_blob, submissionRef = {}) {
57837
+ submissionRef.submissionResult = await this.#handleClientRequest({ command: 'submit', tx_blob: tx_blob });
57838
+ return await this.#prepareResponse(tx, submissionRef.submissionResult);
57793
57839
  }
57794
57840
 
57795
57841
  /**
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  ],
7
7
  "homepage": "https://github.com/HotPocketDev/evernode-js-client",
8
8
  "license": "SEE LICENSE IN https://raw.githubusercontent.com/EvernodeXRPL/evernode-resources/main/license/evernode-license.pdf",
9
- "version": "0.6.36",
9
+ "version": "0.6.37",
10
10
  "dependencies": {
11
11
  "elliptic": "6.5.4",
12
12
  "libsodium-wrappers": "0.7.10",