@defisaver/positions-sdk 2.1.33 → 2.1.35

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 (40) hide show
  1. package/cjs/config/contracts.d.ts +91 -0
  2. package/cjs/config/contracts.js +9 -1
  3. package/cjs/contracts.d.ts +629 -0
  4. package/cjs/contracts.js +2 -1
  5. package/cjs/markets/aave/marketAssets.js +1 -1
  6. package/cjs/savings/index.d.ts +4 -3
  7. package/cjs/savings/index.js +43 -12
  8. package/cjs/savings/skyOptions/index.d.ts +7 -0
  9. package/cjs/savings/skyOptions/index.js +122 -0
  10. package/cjs/savings/skyOptions/options.d.ts +2 -0
  11. package/cjs/savings/skyOptions/options.js +11 -0
  12. package/cjs/types/savings/index.d.ts +3 -1
  13. package/cjs/types/savings/index.js +1 -0
  14. package/cjs/types/savings/sky.d.ts +11 -0
  15. package/cjs/types/savings/sky.js +7 -0
  16. package/esm/config/contracts.d.ts +91 -0
  17. package/esm/config/contracts.js +8 -0
  18. package/esm/contracts.d.ts +629 -0
  19. package/esm/contracts.js +1 -0
  20. package/esm/markets/aave/marketAssets.js +1 -1
  21. package/esm/savings/index.d.ts +4 -3
  22. package/esm/savings/index.js +43 -13
  23. package/esm/savings/skyOptions/index.d.ts +7 -0
  24. package/esm/savings/skyOptions/index.js +81 -0
  25. package/esm/savings/skyOptions/options.d.ts +2 -0
  26. package/esm/savings/skyOptions/options.js +8 -0
  27. package/esm/types/savings/index.d.ts +3 -1
  28. package/esm/types/savings/index.js +1 -0
  29. package/esm/types/savings/sky.d.ts +11 -0
  30. package/esm/types/savings/sky.js +4 -0
  31. package/package.json +1 -1
  32. package/src/aaveV3/index.ts +14 -3
  33. package/src/config/contracts.ts +8 -0
  34. package/src/contracts.ts +3 -1
  35. package/src/markets/aave/marketAssets.ts +1 -1
  36. package/src/savings/index.ts +38 -11
  37. package/src/savings/skyOptions/index.ts +95 -0
  38. package/src/savings/skyOptions/options.ts +9 -0
  39. package/src/types/savings/index.ts +3 -1
  40. package/src/types/savings/sky.ts +13 -0
@@ -42,7 +42,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
42
42
  });
43
43
  };
44
44
  Object.defineProperty(exports, "__esModule", { value: true });
45
- exports.getSavingsData = exports.sparkSavingsVaults = exports.makerDsr = exports.yearnVaults = exports.morphoVaults = void 0;
45
+ exports.getSavingsData = exports.sparkSavingsVaults = exports.skyOptions = exports.makerDsr = exports.yearnVaults = exports.morphoVaults = void 0;
46
46
  const types_1 = require("../types");
47
47
  const morphoVaults = __importStar(require("./morphoVaults"));
48
48
  exports.morphoVaults = morphoVaults;
@@ -50,6 +50,8 @@ const yearnVaults = __importStar(require("./yearnVaults"));
50
50
  exports.yearnVaults = yearnVaults;
51
51
  const makerDsr = __importStar(require("./makerDsr"));
52
52
  exports.makerDsr = makerDsr;
53
+ const skyOptions = __importStar(require("./skyOptions"));
54
+ exports.skyOptions = skyOptions;
53
55
  const sparkSavingsVaults = __importStar(require("./sparkSavingsVaults"));
54
56
  exports.sparkSavingsVaults = sparkSavingsVaults;
