lib/horizon/account_response.js

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.AccountResponse = void 0;
var _stellarBase = require("@stellar/stellar-base");
/* tslint:disable:variable-name */

/**
 * Do not create this object directly, use {@link Server#loadAccount}.
 *
 * Returns information and links relating to a single account.
 * The balances section in the returned JSON will also list all the trust lines this account has set up.
 * It also contains {@link Account} object and exposes it's methods so can be used in {@link TransactionBuilder}.
 *
 * @see [Account Details](https://developers.stellar.org/api/resources/accounts/object/)
 * @param {string} response Response from horizon account endpoint.
 * @returns {AccountResponse} AccountResponse instance
 */
class AccountResponse {
  constructor(response) {
    this._baseAccount = new _stellarBase.Account(response.account_id, response.sequence);
    // Extract response fields
    // TODO: do it in type-safe manner.
    Object.entries(response).forEach(([key, value]) => {
      this[key] = value;
    });
  }

  /**
   * Get Stellar account public key ex. `GB3KJPLFUYN5VL6R3GU3EGCGVCKFDSD7BEDX42HWG5BWFKB3KQGJJRMA`
   * @returns {string} accountId
   */
  accountId() {
    return this._baseAccount.accountId();
  }

  /**
   * Get the current sequence number
   * @returns {string} sequenceNumber
   */
  sequenceNumber() {
    return this._baseAccount.sequenceNumber();
  }

  /**
   * Increments sequence number in this object by one.
   * @returns {void}
   */
  incrementSequenceNumber() {
    this._baseAccount.incrementSequenceNumber();
    this.sequence = this._baseAccount.sequenceNumber();
  }
}
exports.AccountResponse = AccountResponse;