@sonarwatch/portfolio-plugins 0.8.76 → 0.8.77

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.
Files changed (62) hide show
  1. package/CHANGELOG.md +13 -9
  2. package/package.json +3 -2
  3. package/src/index.js +4 -0
  4. package/src/index.js.map +1 -1
  5. package/src/plugins/mango/index.js +1 -2
  6. package/src/plugins/mango/index.js.map +1 -1
  7. package/src/plugins/scallop/addressJob.d.ts +3 -0
  8. package/src/plugins/scallop/addressJob.js +32 -0
  9. package/src/plugins/scallop/addressJob.js.map +1 -0
  10. package/src/plugins/scallop/constants.d.ts +16 -0
  11. package/src/plugins/scallop/constants.js +26 -0
  12. package/src/plugins/scallop/constants.js.map +1 -0
  13. package/src/plugins/scallop/helpers.d.ts +51 -0
  14. package/src/plugins/scallop/helpers.js +50 -0
  15. package/src/plugins/scallop/helpers.js.map +1 -0
  16. package/src/plugins/scallop/index.d.ts +6 -0
  17. package/src/plugins/scallop/index.js +17 -0
  18. package/src/plugins/scallop/index.js.map +1 -0
  19. package/src/plugins/scallop/lendingsFetcher.d.ts +3 -0
  20. package/src/plugins/scallop/lendingsFetcher.js +186 -0
  21. package/src/plugins/scallop/lendingsFetcher.js.map +1 -0
  22. package/src/plugins/scallop/marketJob.d.ts +3 -0
  23. package/src/plugins/scallop/marketJob.js +159 -0
  24. package/src/plugins/scallop/marketJob.js.map +1 -0
  25. package/src/plugins/scallop/obligationsFetcher.d.ts +3 -0
  26. package/src/plugins/scallop/obligationsFetcher.js +201 -0
  27. package/src/plugins/scallop/obligationsFetcher.js.map +1 -0
  28. package/src/plugins/scallop/poolsJob.d.ts +3 -0
  29. package/src/plugins/scallop/poolsJob.js +67 -0
  30. package/src/plugins/scallop/poolsJob.js.map +1 -0
  31. package/src/plugins/scallop/spoolsMarketJob.d.ts +3 -0
  32. package/src/plugins/scallop/spoolsMarketJob.js +95 -0
  33. package/src/plugins/scallop/spoolsMarketJob.js.map +1 -0
  34. package/src/plugins/scallop/types/address.d.ts +73 -0
  35. package/src/plugins/scallop/types/address.js +3 -0
  36. package/src/plugins/scallop/types/address.js.map +1 -0
  37. package/src/plugins/scallop/types/basic.d.ts +30 -0
  38. package/src/plugins/scallop/types/basic.js +3 -0
  39. package/src/plugins/scallop/types/basic.js.map +1 -0
  40. package/src/plugins/scallop/types/coin.d.ts +15 -0
  41. package/src/plugins/scallop/types/coin.js +25 -0
  42. package/src/plugins/scallop/types/coin.js.map +1 -0
  43. package/src/plugins/scallop/types/data.d.ts +26 -0
  44. package/src/plugins/scallop/types/data.js +3 -0
  45. package/src/plugins/scallop/types/data.js.map +1 -0
  46. package/src/plugins/scallop/types/index.d.ts +5 -0
  47. package/src/plugins/scallop/types/index.js +22 -0
  48. package/src/plugins/scallop/types/index.js.map +1 -0
  49. package/src/plugins/scallop/types/market.d.ts +150 -0
  50. package/src/plugins/scallop/types/market.js +21 -0
  51. package/src/plugins/scallop/types/market.js.map +1 -0
  52. package/src/plugins/scallop/types/obligation.d.ts +24 -0
  53. package/src/plugins/scallop/types/obligation.js +3 -0
  54. package/src/plugins/scallop/types/obligation.js.map +1 -0
  55. package/src/plugins/tokens/index.js +4 -0
  56. package/src/plugins/tokens/index.js.map +1 -1
  57. package/src/plugins/uniswap-v2/helpers.js +22 -22
  58. package/src/utils/name-service/nameServices.js +3 -0
  59. package/src/utils/name-service/nameServices.js.map +1 -1
  60. package/src/utils/name-service/services/allDomains.d.ts +2 -0
  61. package/src/utils/name-service/services/allDomains.js +43 -0
  62. package/src/utils/name-service/services/allDomains.js.map +1 -0
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
16
+ const sui_js_1 = require("@mysten/sui.js");
17
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
18
+ const clients_1 = require("../../utils/clients");
19
+ const constants_1 = require("./constants");
20
+ const runInBatch_1 = __importDefault(require("../../utils/misc/runInBatch"));
21
+ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
22
+ var _a, _b;
23
+ const client = (0, clients_1.getClientSui)();
24
+ const addressData = yield cache.getItem(constants_1.addressKey, {
25
+ prefix: constants_1.addressPrefix,
26
+ networkId: portfolio_core_1.NetworkId.sui,
27
+ });
28
+ if (!addressData)
29
+ return;
30
+ // ['cetus', 'apt', ...]
31
+ const pools = yield cache.getItem(constants_1.poolsKey, {
32
+ prefix: constants_1.poolsPrefix,
33
+ networkId: portfolio_core_1.NetworkId.sui,
34
+ });
35
+ if (!pools)
36
+ return;
37
+ const marketId = addressData.mainnet.core.market;
38
+ // get market data
39
+ const marketObject = yield client.getObject({
40
+ id: marketId,
41
+ options: {
42
+ showContent: true,
43
+ },
44
+ });
45
+ const marketData = (0, sui_js_1.getObjectFields)(marketObject);
46
+ // get balance sheet
47
+ const balanceSheets = {};
48
+ const balanceSheetParentId = marketData.vault.fields.balance_sheets.fields.table.fields.id.id;
49
+ const balanceSheetPromises = Object.keys(pools).map((coinName) => () => __awaiter(void 0, void 0, void 0, function* () {
50
+ balanceSheets[coinName] = (0, sui_js_1.getObjectFields)(yield client.getDynamicFieldObject({
51
+ parentId: balanceSheetParentId,
52
+ name: {
53
+ type: '0x1::type_name::TypeName',
54
+ value: {
55
+ name: pools[coinName].coinType.substring(2),
56
+ },
57
+ },
58
+ }));
59
+ }));
60
+ yield (0, runInBatch_1.default)(balanceSheetPromises, 5);
61
+ // get borrow indexes
62
+ const borrowIndexes = {};
63
+ const borrowIndexesParentId = marketData.borrow_dynamics.fields.table.fields.id.id;
64
+ const borrowIndexesPromises = Object.keys(pools).map((coinName) => () => __awaiter(void 0, void 0, void 0, function* () {
65
+ borrowIndexes[coinName] = (0, sui_js_1.getObjectFields)(yield client.getDynamicFieldObject({
66
+ parentId: borrowIndexesParentId,
67
+ name: {
68
+ type: '0x1::type_name::TypeName',
69
+ value: {
70
+ name: pools[coinName].coinType.substring(2),
71
+ },
72
+ },
73
+ }));
74
+ }));
75
+ yield (0, runInBatch_1.default)(borrowIndexesPromises, 5);
76
+ // get interest models
77
+ const interestModels = {};
78
+ const interestModelsParentId = marketData.interest_models.fields.table.fields.id.id;
79
+ for (const coinName of Object.keys(pools)) {
80
+ interestModels[coinName] = (0, sui_js_1.getObjectFields)(yield client.getDynamicFieldObject({
81
+ parentId: interestModelsParentId,
82
+ name: {
83
+ type: '0x1::type_name::TypeName',
84
+ value: {
85
+ name: pools[coinName].coinType.substring(2),
86
+ },
87
+ },
88
+ }));
89
+ }
90
+ const market = {};
91
+ const borrowYearFactor = 24 * 365 * 3600;
92
+ for (const asset of Object.keys(pools)) {
93
+ const interestModelData = interestModels[asset];
94
+ const borrowIndexData = borrowIndexes[asset];
95
+ const balanceSheetData = balanceSheets[asset];
96
+ if (!interestModelData || !borrowIndexData || !balanceSheetData)
97
+ continue;
98
+ const cInterestModel = interestModelData['value']
99
+ .fields;
100
+ const cBorrowIndex = borrowIndexData['value'].fields;
101
+ const cBalanceSheet = balanceSheetData['value'].fields;
102
+ const borrowRate = Number(cBorrowIndex.interest_rate.fields.value) / Math.pow(2, 32);
103
+ const borrowRateScale = Number(cBorrowIndex.interest_rate_scale);
104
+ const borrowIndex = Number(cBorrowIndex.borrow_index);
105
+ const maxBorrowRate = Number(cInterestModel.max_borrow_rate.fields.value) / Math.pow(2, 32);
106
+ const lastUpdated = Number(cBorrowIndex.last_updated);
107
+ const cash = Number(cBalanceSheet.cash);
108
+ const debt = Number(cBalanceSheet.debt);
109
+ const reserve = Number(cBalanceSheet.revenue);
110
+ const reserveFactor = Number(cInterestModel.revenue_factor.fields.value) / Math.pow(2, 32);
111
+ const marketCoinSupply = Number(cBalanceSheet.market_coin_supply);
112
+ // calculated data
113
+ const calculatedBorrowRate = (borrowRate * borrowYearFactor) / borrowRateScale;
114
+ const timeDelta = Math.floor(new Date().getTime() / 1000) - lastUpdated;
115
+ const borrowIndexDelta = (0, bignumber_js_1.default)(borrowIndex)
116
+ .multipliedBy((0, bignumber_js_1.default)(timeDelta).multipliedBy(borrowRate))
117
+ .dividedBy(borrowRateScale);
118
+ const currentBorrowIndex = (0, bignumber_js_1.default)(borrowIndex).plus(borrowIndexDelta);
119
+ // how much accumulated interest since `lastUpdate`
120
+ const growthInterest = (0, bignumber_js_1.default)(currentBorrowIndex)
121
+ .dividedBy(borrowIndex)
122
+ .minus(1);
123
+ const increasedDebt = (0, bignumber_js_1.default)(debt).multipliedBy(growthInterest);
124
+ const currentTotalDebt = increasedDebt.plus(debt);
125
+ const currentTotalReserve = (0, bignumber_js_1.default)(reserve).plus(increasedDebt.multipliedBy(reserveFactor));
126
+ const calculatedMaxBorrowRate = (maxBorrowRate * borrowYearFactor) / borrowRateScale;
127
+ const currentTotalSupply = (0, bignumber_js_1.default)(currentTotalDebt).plus(Math.max(cash - currentTotalReserve.toNumber(), 0));
128
+ let utilizationRate = (0, bignumber_js_1.default)(currentTotalDebt).dividedBy(currentTotalSupply);
129
+ utilizationRate = utilizationRate.isFinite()
130
+ ? utilizationRate
131
+ : (0, bignumber_js_1.default)(0);
132
+ let supplyRate = (0, bignumber_js_1.default)(calculatedBorrowRate)
133
+ .multipliedBy(utilizationRate)
134
+ .multipliedBy(1 - reserveFactor);
135
+ supplyRate = supplyRate.isFinite() ? supplyRate : (0, bignumber_js_1.default)(0);
136
+ market[asset] = {
137
+ coin: asset,
138
+ decimal: (_b = (_a = pools[asset].metadata) === null || _a === void 0 ? void 0 : _a.decimals) !== null && _b !== void 0 ? _b : 0,
139
+ coinType: pools[asset].coinType,
140
+ growthInterest: growthInterest.toNumber(),
141
+ borrowInterestRate: Math.min(calculatedBorrowRate, calculatedMaxBorrowRate),
142
+ supplyInterestRate: supplyRate.toNumber(),
143
+ debt,
144
+ cash,
145
+ marketCoinSupply,
146
+ reserve,
147
+ };
148
+ }
149
+ yield cache.setItem(constants_1.marketKey, market, {
150
+ prefix: constants_1.marketPrefix,
151
+ networkId: portfolio_core_1.NetworkId.sui,
152
+ });
153
+ });
154
+ const job = {
155
+ id: constants_1.marketPrefix,
156
+ executor,
157
+ };
158
+ exports.default = job;
159
+ //# sourceMappingURL=marketJob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/scallop/marketJob.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Fetcher } from '../../Fetcher';
2
+ declare const fetcher: Fetcher;
3
+ export default fetcher;
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
16
+ const sui_js_1 = require("@mysten/sui.js");
17
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
18
+ const constants_1 = require("./constants");
19
+ const helpers_1 = require("./helpers");
20
+ const clients_1 = require("../../utils/clients");
21
+ const tokenPriceToAssetToken_1 = __importDefault(require("../../utils/misc/tokenPriceToAssetToken"));
22
+ const runInBatch_1 = __importDefault(require("../../utils/misc/runInBatch"));
23
+ const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
24
+ var _a, _b, _c, _d, _e, _f;
25
+ const client = (0, clients_1.getClientSui)();
26
+ const elements = [];
27
+ const rewardAssets = [];
28
+ const coinTypeMetadata = yield cache.getItem(constants_1.poolsKey, {
29
+ prefix: constants_1.poolsPrefix,
30
+ networkId: portfolio_core_1.NetworkId.sui,
31
+ });
32
+ if (!coinTypeMetadata)
33
+ return [];
34
+ const ctmValues = Object.values(coinTypeMetadata);
35
+ if (ctmValues.length === 0)
36
+ return [];
37
+ const filterOwnerObject = {
38
+ MatchAny: [
39
+ {
40
+ StructType: constants_1.obligationKeyPackageId,
41
+ },
42
+ ],
43
+ };
44
+ const [ownedObligationKeys, marketData] = yield Promise.all([
45
+ (0, helpers_1.getOwnerObject)(owner, { filter: filterOwnerObject }),
46
+ cache.getItem(constants_1.marketKey, {
47
+ prefix: constants_1.marketPrefix,
48
+ networkId: portfolio_core_1.NetworkId.sui,
49
+ }),
50
+ ]);
51
+ if (!marketData || ownedObligationKeys.length === 0)
52
+ return [];
53
+ const userObligations = {};
54
+ const debtsAndCollateralCalculationPromises = ownedObligationKeys.map((obligationKey) => () => __awaiter(void 0, void 0, void 0, function* () {
55
+ const obligationKeyFields = (0, sui_js_1.getObjectFields)(obligationKey);
56
+ if (!obligationKeyFields)
57
+ return;
58
+ const obligationId = obligationKeyFields.ownership.fields.of;
59
+ if (!userObligations[obligationId]) {
60
+ userObligations[obligationId] = {
61
+ collaterals: {},
62
+ debts: {},
63
+ };
64
+ }
65
+ const account = (0, sui_js_1.getObjectFields)(yield client.getObject({
66
+ id: obligationId,
67
+ options: {
68
+ showContent: true,
69
+ },
70
+ }));
71
+ if (!account)
72
+ return;
73
+ const accountCollateralsId = account.collaterals.fields.table.fields.id.id;
74
+ const accountDebtsId = account.debts.fields.table.fields.id.id;
75
+ const accountCollateralsAssets = account.collaterals.fields.keys.fields.contents;
76
+ const accountDebtsAssets = account.debts.fields.keys.fields.contents;
77
+ // get user collateral
78
+ const accountCollateralsAssetsPromises = accountCollateralsAssets.map(({ fields }) => () => __awaiter(void 0, void 0, void 0, function* () {
79
+ var _g;
80
+ if (!userObligations[obligationId].collaterals[fields.name]) {
81
+ userObligations[obligationId].collaterals[fields.name] =
82
+ (0, bignumber_js_1.default)(0);
83
+ }
84
+ const asset = (0, sui_js_1.getObjectFields)(yield client.getDynamicFieldObject({
85
+ parentId: accountCollateralsId,
86
+ name: {
87
+ type: '0x1::type_name::TypeName',
88
+ value: {
89
+ name: fields.name,
90
+ },
91
+ },
92
+ }));
93
+ if (!asset)
94
+ return;
95
+ userObligations[obligationId].collaterals[fields.name] =
96
+ userObligations[obligationId].collaterals[fields.name].plus((0, bignumber_js_1.default)((_g = asset.value.fields.amount) !== null && _g !== void 0 ? _g : 0));
97
+ }));
98
+ // get user debt
99
+ const accountDebtsAssetsPromises = accountDebtsAssets.map(({ fields }) => () => __awaiter(void 0, void 0, void 0, function* () {
100
+ var _h, _j, _k;
101
+ const coinName = (_j = (_h = ctmValues
102
+ .find((value) => value.coinType === (0, sui_js_1.normalizeStructTag)(fields.name))) === null || _h === void 0 ? void 0 : _h.metadata) === null || _j === void 0 ? void 0 : _j.symbol.toLowerCase();
103
+ if (!coinName)
104
+ return;
105
+ const market = marketData[coinName];
106
+ if (!market)
107
+ return;
108
+ if (!userObligations[obligationId].debts[fields.name]) {
109
+ userObligations[obligationId].debts[fields.name] = (0, bignumber_js_1.default)(0);
110
+ }
111
+ const asset = (0, sui_js_1.getObjectFields)(yield client.getDynamicFieldObject({
112
+ parentId: accountDebtsId,
113
+ name: {
114
+ type: '0x1::type_name::TypeName',
115
+ value: {
116
+ name: fields.name,
117
+ },
118
+ },
119
+ }));
120
+ if (!asset)
121
+ return;
122
+ userObligations[obligationId].debts[fields.name] = userObligations[obligationId].debts[fields.name].plus((0, bignumber_js_1.default)((_k = asset.value.fields.amount) !== null && _k !== void 0 ? _k : 0).multipliedBy(market.growthInterest + 1));
123
+ }));
124
+ yield Promise.all([
125
+ (0, runInBatch_1.default)(accountCollateralsAssetsPromises, 5),
126
+ (0, runInBatch_1.default)(accountDebtsAssetsPromises, 5),
127
+ ]); // calculate collateral and debts at once, 3 coinType per batch
128
+ }));
129
+ yield (0, runInBatch_1.default)(debtsAndCollateralCalculationPromises, 5); // run in batch of size 2, calculate 5 obligation account per batch
130
+ const tokenAddresses = ctmValues.map((value) => value.coinType);
131
+ const tokenPriceResult = yield cache.getTokenPrices(tokenAddresses, portfolio_core_1.NetworkId.sui);
132
+ const tokenPrices = new Map();
133
+ tokenPriceResult.forEach((r) => {
134
+ if (!r)
135
+ return;
136
+ tokenPrices.set(r.address, r);
137
+ });
138
+ for (const account of Object.keys(userObligations)) {
139
+ const borrowedAssets = [];
140
+ const borrowedYields = [];
141
+ const suppliedAssets = [];
142
+ const suppliedYields = [];
143
+ const { collaterals, debts } = userObligations[account];
144
+ for (const coinType of Object.keys(collaterals)) {
145
+ const metadata = ctmValues.find((value) => value.coinType === (0, sui_js_1.normalizeStructTag)(coinType));
146
+ const address = (0, portfolio_core_1.formatMoveTokenAddress)(`0x${coinType}`);
147
+ suppliedAssets.push((0, tokenPriceToAssetToken_1.default)(address, collaterals[coinType]
148
+ .shiftedBy(-1 * ((_b = (_a = metadata === null || metadata === void 0 ? void 0 : metadata.metadata) === null || _a === void 0 ? void 0 : _a.decimals) !== null && _b !== void 0 ? _b : 0))
149
+ .toNumber(), portfolio_core_1.NetworkId.sui, tokenPrices.get(address)));
150
+ }
151
+ for (const coinType of Object.keys(debts)) {
152
+ const metadata = ctmValues.find((value) => value.coinType === (0, sui_js_1.normalizeStructTag)(coinType));
153
+ const coinName = (_d = (_c = metadata === null || metadata === void 0 ? void 0 : metadata.metadata) === null || _c === void 0 ? void 0 : _c.symbol.toLowerCase()) !== null && _d !== void 0 ? _d : '';
154
+ const market = marketData[coinName];
155
+ if (!market)
156
+ continue;
157
+ const address = (0, portfolio_core_1.formatMoveTokenAddress)(`0x${coinType}`);
158
+ borrowedAssets.push((0, tokenPriceToAssetToken_1.default)(address, debts[coinType]
159
+ .shiftedBy(-1 * ((_f = (_e = metadata === null || metadata === void 0 ? void 0 : metadata.metadata) === null || _e === void 0 ? void 0 : _e.decimals) !== null && _f !== void 0 ? _f : 0))
160
+ .toNumber(), portfolio_core_1.NetworkId.sui, tokenPrices.get(address)));
161
+ borrowedYields.push([
162
+ {
163
+ apr: market.borrowInterestRate,
164
+ apy: (0, portfolio_core_1.aprToApy)(market.borrowInterestRate),
165
+ },
166
+ ]);
167
+ }
168
+ if (suppliedAssets.length === 0 &&
169
+ borrowedAssets.length === 0 &&
170
+ rewardAssets.length === 0)
171
+ continue;
172
+ const { borrowedValue, collateralRatio, suppliedValue, value } = (0, portfolio_core_1.getElementLendingValues)(suppliedAssets, borrowedAssets, rewardAssets);
173
+ elements.push({
174
+ type: portfolio_core_1.PortfolioElementType.borrowlend,
175
+ networkId: portfolio_core_1.NetworkId.sui,
176
+ platformId: constants_1.platformId,
177
+ label: 'Lending',
178
+ name: `${(0, helpers_1.shortenAddress)(account, 5, 3)} Obligations`,
179
+ value,
180
+ data: {
181
+ borrowedAssets,
182
+ borrowedValue,
183
+ borrowedYields,
184
+ suppliedAssets,
185
+ suppliedValue,
186
+ suppliedYields,
187
+ collateralRatio,
188
+ rewardAssets,
189
+ value,
190
+ },
191
+ });
192
+ }
193
+ return elements;
194
+ });
195
+ const fetcher = {
196
+ id: `${constants_1.platformId}-obligations`,
197
+ networkId: portfolio_core_1.NetworkId.sui,
198
+ executor,
199
+ };
200
+ exports.default = fetcher;
201
+ //# sourceMappingURL=obligationsFetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obligationsFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/scallop/obligationsFetcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Job } from '../../Job';
2
+ declare const job: Job;
3
+ export default job;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const sui_js_1 = require("@mysten/sui.js");
13
+ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
14
+ const constants_1 = require("./constants");
15
+ const clients_1 = require("../../utils/clients");
16
+ const SUI_TYPE = (0, sui_js_1.normalizeStructTag)(sui_js_1.SUI_TYPE_ARG);
17
+ const client = (0, clients_1.getClientSui)();
18
+ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
19
+ var _a;
20
+ const address = yield cache.getItem(constants_1.addressKey, {
21
+ prefix: constants_1.addressPrefix,
22
+ networkId: portfolio_core_1.NetworkId.sui,
23
+ });
24
+ if (!address)
25
+ return;
26
+ const coinTypes = {};
27
+ const coins = new Map(Object.entries(address.mainnet.core.coins));
28
+ const coinNames = Array.from(coins.keys());
29
+ for (const coinName of coinNames) {
30
+ const detail = coins.get(coinName);
31
+ if (!detail)
32
+ continue;
33
+ if (SUI_TYPE.includes(detail.id)) {
34
+ coinTypes[coinName] = {
35
+ coinType: SUI_TYPE,
36
+ metadata: yield client.getCoinMetadata({ coinType: SUI_TYPE }),
37
+ };
38
+ }
39
+ else {
40
+ const object = yield client.getObject({
41
+ id: detail.metaData,
42
+ options: {
43
+ showType: true,
44
+ showContent: true,
45
+ },
46
+ });
47
+ const objType = (0, sui_js_1.normalizeStructTag)((_a = (0, sui_js_1.getObjectType)(object)) !== null && _a !== void 0 ? _a : '');
48
+ const objFields = (0, sui_js_1.getObjectFields)(object);
49
+ if (!objType || !objFields)
50
+ return;
51
+ coinTypes[coinName] = {
52
+ coinType: objType.substring(objType.indexOf('<') + 1, objType.indexOf('>')),
53
+ metadata: objFields,
54
+ };
55
+ }
56
+ }
57
+ yield cache.setItem(constants_1.poolsKey, coinTypes, {
58
+ prefix: constants_1.poolsPrefix,
59
+ networkId: portfolio_core_1.NetworkId.sui,
60
+ });
61
+ });
62
+ const job = {
63
+ id: constants_1.poolsPrefix,
64
+ executor,
65
+ };
66
+ exports.default = job;
67
+ //# sourceMappingURL=poolsJob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poolsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/scallop/poolsJob.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAMwB;AACxB,+DAAuD;AAGvD,2CAKqB;AAErB,iDAAmD;AAEnD,MAAM,QAAQ,GAAG,IAAA,2BAAkB,EAAC,qBAAY,CAAC,CAAC;AAClD,MAAM,MAAM,GAAG,IAAA,sBAAY,GAAE,CAAC;AAE9B,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;;IACnD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,CAAc,sBAAU,EAAE;QAC3D,MAAM,EAAE,yBAAa;QACrB,SAAS,EAAE,0BAAS,CAAC,GAAG;KACzB,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,MAAM,SAAS,GAAU,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,GAAG,CACnB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAC3C,CAAC;IACF,MAAM,SAAS,GAAa,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAErD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;QAChC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;YAChC,SAAS,CAAC,QAAQ,CAAC,GAAG;gBACpB,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,MAAM,MAAM,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;aAC/D,CAAC;SACH;aAAM;YACL,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC;gBACpC,EAAE,EAAE,MAAM,CAAC,QAAQ;gBACnB,OAAO,EAAE;oBACP,QAAQ,EAAE,IAAI;oBACd,WAAW,EAAE,IAAI;iBAClB;aACF,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,2BAAkB,EAAC,MAAA,IAAA,sBAAa,EAAC,MAAM,CAAC,mCAAI,EAAE,CAAC,CAAC;YAChE,MAAM,SAAS,GAAG,IAAA,wBAAe,EAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS;gBAAE,OAAO;YACnC,SAAS,CAAC,QAAQ,CAAC,GAAG;gBACpB,QAAQ,EAAE,OAAO,CAAC,SAAS,CACzB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EACxB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CACrB;gBACD,QAAQ,EAAE,SAAyB;aACpC,CAAC;SACH;KACF;IAED,MAAM,KAAK,CAAC,OAAO,CAAC,oBAAQ,EAAE,SAAS,EAAE;QACvC,MAAM,EAAN,uBAAM;QACN,SAAS,EAAE,0BAAS,CAAC,GAAG;KACzB,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AAEF,MAAM,GAAG,GAAQ;IACf,EAAE,EAAE,uBAAM;IACV,QAAQ;CACT,CAAC;AACF,kBAAe,GAAG,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Job } from '../../Job';
2
+ declare const job: Job;
3
+ export default job;
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
16
+ const sui_js_1 = require("@mysten/sui.js");
17
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
18
+ const constants_1 = require("./constants");
19
+ const clients_1 = require("../../utils/clients");
20
+ const client = (0, clients_1.getClientSui)();
21
+ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
22
+ const address = yield cache.getItem(constants_1.addressKey, {
23
+ prefix: constants_1.addressPrefix,
24
+ networkId: portfolio_core_1.NetworkId.sui,
25
+ });
26
+ if (!address)
27
+ return;
28
+ const spoolCoin = new Map(Object.entries(address.mainnet.spool.pools));
29
+ const spoolCoinNames = Array.from(spoolCoin.keys());
30
+ const spoolMarketData = {};
31
+ for (const coinName of spoolCoinNames) {
32
+ const detail = spoolCoin.get(coinName);
33
+ if (!detail)
34
+ continue;
35
+ const { id: poolId, rewardPoolId } = detail;
36
+ const [stakeObjectResponse, rewardObjectResponse] = yield Promise.all([
37
+ client.getObject({
38
+ id: poolId,
39
+ options: {
40
+ showContent: true,
41
+ },
42
+ }),
43
+ client.getObject({
44
+ id: rewardPoolId,
45
+ options: {
46
+ showContent: true,
47
+ },
48
+ }),
49
+ ]);
50
+ if (stakeObjectResponse.data && rewardObjectResponse.data) {
51
+ const stakeFields = (0, sui_js_1.getObjectFields)(stakeObjectResponse);
52
+ const rewardFields = (0, sui_js_1.getObjectFields)(rewardObjectResponse);
53
+ if (!stakeFields || !rewardFields)
54
+ continue;
55
+ const staked = stakeFields['stakes'];
56
+ const lastUpdate = stakeFields['last_update'];
57
+ const period = stakeFields['point_distribution_time'];
58
+ const maxPoint = stakeFields['max_distribution_point'];
59
+ const distributedPoint = stakeFields['distributed_point'];
60
+ const pointPerPeriod = stakeFields['distributed_point_per_period'];
61
+ const { index } = stakeFields;
62
+ const timeDelta = (0, bignumber_js_1.default)(Math.floor(new Date().getTime() / 1000) - lastUpdate)
63
+ .dividedBy(period)
64
+ .toFixed(0);
65
+ const remainingPoints = (0, bignumber_js_1.default)(maxPoint).minus(distributedPoint);
66
+ const accumulatedPoints = bignumber_js_1.default.minimum((0, bignumber_js_1.default)(timeDelta).multipliedBy(pointPerPeriod), remainingPoints);
67
+ if (!spoolMarketData[coinName]) {
68
+ spoolMarketData[coinName] = {
69
+ currentPointIndex: (0, bignumber_js_1.default)(0),
70
+ exchangeRateDenominator: 0,
71
+ exchangeRateNumerator: 0,
72
+ };
73
+ }
74
+ spoolMarketData[coinName] = {
75
+ currentPointIndex: (0, bignumber_js_1.default)(index).plus(accumulatedPoints.dividedBy(staked).isFinite()
76
+ ? (0, bignumber_js_1.default)(constants_1.baseIndexRate)
77
+ .multipliedBy(accumulatedPoints)
78
+ .dividedBy(staked)
79
+ : (0, bignumber_js_1.default)(0)),
80
+ exchangeRateDenominator: Number(rewardFields['exchange_rate_numerator']),
81
+ exchangeRateNumerator: Number(rewardFields['exchange_rate_denominator']),
82
+ };
83
+ }
84
+ }
85
+ yield cache.setItem(constants_1.spoolsKey, spoolMarketData, {
86
+ prefix: constants_1.spoolsPrefix,
87
+ networkId: portfolio_core_1.NetworkId.sui,
88
+ });
89
+ });
90
+ const job = {
91
+ id: constants_1.spoolsPrefix,
92
+ executor,
93
+ };
94
+ exports.default = job;
95
+ //# sourceMappingURL=spoolsMarketJob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spoolsMarketJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/scallop/spoolsMarketJob.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ export interface AddressInfo {
2
+ id: string;
3
+ mainnet: Network;
4
+ testnet?: Network;
5
+ createdAt: string;
6
+ updatedAt: string;
7
+ memo: string;
8
+ }
9
+ export interface Network {
10
+ core: Core;
11
+ spool: Spool;
12
+ }
13
+ export interface Spool {
14
+ id: string;
15
+ adminCap: string;
16
+ pools: Map<string, SpoolCoin>;
17
+ }
18
+ export interface Core {
19
+ version: string;
20
+ versionCap: string;
21
+ market: string;
22
+ adminCap: string;
23
+ coinDecimalRegistry: string;
24
+ coins: Map<string, Coin>;
25
+ oracles: Oracle;
26
+ packages: Map<string, Package>;
27
+ }
28
+ export interface Coin {
29
+ id: string;
30
+ metaData: string;
31
+ treasury: string;
32
+ oracle: CoinOracle;
33
+ }
34
+ export interface SpoolCoin {
35
+ id: string;
36
+ rewardPoolId: string;
37
+ }
38
+ export interface CoinOracle {
39
+ supra: string;
40
+ switchboard: string;
41
+ pyth: CoinOraclePyth;
42
+ }
43
+ export interface CoinOraclePyth {
44
+ feed: string;
45
+ feedObject: string;
46
+ }
47
+ export interface Oracle {
48
+ xOracle?: string;
49
+ xOracleCap?: string;
50
+ supra?: Supra;
51
+ pyth?: Pyth;
52
+ switchboard?: Switchboard;
53
+ }
54
+ export interface Supra {
55
+ registry: string;
56
+ registryCap: string;
57
+ holder: string;
58
+ }
59
+ export interface Pyth {
60
+ registry: string;
61
+ registryCap: string;
62
+ state: string;
63
+ wormhole: string;
64
+ wormholeState: string;
65
+ }
66
+ export interface Switchboard {
67
+ registry: string;
68
+ registryCap: string;
69
+ }
70
+ export interface Package {
71
+ id: string;
72
+ upgradeCap: string;
73
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=address.js.map