-
Notifications
You must be signed in to change notification settings - Fork 320
/
Copy pathoffer_call_builder.ts
105 lines (98 loc) · 3.96 KB
/
offer_call_builder.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import { Asset } from "stellar-base";
import { CallBuilder } from "./call_builder";
import { ServerApi } from "./server_api";
/**
* Creates a new {@link OfferCallBuilder} pointed to server defined by serverUrl.
* Do not create this object directly, use {@link Server#offers}.
*
* @see [Offers](https://developers.stellar.org/api/resources/offers/)
* @class OfferCallBuilder
* @constructor
* @extends CallBuilder
* @param {string|URL} serverUrl Horizon server URL.
*/
export class OfferCallBuilder extends CallBuilder<
ServerApi.CollectionPage<ServerApi.OfferRecord>
> {
constructor(serverUrl: URL | string) {
super(serverUrl, "offers");
this.segment("offers");
}
/**
* The offer details endpoint provides information on a single offer. The offer ID provided in the id
* argument specifies which offer to load.
* @see [Offer Details](https://developers.stellar.org/api/resources/offers/single/)
* @param {string} offerId Offer ID
* @returns {CallBuilder<ServerApi.OfferRecord>} CallBuilder<ServerApi.OfferRecord> OperationCallBuilder instance
*/
public offer(offerId: string): CallBuilder<ServerApi.OfferRecord> {
const builder = new CallBuilder<ServerApi.OfferRecord>(this.clone());
builder.filter.push([offerId]);
return builder;
}
/**
* Returns all offers where the given account is involved.
*
* @see [Offers](https://developers.stellar.org/api/resources/accounts/offers/)
* @param {string} id For example: `GDGQVOKHW4VEJRU2TETD6DBRKEO5ERCNF353LW5WBFW3JJWQ2BRQ6KDD`
* @returns {OfferCallBuilder} current OfferCallBuilder instance
*/
public forAccount(id: string): this {
return this.forEndpoint("accounts", id);
}
/**
* Returns all offers buying an asset.
* @see [Offers](https://developers.stellar.org/api/resources/offers/list/)
* @see Asset
* @param {Asset} asset For example: `new Asset('USD','GDGQVOKHW4VEJRU2TETD6DBRKEO5ERCNF353LW5WBFW3JJWQ2BRQ6KDD')`
* @returns {OfferCallBuilder} current OfferCallBuilder instance
*/
public buying(asset: Asset): this {
if (!asset.isNative()) {
this.url.searchParams.set("buying_asset_type", asset.getAssetType());
this.url.searchParams.set("buying_asset_code", asset.getCode());
this.url.searchParams.set("buying_asset_issuer", asset.getIssuer());
} else {
this.url.searchParams.set("buying_asset_type", "native");
}
return this;
}
/**
* Returns all offers selling an asset.
* @see [Offers](https://developers.stellar.org/api/resources/offers/list/)
* @see Asset
* @param {Asset} asset For example: `new Asset('EUR','GDGQVOKHW4VEJRU2TETD6DBRKEO5ERCNF353LW5WBFW3JJWQ2BRQ6KDD')`
* @returns {OfferCallBuilder} current OfferCallBuilder instance
*/
public selling(asset: Asset): this {
if (!asset.isNative()) {
this.url.searchParams.set("selling_asset_type", asset.getAssetType());
this.url.searchParams.set("selling_asset_code", asset.getCode());
this.url.searchParams.set("selling_asset_issuer", asset.getIssuer());
} else {
this.url.searchParams.set("selling_asset_type", "native");
}
return this;
}
/**
* This endpoint filters offers where the given account is sponsoring the offer entry.
* @see [Offers](https://developers.stellar.org/api/resources/offers/list/)
* @param {string} id For example: `GDGQVOKHW4VEJRU2TETD6DBRKEO5ERCNF353LW5WBFW3JJWQ2BRQ6KDD`
* @returns {OfferCallBuilder} current OfferCallBuilder instance
*/
public sponsor(id: string): this {
this.url.searchParams.set("sponsor", id);
return this;
}
/**
* This endpoint filters offers where the given account is the seller.
*
* @see [Offers](https://developers.stellar.org/api/resources/offers/list/)
* @param {string} seller For example: `GDGQVOKHW4VEJRU2TETD6DBRKEO5ERCNF353LW5WBFW3JJWQ2BRQ6KDD`
* @returns {OfferCallBuilder} current OfferCallBuilder instance
*/
public seller(seller: string): this {
this.url.searchParams.set("seller", seller);
return this;
}
}