Source

lib/horizon/trades_call_builder.js

  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.TradesCallBuilder = void 0;
  6. var _call_builder = require("./call_builder");
  7. /**
  8. * Creates a new {@link TradesCallBuilder} pointed to server defined by serverUrl.
  9. *
  10. * Do not create this object directly, use {@link Horizon.Server#trades}.
  11. *
  12. * @see {@link https://developers.stellar.org/docs/data/horizon/api-reference/resources/trades|Trades}
  13. *
  14. * @augments CallBuilder
  15. * @private
  16. * @class
  17. *
  18. * @param {string} serverUrl serverUrl Horizon server URL.
  19. */
  20. class TradesCallBuilder extends _call_builder.CallBuilder {
  21. constructor(serverUrl) {
  22. super(serverUrl, "trades");
  23. this.url.segment("trades");
  24. }
  25. /**
  26. * Filter trades for a specific asset pair (orderbook)
  27. * @param {Asset} base asset
  28. * @param {Asset} counter asset
  29. * @returns {TradesCallBuilder} current TradesCallBuilder instance
  30. */
  31. forAssetPair(base, counter) {
  32. if (!base.isNative()) {
  33. this.url.setQuery("base_asset_type", base.getAssetType());
  34. this.url.setQuery("base_asset_code", base.getCode());
  35. this.url.setQuery("base_asset_issuer", base.getIssuer());
  36. } else {
  37. this.url.setQuery("base_asset_type", "native");
  38. }
  39. if (!counter.isNative()) {
  40. this.url.setQuery("counter_asset_type", counter.getAssetType());
  41. this.url.setQuery("counter_asset_code", counter.getCode());
  42. this.url.setQuery("counter_asset_issuer", counter.getIssuer());
  43. } else {
  44. this.url.setQuery("counter_asset_type", "native");
  45. }
  46. return this;
  47. }
  48. /**
  49. * Filter trades for a specific offer
  50. * @param {string} offerId ID of the offer
  51. * @returns {TradesCallBuilder} current TradesCallBuilder instance
  52. */
  53. forOffer(offerId) {
  54. this.url.setQuery("offer_id", offerId);
  55. return this;
  56. }
  57. /**
  58. * Filter trades by a specific type.
  59. * @param {ServerApi.TradeType} tradeType the trade type to filter by.
  60. * @returns {TradesCallBuilder} current TradesCallBuilder instance.
  61. */
  62. forType(tradeType) {
  63. this.url.setQuery("trade_type", tradeType);
  64. return this;
  65. }
  66. /**
  67. * Filter trades for a specific account
  68. * @see {@link https://developers.stellar.org/docs/data/horizon/api-reference/resources/get-trades-by-account-id|Trades for Account}
  69. * @param {string} accountId For example: `GBYTR4MC5JAX4ALGUBJD7EIKZVM7CUGWKXIUJMRSMK573XH2O7VAK3SR`
  70. * @returns {TradesCallBuilder} current TradesCallBuilder instance
  71. */
  72. forAccount(accountId) {
  73. return this.forEndpoint("accounts", accountId);
  74. }
  75. /**
  76. * Filter trades for a specific liquidity pool
  77. * @see {@link https://developers.stellar.org/docs/data/horizon/api-reference/resources/retrieve-related-trades|Trades for Liquidity Pool}
  78. * @param {string} liquidityPoolId For example: `3b476aff8a406a6ec3b61d5c038009cef85f2ddfaf616822dc4fec92845149b4`
  79. * @returns {TradesCallBuilder} current TradesCallBuilder instance
  80. */
  81. forLiquidityPool(liquidityPoolId) {
  82. return this.forEndpoint("liquidity_pools", liquidityPoolId);
  83. }
  84. }
  85. exports.TradesCallBuilder = TradesCallBuilder;