import { CallBuilder } from "./call_builder";
/**
* Creates a new {@link TradesCallBuilder} pointed to server defined by serverUrl.
* Do not create this object directly, use {@link Server#trades}.
*
* @class TradesCallBuilder
* @extends CallBuilder
* @constructor
* @see [Trades](https://developers.stellar.org/api/resources/trades/)
* @param {string} serverUrl serverUrl Horizon server URL.
*/
export class TradesCallBuilder extends CallBuilder {
constructor(serverUrl) {
super(serverUrl, "trades");
this.url.segment("trades");
}
/**
* Filter trades for a specific asset pair (orderbook)
* @param {Asset} base asset
* @param {Asset} counter asset
* @returns {TradesCallBuilder} current TradesCallBuilder instance
*/
forAssetPair(base, counter) {
if (!base.isNative()) {
this.url.setQuery("base_asset_type", base.getAssetType());
this.url.setQuery("base_asset_code", base.getCode());
this.url.setQuery("base_asset_issuer", base.getIssuer());
}
else {
this.url.setQuery("base_asset_type", "native");
}
if (!counter.isNative()) {
this.url.setQuery("counter_asset_type", counter.getAssetType());
this.url.setQuery("counter_asset_code", counter.getCode());
this.url.setQuery("counter_asset_issuer", counter.getIssuer());
}
else {
this.url.setQuery("counter_asset_type", "native");
}
return this;
}
/**
* Filter trades for a specific offer
* @param {string} offerId ID of the offer
* @returns {TradesCallBuilder} current TradesCallBuilder instance
*/
forOffer(offerId) {
this.url.setQuery("offer_id", offerId);
return this;
}
/**
* Filter trades by a specific type.
* @param {ServerApi.TradeType} tradeType the trade type to filter by.
* @returns {TradesCallBuilder} current TradesCallBuilder instance.
*/
forType(tradeType) {
this.url.setQuery("trade_type", tradeType);
return this;
}
/**
* Filter trades for a specific account
* @see [Trades for Account](https://developers.stellar.org/api/resources/accounts/trades/)
* @param {string} accountId For example: `GBYTR4MC5JAX4ALGUBJD7EIKZVM7CUGWKXIUJMRSMK573XH2O7VAK3SR`
* @returns {TradesCallBuilder} current TradesCallBuilder instance
*/
forAccount(accountId) {
return this.forEndpoint("accounts", accountId);
}
/**
* Filter trades for a specific liquidity pool
* @see [Trades for Liquidity Pool](https://developers.stellar.org/api/resources/liquiditypools/trades/)
* @param {string} liquidityPoolId For example: `3b476aff8a406a6ec3b61d5c038009cef85f2ddfaf616822dc4fec92845149b4`
* @returns {TradesCallBuilder} current TradesCallBuilder instance
*/
forLiquidityPool(liquidityPoolId) {
return this.forEndpoint("liquidity_pools", liquidityPoolId);
}
}
//# sourceMappingURL=trades_call_builder.js.map