@tcswap/helpers 4.5.15
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.
- package/dist/api/index.cjs +4 -0
- package/dist/api/index.cjs.map +16 -0
- package/dist/api/index.js +4 -0
- package/dist/api/index.js.map +16 -0
- package/dist/chunk-pfmeq01a.js +5 -0
- package/dist/chunk-pfmeq01a.js.map +9 -0
- package/dist/chunk-vb4wtm2w.js +4 -0
- package/dist/chunk-vb4wtm2w.js.map +9 -0
- package/dist/contracts.cjs +4 -0
- package/dist/contracts.cjs.map +10 -0
- package/dist/contracts.js +4 -0
- package/dist/contracts.js.map +10 -0
- package/dist/index.cjs +7 -0
- package/dist/index.cjs.map +30 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +30 -0
- package/dist/tokens.cjs +4 -0
- package/dist/tokens.cjs.map +10 -0
- package/dist/tokens.js +4 -0
- package/dist/tokens.js.map +10 -0
- package/dist/types/api/index.d.ts +502 -0
- package/dist/types/api/index.d.ts.map +1 -0
- package/dist/types/api/memoless/endpoints.d.ts +56 -0
- package/dist/types/api/memoless/endpoints.d.ts.map +1 -0
- package/dist/types/api/memoless/types.d.ts +85 -0
- package/dist/types/api/memoless/types.d.ts.map +1 -0
- package/dist/types/api/midgard/endpoints.d.ts +80 -0
- package/dist/types/api/midgard/endpoints.d.ts.map +1 -0
- package/dist/types/api/midgard/types.d.ts +543 -0
- package/dist/types/api/midgard/types.d.ts.map +1 -0
- package/dist/types/api/thornode/endpoints.d.ts +34 -0
- package/dist/types/api/thornode/endpoints.d.ts.map +1 -0
- package/dist/types/api/thornode/types.d.ts +264 -0
- package/dist/types/api/thornode/types.d.ts.map +1 -0
- package/dist/types/api/uswap/endpoints.d.ts +372 -0
- package/dist/types/api/uswap/endpoints.d.ts.map +1 -0
- package/dist/types/api/uswap/types.d.ts +1487 -0
- package/dist/types/api/uswap/types.d.ts.map +1 -0
- package/dist/types/contracts.d.ts +2 -0
- package/dist/types/contracts.d.ts.map +1 -0
- package/dist/types/index.d.ts +32 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/modules/assetValue.d.ts +82 -0
- package/dist/types/modules/assetValue.d.ts.map +1 -0
- package/dist/types/modules/bigIntArithmetics.d.ts +60 -0
- package/dist/types/modules/bigIntArithmetics.d.ts.map +1 -0
- package/dist/types/modules/feeMultiplier.d.ts +48 -0
- package/dist/types/modules/feeMultiplier.d.ts.map +1 -0
- package/dist/types/modules/requestClient.d.ts +33 -0
- package/dist/types/modules/requestClient.d.ts.map +1 -0
- package/dist/types/modules/uSwapConfig.d.ts +249 -0
- package/dist/types/modules/uSwapConfig.d.ts.map +1 -0
- package/dist/types/modules/uSwapError.d.ts +879 -0
- package/dist/types/modules/uSwapError.d.ts.map +1 -0
- package/dist/types/modules/uSwapNumber.d.ts +10 -0
- package/dist/types/modules/uSwapNumber.d.ts.map +1 -0
- package/dist/types/tokens.d.ts +2 -0
- package/dist/types/tokens.d.ts.map +1 -0
- package/dist/types/types/commonTypes.d.ts +16 -0
- package/dist/types/types/commonTypes.d.ts.map +1 -0
- package/dist/types/types/derivationPath.d.ts +4 -0
- package/dist/types/types/derivationPath.d.ts.map +1 -0
- package/dist/types/types/errors/apiV1.d.ts +2 -0
- package/dist/types/types/errors/apiV1.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +6 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/types/quotes.d.ts +180 -0
- package/dist/types/types/quotes.d.ts.map +1 -0
- package/dist/types/types/sdk.d.ts +35 -0
- package/dist/types/types/sdk.d.ts.map +1 -0
- package/dist/types/types/wallet.d.ts +130 -0
- package/dist/types/types/wallet.d.ts.map +1 -0
- package/dist/types/utils/asset.d.ts +37 -0
- package/dist/types/utils/asset.d.ts.map +1 -0
- package/dist/types/utils/chains.d.ts +13 -0
- package/dist/types/utils/chains.d.ts.map +1 -0
- package/dist/types/utils/derivationPath.d.ts +21 -0
- package/dist/types/utils/derivationPath.d.ts.map +1 -0
- package/dist/types/utils/explorerUrls.d.ts +10 -0
- package/dist/types/utils/explorerUrls.d.ts.map +1 -0
- package/dist/types/utils/liquidity.d.ts +62 -0
- package/dist/types/utils/liquidity.d.ts.map +1 -0
- package/dist/types/utils/memo.d.ts +65 -0
- package/dist/types/utils/memo.d.ts.map +1 -0
- package/dist/types/utils/others.d.ts +15 -0
- package/dist/types/utils/others.d.ts.map +1 -0
- package/dist/types/utils/validators.d.ts +6 -0
- package/dist/types/utils/validators.d.ts.map +1 -0
- package/dist/types/utils/wallets.d.ts +36 -0
- package/dist/types/utils/wallets.d.ts.map +1 -0
- package/package.json +67 -0
- package/src/api/index.ts +15 -0
- package/src/api/memoless/endpoints.ts +62 -0
- package/src/api/memoless/types.ts +83 -0
- package/src/api/midgard/endpoints.ts +352 -0
- package/src/api/midgard/types.ts +515 -0
- package/src/api/thornode/endpoints.ts +109 -0
- package/src/api/thornode/types.ts +247 -0
- package/src/api/uswap/endpoints.ts +252 -0
- package/src/api/uswap/types.ts +626 -0
- package/src/contracts.ts +1 -0
- package/src/index.ts +32 -0
- package/src/modules/__tests__/assetValue.test.ts +2452 -0
- package/src/modules/__tests__/bigIntArithmetics.test.ts +410 -0
- package/src/modules/__tests__/feeMultiplier.test.ts +131 -0
- package/src/modules/__tests__/uSwapConfig.test.ts +429 -0
- package/src/modules/__tests__/uSwapNumber.test.ts +439 -0
- package/src/modules/assetValue.ts +536 -0
- package/src/modules/bigIntArithmetics.ts +366 -0
- package/src/modules/feeMultiplier.ts +84 -0
- package/src/modules/requestClient.ts +116 -0
- package/src/modules/uSwapConfig.ts +189 -0
- package/src/modules/uSwapError.ts +474 -0
- package/src/modules/uSwapNumber.ts +17 -0
- package/src/tokens.ts +1 -0
- package/src/types/commonTypes.ts +10 -0
- package/src/types/derivationPath.ts +11 -0
- package/src/types/errors/apiV1.ts +0 -0
- package/src/types/index.ts +5 -0
- package/src/types/quotes.ts +182 -0
- package/src/types/sdk.ts +38 -0
- package/src/types/wallet.ts +124 -0
- package/src/utils/__tests__/asset.test.ts +186 -0
- package/src/utils/__tests__/derivationPath.test.ts +142 -0
- package/src/utils/__tests__/explorerUrls.test.ts +59 -0
- package/src/utils/__tests__/liquidity.test.ts +302 -0
- package/src/utils/__tests__/memo.test.ts +99 -0
- package/src/utils/__tests__/others.test.ts +169 -0
- package/src/utils/__tests__/validators.test.ts +84 -0
- package/src/utils/__tests__/wallets.test.ts +625 -0
- package/src/utils/asset.ts +399 -0
- package/src/utils/chains.ts +104 -0
- package/src/utils/derivationPath.ts +101 -0
- package/src/utils/explorerUrls.ts +32 -0
- package/src/utils/liquidity.ts +154 -0
- package/src/utils/memo.ts +102 -0
- package/src/utils/others.ts +64 -0
- package/src/utils/validators.ts +36 -0
- package/src/utils/wallets.ts +238 -0
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Modifications © 2025 Horizontal Systems.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { AssetValue, RequestClient, USwapNumber } from "@tcswap/helpers";
|
|
6
|
+
import { Chain, getChainConfig, type TCLikeChain } from "@tcswap/types";
|
|
7
|
+
import type {
|
|
8
|
+
Action,
|
|
9
|
+
ActionQuery,
|
|
10
|
+
Balance,
|
|
11
|
+
Constants,
|
|
12
|
+
DepthHistory,
|
|
13
|
+
EarningsHistory,
|
|
14
|
+
HealthInfo,
|
|
15
|
+
HistoryQuery,
|
|
16
|
+
MemberDetailsMayachain,
|
|
17
|
+
MemberDetailsThorchain,
|
|
18
|
+
MimirVote,
|
|
19
|
+
NetworkInfo,
|
|
20
|
+
Node,
|
|
21
|
+
PagedResponse,
|
|
22
|
+
Pool,
|
|
23
|
+
PoolStats,
|
|
24
|
+
SaverDetails,
|
|
25
|
+
SaversHistory,
|
|
26
|
+
Stats,
|
|
27
|
+
SwapHistory,
|
|
28
|
+
THORNameDetails,
|
|
29
|
+
TVLHistory,
|
|
30
|
+
} from "./types";
|
|
31
|
+
|
|
32
|
+
function getMidgardBaseUrl(isThorchain = true) {
|
|
33
|
+
return isThorchain ? "https://midgard.ninerealms.com" : "https://midgard.mayachain.info";
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function getNameServiceBaseUrl(isThorchain = true) {
|
|
37
|
+
const baseUrl = getMidgardBaseUrl(isThorchain);
|
|
38
|
+
return isThorchain ? `${baseUrl}/v2/thorname` : `${baseUrl}/v2/mayaname`;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function getPools(baseUrl: string) {
|
|
42
|
+
return function getPools(status?: string): Promise<Pool[]> {
|
|
43
|
+
const params = status ? `?status=${status}` : "";
|
|
44
|
+
return RequestClient.get<Pool[]>(`${baseUrl}/v2/pools${params}`);
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function getPool(baseUrl: string) {
|
|
49
|
+
return function getPool(asset: string): Promise<Pool> {
|
|
50
|
+
return RequestClient.get<Pool>(`${baseUrl}/v2/pool/${asset}`);
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function getPoolStats(baseUrl: string) {
|
|
55
|
+
return function getPoolStats(asset: string, period?: string): Promise<PoolStats> {
|
|
56
|
+
const params = period ? `?period=${period}` : "";
|
|
57
|
+
return RequestClient.get<PoolStats>(`${baseUrl}/v2/pool/${asset}/stats${params}`);
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function getPoolDepthHistory(baseUrl: string) {
|
|
62
|
+
return function getPoolDepthHistory(asset: string, query?: HistoryQuery): Promise<DepthHistory> {
|
|
63
|
+
const params = new URLSearchParams();
|
|
64
|
+
if (query?.interval) params.append("interval", query.interval);
|
|
65
|
+
if (query?.count) params.append("count", query.count.toString());
|
|
66
|
+
if (query?.from) params.append("from", query.from.toString());
|
|
67
|
+
if (query?.to) params.append("to", query.to.toString());
|
|
68
|
+
const queryString = params.toString() ? `?${params.toString()}` : "";
|
|
69
|
+
return RequestClient.get<DepthHistory>(`${baseUrl}/v2/history/depths/${asset}${queryString}`);
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function getNetworkInfo(baseUrl: string) {
|
|
74
|
+
return function getNetworkInfo(): Promise<NetworkInfo> {
|
|
75
|
+
return RequestClient.get<NetworkInfo>(`${baseUrl}/v2/network`);
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function getHealth(baseUrl: string) {
|
|
80
|
+
return function getHealth(): Promise<HealthInfo> {
|
|
81
|
+
return RequestClient.get<HealthInfo>(`${baseUrl}/v2/health`);
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function getNodes(baseUrl: string) {
|
|
86
|
+
return function getNodes(): Promise<Node[]> {
|
|
87
|
+
return RequestClient.get<Node[]>(`${baseUrl}/v2/nodes`);
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function getNode(baseUrl: string) {
|
|
92
|
+
return function getNode(address: string): Promise<Node> {
|
|
93
|
+
return RequestClient.get<Node>(`${baseUrl}/v2/node/${address}`);
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function getMimirVotes(baseUrl: string) {
|
|
98
|
+
return function getMimirVotes(): Promise<MimirVote[]> {
|
|
99
|
+
return RequestClient.get<MimirVote[]>(`${baseUrl}/v2/mimir/votes`);
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function getMimir(baseUrl: string) {
|
|
104
|
+
return function getMimir(): Promise<Record<string, string>> {
|
|
105
|
+
return RequestClient.get<Record<string, string>>(`${baseUrl}/v2/mimir`);
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function getConstants(baseUrl: string) {
|
|
110
|
+
return function getConstants(): Promise<Constants> {
|
|
111
|
+
return RequestClient.get<Constants>(`${baseUrl}/v2/constants`);
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function getStats(baseUrl: string) {
|
|
116
|
+
return function getStats(): Promise<Stats> {
|
|
117
|
+
return RequestClient.get<Stats>(`${baseUrl}/v2/stats`);
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
function getEarningsHistory(baseUrl: string) {
|
|
122
|
+
return function getEarningsHistory(query?: HistoryQuery): Promise<EarningsHistory> {
|
|
123
|
+
const params = new URLSearchParams();
|
|
124
|
+
if (query?.interval) params.append("interval", query.interval);
|
|
125
|
+
if (query?.count) params.append("count", query.count.toString());
|
|
126
|
+
if (query?.from) params.append("from", query.from.toString());
|
|
127
|
+
if (query?.to) params.append("to", query.to.toString());
|
|
128
|
+
const queryString = params.toString() ? `?${params.toString()}` : "";
|
|
129
|
+
return RequestClient.get<EarningsHistory>(`${baseUrl}/v2/history/earnings${queryString}`);
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function getSwapHistory(baseUrl: string) {
|
|
134
|
+
return function getSwapHistory(pool?: string, query?: HistoryQuery): Promise<SwapHistory> {
|
|
135
|
+
const params = new URLSearchParams();
|
|
136
|
+
if (query?.interval) params.append("interval", query.interval);
|
|
137
|
+
if (query?.count) params.append("count", query.count.toString());
|
|
138
|
+
if (query?.from) params.append("from", query.from.toString());
|
|
139
|
+
if (query?.to) params.append("to", query.to.toString());
|
|
140
|
+
const queryString = params.toString() ? `?${params.toString()}` : "";
|
|
141
|
+
const poolPath = pool ? `/swaps/${pool}` : "/swaps";
|
|
142
|
+
return RequestClient.get<SwapHistory>(`${baseUrl}/v2/history${poolPath}${queryString}`);
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
function getTVLHistory(baseUrl: string) {
|
|
147
|
+
return function getTVLHistory(query?: HistoryQuery): Promise<TVLHistory> {
|
|
148
|
+
const params = new URLSearchParams();
|
|
149
|
+
if (query?.interval) params.append("interval", query.interval);
|
|
150
|
+
if (query?.count) params.append("count", query.count.toString());
|
|
151
|
+
if (query?.from) params.append("from", query.from.toString());
|
|
152
|
+
if (query?.to) params.append("to", query.to.toString());
|
|
153
|
+
const queryString = params.toString() ? `?${params.toString()}` : "";
|
|
154
|
+
return RequestClient.get<TVLHistory>(`${baseUrl}/v2/history/tvl${queryString}`);
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
function buildActionParams(query?: ActionQuery): string {
|
|
159
|
+
if (!query) return "";
|
|
160
|
+
const params = new URLSearchParams();
|
|
161
|
+
const appendParam = (key: keyof ActionQuery, value: any) => {
|
|
162
|
+
if (value !== undefined) {
|
|
163
|
+
params.append(key, typeof value === "number" ? value.toString() : value);
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
appendParam("address", query.address);
|
|
167
|
+
appendParam("txid", query.txid);
|
|
168
|
+
appendParam("asset", query.asset);
|
|
169
|
+
appendParam("type", query.type);
|
|
170
|
+
appendParam("affiliate", query.affiliate);
|
|
171
|
+
appendParam("limit", query.limit);
|
|
172
|
+
appendParam("offset", query.offset);
|
|
173
|
+
return params.toString() ? `?${params.toString()}` : "";
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
function getActions(baseUrl: string) {
|
|
177
|
+
return function getActions(query?: ActionQuery): Promise<PagedResponse<Action>> {
|
|
178
|
+
const queryString = buildActionParams(query);
|
|
179
|
+
return RequestClient.get<PagedResponse<Action>>(`${baseUrl}/v2/actions${queryString}`);
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
function getLiquidityPositionRaw<Chain extends TCLikeChain>(baseUrl: string) {
|
|
184
|
+
return function getLiquidityPosition(
|
|
185
|
+
address: string,
|
|
186
|
+
): Promise<Chain extends typeof Chain.THORChain ? MemberDetailsThorchain : MemberDetailsMayachain> {
|
|
187
|
+
return RequestClient.get<Chain extends typeof Chain.THORChain ? MemberDetailsThorchain : MemberDetailsMayachain>(
|
|
188
|
+
`${baseUrl}/v2/member/${address}`,
|
|
189
|
+
);
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
function getMembers(baseUrl: string) {
|
|
194
|
+
return function getMembers(pool?: string): Promise<string[]> {
|
|
195
|
+
const poolPath = pool ? `/${pool}` : "";
|
|
196
|
+
return RequestClient.get<string[]>(`${baseUrl}/v2/members${poolPath}`);
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
function getSaverDetails(baseUrl: string) {
|
|
201
|
+
return function getSaverDetails(address: string, pool?: string): Promise<SaverDetails[]> {
|
|
202
|
+
const poolPath = pool ? `&asset=${pool}` : "";
|
|
203
|
+
return RequestClient.get<SaverDetails[]>(
|
|
204
|
+
`${baseUrl}/v2/saver/${address}${poolPath ? `?${poolPath.substring(1)}` : ""}`,
|
|
205
|
+
);
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
function getSavers(baseUrl: string) {
|
|
210
|
+
return function getSavers(pool: string): Promise<string[]> {
|
|
211
|
+
return RequestClient.get<string[]>(`${baseUrl}/v2/savers/${pool}`);
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
function getSaversHistory(baseUrl: string) {
|
|
216
|
+
return function getSaversHistory(pool?: string, query?: HistoryQuery): Promise<SaversHistory> {
|
|
217
|
+
const params = new URLSearchParams();
|
|
218
|
+
if (query?.interval) params.append("interval", query.interval);
|
|
219
|
+
if (query?.count) params.append("count", query.count.toString());
|
|
220
|
+
if (query?.from) params.append("from", query.from.toString());
|
|
221
|
+
if (query?.to) params.append("to", query.to.toString());
|
|
222
|
+
const queryString = params.toString() ? `?${params.toString()}` : "";
|
|
223
|
+
const poolPath = pool ? `/savers/${pool}` : "/savers";
|
|
224
|
+
return RequestClient.get<SaversHistory>(`${baseUrl}/v2/history${poolPath}${queryString}`);
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
function getBalance(baseUrl: string) {
|
|
229
|
+
return function getBalance(address: string): Promise<Balance[]> {
|
|
230
|
+
return RequestClient.get<Balance[]>(`${baseUrl}/v2/balance/${address}`);
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
function getNameDetails(baseUrl: string) {
|
|
235
|
+
return async function getNamesByAddress(name: string) {
|
|
236
|
+
const errorHandler = (error: any) => {
|
|
237
|
+
// Handle specific error cases
|
|
238
|
+
if (error?.cause?.status === 404) {
|
|
239
|
+
return undefined;
|
|
240
|
+
}
|
|
241
|
+
throw error;
|
|
242
|
+
};
|
|
243
|
+
return await RequestClient.get<THORNameDetails>(`${baseUrl}/lookup/${name}`, {
|
|
244
|
+
onError: errorHandler,
|
|
245
|
+
retry: { maxRetries: 1 },
|
|
246
|
+
});
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
function getNamesByAddress(baseUrl: string) {
|
|
251
|
+
return async function getNamesByAddress(address: string) {
|
|
252
|
+
const errorHandler = (error: any) => {
|
|
253
|
+
// Handle specific error cases
|
|
254
|
+
if (error?.cause?.status === 404) {
|
|
255
|
+
return [];
|
|
256
|
+
}
|
|
257
|
+
throw error;
|
|
258
|
+
};
|
|
259
|
+
return await RequestClient.get<string[]>(`${baseUrl}/rlookup/${address}`, {
|
|
260
|
+
onError: errorHandler,
|
|
261
|
+
retry: { maxRetries: 1 },
|
|
262
|
+
});
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
function getNamesByOwner(baseUrl: string) {
|
|
267
|
+
return async function getNamesByOwner(address: string) {
|
|
268
|
+
const errorHandler = (error: any) => {
|
|
269
|
+
// Handle specific error cases
|
|
270
|
+
if (error?.cause?.status === 404) {
|
|
271
|
+
return [];
|
|
272
|
+
}
|
|
273
|
+
throw error;
|
|
274
|
+
};
|
|
275
|
+
return await RequestClient.get<string[]>(`${baseUrl}/owner/${address}`, {
|
|
276
|
+
onError: errorHandler,
|
|
277
|
+
retry: { maxRetries: 1 },
|
|
278
|
+
});
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
function getPoolAsset({ asset, value }: { asset: string; value: string }) {
|
|
283
|
+
return AssetValue.from({ asset, fromBaseDecimal: getChainConfig(Chain.THORChain).baseDecimal, value });
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
function getLiquidityPosition<IsThorchain extends boolean = true>({
|
|
287
|
+
liquidityPositionGetter,
|
|
288
|
+
isThorchain,
|
|
289
|
+
}: {
|
|
290
|
+
liquidityPositionGetter: ReturnType<
|
|
291
|
+
typeof getLiquidityPositionRaw<IsThorchain extends true ? typeof Chain.THORChain : typeof Chain.Maya>
|
|
292
|
+
>;
|
|
293
|
+
isThorchain: IsThorchain;
|
|
294
|
+
}) {
|
|
295
|
+
return async function getLiquidityPosition(address: string) {
|
|
296
|
+
const rawLiquidityPositions = await liquidityPositionGetter(address);
|
|
297
|
+
const fieldPrefix = isThorchain ? "rune" : "cacao";
|
|
298
|
+
|
|
299
|
+
return rawLiquidityPositions.pools.map((p) => ({
|
|
300
|
+
[`${fieldPrefix}Pending`]: getPoolAsset({ asset: "THOR.RUNE", value: p.runePending }),
|
|
301
|
+
[`${fieldPrefix}RegisteredAddress`]: p.runeAddress,
|
|
302
|
+
[`${fieldPrefix}Withdrawn`]: getPoolAsset({ asset: "THOR.RUNE", value: p.runeWithdrawn }),
|
|
303
|
+
[fieldPrefix]: getPoolAsset({ asset: "THOR.RUNE", value: p.runeAdded }),
|
|
304
|
+
asset: getPoolAsset({ asset: p.pool, value: p.assetAdded }),
|
|
305
|
+
assetPending: getPoolAsset({ asset: p.pool, value: p.assetPending }),
|
|
306
|
+
assetRegisteredAddress: p.assetAddress,
|
|
307
|
+
assetWithdrawn: getPoolAsset({ asset: p.pool, value: p.assetWithdrawn }),
|
|
308
|
+
dateFirstAdded: p.dateFirstAdded,
|
|
309
|
+
dateLastAdded: p.dateLastAdded,
|
|
310
|
+
poolShare: new USwapNumber(p.liquidityUnits).div(p.pool),
|
|
311
|
+
}));
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
function getMidgardMethodsForProtocol<T extends TCLikeChain>(chain: T) {
|
|
316
|
+
const isThorchain = chain === Chain.THORChain;
|
|
317
|
+
const midgardBaseUrl = getMidgardBaseUrl(isThorchain);
|
|
318
|
+
const nameServiceBaseUrl = getNameServiceBaseUrl(isThorchain);
|
|
319
|
+
const liquidityPositionGetter = getLiquidityPositionRaw<T>(midgardBaseUrl);
|
|
320
|
+
|
|
321
|
+
return {
|
|
322
|
+
getActions: getActions(midgardBaseUrl),
|
|
323
|
+
getBalance: getBalance(midgardBaseUrl),
|
|
324
|
+
getConstants: getConstants(midgardBaseUrl),
|
|
325
|
+
getEarningsHistory: getEarningsHistory(midgardBaseUrl),
|
|
326
|
+
getHealth: getHealth(midgardBaseUrl),
|
|
327
|
+
getLiquidityPosition: getLiquidityPosition({ isThorchain, liquidityPositionGetter }),
|
|
328
|
+
getLiquidityPositionRaw: liquidityPositionGetter,
|
|
329
|
+
getMembers: getMembers(midgardBaseUrl),
|
|
330
|
+
getMimir: getMimir(midgardBaseUrl),
|
|
331
|
+
getMimirVotes: getMimirVotes(midgardBaseUrl),
|
|
332
|
+
getNameDetails: getNameDetails(nameServiceBaseUrl),
|
|
333
|
+
getNamesByAddress: getNamesByAddress(nameServiceBaseUrl),
|
|
334
|
+
getNamesByOwner: getNamesByOwner(nameServiceBaseUrl),
|
|
335
|
+
getNetworkInfo: getNetworkInfo(midgardBaseUrl),
|
|
336
|
+
getNode: getNode(midgardBaseUrl),
|
|
337
|
+
getNodes: getNodes(midgardBaseUrl),
|
|
338
|
+
getPool: getPool(midgardBaseUrl),
|
|
339
|
+
getPoolDepthHistory: getPoolDepthHistory(midgardBaseUrl),
|
|
340
|
+
getPoolStats: getPoolStats(midgardBaseUrl),
|
|
341
|
+
getPools: getPools(midgardBaseUrl),
|
|
342
|
+
getSaverDetails: getSaverDetails(midgardBaseUrl),
|
|
343
|
+
getSavers: getSavers(midgardBaseUrl),
|
|
344
|
+
getSaversHistory: getSaversHistory(midgardBaseUrl),
|
|
345
|
+
getStats: getStats(midgardBaseUrl),
|
|
346
|
+
getSwapHistory: getSwapHistory(midgardBaseUrl),
|
|
347
|
+
getTVLHistory: getTVLHistory(midgardBaseUrl),
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
export const thorchainMidgard = getMidgardMethodsForProtocol(Chain.THORChain);
|
|
352
|
+
export const mayachainMidgard = getMidgardMethodsForProtocol(Chain.Maya);
|