55
57
  const getSavingsData = (provider, network, accounts) => __awaiter(void 0, void 0, void 0, function* () {
@@ -59,23 +61,52 @@ const getSavingsData = (provider, network, accounts) => __awaiter(void 0, void 0
59
61
  const savingsData = {};
60
62
  yield Promise.all([
61
63
  ...morphoVaultsList.map((vaultKey) => __awaiter(void 0, void 0, void 0, function* () {
62
- const vault = morphoVaults.morphoVaultsOptions.getMorphoVault(vaultKey);
63
- const data = yield morphoVaults.getMorphoVaultData(provider, network, vault, accounts);
64
- savingsData[vaultKey] = data;
64
+ try {
65
+ const vault = morphoVaults.morphoVaultsOptions.getMorphoVault(vaultKey);
66
+ const data = yield morphoVaults.getMorphoVaultData(provider, network, vault, accounts);
67
+ savingsData[vaultKey] = data;
68
+ }
69
+ catch (err) {
70
+ console.error(`[getSavingsData] Error fetching morpho vault ${vaultKey}:`, err);
71
+ }
65
72
  })),
66
73
  ...yearnVaultsList.map((vaultKey) => __awaiter(void 0, void 0, void 0, function* () {
67
- const vault = yearnVaults.yearnVaultsOptions.getYearnVault(vaultKey);
68
- const data = yield yearnVaults.getYearnVaultData(provider, network, vault, accounts);
69
- savingsData[vaultKey] = data;
74
+ try {
75
+ const vault = yearnVaults.yearnVaultsOptions.getYearnVault(vaultKey);
76
+ const data = yield yearnVaults.getYearnVaultData(provider, network, vault, accounts);
77
+ savingsData[vaultKey] = data;
78
+ }
79
+ catch (err) {
80
+ console.error(`[getSavingsData] Error fetching yearn vault ${vaultKey}:`, err);
81
+ }
70
82
  })),
71
83
  ...sparkSavingsVaultsList.map((vaultKey) => __awaiter(void 0, void 0, void 0, function* () {
72
- const vault = sparkSavingsVaults.sparkSavingsVaultsOptions.getSparkSavingsVault(vaultKey);
73
- const data = yield sparkSavingsVaults.getSparkSavingsVaultData(provider, network, vault, accounts);
74
- savingsData[vaultKey] = data;
84
+ try {
85
+ const vault = sparkSavingsVaults.sparkSavingsVaultsOptions.getSparkSavingsVault(vaultKey);
86
+ const data = yield sparkSavingsVaults.getSparkSavingsVaultData(provider, network, vault, accounts);
87
+ savingsData[vaultKey] = data;
88
+ }
89
+ catch (err) {
90
+ console.error(`[getSavingsData] Error fetching yearn vault ${vaultKey}:`, err);
91
+ }
75
92
  })),
76
93
  (() => __awaiter(void 0, void 0, void 0, function* () {
77
- const data = yield makerDsr.getMakerDsrData(provider, network, accounts);
78
- savingsData[types_1.MakerDsrType.MakerDsrVault] = data;
94
+ try {
95
+ const data = yield makerDsr.getMakerDsrData(provider, network, accounts);
96
+ savingsData[types_1.MakerDsrType.MakerDsrVault] = data;
97
+ }
98
+ catch (err) {
99
+ console.error('[getSavingsData] Error fetching maker DSR data:', err);
100
+ }
101
+ }))(),
102
+ (() => __awaiter(void 0, void 0, void 0, function* () {
103
+ try {
104
+ const data = yield skyOptions.getSkyOptionData(provider, network, accounts);
105
+ savingsData[types_1.SkySavingsType.SkySavings] = data;
106
+ }
107
+ catch (err) {
108
+ console.error('[getSavingsData] Error fetching Sky savings data:', err);
109
+ }
79
110
  }))(),
80
111
  ]);
81
112
  return savingsData;
@@ -0,0 +1,7 @@
1
+ import { Client } from 'viem';
2
+ import { EthAddress, EthereumProvider, NetworkNumber } from '../../types/common';
3
+ import { SavingsVaultData } from '../../types';
4
+ import * as skySavingsOptions from './options';
5
+ export { skySavingsOptions };
6
+ export declare const _getSkyOptionData: (provider: Client, network: NetworkNumber, accounts: EthAddress[]) => Promise<SavingsVaultData>;
7
+ export declare function getSkyOptionData(provider: EthereumProvider, network: NetworkNumber, accounts: EthAddress[]): Promise<SavingsVaultData>;
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ var __importDefault = (this && this.__importDefault) || function (mod) {
45
+ return (mod && mod.__esModule) ? mod : { "default": mod };
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports._getSkyOptionData = exports.skySavingsOptions = void 0;
49
+ exports.getSkyOptionData = getSkyOptionData;
50
+ const decimal_js_1 = __importDefault(require("decimal.js"));
51
+ const tokens_1 = require("@defisaver/tokens");
52
+ const skySavingsOptions = __importStar(require("./options"));
53
+ exports.skySavingsOptions = skySavingsOptions;
54
+ const viem_1 = require("../../services/viem");
55
+ const options_1 = require("./options");
56
+ const contracts_1 = require("../../contracts");
57
+ /**
58
+ * Converts shares to assets using ERC4626 standard formula
59
+ * Formula: assets = shares * totalAssets / totalSupply
60
+ *
61
+ * @param shares - The amount of shares to convert
62
+ * @param totalAssets - Total assets in the vault
63
+ * @param totalSupply - Total supply of shares
64
+ * @returns The equivalent amount of assets
65
+ */
66
+ const convertToAssets = (shares, totalAssets, totalSupply) => {
67
+ // If no shares or no total supply, return 0 (or shares if totalSupply is 0 per ERC4626 spec)
68
+ if (shares === BigInt(0)) {
69
+ return BigInt(0);
70
+ }
71
+ // Per ERC4626 spec: if totalSupply == 0, return shares (1:1 ratio)
72
+ if (totalSupply === BigInt(0)) {
73
+ return shares;
74
+ }
75
+ // Standard ERC4626 formula: assets = shares * totalAssets / totalSupply
76
+ return BigInt(new decimal_js_1.default(shares.toString())
77
+ .mul(totalAssets.toString())
78
+ .div(totalSupply.toString())
79
+ .toFixed(0));
80
+ };
81
+ const _getSkyOptionData = (provider, network, accounts) => __awaiter(void 0, void 0, void 0, function* () {
82
+ const skySavingsContract = (0, contracts_1.SkySavingsContractView)(provider, network);
83
+ const shares = {};
84
+ const [totalAssets, totalSupply] = yield Promise.all([
85
+ skySavingsContract.read.totalAssets(),
86
+ skySavingsContract.read.totalSupply(),
87
+ ...accounts.map((account) => __awaiter(void 0, void 0, void 0, function* () {
88
+ const share = yield skySavingsContract.read.balanceOf([account]);
89
+ shares[account.toLowerCase()] = share;
90
+ return share;
91
+ })),
92
+ ]);
93
+ const poolSize = (0, tokens_1.assetAmountInEth)(totalAssets.toString(), options_1.SKY_SAVINGS_OPTION.asset);
94
+ const supplied = {};
95
+ accounts.forEach((account) => {
96
+ const normalizedAccount = account.toLowerCase();
97
+ const share = shares[normalizedAccount] || BigInt(0);
98
+ // Use local convertToAssets for each account to convert sUSDS shares to USDS assets
99
+ const assetsWei = convertToAssets(share, totalAssets, totalSupply);
100
+ const suppliedAmount = (0, tokens_1.assetAmountInEth)(assetsWei.toString(), options_1.SKY_SAVINGS_OPTION.asset);
101
+ supplied[normalizedAccount] = suppliedAmount;
102
+ });
103
+ return {
104
+ poolSize,
105
+ supplied,
106
+ liquidity: poolSize,
107
+ asset: options_1.SKY_SAVINGS_OPTION.asset,
108
+ optionType: options_1.SKY_SAVINGS_OPTION.type,
109
+ };
110
+ });
111
+ exports._getSkyOptionData = _getSkyOptionData;
112
+ function getSkyOptionData(provider, network, accounts) {
113
+ return __awaiter(this, void 0, void 0, function* () {
114
+ return (0, exports._getSkyOptionData)((0, viem_1.getViemProvider)(provider, network, {
115
+ batch: {
116
+ multicall: {
117
+ batchSize: 2500000,
118
+ },
119
+ },
120
+ }), network, accounts);
121
+ });
122
+ }
@@ -0,0 +1,2 @@
1
+ import { SkySavingsOption } from '../../types';
2
+ export declare const SKY_SAVINGS_OPTION: SkySavingsOption;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SKY_SAVINGS_OPTION = void 0;
4
+ const types_1 = require("../../types");
5
+ exports.SKY_SAVINGS_OPTION = {
6
+ type: types_1.SkySavingsType.SkySavings,
7
+ name: 'Sky Savings',
8
+ asset: 'USDS',
9
+ address: '0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD',
10
+ isLegacy: false,
11
+ };
@@ -1,11 +1,13 @@
1
1
  import { EthAddress } from '../common';
2
2
  import { MakerDsrType } from './makerDsr';
3
3
  import { MorphoVaultType } from './morphoVaults';
4
+ import { SkySavingsType } from './sky';
4
5
  import { SparkSavingsVaultType } from './sparkSavingsVaults';
5
6
  import { YearnVaultType } from './yearnVaults';
6
7
  export * from './morphoVaults';
7
8
  export * from './yearnVaults';
8
9
  export * from './makerDsr';
10
+ export * from './sky';
9
11
  export * from './sparkSavingsVaults';
10
12
  export interface SavingsVaultData {
11
13
  poolSize: string;
@@ -14,4 +16,4 @@ export interface SavingsVaultData {
14
16
  asset: string;
15
17
  optionType: string;
16
18
  }
17
- export type SavingsData = Partial<Record<MorphoVaultType | YearnVaultType | MakerDsrType | SparkSavingsVaultType, SavingsVaultData>>;
19
+ export type SavingsData = Partial<Record<MorphoVaultType | YearnVaultType | MakerDsrType | SkySavingsType | SparkSavingsVaultType, SavingsVaultData>>;
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./morphoVaults"), exports);
18
18
  __exportStar(require("./yearnVaults"), exports);
19
19
  __exportStar(require("./makerDsr"), exports);
20
+ __exportStar(require("./sky"), exports);
20
21
  __exportStar(require("./sparkSavingsVaults"), exports);
@@ -0,0 +1,11 @@
1
+ import { EthAddress } from '../common';
2
+ export declare enum SkySavingsType {
3
+ SkySavings = "sky_savings"
4
+ }
5
+ export interface SkySavingsOption {
6
+ type: SkySavingsType;
7
+ name: string;
8
+ asset: string;
9
+ address: EthAddress;
10
+ isLegacy: boolean;
11
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SkySavingsType = void 0;
4
+ var SkySavingsType;
5
+ (function (SkySavingsType) {
6
+ SkySavingsType["SkySavings"] = "sky_savings";
7
+ })(SkySavingsType || (exports.SkySavingsType = SkySavingsType = {}));
@@ -85392,3 +85392,94 @@ export declare const SparkSavingsVault: {
85392
85392
  readonly type: "function";
85393
85393
  }];
85394
85394
  };
85395
+ export declare const SkySavings: {
85396
+ readonly abi: readonly [{
85397
+ readonly inputs: readonly [{
85398
+ readonly internalType: "address";
85399
+ readonly name: "implementation";
85400
+ readonly type: "address";
85401
+ }, {
85402
+ readonly internalType: "bytes";
85403
+ readonly name: "_data";
85404
+ readonly type: "bytes";
85405
+ }];
85406
+ readonly stateMutability: "payable";
85407
+ readonly type: "constructor";
85408
+ }, {
85409
+ readonly inputs: readonly [{
85410
+ readonly internalType: "address";
85411
+ readonly name: "target";
85412
+ readonly type: "address";
85413
+ }];
85414
+ readonly name: "AddressEmptyCode";
85415
+ readonly type: "error";
85416
+ }, {
85417
+ readonly inputs: readonly [{
85418
+ readonly internalType: "address";
85419
+ readonly name: "implementation";
85420
+ readonly type: "address";
85421
+ }];
85422
+ readonly name: "ERC1967InvalidImplementation";
85423
+ readonly type: "error";
85424
+ }, {
85425
+ readonly inputs: readonly [];
85426
+ readonly name: "ERC1967NonPayable";
85427
+ readonly type: "error";
85428
+ }, {
85429
+ readonly inputs: readonly [];
85430
+ readonly name: "FailedInnerCall";
85431
+ readonly type: "error";
85432
+ }, {
85433
+ readonly anonymous: false;
85434
+ readonly inputs: readonly [{
85435
+ readonly indexed: true;
85436
+ readonly internalType: "address";
85437
+ readonly name: "implementation";
85438
+ readonly type: "address";
85439
+ }];
85440
+ readonly name: "Upgraded";
85441
+ readonly type: "event";
85442
+ }, {
85443
+ readonly stateMutability: "payable";
85444
+ readonly type: "fallback";
85445
+ }, {
85446
+ readonly inputs: readonly [{
85447
+ readonly internalType: "address";
85448
+ readonly name: "account";
85449
+ readonly type: "address";
85450
+ }];
85451
+ readonly name: "balanceOf";
85452
+ readonly outputs: readonly [{
85453
+ readonly internalType: "uint256";
85454
+ readonly name: "";
85455
+ readonly type: "uint256";
85456
+ }];
85457
+ readonly stateMutability: "view";
85458
+ readonly type: "function";
85459
+ }, {
85460
+ readonly inputs: readonly [];
85461
+ readonly name: "totalAssets";
85462
+ readonly outputs: readonly [{
85463
+ readonly internalType: "uint256";
85464
+ readonly name: "";
85465
+ readonly type: "uint256";
85466
+ }];
85467
+ readonly stateMutability: "view";
85468
+ readonly type: "function";
85469
+ }, {
85470
+ readonly inputs: readonly [];
85471
+ readonly name: "totalSupply";
85472
+ readonly outputs: readonly [{
85473
+ readonly internalType: "uint256";
85474
+ readonly name: "";
85475
+ readonly type: "uint256";
85476
+ }];
85477
+ readonly stateMutability: "view";
85478
+ readonly type: "function";
85479
+ }];
85480
+ readonly networks: {
85481
+ readonly "1": {
85482
+ readonly address: "0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD";
85483
+ };
85484
+ };
85485
+ };
@@ -1281,3 +1281,11 @@ export const MakerDsr = {
1281
1281
  export const SparkSavingsVault = {
1282
1282
  "abi": [{ "inputs": [{ "internalType": "address", "name": "", "type": "address" }], "name": "balanceOf", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nowChi", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "RAY", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAssets", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }]
1283
1283
  };
1284
+ export const SkySavings = {
1285
+ "abi": [{ "inputs": [{ "internalType": "address", "name": "implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" }], "stateMutability": "payable", "type": "constructor" }, { "inputs": [{ "internalType": "address", "name": "target", "type": "address" }], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [{ "internalType": "address", "name": "implementation", "type": "address" }], "name": "ERC1967InvalidImplementation", "type": "error" }, { "inputs": [], "name": "ERC1967NonPayable", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "anonymous": false, "inputs": [{ "indexed": true, "internalType": "address", "name": "implementation", "type": "address" }], "name": "Upgraded", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], "name": "balanceOf", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAssets", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }],
1286
+ "networks": {
1287
+ "1": {
1288
+ "address": "0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD",
1289
+ }
1290
+ }
1291
+ };