@alphafi/alphafi-sdk 0.0.24 → 0.0.26
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/cjs/common/coins.d.ts.map +1 -1
- package/dist/cjs/common/coins.js +6 -0
- package/dist/cjs/common/coins.js.map +1 -1
- package/dist/cjs/common/constants.d.ts.map +1 -1
- package/dist/cjs/common/constants.js +64 -10
- package/dist/cjs/common/constants.js.map +1 -1
- package/dist/cjs/common/maps.d.ts.map +1 -1
- package/dist/cjs/common/maps.js +64 -2
- package/dist/cjs/common/maps.js.map +1 -1
- package/dist/cjs/common/types.d.ts.map +1 -1
- package/dist/cjs/common/types.js +1 -0
- package/dist/cjs/common/types.js.map +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +6 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/sui-sdk/events/fetchAutoCompoundingEvents.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/events/fetchAutoCompoundingEvents.js +140 -71
- package/dist/cjs/sui-sdk/events/fetchAutoCompoundingEvents.js.map +1 -1
- package/dist/cjs/sui-sdk/events/fetchEvents.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/events/fetchEvents.js +11 -0
- package/dist/cjs/sui-sdk/events/fetchEvents.js.map +1 -1
- package/dist/cjs/sui-sdk/events/types.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/events/types.js.map +1 -1
- package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.js +10 -6
- package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.js.map +1 -1
- package/dist/cjs/utils/clmm/prices.js +3 -3
- package/dist/cjs/utils/clmm/prices.js.map +1 -1
- package/dist/cjs/utils/hop.d.ts.map +1 -1
- package/dist/cjs/utils/hop.js +4 -5
- package/dist/cjs/utils/hop.js.map +1 -1
- package/dist/cjs/utils/prices.d.ts.map +1 -1
- package/dist/cjs/utils/prices.js +34 -120
- package/dist/cjs/utils/prices.js.map +1 -1
- package/dist/cjs/utils/userHoldings.d.ts.map +1 -1
- package/dist/cjs/utils/userHoldings.js +3 -1
- package/dist/cjs/utils/userHoldings.js.map +1 -1
- package/dist/esm/common/coins.d.ts.map +1 -1
- package/dist/esm/common/coins.js +6 -0
- package/dist/esm/common/coins.js.map +1 -1
- package/dist/esm/common/constants.d.ts.map +1 -1
- package/dist/esm/common/constants.js +64 -10
- package/dist/esm/common/constants.js.map +1 -1
- package/dist/esm/common/maps.d.ts.map +1 -1
- package/dist/esm/common/maps.js +64 -2
- package/dist/esm/common/maps.js.map +1 -1
- package/dist/esm/common/types.d.ts.map +1 -1
- package/dist/esm/common/types.js +1 -0
- package/dist/esm/common/types.js.map +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/sui-sdk/events/fetchAutoCompoundingEvents.d.ts.map +1 -1
- package/dist/esm/sui-sdk/events/fetchAutoCompoundingEvents.js +140 -71
- package/dist/esm/sui-sdk/events/fetchAutoCompoundingEvents.js.map +1 -1
- package/dist/esm/sui-sdk/events/fetchEvents.d.ts.map +1 -1
- package/dist/esm/sui-sdk/events/fetchEvents.js +11 -0
- package/dist/esm/sui-sdk/events/fetchEvents.js.map +1 -1
- package/dist/esm/sui-sdk/events/types.d.ts.map +1 -1
- package/dist/esm/sui-sdk/events/types.js.map +1 -1
- package/dist/esm/sui-sdk/functions/getPortfolioAmounts.d.ts.map +1 -1
- package/dist/esm/sui-sdk/functions/getPortfolioAmounts.js +8 -4
- package/dist/esm/sui-sdk/functions/getPortfolioAmounts.js.map +1 -1
- package/dist/esm/utils/clmm/prices.js +4 -4
- package/dist/esm/utils/clmm/prices.js.map +1 -1
- package/dist/esm/utils/hop.d.ts.map +1 -1
- package/dist/esm/utils/hop.js +5 -6
- package/dist/esm/utils/hop.js.map +1 -1
- package/dist/esm/utils/prices.d.ts.map +1 -1
- package/dist/esm/utils/prices.js +34 -118
- package/dist/esm/utils/prices.js.map +1 -1
- package/dist/esm/utils/userHoldings.d.ts.map +1 -1
- package/dist/esm/utils/userHoldings.js +4 -2
- package/dist/esm/utils/userHoldings.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@ const maps_js_1 = require("../../common/maps.js");
|
|
|
8
8
|
const fetchEvents_js_1 = require("./fetchEvents.js");
|
|
9
9
|
async function fetchAutoCompoundingEvents(params) {
|
|
10
10
|
const eventTypesSet = new Set();
|
|
11
|
-
const rebalanceEventTypesSet = new Set();
|
|
11
|
+
// const rebalanceEventTypesSet = new Set<string>();
|
|
12
12
|
if (params.poolNames) {
|
|
13
13
|
params.poolNames.forEach((poolName) => {
|
|
14
14
|
const eventType = maps_js_1.poolInfo[poolName].autoCompoundingEventType;
|
|
@@ -27,25 +27,24 @@ async function fetchAutoCompoundingEvents(params) {
|
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
29
|
// for rebalance
|
|
30
|
-
if (params.poolNames) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
30
|
+
// if (params.poolNames) {
|
|
31
|
+
// params.poolNames.forEach((poolName) => {
|
|
32
|
+
// const eventType = poolInfo[poolName].rebalanceEventType;
|
|
33
|
+
// if (eventType !== undefined && eventType !== null && eventType !== "") {
|
|
34
|
+
// rebalanceEventTypesSet.add(eventType);
|
|
35
|
+
// }
|
|
36
|
+
// });
|
|
37
|
+
// } else {
|
|
38
|
+
// // Iterate over all the values in poolInfo and add each autoCompoundingEventType to the Set
|
|
39
|
+
// Object.values(poolInfo).forEach((info) => {
|
|
40
|
+
// const eventType = info.rebalanceEventType;
|
|
41
|
+
// if (eventType !== undefined && eventType !== null && eventType !== "") {
|
|
42
|
+
// rebalanceEventTypesSet.add(eventType);
|
|
43
|
+
// }
|
|
44
|
+
// });
|
|
45
|
+
// }
|
|
47
46
|
const eventTypes = Array.from(eventTypesSet);
|
|
48
|
-
const rebalanceEventTypes = Array.from(rebalanceEventTypesSet);
|
|
47
|
+
// const rebalanceEventTypes = Array.from(rebalanceEventTypesSet);
|
|
49
48
|
const eventsPromises = eventTypes.map(async (eventType) => {
|
|
50
49
|
const events = (await (0, fetchEvents_js_1.fetchEvents)({
|
|
51
50
|
startTime: params.startTime,
|
|
@@ -63,49 +62,54 @@ async function fetchAutoCompoundingEvents(params) {
|
|
|
63
62
|
});
|
|
64
63
|
return events;
|
|
65
64
|
});
|
|
66
|
-
const rebalanceEventsPromises = rebalanceEventTypes.map(async (eventType) => {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
65
|
+
// const rebalanceEventsPromises = rebalanceEventTypes.map(async (eventType) => {
|
|
66
|
+
// const events = (
|
|
67
|
+
// await fetchEvents({
|
|
68
|
+
// startTime: params.startTime,
|
|
69
|
+
// endTime: params.endTime,
|
|
70
|
+
// eventTypes: [eventType],
|
|
71
|
+
// })
|
|
72
|
+
// ).filter((e) => {
|
|
73
|
+
// if (params.poolNames) {
|
|
74
|
+
// return params.poolNames
|
|
75
|
+
// .map((poolName) => poolInfo[poolName].investorId)
|
|
76
|
+
// .includes((e as AutoCompoundingEventNode).investor_id);
|
|
77
|
+
// } else {
|
|
78
|
+
// return true;
|
|
79
|
+
// }
|
|
80
|
+
// });
|
|
81
|
+
// return events;
|
|
82
|
+
// });
|
|
83
83
|
const events = (await Promise.all(eventsPromises)).flat();
|
|
84
84
|
const autoCompoundingEvents = events.map((e) => {
|
|
85
85
|
return e;
|
|
86
86
|
});
|
|
87
|
-
const rebalanceEvents = (await Promise.all(rebalanceEventsPromises)).flat();
|
|
88
|
-
const rebalancingEvents = rebalanceEvents.map((e) => {
|
|
89
|
-
|
|
90
|
-
});
|
|
91
|
-
const investorPoolMap = await
|
|
92
|
-
for (const x of autoCompoundingEvents) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
87
|
+
// const rebalanceEvents = (await Promise.all(rebalanceEventsPromises)).flat();
|
|
88
|
+
// const rebalancingEvents = rebalanceEvents.map((e) => {
|
|
89
|
+
// return e as RebalanceEventNode;
|
|
90
|
+
// });
|
|
91
|
+
// const investorPoolMap = await getInvestorPoolMap();
|
|
92
|
+
// for (const x of autoCompoundingEvents) {
|
|
93
|
+
// if (
|
|
94
|
+
// investorPoolMap.get(x.investor_id) &&
|
|
95
|
+
// poolInfo[investorPoolMap.get(x.investor_id)!].parentProtocolName ==
|
|
96
|
+
// "CETUS"
|
|
97
|
+
// ) {
|
|
98
|
+
// if (
|
|
99
|
+
// "total_amount_a" in x &&
|
|
100
|
+
// x.total_amount_a == 0n &&
|
|
101
|
+
// x.total_amount_b == 0n
|
|
102
|
+
// ) {
|
|
103
|
+
// for (const y of rebalancingEvents) {
|
|
104
|
+
// if (y.investor_id == x.investor_id && y.timestamp == x.timestamp) {
|
|
105
|
+
// // works if its guaranteed that for one timestamp there is only one rebalance for one pool
|
|
106
|
+
// x.total_amount_a = BigInt(y.amount_a_before);
|
|
107
|
+
// x.total_amount_b = BigInt(y.amount_b_before);
|
|
108
|
+
// }
|
|
109
|
+
// }
|
|
110
|
+
// }
|
|
111
|
+
// }
|
|
112
|
+
// }
|
|
109
113
|
return autoCompoundingEvents;
|
|
110
114
|
}
|
|
111
115
|
async function calculateAprForInvestor(events) {
|
|
@@ -115,35 +119,99 @@ async function calculateAprForInvestor(events) {
|
|
|
115
119
|
let totalTimeSpan = 0;
|
|
116
120
|
let previousTimestamp = events[0].timestamp; // Start with the timestamp of the first event
|
|
117
121
|
let previousGrowthRate = 0;
|
|
122
|
+
let previousTimeDiff = 0;
|
|
123
|
+
let prevCompoundA = 0n;
|
|
124
|
+
let prevCompoundB = 0n;
|
|
118
125
|
const investorPoolMap = await (0, maps_js_1.getInvestorPoolMap)();
|
|
126
|
+
// const matchInvestor =
|
|
127
|
+
// "0x05fa099d1df7b5bfb2e420d5ee2d63508db17c40ce7c4e0ca0305cd5df974e43";
|
|
128
|
+
// if (events && events.length > 0 && events[0].investor_id === matchInvestor) {
|
|
129
|
+
// console.log(
|
|
130
|
+
// "Compund A,Total A,Compound B,Total B,Freebalance A,Freebalance B,GrowthA,GrowthB,AvgGrowth,Timestamp,TimeDiff (Min)",
|
|
131
|
+
// );
|
|
132
|
+
// }
|
|
119
133
|
for (const event of events) {
|
|
120
134
|
// Calculate the time difference from the previous event
|
|
121
|
-
|
|
135
|
+
let timeDiff = event.timestamp - previousTimestamp; // / (1000 * 60 * 60 * 24);
|
|
122
136
|
// Calculate growth rate
|
|
123
137
|
let growthRate = 0;
|
|
124
138
|
if ("total_amount_a" in event && "total_amount_b" in event) {
|
|
125
139
|
let growthA = 0;
|
|
126
140
|
let growthB = 0;
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
141
|
+
if (Number(event.total_amount_a) === 0) {
|
|
142
|
+
prevCompoundA += event.compound_amount_a;
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
prevCompoundA = 0n;
|
|
146
|
+
}
|
|
147
|
+
if (prevCompoundA > 0n) {
|
|
148
|
+
growthA =
|
|
149
|
+
Number(event.total_amount_a) === 0
|
|
150
|
+
? 0
|
|
151
|
+
: Number(event.compound_amount_a + prevCompoundA) /
|
|
152
|
+
Number(event.total_amount_a - prevCompoundA);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
growthA =
|
|
156
|
+
Number(event.total_amount_a) === 0
|
|
157
|
+
? 0
|
|
158
|
+
: Number(event.compound_amount_a) / Number(event.total_amount_a);
|
|
159
|
+
}
|
|
160
|
+
if (Number(event.total_amount_b) === 0) {
|
|
161
|
+
prevCompoundB += event.compound_amount_b;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
prevCompoundB = 0n;
|
|
165
|
+
}
|
|
166
|
+
if (prevCompoundB > 0n) {
|
|
167
|
+
growthB =
|
|
168
|
+
Number(event.total_amount_b) == 0
|
|
169
|
+
? 0
|
|
170
|
+
: Number(event.compound_amount_b + prevCompoundB) /
|
|
171
|
+
Number(event.total_amount_b - prevCompoundB);
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
growthB =
|
|
175
|
+
Number(event.total_amount_b) == 0
|
|
176
|
+
? 0
|
|
177
|
+
: Number(event.compound_amount_b) / Number(event.total_amount_b);
|
|
178
|
+
}
|
|
179
|
+
// if (
|
|
180
|
+
// event.investor_id ===
|
|
181
|
+
// "0xd060e81548aee885bd3d37ae0caec181185be792bf45412e0d0acccd1e0174e6"
|
|
182
|
+
// ) {
|
|
183
|
+
// console.log(
|
|
184
|
+
// timeDiff / (1000 * 60),
|
|
185
|
+
// event.timestamp,
|
|
186
|
+
// event.timestamp - previousTimestamp,
|
|
187
|
+
// );
|
|
188
|
+
// }
|
|
136
189
|
// if (
|
|
137
190
|
// event.investor_id ===
|
|
138
|
-
// "
|
|
191
|
+
// "0xd060e81548aee885bd3d37ae0caec181185be792bf45412e0d0acccd1e0174e6"
|
|
139
192
|
// ) {
|
|
140
193
|
// console.log(
|
|
141
|
-
//
|
|
194
|
+
// event.compound_amount_a,
|
|
195
|
+
// event.total_amount_a,
|
|
196
|
+
// growthA,
|
|
197
|
+
// event.compound_amount_b,
|
|
198
|
+
// event.total_amount_b,
|
|
199
|
+
// growthB,
|
|
200
|
+
// );
|
|
201
|
+
// }
|
|
202
|
+
growthRate = (growthA + growthB) / 2; // Averaging growth rates for token A and B
|
|
203
|
+
// if (event.investor_id === matchInvestor) {
|
|
204
|
+
// console.log(
|
|
205
|
+
// `${event.compound_amount_a},${event.total_amount_a},${event.compound_amount_b},${event.total_amount_b},${event.free_balance_a},${event.free_balance_b},${growthA},${growthB},${growthRate},${event.timestamp},${(event.timestamp - previousTimestamp) / (1000 * 60)}`,
|
|
142
206
|
// );
|
|
143
207
|
// }
|
|
144
208
|
if (Math.abs(growthA - growthB) > 0.5) {
|
|
145
209
|
// skip row, fill with previous event
|
|
146
210
|
growthRate = previousGrowthRate;
|
|
211
|
+
timeDiff = previousTimeDiff;
|
|
212
|
+
}
|
|
213
|
+
if (growthRate > 0.005) {
|
|
214
|
+
growthRate = 0;
|
|
147
215
|
}
|
|
148
216
|
}
|
|
149
217
|
else if ("total_amount" in event) {
|
|
@@ -162,10 +230,11 @@ async function calculateAprForInvestor(events) {
|
|
|
162
230
|
growthRate = growthRate * Math.pow(10, 9 - coins_js_1.coins[coinName].expo);
|
|
163
231
|
}
|
|
164
232
|
// Accumulate the time-weighted growth
|
|
165
|
-
totalGrowth
|
|
233
|
+
totalGrowth = (totalGrowth + 1) * (1 + growthRate) - 1;
|
|
166
234
|
previousGrowthRate = growthRate;
|
|
167
235
|
// Accumulate the total time span
|
|
168
236
|
totalTimeSpan += timeDiff;
|
|
237
|
+
previousTimeDiff = timeDiff;
|
|
169
238
|
// Update the previous timestamp to the current event's timestamp
|
|
170
239
|
previousTimestamp = event.timestamp;
|
|
171
240
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchAutoCompoundingEvents.js","sourceRoot":"","sources":["../../../../src/sui-sdk/events/fetchAutoCompoundingEvents.ts"],"names":[],"mappings":"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","sourcesContent":["import { coins } from \"../../common/coins.js\";\nimport {\n getInvestorPoolMap,\n poolCoinMap,\n poolInfo,\n} from \"../../common/maps.js\";\nimport { PoolName, SingleAssetPoolNames } from \"../../common/types.js\";\nimport { fetchEvents } from \"./fetchEvents.js\";\nimport {\n AutoCompoundingEventNode,\n FetchAutoCompoundingEventsParams,\n RebalanceEventNode,\n} from \"./types.js\";\n\nexport async function fetchAutoCompoundingEvents(\n params: FetchAutoCompoundingEventsParams,\n): Promise<AutoCompoundingEventNode[]> {\n const eventTypesSet = new Set<string>();\n const rebalanceEventTypesSet = new Set<string>();\n if (params.poolNames) {\n params.poolNames.forEach((poolName) => {\n const eventType = poolInfo[poolName].autoCompoundingEventType;\n if (eventType !== undefined && eventType !== null && eventType !== \"\") {\n eventTypesSet.add(eventType);\n }\n });\n } else {\n // Iterate over all the values in poolInfo and add each autoCompoundingEventType to the Set\n Object.values(poolInfo).forEach((info) => {\n const eventType = info.autoCompoundingEventType;\n if (eventType !== undefined && eventType !== null && eventType !== \"\") {\n eventTypesSet.add(eventType);\n }\n });\n }\n // for rebalance\n if (params.poolNames) {\n params.poolNames.forEach((poolName) => {\n const eventType = poolInfo[poolName].rebalanceEventType;\n if (eventType !== undefined && eventType !== null && eventType !== \"\") {\n rebalanceEventTypesSet.add(eventType);\n }\n });\n } else {\n // Iterate over all the values in poolInfo and add each autoCompoundingEventType to the Set\n Object.values(poolInfo).forEach((info) => {\n const eventType = info.rebalanceEventType;\n if (eventType !== undefined && eventType !== null && eventType !== \"\") {\n rebalanceEventTypesSet.add(eventType);\n }\n });\n }\n\n const eventTypes = Array.from(eventTypesSet);\n const rebalanceEventTypes = Array.from(rebalanceEventTypesSet);\n\n const eventsPromises = eventTypes.map(async (eventType) => {\n const events = (\n await fetchEvents({\n startTime: params.startTime,\n endTime: params.endTime,\n eventTypes: [eventType],\n })\n ).filter((e) => {\n if (params.poolNames) {\n return params.poolNames\n .map((poolName) => poolInfo[poolName].investorId)\n .includes((e as AutoCompoundingEventNode).investor_id);\n } else {\n return true;\n }\n });\n return events;\n });\n const rebalanceEventsPromises = rebalanceEventTypes.map(async (eventType) => {\n const events = (\n await fetchEvents({\n startTime: params.startTime,\n endTime: params.endTime,\n eventTypes: [eventType],\n })\n ).filter((e) => {\n if (params.poolNames) {\n return params.poolNames\n .map((poolName) => poolInfo[poolName].investorId)\n .includes((e as AutoCompoundingEventNode).investor_id);\n } else {\n return true;\n }\n });\n return events;\n });\n\n const events = (await Promise.all(eventsPromises)).flat();\n\n const autoCompoundingEvents = events.map((e) => {\n return e as AutoCompoundingEventNode;\n });\n\n const rebalanceEvents = (await Promise.all(rebalanceEventsPromises)).flat();\n\n const rebalancingEvents = rebalanceEvents.map((e) => {\n return e as RebalanceEventNode;\n });\n\n const investorPoolMap = await getInvestorPoolMap();\n\n for (const x of autoCompoundingEvents) {\n if (\n investorPoolMap.get(x.investor_id) &&\n poolInfo[investorPoolMap.get(x.investor_id)!].parentProtocolName ==\n \"CETUS\"\n ) {\n if (\n \"total_amount_a\" in x &&\n x.total_amount_a == 0n &&\n x.total_amount_b == 0n\n ) {\n for (const y of rebalancingEvents) {\n if (y.investor_id == x.investor_id && y.timestamp == x.timestamp) {\n // works if its guaranteed that for one timestamp there is only one rebalance for one pool\n x.total_amount_a = BigInt(y.amount_a_before);\n x.total_amount_b = BigInt(y.amount_b_before);\n }\n }\n }\n }\n }\n\n return autoCompoundingEvents;\n}\n\nexport async function calculateAprForInvestor(\n events: AutoCompoundingEventNode[],\n): Promise<number> {\n // Sort events by timestamp to process them in order\n events.sort((a, b) => a.timestamp - b.timestamp);\n\n let totalGrowth = 0;\n let totalTimeSpan = 0;\n let previousTimestamp = events[0].timestamp; // Start with the timestamp of the first event\n let previousGrowthRate = 0;\n\n const investorPoolMap = await getInvestorPoolMap();\n\n for (const event of events) {\n // Calculate the time difference from the previous event\n const timeDiff = event.timestamp - previousTimestamp; // / (1000 * 60 * 60 * 24);\n\n // Calculate growth rate\n let growthRate = 0;\n if (\"total_amount_a\" in event && \"total_amount_b\" in event) {\n let growthA = 0;\n let growthB = 0;\n growthA =\n Number(event.total_amount_a) === 0\n ? 0\n : Number(event.compound_amount_a) / Number(event.total_amount_a);\n\n growthB =\n Number(event.total_amount_b) == 0\n ? 0\n : Number(event.compound_amount_b) / Number(event.total_amount_b);\n\n growthRate = (growthA + growthB) / 2; // Averaging growth rates for token A and B\n // if (\n // event.investor_id ===\n // \"0xba6acd0350eab1c6bc433b6c869e5592fe0667ae96a3115f89d5c79dd78396ef\"\n // ) {\n // console.log(\n // `${event.compound_amount_a},${event.total_amount_a},${event.compound_amount_b},${event.total_amount_b},${event.timestamp},${event.free_balance_a},${event.free_balance_b}`,\n // );\n // }\n if (Math.abs(growthA - growthB) > 0.5) {\n // skip row, fill with previous event\n growthRate = previousGrowthRate;\n }\n } else if (\"total_amount\" in event) {\n let compoundAmount: number = Number(event.compound_amount);\n let totalAmount: number = Number(event.total_amount);\n if (\"cur_total_debt\" in event && \"accrued_interest\" in event) {\n compoundAmount = Number(event.compound_amount - event.accrued_interest);\n totalAmount = Number(event.total_amount - event.cur_total_debt);\n }\n // NaviAutoCompoundingEvent\n growthRate = isNaN(compoundAmount / totalAmount)\n ? 0\n : compoundAmount / totalAmount;\n const poolName = investorPoolMap.get(\n event.investor_id,\n ) as SingleAssetPoolNames;\n const coinName = poolCoinMap[poolName];\n\n growthRate = growthRate * Math.pow(10, 9 - coins[coinName].expo);\n }\n\n // Accumulate the time-weighted growth\n totalGrowth += growthRate;\n previousGrowthRate = growthRate;\n\n // Accumulate the total time span\n totalTimeSpan += timeDiff;\n\n // Update the previous timestamp to the current event's timestamp\n previousTimestamp = event.timestamp;\n }\n\n const apr = (totalGrowth / totalTimeSpan) * (1000 * 60 * 60 * 24 * 365) * 100;\n\n return apr;\n}\n\nasync function calculateAprForInvestors(\n events: AutoCompoundingEventNode[],\n): Promise<Record<string, number>> {\n const investorEvents: Record<string, AutoCompoundingEventNode[]> = {};\n\n // Step 1: Segregate events by investor_id\n for (const event of events) {\n const investorId = event.investor_id;\n if (!investorEvents[investorId]) {\n investorEvents[investorId] = [];\n }\n investorEvents[investorId].push(event);\n }\n\n // Step 2: Calculate APR for each event and aggregate for each investor\n const aprPromises: Promise<{ investorId: string; apr: number }>[] = [];\n\n for (const investorId in investorEvents) {\n const investorEventList = investorEvents[investorId];\n // Push a promise that resolves to an object containing the investorId and the corresponding APR\n aprPromises.push(\n calculateAprForInvestor(investorEventList).then((apr) => ({\n investorId,\n apr,\n })),\n );\n }\n\n // Resolve all promises and map them to the corresponding APR\n const aprs = await Promise.all(aprPromises);\n\n // Convert the array of results into an object mapping investorId to APR\n const aprMap = aprs.reduce(\n (map, result) => {\n map[result.investorId] = result.apr;\n return map;\n },\n {} as Record<string, number>,\n );\n\n return aprMap;\n}\n\nexport async function calculateAprForPools(\n events: AutoCompoundingEventNode[],\n): Promise<Record<PoolName, number>> {\n const aprMap: Record<string, number> = {};\n const investorPoolNameMap = await getInvestorPoolMap();\n const investorAprMap = await calculateAprForInvestors(events);\n for (const investorId in investorAprMap) {\n const poolName = investorPoolNameMap.get(investorId);\n if (poolName) {\n aprMap[poolName] = investorAprMap[investorId];\n }\n }\n return aprMap;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"fetchAutoCompoundingEvents.js","sourceRoot":"","sources":["../../../../src/sui-sdk/events/fetchAutoCompoundingEvents.ts"],"names":[],"mappings":"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","sourcesContent":["import { coins } from \"../../common/coins.js\";\nimport {\n getInvestorPoolMap,\n poolCoinMap,\n poolInfo,\n} from \"../../common/maps.js\";\nimport { PoolName, SingleAssetPoolNames } from \"../../common/types.js\";\nimport { fetchEvents } from \"./fetchEvents.js\";\nimport {\n AutoCompoundingEventNode,\n FetchAutoCompoundingEventsParams,\n //RebalanceEventNode,\n} from \"./types.js\";\n\nexport async function fetchAutoCompoundingEvents(\n params: FetchAutoCompoundingEventsParams,\n): Promise<AutoCompoundingEventNode[]> {\n const eventTypesSet = new Set<string>();\n // const rebalanceEventTypesSet = new Set<string>();\n if (params.poolNames) {\n params.poolNames.forEach((poolName) => {\n const eventType = poolInfo[poolName].autoCompoundingEventType;\n if (eventType !== undefined && eventType !== null && eventType !== \"\") {\n eventTypesSet.add(eventType);\n }\n });\n } else {\n // Iterate over all the values in poolInfo and add each autoCompoundingEventType to the Set\n Object.values(poolInfo).forEach((info) => {\n const eventType = info.autoCompoundingEventType;\n if (eventType !== undefined && eventType !== null && eventType !== \"\") {\n eventTypesSet.add(eventType);\n }\n });\n }\n // for rebalance\n // if (params.poolNames) {\n // params.poolNames.forEach((poolName) => {\n // const eventType = poolInfo[poolName].rebalanceEventType;\n // if (eventType !== undefined && eventType !== null && eventType !== \"\") {\n // rebalanceEventTypesSet.add(eventType);\n // }\n // });\n // } else {\n // // Iterate over all the values in poolInfo and add each autoCompoundingEventType to the Set\n // Object.values(poolInfo).forEach((info) => {\n // const eventType = info.rebalanceEventType;\n // if (eventType !== undefined && eventType !== null && eventType !== \"\") {\n // rebalanceEventTypesSet.add(eventType);\n // }\n // });\n // }\n\n const eventTypes = Array.from(eventTypesSet);\n // const rebalanceEventTypes = Array.from(rebalanceEventTypesSet);\n\n const eventsPromises = eventTypes.map(async (eventType) => {\n const events = (\n await fetchEvents({\n startTime: params.startTime,\n endTime: params.endTime,\n eventTypes: [eventType],\n })\n ).filter((e) => {\n if (params.poolNames) {\n return params.poolNames\n .map((poolName) => poolInfo[poolName].investorId)\n .includes((e as AutoCompoundingEventNode).investor_id);\n } else {\n return true;\n }\n });\n return events;\n });\n // const rebalanceEventsPromises = rebalanceEventTypes.map(async (eventType) => {\n // const events = (\n // await fetchEvents({\n // startTime: params.startTime,\n // endTime: params.endTime,\n // eventTypes: [eventType],\n // })\n // ).filter((e) => {\n // if (params.poolNames) {\n // return params.poolNames\n // .map((poolName) => poolInfo[poolName].investorId)\n // .includes((e as AutoCompoundingEventNode).investor_id);\n // } else {\n // return true;\n // }\n // });\n // return events;\n // });\n\n const events = (await Promise.all(eventsPromises)).flat();\n\n const autoCompoundingEvents = events.map((e) => {\n return e as AutoCompoundingEventNode;\n });\n\n // const rebalanceEvents = (await Promise.all(rebalanceEventsPromises)).flat();\n\n // const rebalancingEvents = rebalanceEvents.map((e) => {\n // return e as RebalanceEventNode;\n // });\n\n // const investorPoolMap = await getInvestorPoolMap();\n\n // for (const x of autoCompoundingEvents) {\n // if (\n // investorPoolMap.get(x.investor_id) &&\n // poolInfo[investorPoolMap.get(x.investor_id)!].parentProtocolName ==\n // \"CETUS\"\n // ) {\n // if (\n // \"total_amount_a\" in x &&\n // x.total_amount_a == 0n &&\n // x.total_amount_b == 0n\n // ) {\n // for (const y of rebalancingEvents) {\n // if (y.investor_id == x.investor_id && y.timestamp == x.timestamp) {\n // // works if its guaranteed that for one timestamp there is only one rebalance for one pool\n // x.total_amount_a = BigInt(y.amount_a_before);\n // x.total_amount_b = BigInt(y.amount_b_before);\n // }\n // }\n // }\n // }\n // }\n\n return autoCompoundingEvents;\n}\n\nexport async function calculateAprForInvestor(\n events: AutoCompoundingEventNode[],\n): Promise<number> {\n // Sort events by timestamp to process them in order\n events.sort((a, b) => a.timestamp - b.timestamp);\n\n let totalGrowth = 0;\n let totalTimeSpan = 0;\n let previousTimestamp = events[0].timestamp; // Start with the timestamp of the first event\n let previousGrowthRate = 0;\n let previousTimeDiff = 0;\n let prevCompoundA = 0n;\n let prevCompoundB = 0n;\n\n const investorPoolMap = await getInvestorPoolMap();\n\n // const matchInvestor =\n // \"0x05fa099d1df7b5bfb2e420d5ee2d63508db17c40ce7c4e0ca0305cd5df974e43\";\n // if (events && events.length > 0 && events[0].investor_id === matchInvestor) {\n // console.log(\n // \"Compund A,Total A,Compound B,Total B,Freebalance A,Freebalance B,GrowthA,GrowthB,AvgGrowth,Timestamp,TimeDiff (Min)\",\n // );\n // }\n for (const event of events) {\n // Calculate the time difference from the previous event\n let timeDiff = event.timestamp - previousTimestamp; // / (1000 * 60 * 60 * 24);\n\n // Calculate growth rate\n let growthRate = 0;\n if (\"total_amount_a\" in event && \"total_amount_b\" in event) {\n let growthA = 0;\n let growthB = 0;\n\n if (Number(event.total_amount_a) === 0) {\n prevCompoundA += event.compound_amount_a;\n } else {\n prevCompoundA = 0n;\n }\n if (prevCompoundA > 0n) {\n growthA =\n Number(event.total_amount_a) === 0\n ? 0\n : Number(event.compound_amount_a + prevCompoundA) /\n Number(event.total_amount_a - prevCompoundA);\n } else {\n growthA =\n Number(event.total_amount_a) === 0\n ? 0\n : Number(event.compound_amount_a) / Number(event.total_amount_a);\n }\n\n if (Number(event.total_amount_b) === 0) {\n prevCompoundB += event.compound_amount_b;\n } else {\n prevCompoundB = 0n;\n }\n\n if (prevCompoundB > 0n) {\n growthB =\n Number(event.total_amount_b) == 0\n ? 0\n : Number(event.compound_amount_b + prevCompoundB) /\n Number(event.total_amount_b - prevCompoundB);\n } else {\n growthB =\n Number(event.total_amount_b) == 0\n ? 0\n : Number(event.compound_amount_b) / Number(event.total_amount_b);\n }\n\n // if (\n // event.investor_id ===\n // \"0xd060e81548aee885bd3d37ae0caec181185be792bf45412e0d0acccd1e0174e6\"\n // ) {\n // console.log(\n // timeDiff / (1000 * 60),\n // event.timestamp,\n // event.timestamp - previousTimestamp,\n // );\n // }\n // if (\n // event.investor_id ===\n // \"0xd060e81548aee885bd3d37ae0caec181185be792bf45412e0d0acccd1e0174e6\"\n // ) {\n // console.log(\n // event.compound_amount_a,\n // event.total_amount_a,\n // growthA,\n // event.compound_amount_b,\n // event.total_amount_b,\n // growthB,\n // );\n // }\n growthRate = (growthA + growthB) / 2; // Averaging growth rates for token A and B\n // if (event.investor_id === matchInvestor) {\n // console.log(\n // `${event.compound_amount_a},${event.total_amount_a},${event.compound_amount_b},${event.total_amount_b},${event.free_balance_a},${event.free_balance_b},${growthA},${growthB},${growthRate},${event.timestamp},${(event.timestamp - previousTimestamp) / (1000 * 60)}`,\n // );\n // }\n if (Math.abs(growthA - growthB) > 0.5) {\n // skip row, fill with previous event\n growthRate = previousGrowthRate;\n timeDiff = previousTimeDiff;\n }\n if (growthRate > 0.005) {\n growthRate = 0;\n }\n } else if (\"total_amount\" in event) {\n let compoundAmount: number = Number(event.compound_amount);\n let totalAmount: number = Number(event.total_amount);\n if (\"cur_total_debt\" in event && \"accrued_interest\" in event) {\n compoundAmount = Number(event.compound_amount - event.accrued_interest);\n totalAmount = Number(event.total_amount - event.cur_total_debt);\n }\n // NaviAutoCompoundingEvent\n growthRate = isNaN(compoundAmount / totalAmount)\n ? 0\n : compoundAmount / totalAmount;\n const poolName = investorPoolMap.get(\n event.investor_id,\n ) as SingleAssetPoolNames;\n const coinName = poolCoinMap[poolName];\n\n growthRate = growthRate * Math.pow(10, 9 - coins[coinName].expo);\n }\n\n // Accumulate the time-weighted growth\n totalGrowth = (totalGrowth + 1) * (1 + growthRate) - 1;\n previousGrowthRate = growthRate;\n\n // Accumulate the total time span\n totalTimeSpan += timeDiff;\n previousTimeDiff = timeDiff;\n\n // Update the previous timestamp to the current event's timestamp\n previousTimestamp = event.timestamp;\n }\n\n const apr = (totalGrowth / totalTimeSpan) * (1000 * 60 * 60 * 24 * 365) * 100;\n\n return apr;\n}\n\nasync function calculateAprForInvestors(\n events: AutoCompoundingEventNode[],\n): Promise<Record<string, number>> {\n const investorEvents: Record<string, AutoCompoundingEventNode[]> = {};\n\n // Step 1: Segregate events by investor_id\n for (const event of events) {\n const investorId = event.investor_id;\n if (!investorEvents[investorId]) {\n investorEvents[investorId] = [];\n }\n investorEvents[investorId].push(event);\n }\n\n // Step 2: Calculate APR for each event and aggregate for each investor\n const aprPromises: Promise<{ investorId: string; apr: number }>[] = [];\n\n for (const investorId in investorEvents) {\n const investorEventList = investorEvents[investorId];\n // Push a promise that resolves to an object containing the investorId and the corresponding APR\n aprPromises.push(\n calculateAprForInvestor(investorEventList).then((apr) => ({\n investorId,\n apr,\n })),\n );\n }\n\n // Resolve all promises and map them to the corresponding APR\n const aprs = await Promise.all(aprPromises);\n\n // Convert the array of results into an object mapping investorId to APR\n const aprMap = aprs.reduce(\n (map, result) => {\n map[result.investorId] = result.apr;\n return map;\n },\n {} as Record<string, number>,\n );\n\n return aprMap;\n}\n\nexport async function calculateAprForPools(\n events: AutoCompoundingEventNode[],\n): Promise<Record<PoolName, number>> {\n const aprMap: Record<string, number> = {};\n const investorPoolNameMap = await getInvestorPoolMap();\n const investorAprMap = await calculateAprForInvestors(events);\n for (const investorId in investorAprMap) {\n const poolName = investorPoolNameMap.get(investorId);\n if (poolName) {\n aprMap[poolName] = investorAprMap[investorId];\n }\n }\n return aprMap;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchEvents.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/events/fetchEvents.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,SAAS,EACT,iBAAiB,EAOlB,MAAM,YAAY,CAAC;AAIpB,wBAAsB,WAAW,CAC/B,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,SAAS,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"fetchEvents.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/events/fetchEvents.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,SAAS,EACT,iBAAiB,EAOlB,MAAM,YAAY,CAAC;AAIpB,wBAAsB,WAAW,CAC/B,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,SAAS,EAAE,CAAC,CAwMtB"}
|
|
@@ -22,6 +22,7 @@ async function fetchEvents(params) {
|
|
|
22
22
|
throw new Error("startTime must be less than endTime");
|
|
23
23
|
}
|
|
24
24
|
const suiClient = (0, client_js_1.getSuiClient)();
|
|
25
|
+
//const prevTS = 0;
|
|
25
26
|
while (hasNextPage) {
|
|
26
27
|
const result = await suiClient.queryEvents({
|
|
27
28
|
cursor: startCursor,
|
|
@@ -60,6 +61,16 @@ async function fetchEvents(params) {
|
|
|
60
61
|
total_amount_a: BigInt(suiEventJson.total_amount_a.toString()),
|
|
61
62
|
total_amount_b: BigInt(suiEventJson.total_amount_b.toString()),
|
|
62
63
|
};
|
|
64
|
+
// if (
|
|
65
|
+
// eventNode.investor_id ===
|
|
66
|
+
// "0xd060e81548aee885bd3d37ae0caec181185be792bf45412e0d0acccd1e0174e6"
|
|
67
|
+
// ) {
|
|
68
|
+
// console.log(
|
|
69
|
+
// eventNode.timestamp,
|
|
70
|
+
// (prevTS - eventNode.timestamp) / (1000 * 60),
|
|
71
|
+
// );
|
|
72
|
+
// prevTS = eventNode.timestamp;
|
|
73
|
+
// }
|
|
63
74
|
}
|
|
64
75
|
else if (isAutoCompoundingEvent(suiEvent.type) &&
|
|
65
76
|
"compound_amount" in suiEventJson) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchEvents.js","sourceRoot":"","sources":["../../../../src/sui-sdk/events/fetchEvents.ts"],"names":[],"mappings":"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","sourcesContent":["import { getSuiClient } from \"../client.js\";\nimport { EventId, PaginatedEvents } from \"@mysten/sui/client\";\nimport {\n AlphaLiquidityChangeEvent,\n AlphaAutoCompoundingEvent,\n CetusAutoCompoundingEvent,\n CetusLiquidityChangeEvent,\n EventNode,\n FetchEventsParams,\n LiquidityChangeEventNode,\n NaviAutoCompoundingEvent,\n NaviLoopAutoCompoundingEvent,\n NaviLiquidityChangeEvent,\n RebalanceEvent,\n AutoCompoundingEventNode,\n} from \"./types.js\";\nimport { poolInfo } from \"../../common/maps.js\";\nimport { conf, CONF_ENV } from \"../../common/constants.js\";\n\nexport async function fetchEvents(\n params: FetchEventsParams,\n): Promise<EventNode[]> {\n const allEvents: EventNode[] = [];\n let hasNextPage = true;\n let startCursor: EventId | null | undefined = null;\n\n if (params.eventTypes.length > 1) {\n console.warn(\n \"Multiple eventTypes not supported right now, pass only one element in the array.\",\n );\n }\n\n if (params.eventTypes.length < 1) {\n hasNextPage = false;\n }\n\n const now = Date.now();\n const twentyFourHoursAgo = now - 24 * 60 * 60 * 1000; // timestamp for 24 hours ago\n const startTime = params.startTime ? params.startTime : twentyFourHoursAgo;\n const endTime = params.endTime ? params.endTime : now;\n\n if (startTime >= endTime) {\n throw new Error(\"startTime must be less than endTime\");\n }\n\n const suiClient = getSuiClient();\n\n while (hasNextPage) {\n const result: PaginatedEvents = await suiClient.queryEvents({\n cursor: startCursor,\n order: \"descending\",\n query: {\n MoveEventType: params.eventTypes[0],\n },\n });\n\n const se = result.data;\n for (let i = 0; i < se.length; i++) {\n const suiEvent = se[i];\n\n if (Number(suiEvent.timestampMs) > endTime) {\n continue;\n }\n\n if (Number(suiEvent.timestampMs) < startTime) {\n hasNextPage = false; // Stop further pagination\n break; // Exit the loop\n }\n\n const suiEventJson = suiEvent.parsedJson as\n | CetusAutoCompoundingEvent\n | NaviAutoCompoundingEvent\n | NaviLoopAutoCompoundingEvent\n | RebalanceEvent\n | CetusLiquidityChangeEvent\n | AlphaLiquidityChangeEvent\n | NaviLiquidityChangeEvent\n | AlphaAutoCompoundingEvent;\n\n let eventNode: EventNode;\n\n if (\n isAutoCompoundingEvent(suiEvent.type) &&\n \"compound_amount_a\" in suiEventJson &&\n \"compound_amount_b\" in suiEventJson\n ) {\n // Handling CetusAutoCompoundingEvent\n eventNode = {\n type: suiEvent.type,\n timestamp: Number(suiEvent.timestampMs),\n compound_amount_a: BigInt(suiEventJson.compound_amount_a.toString()),\n compound_amount_b: BigInt(suiEventJson.compound_amount_b.toString()),\n current_liquidity: BigInt(suiEventJson.current_liquidity.toString()),\n fee_collected_a: BigInt(suiEventJson.fee_collected_a.toString()),\n fee_collected_b: BigInt(suiEventJson.fee_collected_b.toString()),\n free_balance_a: BigInt(suiEventJson.free_balance_a.toString()),\n free_balance_b: BigInt(suiEventJson.free_balance_b.toString()),\n investor_id: suiEventJson.investor_id,\n total_amount_a: BigInt(suiEventJson.total_amount_a.toString()),\n total_amount_b: BigInt(suiEventJson.total_amount_b.toString()),\n };\n } else if (\n isAutoCompoundingEvent(suiEvent.type) &&\n \"compound_amount\" in suiEventJson\n ) {\n // Handling NaviAutoCompoundingEvent\n eventNode = {\n type: suiEvent.type,\n timestamp: Number(suiEvent.timestampMs),\n compound_amount: BigInt(suiEventJson.compound_amount.toString()),\n fee_collected: BigInt(suiEventJson.fee_collected.toString()),\n investor_id: suiEventJson.investor_id,\n location: suiEventJson.location,\n total_amount: BigInt(suiEventJson.total_amount.toString()),\n };\n if (\n \"cur_total_debt\" in suiEventJson &&\n \"accrued_interest\" in suiEventJson\n ) {\n const loopEvent: AutoCompoundingEventNode = {\n ...eventNode,\n cur_total_debt: BigInt(suiEventJson.cur_total_debt.toString()),\n accrued_interest: BigInt(suiEventJson.accrued_interest.toString()),\n };\n eventNode = loopEvent;\n }\n } else if (\n isAutoCompoundingEvent(suiEvent.type) &&\n \"amount\" in suiEventJson\n ) {\n eventNode = {\n type: suiEvent.type,\n timestamp: Number(suiEvent.timestampMs),\n amount: suiEventJson.amount,\n investor_id: conf[CONF_ENV].ALPHA_POOL,\n };\n } else if (\n isRebalanceEvent(suiEvent.type) &&\n \"lower_tick_after\" in suiEventJson\n ) {\n // Handling RebalanceEvent\n eventNode = {\n type: suiEvent.type,\n timestamp: Number(suiEvent.timestampMs),\n investor_id: suiEventJson.investor_id.toString(),\n lower_tick_after: suiEventJson.lower_tick_after.toString(),\n upper_tick_after: suiEventJson.upper_tick_after.toString(),\n sqrt_price_after: suiEventJson.sqrt_price_after.toString(),\n amount_a_before: suiEventJson.amount_a_before.toString(),\n amount_b_before: suiEventJson.amount_b_before.toString(),\n amount_a_after: suiEventJson.amount_a_after.toString(),\n amount_b_after: suiEventJson.amount_b_after.toString(),\n };\n } else if (\n isLiquidityChangeEvent(suiEvent.type) &&\n \"amount_a\" in suiEventJson\n ) {\n // Handling CetusLiquidityChangeEvent\n eventNode = {\n type: suiEvent.type,\n timestamp: Number(suiEvent.timestampMs),\n amount_a: suiEventJson.amount_a,\n amount_b: suiEventJson.amount_b,\n event_type: suiEventJson.event_type,\n fee_collected_a: suiEventJson.fee_collected_a,\n fee_collected_b: suiEventJson.fee_collected_b,\n pool_id: suiEventJson.pool_id,\n sender: suiEventJson.sender,\n tokens_invested: suiEventJson.tokens_invested,\n total_amount_a: suiEventJson.total_amount_a,\n total_amount_b: suiEventJson.total_amount_b,\n user_total_x_token_balance: suiEventJson.user_total_x_token_balance,\n x_token_supply: suiEventJson.x_token_supply,\n } as LiquidityChangeEventNode;\n } else if (\n isLiquidityChangeEvent(suiEvent.type) &&\n \"amount\" in suiEventJson &&\n !(\"investor_id\" in suiEventJson)\n ) {\n // Handling NaviLiquidityChangeEvent and AlphaLiquidityChangeEvent\n eventNode = {\n type: suiEvent.type,\n timestamp: Number(suiEvent.timestampMs),\n amount: suiEventJson.amount,\n event_type: suiEventJson.event_type,\n fee_collected: suiEventJson.fee_collected,\n pool_id: suiEventJson.pool_id,\n sender: suiEventJson.sender,\n tokens_invested: suiEventJson.tokens_invested,\n user_total_x_token_balance: suiEventJson.user_total_x_token_balance,\n x_token_supply: suiEventJson.x_token_supply,\n } as LiquidityChangeEventNode;\n } else {\n throw new Error(\"Unknown event type\");\n }\n\n allEvents.push(eventNode);\n }\n\n // If we set hasPreviousPage to false, exit the outer loop as well\n if (!hasNextPage) {\n break;\n }\n\n hasNextPage = result.hasNextPage;\n startCursor = result.nextCursor;\n }\n\n return allEvents;\n}\n\nconst isAutoCompoundingEvent = (eventType: string) => {\n const eventTypes: string[] = Object.values(poolInfo).map((info) => {\n return info.autoCompoundingEventType;\n });\n return eventTypes.includes(eventType);\n};\n\nconst isRebalanceEvent = (eventType: string) => {\n const eventTypes: string[] = Object.values(poolInfo)\n .filter((info) => {\n return info.rebalanceEventType ? true : false;\n })\n .map((info) => {\n return info.rebalanceEventType as string;\n });\n return eventTypes.includes(eventType);\n};\n\nconst isLiquidityChangeEvent = (eventType: string) => {\n const eventTypes: string[] = Object.values(poolInfo).map((info) => {\n return info.liquidityChangeEventType;\n });\n return eventTypes.includes(eventType);\n};\n"]}
|
|
1
|
+
{"version":3,"file":"fetchEvents.js","sourceRoot":"","sources":["../../../../src/sui-sdk/events/fetchEvents.ts"],"names":[],"mappings":"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","sourcesContent":["import { getSuiClient } from \"../client.js\";\nimport { EventId, PaginatedEvents } from \"@mysten/sui/client\";\nimport {\n AlphaLiquidityChangeEvent,\n AlphaAutoCompoundingEvent,\n CetusAutoCompoundingEvent,\n CetusLiquidityChangeEvent,\n EventNode,\n FetchEventsParams,\n LiquidityChangeEventNode,\n NaviAutoCompoundingEvent,\n NaviLoopAutoCompoundingEvent,\n NaviLiquidityChangeEvent,\n RebalanceEvent,\n AutoCompoundingEventNode,\n} from \"./types.js\";\nimport { poolInfo } from \"../../common/maps.js\";\nimport { conf, CONF_ENV } from \"../../common/constants.js\";\n\nexport async function fetchEvents(\n params: FetchEventsParams,\n): Promise<EventNode[]> {\n const allEvents: EventNode[] = [];\n let hasNextPage = true;\n let startCursor: EventId | null | undefined = null;\n\n if (params.eventTypes.length > 1) {\n console.warn(\n \"Multiple eventTypes not supported right now, pass only one element in the array.\",\n );\n }\n\n if (params.eventTypes.length < 1) {\n hasNextPage = false;\n }\n\n const now = Date.now();\n const twentyFourHoursAgo = now - 24 * 60 * 60 * 1000; // timestamp for 24 hours ago\n const startTime = params.startTime ? params.startTime : twentyFourHoursAgo;\n const endTime = params.endTime ? params.endTime : now;\n\n if (startTime >= endTime) {\n throw new Error(\"startTime must be less than endTime\");\n }\n\n const suiClient = getSuiClient();\n //const prevTS = 0;\n\n while (hasNextPage) {\n const result: PaginatedEvents = await suiClient.queryEvents({\n cursor: startCursor,\n order: \"descending\",\n query: {\n MoveEventType: params.eventTypes[0],\n },\n });\n\n const se = result.data;\n for (let i = 0; i < se.length; i++) {\n const suiEvent = se[i];\n\n if (Number(suiEvent.timestampMs) > endTime) {\n continue;\n }\n\n if (Number(suiEvent.timestampMs) < startTime) {\n hasNextPage = false; // Stop further pagination\n break; // Exit the loop\n }\n\n const suiEventJson = suiEvent.parsedJson as\n | CetusAutoCompoundingEvent\n | NaviAutoCompoundingEvent\n | NaviLoopAutoCompoundingEvent\n | RebalanceEvent\n | CetusLiquidityChangeEvent\n | AlphaLiquidityChangeEvent\n | NaviLiquidityChangeEvent\n | AlphaAutoCompoundingEvent;\n\n let eventNode: EventNode;\n\n if (\n isAutoCompoundingEvent(suiEvent.type) &&\n \"compound_amount_a\" in suiEventJson &&\n \"compound_amount_b\" in suiEventJson\n ) {\n // Handling CetusAutoCompoundingEvent\n eventNode = {\n type: suiEvent.type,\n timestamp: Number(suiEvent.timestampMs),\n compound_amount_a: BigInt(suiEventJson.compound_amount_a.toString()),\n compound_amount_b: BigInt(suiEventJson.compound_amount_b.toString()),\n current_liquidity: BigInt(suiEventJson.current_liquidity.toString()),\n fee_collected_a: BigInt(suiEventJson.fee_collected_a.toString()),\n fee_collected_b: BigInt(suiEventJson.fee_collected_b.toString()),\n free_balance_a: BigInt(suiEventJson.free_balance_a.toString()),\n free_balance_b: BigInt(suiEventJson.free_balance_b.toString()),\n investor_id: suiEventJson.investor_id,\n total_amount_a: BigInt(suiEventJson.total_amount_a.toString()),\n total_amount_b: BigInt(suiEventJson.total_amount_b.toString()),\n };\n\n // if (\n // eventNode.investor_id ===\n // \"0xd060e81548aee885bd3d37ae0caec181185be792bf45412e0d0acccd1e0174e6\"\n // ) {\n // console.log(\n // eventNode.timestamp,\n // (prevTS - eventNode.timestamp) / (1000 * 60),\n // );\n // prevTS = eventNode.timestamp;\n // }\n } else if (\n isAutoCompoundingEvent(suiEvent.type) &&\n \"compound_amount\" in suiEventJson\n ) {\n // Handling NaviAutoCompoundingEvent\n eventNode = {\n type: suiEvent.type,\n timestamp: Number(suiEvent.timestampMs),\n compound_amount: BigInt(suiEventJson.compound_amount.toString()),\n fee_collected: BigInt(suiEventJson.fee_collected.toString()),\n investor_id: suiEventJson.investor_id,\n location: suiEventJson.location,\n total_amount: BigInt(suiEventJson.total_amount.toString()),\n };\n if (\n \"cur_total_debt\" in suiEventJson &&\n \"accrued_interest\" in suiEventJson\n ) {\n const loopEvent: AutoCompoundingEventNode = {\n ...eventNode,\n cur_total_debt: BigInt(suiEventJson.cur_total_debt.toString()),\n accrued_interest: BigInt(suiEventJson.accrued_interest.toString()),\n };\n eventNode = loopEvent;\n }\n } else if (\n isAutoCompoundingEvent(suiEvent.type) &&\n \"amount\" in suiEventJson\n ) {\n eventNode = {\n type: suiEvent.type,\n timestamp: Number(suiEvent.timestampMs),\n amount: suiEventJson.amount,\n investor_id: conf[CONF_ENV].ALPHA_POOL,\n };\n } else if (\n isRebalanceEvent(suiEvent.type) &&\n \"lower_tick_after\" in suiEventJson\n ) {\n // Handling RebalanceEvent\n eventNode = {\n type: suiEvent.type,\n timestamp: Number(suiEvent.timestampMs),\n investor_id: suiEventJson.investor_id.toString(),\n lower_tick_after: suiEventJson.lower_tick_after.toString(),\n upper_tick_after: suiEventJson.upper_tick_after.toString(),\n sqrt_price_after: suiEventJson.sqrt_price_after.toString(),\n amount_a_before: suiEventJson.amount_a_before.toString(),\n amount_b_before: suiEventJson.amount_b_before.toString(),\n amount_a_after: suiEventJson.amount_a_after.toString(),\n amount_b_after: suiEventJson.amount_b_after.toString(),\n };\n } else if (\n isLiquidityChangeEvent(suiEvent.type) &&\n \"amount_a\" in suiEventJson\n ) {\n // Handling CetusLiquidityChangeEvent\n eventNode = {\n type: suiEvent.type,\n timestamp: Number(suiEvent.timestampMs),\n amount_a: suiEventJson.amount_a,\n amount_b: suiEventJson.amount_b,\n event_type: suiEventJson.event_type,\n fee_collected_a: suiEventJson.fee_collected_a,\n fee_collected_b: suiEventJson.fee_collected_b,\n pool_id: suiEventJson.pool_id,\n sender: suiEventJson.sender,\n tokens_invested: suiEventJson.tokens_invested,\n total_amount_a: suiEventJson.total_amount_a,\n total_amount_b: suiEventJson.total_amount_b,\n user_total_x_token_balance: suiEventJson.user_total_x_token_balance,\n x_token_supply: suiEventJson.x_token_supply,\n } as LiquidityChangeEventNode;\n } else if (\n isLiquidityChangeEvent(suiEvent.type) &&\n \"amount\" in suiEventJson &&\n !(\"investor_id\" in suiEventJson)\n ) {\n // Handling NaviLiquidityChangeEvent and AlphaLiquidityChangeEvent\n eventNode = {\n type: suiEvent.type,\n timestamp: Number(suiEvent.timestampMs),\n amount: suiEventJson.amount,\n event_type: suiEventJson.event_type,\n fee_collected: suiEventJson.fee_collected,\n pool_id: suiEventJson.pool_id,\n sender: suiEventJson.sender,\n tokens_invested: suiEventJson.tokens_invested,\n user_total_x_token_balance: suiEventJson.user_total_x_token_balance,\n x_token_supply: suiEventJson.x_token_supply,\n } as LiquidityChangeEventNode;\n } else {\n throw new Error(\"Unknown event type\");\n }\n\n allEvents.push(eventNode);\n }\n\n // If we set hasPreviousPage to false, exit the outer loop as well\n if (!hasNextPage) {\n break;\n }\n\n hasNextPage = result.hasNextPage;\n startCursor = result.nextCursor;\n }\n\n return allEvents;\n}\n\nconst isAutoCompoundingEvent = (eventType: string) => {\n const eventTypes: string[] = Object.values(poolInfo).map((info) => {\n return info.autoCompoundingEventType;\n });\n return eventTypes.includes(eventType);\n};\n\nconst isRebalanceEvent = (eventType: string) => {\n const eventTypes: string[] = Object.values(poolInfo)\n .filter((info) => {\n return info.rebalanceEventType ? true : false;\n })\n .map((info) => {\n return info.rebalanceEventType as string;\n });\n return eventTypes.includes(eventType);\n};\n\nconst isLiquidityChangeEvent = (eventType: string) => {\n const eventTypes: string[] = Object.values(poolInfo).map((info) => {\n return info.liquidityChangeEventType;\n });\n return eventTypes.includes(eventType);\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/events/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,UAAU,qBAAqB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,4BAA6B,SAAQ,wBAAwB;IAC5E,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/events/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/sui-sdk/events/types.ts"],"names":[],"mappings":"","sourcesContent":["import { PoolName } from \"../../common/types.js\";\n\ninterface CommonEventAttributes {\n type: string;\n timestamp: number;\n}\n\nexport interface CetusAutoCompoundingEvent {\n compound_amount_a: bigint;\n compound_amount_b: bigint;\n current_liquidity: bigint;\n fee_collected_a: bigint;\n fee_collected_b: bigint;\n free_balance_a: bigint;\n free_balance_b: bigint;\n investor_id: string;\n total_amount_a: bigint;\n total_amount_b: bigint;\n}\n\nexport interface NaviAutoCompoundingEvent {\n compound_amount: bigint;\n fee_collected: bigint;\n investor_id: string;\n location: number;\n total_amount: bigint;\n}\n\nexport interface NaviLoopAutoCompoundingEvent extends NaviAutoCompoundingEvent {\n cur_total_debt: bigint;\n accrued_interest: bigint;\n}\n\nexport interface RebalanceEvent {\n investor_id: string;\n lower_tick_after: string;\n upper_tick_after: string;\n sqrt_price_after: string;\n amount_a_before: string;\n amount_b_before: string;\n amount_a_after: string;\n amount_b_after: string;\n}\n\nexport interface AlphaAutoCompoundingEvent {\n amount: string;\n investor_id: string;\n}\n\nexport interface CetusLiquidityChangeEvent {\n amount_a: string;\n amount_b: string;\n event_type: number;\n fee_collected_a: string;\n fee_collected_b: string;\n pool_id: string;\n sender: string;\n tokens_invested: string;\n total_amount_a: string;\n total_amount_b: string;\n user_total_x_token_balance: string;\n x_token_supply: string;\n}\n\nexport interface NaviLiquidityChangeEvent {\n amount: string;\n event_type: number;\n fee_collected: string;\n pool_id: string;\n sender: string;\n tokens_invested: string;\n user_total_x_token_balance: string;\n x_token_supply: string;\n}\n\nexport interface AlphaLiquidityChangeEvent {\n amount: string;\n event_type: number;\n fee_collected: string;\n pool_id: string;\n sender: string;\n tokens_invested: string;\n user_total_x_token_balance: string;\n x_token_supply: string;\n}\n\nexport type AutoCompoundingEventNode =\n | (CetusAutoCompoundingEvent & CommonEventAttributes)\n | (NaviAutoCompoundingEvent & CommonEventAttributes)\n | (NaviLoopAutoCompoundingEvent & CommonEventAttributes)\n | (AlphaAutoCompoundingEvent & CommonEventAttributes);\n\nexport type RebalanceEventNode = RebalanceEvent & CommonEventAttributes;\n\nexport type LiquidityChangeEventNode =\n | (CetusLiquidityChangeEvent & CommonEventAttributes)\n | (NaviLiquidityChangeEvent & CommonEventAttributes)\n | (AlphaLiquidityChangeEvent & CommonEventAttributes);\n\nexport type EventNode =\n | AutoCompoundingEventNode\n | RebalanceEventNode\n | LiquidityChangeEventNode;\n// export type EventNode = AutoCompoundingEventNode | RebalanceEventNode;\n\nexport type FetchAutoCompoundingEventsParams = {\n startTime?: number;\n endTime?: number;\n poolNames?: PoolName[];\n};\n\nexport type FetchRebalanceEventsParams = FetchAutoCompoundingEventsParams;\n\nexport type FetchLiquidityChangeEventsParams = FetchAutoCompoundingEventsParams;\n\nexport type FetchEventsParams = {\n eventTypes: string[];\n startTime?: number;\n endTime?: number;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/sui-sdk/events/types.ts"],"names":[],"mappings":"","sourcesContent":["import { PoolName } from \"../../common/types.js\";\n\ninterface CommonEventAttributes {\n type: string;\n timestamp: number;\n}\n\nexport interface CetusAutoCompoundingEvent {\n compound_amount_a: bigint;\n compound_amount_b: bigint;\n current_liquidity: bigint;\n fee_collected_a: bigint;\n fee_collected_b: bigint;\n free_balance_a: bigint;\n free_balance_b: bigint;\n investor_id: string;\n total_amount_a: bigint;\n total_amount_b: bigint;\n}\n\nexport interface NaviAutoCompoundingEvent {\n compound_amount: bigint;\n fee_collected: bigint;\n investor_id: string;\n location: number;\n total_amount: bigint;\n}\n\nexport interface NaviLoopAutoCompoundingEvent extends NaviAutoCompoundingEvent {\n cur_total_debt: bigint;\n accrued_interest: bigint;\n}\n\nexport interface RebalanceEvent {\n investor_id: string;\n lower_tick_after: string;\n upper_tick_after: string;\n sqrt_price_after: string;\n amount_a_before: string;\n amount_b_before: string;\n amount_a_after: string;\n amount_b_after: string;\n}\n\n//verify, this might be wrong, alphapool reward event is defined as alpha autocompounding event\nexport interface AlphaAutoCompoundingEvent {\n amount: string;\n investor_id: string;\n}\n\nexport interface CetusLiquidityChangeEvent {\n amount_a: string;\n amount_b: string;\n event_type: number;\n fee_collected_a: string;\n fee_collected_b: string;\n pool_id: string;\n sender: string;\n tokens_invested: string;\n total_amount_a: string;\n total_amount_b: string;\n user_total_x_token_balance: string;\n x_token_supply: string;\n}\n\nexport interface NaviLiquidityChangeEvent {\n amount: string;\n event_type: number;\n fee_collected: string;\n pool_id: string;\n sender: string;\n tokens_invested: string;\n user_total_x_token_balance: string;\n x_token_supply: string;\n}\n\nexport interface AlphaLiquidityChangeEvent {\n amount: string;\n event_type: number;\n fee_collected: string;\n pool_id: string;\n sender: string;\n tokens_invested: string;\n user_total_x_token_balance: string;\n x_token_supply: string;\n}\n\nexport type AutoCompoundingEventNode =\n | (CetusAutoCompoundingEvent & CommonEventAttributes)\n | (NaviAutoCompoundingEvent & CommonEventAttributes)\n | (NaviLoopAutoCompoundingEvent & CommonEventAttributes)\n | (AlphaAutoCompoundingEvent & CommonEventAttributes);\n\nexport type RebalanceEventNode = RebalanceEvent & CommonEventAttributes;\n\nexport type LiquidityChangeEventNode =\n | (CetusLiquidityChangeEvent & CommonEventAttributes)\n | (NaviLiquidityChangeEvent & CommonEventAttributes)\n | (AlphaLiquidityChangeEvent & CommonEventAttributes);\n\nexport type EventNode =\n | AutoCompoundingEventNode\n | RebalanceEventNode\n | LiquidityChangeEventNode;\n// export type EventNode = AutoCompoundingEventNode | RebalanceEventNode;\n\nexport type FetchAutoCompoundingEventsParams = {\n startTime?: number;\n endTime?: number;\n poolNames?: PoolName[];\n};\n\nexport type FetchRebalanceEventsParams = FetchAutoCompoundingEventsParams;\n\nexport type FetchLiquidityChangeEventsParams = FetchAutoCompoundingEventsParams;\n\nexport type FetchEventsParams = {\n eventTypes: string[];\n startTime?: number;\n endTime?: number;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPortfolioAmounts.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getPortfolioAmounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAEL,QAAQ,EAIR,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AAgBxB,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,+BA+CvE;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,+BASvE;AAMD,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EACtE,WAAW,GAAE,OAAe,GAC3B,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAwDvC;AAED,wBAAsB,kCAAkC,CACtD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EACtE,WAAW,GAAE,OAAe,GAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"getPortfolioAmounts.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getPortfolioAmounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAEL,QAAQ,EAIR,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AAgBxB,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,+BA+CvE;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,+BASvE;AAMD,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EACtE,WAAW,GAAE,OAAe,GAC3B,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAwDvC;AAED,wBAAsB,kCAAkC,CACtD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EACtE,WAAW,GAAE,OAAe,GAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkC7B;AAMD,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EACtE,WAAW,GAAE,OAAe,mBA+H7B;AAED,wBAAsB,kCAAkC,CACtD,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EACtE,WAAW,GAAE,OAAe,GAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA+B7B"}
|
|
@@ -11,8 +11,8 @@ const getReceipts_js_1 = require("./getReceipts.js");
|
|
|
11
11
|
const simpleCache_js_1 = require("../../utils/simpleCache.js");
|
|
12
12
|
const coins_js_1 = require("../../common/coins.js");
|
|
13
13
|
const maps_js_1 = require("../../common/maps.js");
|
|
14
|
-
const prices_js_1 = require("../../utils/prices.js");
|
|
15
|
-
const prices_js_2 = require("../../utils/
|
|
14
|
+
const prices_js_1 = require("../../utils/clmm/prices.js");
|
|
15
|
+
const prices_js_2 = require("../../utils/prices.js");
|
|
16
16
|
async function getAlphaPortfolioAmount(poolName, options) {
|
|
17
17
|
const receipts = await (0, getReceipts_js_1.getReceipts)(poolName, options.address);
|
|
18
18
|
const pool = await (0, getReceipts_js_1.getPool)(poolName);
|
|
@@ -61,7 +61,7 @@ async function getAlphaPortfolioAmount(poolName, options) {
|
|
|
61
61
|
}
|
|
62
62
|
async function getAlphaPortfolioAmountInUSD(poolName, options) {
|
|
63
63
|
const tokens = await getAlphaPortfolioAmount(poolName, options);
|
|
64
|
-
const priceOfAlpha = await (0,
|
|
64
|
+
const priceOfAlpha = await (0, prices_js_1.getAlphaPrice)();
|
|
65
65
|
if (priceOfAlpha && tokens) {
|
|
66
66
|
let amount = new decimal_js_1.Decimal(tokens);
|
|
67
67
|
amount = amount.mul(priceOfAlpha);
|
|
@@ -129,8 +129,10 @@ async function getDoubleAssetPortfolioAmountInUSD(poolName, options, ignoreCache
|
|
|
129
129
|
const amount0 = new decimal_js_1.Decimal(amounts[0]).div(ten.pow(coins_js_1.coins[pool1].expo));
|
|
130
130
|
const amount1 = new decimal_js_1.Decimal(amounts[1]).div(ten.pow(coins_js_1.coins[pool2].expo));
|
|
131
131
|
const tokens = poolName.split("-");
|
|
132
|
-
const priceOfCoin0 = await (0,
|
|
133
|
-
|
|
132
|
+
const [priceOfCoin0, priceOfCoin1] = await (0, prices_js_2.getLatestPrices)([
|
|
133
|
+
`${tokens[0]}/USD`,
|
|
134
|
+
`${tokens[1]}/USD`,
|
|
135
|
+
], false);
|
|
134
136
|
if (priceOfCoin0 && priceOfCoin1) {
|
|
135
137
|
const amount = amount0.mul(priceOfCoin0).add(amount1.mul(priceOfCoin1));
|
|
136
138
|
return amount.toString();
|
|
@@ -232,7 +234,9 @@ async function getSingleAssetPortfolioAmountInUSD(poolName, options, ignoreCache
|
|
|
232
234
|
const amounts = await getSingleAssetPortfolioAmount(poolName, options, ignoreCache);
|
|
233
235
|
if (amounts !== undefined) {
|
|
234
236
|
const amount = new decimal_js_1.Decimal(amounts).div(new decimal_js_1.Decimal(Math.pow(10, coins_js_1.coins[maps_js_1.poolCoinMap[poolName]].expo)));
|
|
235
|
-
const priceOfCoin = await (0,
|
|
237
|
+
const [priceOfCoin] = await (0, prices_js_2.getLatestPrices)([
|
|
238
|
+
`${maps_js_1.poolCoinMap[poolName]}/USD`,
|
|
239
|
+
], false);
|
|
236
240
|
if (priceOfCoin) {
|
|
237
241
|
const amountInUSD = amount.mul(priceOfCoin);
|
|
238
242
|
return amountInUSD.toString();
|