@1stdex/first-sdk 1.0.77 → 1.0.78

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.
@@ -11,8 +11,36 @@ const toCurrency = (currencyDto) => ({
11
11
  decimals: Number(currencyDto.decimals),
12
12
  });
13
13
  const toTrade = (chainId, tradeDto) => {
14
- const inputCurrency = toCurrency(tradeDto.inputToken);
15
- const outputCurrency = toCurrency(tradeDto.outputToken);
14
+ let inputCurrency;
15
+ let outputCurrency;
16
+ let inputAmount;
17
+ let outputAmount;
18
+ let usdAmount;
19
+ if ('inputToken' in tradeDto) {
20
+ inputCurrency = toCurrency(tradeDto.inputToken);
21
+ outputCurrency = toCurrency(tradeDto.outputToken);
22
+ inputAmount = tradeDto.inputAmount;
23
+ outputAmount = tradeDto.outputAmount;
24
+ usdAmount = tradeDto.amountUSD;
25
+ }
26
+ else {
27
+ const isBid = BigInt(tradeDto.tick) < 0n;
28
+ const quote = toCurrency(tradeDto.quote);
29
+ const base = toCurrency(tradeDto.base);
30
+ if (isBid) {
31
+ inputCurrency = quote;
32
+ outputCurrency = base;
33
+ inputAmount = tradeDto.claimedQuoteAmount;
34
+ outputAmount = tradeDto.claimedBaseAmount;
35
+ }
36
+ else {
37
+ inputCurrency = base;
38
+ outputCurrency = quote;
39
+ inputAmount = tradeDto.claimedBaseAmount;
40
+ outputAmount = tradeDto.claimedQuoteAmount;
41
+ }
42
+ usdAmount = tradeDto.claimedAmountUSD;
43
+ }
16
44
  const quote = toCurrency(tradeDto.book.quote);
17
45
  const base = toCurrency(tradeDto.book.base);
18
46
  const { quoteTokenAddress } = (0, market_id_1.getMarketId)(chainId, [
@@ -23,20 +51,21 @@ const toTrade = (chainId, tradeDto) => {
23
51
  return {
24
52
  id: tradeDto.id,
25
53
  type: isBuy ? 'buy' : 'sell',
26
- usdAmount: tradeDto.amountUSD,
54
+ usdAmount,
27
55
  spent: {
28
56
  currency: inputCurrency,
29
- amount: (0, viem_1.formatUnits)(BigInt(tradeDto.inputAmount), inputCurrency.decimals),
57
+ amount: (0, viem_1.formatUnits)(BigInt(inputAmount), inputCurrency.decimals),
30
58
  direction: 'out',
31
59
  },
32
60
  taken: {
33
61
  currency: outputCurrency,
34
- amount: (0, viem_1.formatUnits)(BigInt(tradeDto.outputAmount), outputCurrency.decimals),
62
+ amount: (0, viem_1.formatUnits)(BigInt(outputAmount), outputCurrency.decimals),
35
63
  direction: 'in',
36
64
  },
37
65
  timestamp: Number(tradeDto.timestamp),
38
66
  txHash: tradeDto.transaction.id,
39
67
  logIndex: Number(tradeDto.logIndex),
68
+ bookId: tradeDto.book.id,
40
69
  };
41
70
  };
42
71
  async function fetchTradeHistoryFromSubgraph(chainId, userAddress, options) {
@@ -91,7 +120,7 @@ async function fetchTradeHistoryFromSubgraph(chainId, userAddress, options) {
91
120
  amountUSD
92
121
  type
93
122
  }
94
- makerFills(
123
+ claims(
95
124
  where: ${whereClause}
96
125
  orderBy: timestamp
97
126
  orderDirection: desc
@@ -106,17 +135,26 @@ async function fetchTradeHistoryFromSubgraph(chainId, userAddress, options) {
106
135
  quote { id name symbol decimals }
107
136
  base { id name symbol decimals }
108
137
  }
109
- inputToken { id name symbol decimals }
110
- outputToken { id name symbol decimals }
111
- inputAmount
112
- outputAmount
113
- amountUSD
138
+ quote { id name symbol decimals }
139
+ base { id name symbol decimals }
140
+ trader
141
+ tick
142
+ claimedBaseAmount
143
+ claimedQuoteAmount
144
+ claimedAmountUSD
114
145
  type
115
146
  }
116
147
  }
117
148
  `;
118
- const { data: { takes, makerFills }, } = await subgraph_1.Subgraph.get(chainId, 'getTradeHistory', query, {});
119
- const allTrades = [...takes, ...makerFills].sort((a, b) => Number(b.timestamp) - Number(a.timestamp));
149
+ const response = await subgraph_1.Subgraph.get(chainId, 'getTradeHistory', query, {});
150
+ if (response.errors) {
151
+ throw new Error(`Subgraph query failed: ${response.errors.map((e) => e.message).join(', ')}`);
152
+ }
153
+ if (!response.data) {
154
+ throw new Error('Subgraph returned no data');
155
+ }
156
+ const { takes, claims } = response.data;
157
+ const allTrades = [...takes, ...claims].sort((a, b) => Number(b.timestamp) - Number(a.timestamp));
120
158
  const hasNextPage = allTrades.length > limit;
121
159
  const trades = allTrades.slice(0, limit);
122
160
  const endCursor = trades.length > 0 ? trades[trades.length - 1].timestamp : null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/trade/apis/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/trade/apis/index.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,42 @@ const toCurrency = (currencyDto) => ({
8
8
  decimals: Number(currencyDto.decimals),
9
9
  });
10
10
  const toTrade = (chainId, tradeDto) => {
11
- const inputCurrency = toCurrency(tradeDto.inputToken);
12
- const outputCurrency = toCurrency(tradeDto.outputToken);
11
+ let inputCurrency;
12
+ let outputCurrency;
13
+ let inputAmount;
14
+ let outputAmount;
15
+ let usdAmount;
16
+ // Check if it's a Take or a Claim
17
+ if ('inputToken' in tradeDto) {
18
+ // Take entity
19
+ inputCurrency = toCurrency(tradeDto.inputToken);
20
+ outputCurrency = toCurrency(tradeDto.outputToken);
21
+ inputAmount = tradeDto.inputAmount;
22
+ outputAmount = tradeDto.outputAmount;
23
+ usdAmount = tradeDto.amountUSD;
24
+ }
25
+ else {
26
+ // Claim entity
27
+ // For claims: tick < 0 means bid (buy), tick >= 0 means ask (sell)
28
+ const isBid = BigInt(tradeDto.tick) < 0n;
29
+ const quote = toCurrency(tradeDto.quote);
30
+ const base = toCurrency(tradeDto.base);
31
+ if (isBid) {
32
+ // Bid order claim: spent quote, received base
33
+ inputCurrency = quote;
34
+ outputCurrency = base;
35
+ inputAmount = tradeDto.claimedQuoteAmount;
36
+ outputAmount = tradeDto.claimedBaseAmount;
37
+ }
38
+ else {
39
+ // Ask order claim: spent base, received quote
40
+ inputCurrency = base;
41
+ outputCurrency = quote;
42
+ inputAmount = tradeDto.claimedBaseAmount;
43
+ outputAmount = tradeDto.claimedQuoteAmount;
44
+ }
45
+ usdAmount = tradeDto.claimedAmountUSD;
46
+ }
13
47
  const quote = toCurrency(tradeDto.book.quote);
14
48
  const base = toCurrency(tradeDto.book.base);
15
49
  // Determine the market's quote token
@@ -24,20 +58,21 @@ const toTrade = (chainId, tradeDto) => {
24
58
  return {
25
59
  id: tradeDto.id,
26
60
  type: isBuy ? 'buy' : 'sell',
27
- usdAmount: tradeDto.amountUSD,
61
+ usdAmount,
28
62
  spent: {
29
63
  currency: inputCurrency,
30
- amount: formatUnits(BigInt(tradeDto.inputAmount), inputCurrency.decimals),
64
+ amount: formatUnits(BigInt(inputAmount), inputCurrency.decimals),
31
65
  direction: 'out',
32
66
  },
33
67
  taken: {
34
68
  currency: outputCurrency,
35
- amount: formatUnits(BigInt(tradeDto.outputAmount), outputCurrency.decimals),
69
+ amount: formatUnits(BigInt(outputAmount), outputCurrency.decimals),
36
70
  direction: 'in',
37
71
  },
38
72
  timestamp: Number(tradeDto.timestamp),
39
73
  txHash: tradeDto.transaction.id,
40
74
  logIndex: Number(tradeDto.logIndex),
75
+ bookId: tradeDto.book.id,
41
76
  };
42
77
  };
43
78
  /**
@@ -78,7 +113,7 @@ export async function fetchTradeHistoryFromSubgraph(chainId, userAddress, option
78
113
  else {
79
114
  whereClause = `{and: [${baseFilters.join(', ')}]}`;
80
115
  }
81
- // Query both takes and makerFills
116
+ // Query both takes and claims
82
117
  // Note: We need to fetch more than limit to properly sort and paginate
83
118
  const fetchLimit = limit + 1; // Fetch one extra to determine hasNextPage
84
119
  const query = `
@@ -105,7 +140,7 @@ export async function fetchTradeHistoryFromSubgraph(chainId, userAddress, option
105
140
  amountUSD
106
141
  type
107
142
  }
108
- makerFills(
143
+ claims(
109
144
  where: ${whereClause}
110
145
  orderBy: timestamp
111
146
  orderDirection: desc
@@ -120,18 +155,27 @@ export async function fetchTradeHistoryFromSubgraph(chainId, userAddress, option
120
155
  quote { id name symbol decimals }
121
156
  base { id name symbol decimals }
122
157
  }
123
- inputToken { id name symbol decimals }
124
- outputToken { id name symbol decimals }
125
- inputAmount
126
- outputAmount
127
- amountUSD
158
+ quote { id name symbol decimals }
159
+ base { id name symbol decimals }
160
+ trader
161
+ tick
162
+ claimedBaseAmount
163
+ claimedQuoteAmount
164
+ claimedAmountUSD
128
165
  type
129
166
  }
130
167
  }
131
168
  `;
132
- const { data: { takes, makerFills }, } = await Subgraph.get(chainId, 'getTradeHistory', query, {});
169
+ const response = await Subgraph.get(chainId, 'getTradeHistory', query, {});
170
+ if (response.errors) {
171
+ throw new Error(`Subgraph query failed: ${response.errors.map((e) => e.message).join(', ')}`);
172
+ }
173
+ if (!response.data) {
174
+ throw new Error('Subgraph returned no data');
175
+ }
176
+ const { takes, claims } = response.data;
133
177
  // Combine and sort all trades by timestamp (most recent first)
134
- const allTrades = [...takes, ...makerFills].sort((a, b) => Number(b.timestamp) - Number(a.timestamp));
178
+ const allTrades = [...takes, ...claims].sort((a, b) => Number(b.timestamp) - Number(a.timestamp));
135
179
  // Apply pagination
136
180
  const hasNextPage = allTrades.length > limit;
137
181
  const trades = allTrades.slice(0, limit);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/trade/apis/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/trade/apis/index.ts"],"names":[],"mappings":"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"}