@defisaver/positions-sdk 0.0.4 → 0.0.6

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 (88) hide show
  1. package/cjs/aaveV2/index.d.ts +2 -2
  2. package/cjs/aaveV2/index.js +5 -3
  3. package/cjs/chickenBonds/index.d.ts +4 -0
  4. package/cjs/chickenBonds/index.js +94 -1
  5. package/cjs/compoundV3/index.d.ts +2 -2
  6. package/cjs/compoundV3/index.js +8 -5
  7. package/cjs/config/contracts.d.ts +180 -2
  8. package/cjs/config/contracts.js +25 -1
  9. package/cjs/contracts.d.ts +4 -0
  10. package/cjs/contracts.js +5 -1
  11. package/cjs/helpers/chickenBondsHelpers/index.d.ts +2 -0
  12. package/cjs/helpers/chickenBondsHelpers/index.js +19 -0
  13. package/cjs/helpers/compoundHelpers/index.d.ts +2 -2
  14. package/cjs/helpers/compoundHelpers/index.js +5 -4
  15. package/cjs/helpers/index.d.ts +1 -0
  16. package/cjs/helpers/index.js +2 -1
  17. package/cjs/morphoAaveV2/index.d.ts +2 -2
  18. package/cjs/morphoAaveV2/index.js +5 -3
  19. package/cjs/services/priceService.d.ts +4 -0
  20. package/cjs/services/priceService.js +36 -0
  21. package/cjs/types/chickenBonds.d.ts +41 -0
  22. package/cjs/types/chickenBonds.js +13 -0
  23. package/cjs/types/contracts/generated/COMPPriceFeed.d.ts +135 -0
  24. package/cjs/types/contracts/generated/COMPPriceFeed.js +5 -0
  25. package/cjs/types/contracts/generated/ChickenBondsManager.d.ts +28 -0
  26. package/cjs/types/contracts/generated/ChickenBondsManager.js +5 -0
  27. package/cjs/types/contracts/generated/ChickenBondsView.d.ts +68 -0
  28. package/cjs/types/contracts/generated/ETHPriceFeed.d.ts +135 -0
  29. package/cjs/types/contracts/generated/ETHPriceFeed.js +5 -0
  30. package/cjs/types/contracts/generated/USDCPriceFeed.d.ts +135 -0
  31. package/cjs/types/contracts/generated/USDCPriceFeed.js +5 -0
  32. package/cjs/types/contracts/generated/index.d.ts +4 -0
  33. package/cjs/types/index.d.ts +1 -0
  34. package/cjs/types/index.js +1 -0
  35. package/esm/aaveV2/index.d.ts +2 -2
  36. package/esm/aaveV2/index.js +5 -3
  37. package/esm/chickenBonds/index.d.ts +4 -0
  38. package/esm/chickenBonds/index.js +89 -2
  39. package/esm/compoundV3/index.d.ts +2 -2
  40. package/esm/compoundV3/index.js +8 -5
  41. package/esm/config/contracts.d.ts +180 -2
  42. package/esm/config/contracts.js +25 -1
  43. package/esm/contracts.d.ts +4 -0
  44. package/esm/contracts.js +4 -0
  45. package/esm/helpers/chickenBondsHelpers/index.d.ts +2 -0
  46. package/esm/helpers/chickenBondsHelpers/index.js +11 -0
  47. package/esm/helpers/compoundHelpers/index.d.ts +2 -2
  48. package/esm/helpers/compoundHelpers/index.js +5 -4
  49. package/esm/helpers/index.d.ts +1 -0
  50. package/esm/helpers/index.js +1 -0
  51. package/esm/morphoAaveV2/index.d.ts +2 -2
  52. package/esm/morphoAaveV2/index.js +5 -3
  53. package/esm/services/priceService.d.ts +4 -0
  54. package/esm/services/priceService.js +27 -0
  55. package/esm/types/chickenBonds.d.ts +41 -0
  56. package/esm/types/chickenBonds.js +10 -0
  57. package/esm/types/contracts/generated/COMPPriceFeed.d.ts +135 -0
  58. package/esm/types/contracts/generated/COMPPriceFeed.js +4 -0
  59. package/esm/types/contracts/generated/ChickenBondsManager.d.ts +28 -0
  60. package/esm/types/contracts/generated/ChickenBondsManager.js +4 -0
  61. package/esm/types/contracts/generated/ChickenBondsView.d.ts +68 -0
  62. package/esm/types/contracts/generated/ETHPriceFeed.d.ts +135 -0
  63. package/esm/types/contracts/generated/ETHPriceFeed.js +4 -0
  64. package/esm/types/contracts/generated/USDCPriceFeed.d.ts +135 -0
  65. package/esm/types/contracts/generated/USDCPriceFeed.js +4 -0
  66. package/esm/types/contracts/generated/index.d.ts +4 -0
  67. package/esm/types/index.d.ts +1 -0
  68. package/esm/types/index.js +1 -0
  69. package/package.json +1 -1
  70. package/src/aaveV2/index.ts +5 -3
  71. package/src/chickenBonds/index.ts +103 -1
  72. package/src/compoundV3/index.ts +8 -5
  73. package/src/config/contracts.js +26 -2
  74. package/src/contracts.ts +7 -1
  75. package/src/helpers/chickenBondsHelpers/index.ts +13 -0
  76. package/src/helpers/compoundHelpers/index.ts +5 -2
  77. package/src/helpers/index.ts +2 -1
  78. package/src/morphoAaveV2/index.ts +5 -3
  79. package/src/services/priceService.ts +22 -0
  80. package/src/types/chickenBonds.ts +45 -0
  81. package/src/types/contracts/generated/COMPPriceFeed.ts +202 -0
  82. package/src/types/contracts/generated/ChickenBondsManager.ts +59 -0
  83. package/src/types/contracts/generated/ChickenBondsView.ts +88 -0
  84. package/src/types/contracts/generated/ETHPriceFeed.ts +202 -0
  85. package/src/types/contracts/generated/USDCPriceFeed.ts +202 -0
  86. package/src/types/contracts/generated/index.ts +4 -0
  87. package/src/types/index.ts +2 -1
  88. package/yarn-error.log +0 -64
@@ -0,0 +1,135 @@
1
+ /// <reference types="node" />
2
+ import type BN from "bn.js";
3
+ import type { ContractOptions } from "web3-eth-contract";
4
+ import type { EventLog } from "web3-core";
5
+ import type { EventEmitter } from "events";
6
+ import type { Callback, NonPayableTransactionObject, BlockType, ContractEventLog, BaseContract } from "./types";
7
+ export interface EventOptions {
8
+ filter?: object;
9
+ fromBlock?: BlockType;
10
+ topics?: string[];
11
+ }
12
+ export type AnswerUpdated = ContractEventLog<{
13
+ current: string;
14
+ roundId: string;
15
+ updatedAt: string;
16
+ 0: string;
17
+ 1: string;
18
+ 2: string;
19
+ }>;
20
+ export type NewRound = ContractEventLog<{
21
+ roundId: string;
22
+ startedBy: string;
23
+ startedAt: string;
24
+ 0: string;
25
+ 1: string;
26
+ 2: string;
27
+ }>;
28
+ export type OwnershipTransferRequested = ContractEventLog<{
29
+ from: string;
30
+ to: string;
31
+ 0: string;
32
+ 1: string;
33
+ }>;
34
+ export type OwnershipTransferred = ContractEventLog<{
35
+ from: string;
36
+ to: string;
37
+ 0: string;
38
+ 1: string;
39
+ }>;
40
+ export interface USDCPriceFeed extends BaseContract {
41
+ constructor(jsonInterface: any[], address?: string, options?: ContractOptions): USDCPriceFeed;
42
+ clone(): USDCPriceFeed;
43
+ methods: {
44
+ acceptOwnership(): NonPayableTransactionObject<void>;
45
+ accessController(): NonPayableTransactionObject<string>;
46
+ aggregator(): NonPayableTransactionObject<string>;
47
+ confirmAggregator(_aggregator: string): NonPayableTransactionObject<void>;
48
+ decimals(): NonPayableTransactionObject<string>;
49
+ description(): NonPayableTransactionObject<string>;
50
+ getAnswer(_roundId: number | string | BN): NonPayableTransactionObject<string>;
51
+ getRoundData(_roundId: number | string | BN): NonPayableTransactionObject<[
52
+ string,
53
+ string,
54
+ string,
55
+ string,
56
+ string
57
+ ] & {
58
+ roundId: string;
59
+ answer: string;
60
+ startedAt: string;
61
+ updatedAt: string;
62
+ answeredInRound: string;
63
+ }>;
64
+ getTimestamp(_roundId: number | string | BN): NonPayableTransactionObject<string>;
65
+ latestAnswer(): NonPayableTransactionObject<string>;
66
+ latestRound(): NonPayableTransactionObject<string>;
67
+ latestRoundData(): NonPayableTransactionObject<[
68
+ string,
69
+ string,
70
+ string,
71
+ string,
72
+ string
73
+ ] & {
74
+ roundId: string;
75
+ answer: string;
76
+ startedAt: string;
77
+ updatedAt: string;
78
+ answeredInRound: string;
79
+ }>;
80
+ latestTimestamp(): NonPayableTransactionObject<string>;
81
+ owner(): NonPayableTransactionObject<string>;
82
+ phaseAggregators(arg0: number | string | BN): NonPayableTransactionObject<string>;
83
+ phaseId(): NonPayableTransactionObject<string>;
84
+ proposeAggregator(_aggregator: string): NonPayableTransactionObject<void>;
85
+ proposedAggregator(): NonPayableTransactionObject<string>;
86
+ proposedGetRoundData(_roundId: number | string | BN): NonPayableTransactionObject<[
87
+ string,
88
+ string,
89
+ string,
90
+ string,
91
+ string
92
+ ] & {
93
+ roundId: string;
94
+ answer: string;
95
+ startedAt: string;
96
+ updatedAt: string;
97
+ answeredInRound: string;
98
+ }>;
99
+ proposedLatestRoundData(): NonPayableTransactionObject<[
100
+ string,
101
+ string,
102
+ string,
103
+ string,
104
+ string
105
+ ] & {
106
+ roundId: string;
107
+ answer: string;
108
+ startedAt: string;
109
+ updatedAt: string;
110
+ answeredInRound: string;
111
+ }>;
112
+ setController(_accessController: string): NonPayableTransactionObject<void>;
113
+ transferOwnership(_to: string): NonPayableTransactionObject<void>;
114
+ version(): NonPayableTransactionObject<string>;
115
+ };
116
+ events: {
117
+ AnswerUpdated(cb?: Callback<AnswerUpdated>): EventEmitter;
118
+ AnswerUpdated(options?: EventOptions, cb?: Callback<AnswerUpdated>): EventEmitter;
119
+ NewRound(cb?: Callback<NewRound>): EventEmitter;
120
+ NewRound(options?: EventOptions, cb?: Callback<NewRound>): EventEmitter;
121
+ OwnershipTransferRequested(cb?: Callback<OwnershipTransferRequested>): EventEmitter;
122
+ OwnershipTransferRequested(options?: EventOptions, cb?: Callback<OwnershipTransferRequested>): EventEmitter;
123
+ OwnershipTransferred(cb?: Callback<OwnershipTransferred>): EventEmitter;
124
+ OwnershipTransferred(options?: EventOptions, cb?: Callback<OwnershipTransferred>): EventEmitter;
125
+ allEvents(options?: EventOptions, cb?: Callback<EventLog>): EventEmitter;
126
+ };
127
+ once(event: "AnswerUpdated", cb: Callback<AnswerUpdated>): void;
128
+ once(event: "AnswerUpdated", options: EventOptions, cb: Callback<AnswerUpdated>): void;
129
+ once(event: "NewRound", cb: Callback<NewRound>): void;
130
+ once(event: "NewRound", options: EventOptions, cb: Callback<NewRound>): void;
131
+ once(event: "OwnershipTransferRequested", cb: Callback<OwnershipTransferRequested>): void;
132
+ once(event: "OwnershipTransferRequested", options: EventOptions, cb: Callback<OwnershipTransferRequested>): void;
133
+ once(event: "OwnershipTransferred", cb: Callback<OwnershipTransferred>): void;
134
+ once(event: "OwnershipTransferred", options: EventOptions, cb: Callback<OwnershipTransferred>): void;
135
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ /* Autogenerated file. Do not edit manually. */
3
+ /* tslint:disable */
4
+ /* eslint-disable */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -7,7 +7,9 @@ export type { AaveV3PoolAddressesProvider } from "./AaveV3PoolAddressesProvider"
7
7
  export type { AaveV3ProtocolDataProvider } from "./AaveV3ProtocolDataProvider";
8
8
  export type { AaveV3View } from "./AaveV3View";
9
9
  export type { BalanceScanner } from "./BalanceScanner";
10
+ export type { COMPPriceFeed } from "./COMPPriceFeed";
10
11
  export type { CbEth } from "./CbEth";
12
+ export type { ChickenBondsManager } from "./ChickenBondsManager";
11
13
  export type { ChickenBondsView } from "./ChickenBondsView";
12
14
  export type { CollSurplusPool } from "./CollSurplusPool";
13
15
  export type { CompV3ETHBulker } from "./CompV3ETHBulker";
@@ -16,6 +18,7 @@ export type { CompV3USDbCBulker } from "./CompV3USDbCBulker";
16
18
  export type { CompV3View } from "./CompV3View";
17
19
  export type { CompoundLoanInfo } from "./CompoundLoanInfo";
18
20
  export type { Comptroller } from "./Comptroller";
21
+ export type { ETHPriceFeed } from "./ETHPriceFeed";
19
22
  export type { Erc20 } from "./Erc20";
20
23
  export type { GHO } from "./GHO";
21
24
  export type { GhoDiscountRateStrategy } from "./GhoDiscountRateStrategy";
@@ -42,6 +45,7 @@ export type { SparkPoolAddressesProvider } from "./SparkPoolAddressesProvider";
42
45
  export type { SparkProtocolDataProvider } from "./SparkProtocolDataProvider";
43
46
  export type { SparkView } from "./SparkView";
44
47
  export type { TroveManager } from "./TroveManager";
48
+ export type { USDCPriceFeed } from "./USDCPriceFeed";
45
49
  export type { UniMulticall } from "./UniMulticall";
46
50
  export type { CETHv3 } from "./CETHv3";
47
51
  export type { CUSDCv3 } from "./CUSDCv3";
@@ -4,3 +4,4 @@ export * from './spark';
4
4
  export * from './curveUsd';
5
5
  export * from './liquity';
6
6
  export * from './maker';
7
+ export * from './chickenBonds';
@@ -20,3 +20,4 @@ __exportStar(require("./spark"), exports);
20
20
  __exportStar(require("./curveUsd"), exports);
21
21
  __exportStar(require("./liquity"), exports);
22
22
  __exportStar(require("./maker"), exports);
23
+ __exportStar(require("./chickenBonds"), exports);
@@ -1,9 +1,9 @@
1
1
  import Web3 from 'web3';
2
2
  import { Blockish, EthAddress, NetworkNumber, PositionBalances } from '../types/common';
3
3
  import { AaveMarketInfo, AaveV2AssetsData, AaveV2PositionData } from '../types';
4
- export declare const getAaveV2MarketsData: (web3: Web3, network: NetworkNumber, selectedMarket: AaveMarketInfo, ethPrice: string, mainnetWeb3: Web3) => Promise<{
4
+ export declare const getAaveV2MarketsData: (web3: Web3, network: NetworkNumber, selectedMarket: AaveMarketInfo, mainnetWeb3: Web3) => Promise<{
5
5
  assetsData: AaveV2AssetsData;
6
6
  }>;
7
7
  export declare const getAaveV2AccountBalances: (web3: Web3, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress) => Promise<PositionBalances>;
8
8
  export declare const getAaveV2AccountData: (web3: Web3, network: NetworkNumber, address: string, assetsData: AaveV2AssetsData, market: AaveMarketInfo) => Promise<AaveV2PositionData>;
9
- export declare const getAaveV2FullPositionData: (web3: Web3, network: NetworkNumber, address: string, market: AaveMarketInfo, ethPrice: string, mainnetWeb3: Web3) => Promise<AaveV2PositionData>;
9
+ export declare const getAaveV2FullPositionData: (web3: Web3, network: NetworkNumber, address: string, market: AaveMarketInfo, mainnetWeb3: Web3) => Promise<AaveV2PositionData>;
@@ -16,7 +16,9 @@ import { calculateBorrowingAssetLimit } from '../moneymarket';
16
16
  import { EMPTY_AAVE_DATA } from '../aaveV3';
17
17
  import { AAVE_V2 } from '../markets/aave';
18
18
  import { aaveAnyGetAggregatedPositionData } from '../helpers/aaveHelpers';
19
- export const getAaveV2MarketsData = (web3, network, selectedMarket, ethPrice, mainnetWeb3) => __awaiter(void 0, void 0, void 0, function* () {
19
+ import { getEthPrice } from '../services/priceService';
20
+ export const getAaveV2MarketsData = (web3, network, selectedMarket, mainnetWeb3) => __awaiter(void 0, void 0, void 0, function* () {
21
+ const ethPrice = yield getEthPrice(mainnetWeb3);
20
22
  const _addresses = selectedMarket.assets.map(a => getAssetInfo(ethToWeth(a)).address);
21
23
  const loanInfoContract = AaveLoanInfoV2Contract(web3, network);
22
24
  const marketAddress = selectedMarket.providerAddress;
@@ -167,8 +169,8 @@ export const getAaveV2AccountData = (web3, network, address, assetsData, market)
167
169
  payload.totalInterestUsd = totalInterestUsd;
168
170
  return payload;
169
171
  });
170
- export const getAaveV2FullPositionData = (web3, network, address, market, ethPrice, mainnetWeb3) => __awaiter(void 0, void 0, void 0, function* () {
171
- const marketData = yield getAaveV2MarketsData(web3, network, market, ethPrice, mainnetWeb3);
172
+ export const getAaveV2FullPositionData = (web3, network, address, market, mainnetWeb3) => __awaiter(void 0, void 0, void 0, function* () {
173
+ const marketData = yield getAaveV2MarketsData(web3, network, market, mainnetWeb3);
172
174
  const positionData = yield getAaveV2AccountData(web3, network, address, marketData.assetsData, market);
173
175
  return positionData;
174
176
  });
@@ -1,3 +1,7 @@
1
1
  import Web3 from 'web3';
2
2
  import { Blockish, NetworkNumber, PositionBalances } from '../types/common';
3
+ import { BondInfoBasic, ChickenBondsSystemInfoBasic } from '../types';
3
4
  export declare const getChickenBondsAccountBalances: (web3: Web3, network: NetworkNumber, block: Blockish, addressMapping: boolean, bondId: string) => Promise<PositionBalances>;
5
+ export declare const fetchCBondsSystemInfo: (web3: Web3, network: NetworkNumber) => Promise<ChickenBondsSystemInfoBasic>;
6
+ export declare const fetchCBondsForUser: (web3: Web3, network: NetworkNumber, address: string) => Promise<BondInfoBasic[]>;
7
+ export declare const fetchCBondForId: (web3: Web3, network: NetworkNumber, bondId: string) => Promise<BondInfoBasic>;
@@ -7,8 +7,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { getAssetInfo } from '@defisaver/tokens';
11
- import { ChickenBondsViewContract } from '../contracts';
10
+ import Dec from 'decimal.js';
11
+ import { assetAmountInEth, getAssetInfo } from '@defisaver/tokens';
12
+ import { ChickenBondsManagerContract, ChickenBondsViewContract } from '../contracts';
13
+ import { multicall } from '../multicall';
14
+ import { calcAverageBondAgeMs, calcCBondsBLUSDFloorPrice } from '../helpers/chickenBondsHelpers';
12
15
  export const getChickenBondsAccountBalances = (web3, network, block, addressMapping, bondId) => __awaiter(void 0, void 0, void 0, function* () {
13
16
  const viewContract = ChickenBondsViewContract(web3, network, block);
14
17
  const fullBondInfo = yield viewContract.methods.getBondFullInfo(bondId).call({}, block);
@@ -18,3 +21,87 @@ export const getChickenBondsAccountBalances = (web3, network, block, addressMapp
18
21
  },
19
22
  };
20
23
  });
24
+ export const fetchCBondsSystemInfo = (web3, network) => __awaiter(void 0, void 0, void 0, function* () {
25
+ const cBondsView = ChickenBondsViewContract(web3, network);
26
+ const cBondsManager = ChickenBondsManagerContract(web3, network);
27
+ const multicallData = [
28
+ {
29
+ target: cBondsView.options.address,
30
+ abiItem: cBondsView.options.jsonInterface.find(({ name }) => name === 'getSystemInfo'),
31
+ params: [],
32
+ },
33
+ {
34
+ target: cBondsManager.options.address,
35
+ abiItem: cBondsManager.options.jsonInterface.find(({ name }) => name === 'totalWeightedStartTimes'),
36
+ params: [],
37
+ },
38
+ {
39
+ target: cBondsManager.options.address,
40
+ abiItem: cBondsManager.options.jsonInterface.find(({ name }) => name === 'getAcquiredLUSDInSP'),
41
+ params: [],
42
+ },
43
+ {
44
+ target: cBondsManager.options.address,
45
+ abiItem: cBondsManager.options.jsonInterface.find(({ name }) => name === 'getAcquiredLUSDInCurve'),
46
+ params: [],
47
+ },
48
+ {
49
+ target: cBondsManager.options.address,
50
+ abiItem: cBondsManager.options.jsonInterface.find(({ name }) => name === 'yTokensHeldByCBM'),
51
+ params: [],
52
+ },
53
+ ];
54
+ const [{ 0: systemInfo }, { 0: totalWeightedStartTimes }, { 0: acquiredLUSDInSP }, { 0: acquiredLUSDInCurve }, { 0: yTokensHeldByCBM }] = yield multicall(multicallData, web3, network);
55
+ const payload = {
56
+ numPendingBonds: systemInfo.numPendingBonds,
57
+ numChickenInBonds: systemInfo.numChickenInBonds,
58
+ numChickenOutBonds: systemInfo.numChickenOutBonds,
59
+ accrualParameter: new Dec(assetAmountInEth(systemInfo.accrualParameter)).mul(1000).toString(),
60
+ bLUSDSupply: assetAmountInEth(systemInfo.bLUSDSupply, 'bLUSD'),
61
+ chickenInAMMFee: assetAmountInEth(systemInfo.chickenInAMMFee),
62
+ ownedLUSDInCurve: assetAmountInEth(systemInfo.ownedLUSDInCurve, 'LUSD'),
63
+ systemBackingRatio: assetAmountInEth(systemInfo.systemBackingRatio),
64
+ ownedLUSDInSP: assetAmountInEth(systemInfo.ownedLUSDInSP, 'LUSD'),
65
+ totalPendingLUSD: assetAmountInEth(systemInfo.totalPendingLUSD, 'LUSD'),
66
+ totalPermanentLUSD: assetAmountInEth(systemInfo.totalPermanentLUSD, 'LUSD'),
67
+ totalReserveLUSD: assetAmountInEth(systemInfo.totalReserveLUSD, 'LUSD'),
68
+ targetAverageAgeMs: 1296000000,
69
+ totalWeightedStartTimes: assetAmountInEth(totalWeightedStartTimes),
70
+ acquiredLUSDInSP: assetAmountInEth(acquiredLUSDInSP, 'LUSD'),
71
+ acquiredLUSDInCurve: assetAmountInEth(acquiredLUSDInCurve, 'LUSD'),
72
+ yTokensHeldByCBM: assetAmountInEth(yTokensHeldByCBM, 'ETH'), // yTokens is 18 decimals
73
+ };
74
+ const floorPrice = calcCBondsBLUSDFloorPrice(payload.bLUSDSupply, payload.totalReserveLUSD);
75
+ const averageBondAgeMs = calcAverageBondAgeMs(payload.totalWeightedStartTimes, payload.totalPendingLUSD);
76
+ return Object.assign(Object.assign({}, payload), { floorPrice,
77
+ averageBondAgeMs });
78
+ });
79
+ export const fetchCBondsForUser = (web3, network, address) => __awaiter(void 0, void 0, void 0, function* () {
80
+ const cBondsView = ChickenBondsViewContract(web3, network);
81
+ const bonds = yield cBondsView.methods.getUsersBonds(address).call();
82
+ return bonds.map(({ bondID, accruedBLUSD, claimedBLUSD, endTime, lusdAmount, maxAmountBLUSD, startTime, status, tokenURI, }) => ({
83
+ bondId: bondID,
84
+ status,
85
+ // tokenURI: decodeTokenURIToSvg(tokenURI),
86
+ startTime: new Date(+startTime * 1000),
87
+ endTime: new Date(+endTime * 1000),
88
+ accruedBLUSD: assetAmountInEth(accruedBLUSD, 'bLUSD'),
89
+ claimedBLUSD: assetAmountInEth(claimedBLUSD, 'bLUSD'),
90
+ lusdAmount: assetAmountInEth(lusdAmount, 'LUSD'),
91
+ maxAmountBLUSD: assetAmountInEth(maxAmountBLUSD, 'bLUSD'),
92
+ }));
93
+ });
94
+ export const fetchCBondForId = (web3, network, bondId) => __awaiter(void 0, void 0, void 0, function* () {
95
+ const cBondsView = ChickenBondsViewContract(web3, network);
96
+ const bond = yield cBondsView.methods.getBondFullInfo(bondId).call();
97
+ return {
98
+ bondId,
99
+ status: bond.status,
100
+ startTime: new Date(+bond.startTime * 1000),
101
+ endTime: new Date(+bond.endTime * 1000),
102
+ accruedBLUSD: assetAmountInEth(bond.accruedBLUSD, 'bLUSD'),
103
+ claimedBLUSD: assetAmountInEth(bond.claimedBLUSD, 'bLUSD'),
104
+ lusdAmount: assetAmountInEth(bond.lusdAmount, 'LUSD'),
105
+ maxAmountBLUSD: assetAmountInEth(bond.maxAmountBLUSD, 'bLUSD'),
106
+ };
107
+ });
@@ -1,7 +1,7 @@
1
1
  import Web3 from 'web3';
2
2
  import { CompoundMarketData, CompoundV3AssetsData, CompoundV3MarketsData, CompoundV3PositionData } from '../types/compound';
3
3
  import { Blockish, EthAddress, NetworkNumber, PositionBalances } from '../types/common';
4
- export declare const getCompoundV3MarketsData: (web3: Web3, network: NetworkNumber, selectedMarket: CompoundMarketData, compPrice: string, defaultWeb3: Web3) => Promise<CompoundV3MarketsData>;
4
+ export declare const getCompoundV3MarketsData: (web3: Web3, network: NetworkNumber, selectedMarket: CompoundMarketData, defaultWeb3: Web3) => Promise<CompoundV3MarketsData>;
5
5
  export declare const EMPTY_COMPOUND_V3_DATA: {
6
6
  usedAssets: {};
7
7
  suppliedUsd: string;
@@ -34,4 +34,4 @@ export declare const getCompoundV3AccountData: (web3: Web3, network: NetworkNumb
34
34
  selectedMarket: CompoundMarketData;
35
35
  assetsData: CompoundV3AssetsData;
36
36
  })) => Promise<CompoundV3PositionData>;
37
- export declare const getCompoundV3FullPositionData: (web3: Web3, network: NetworkNumber, address: string, proxyAddress: string, selectedMarket: CompoundMarketData, compPrice: string, mainnetWeb3: Web3) => Promise<CompoundV3PositionData>;
37
+ export declare const getCompoundV3FullPositionData: (web3: Web3, network: NetworkNumber, address: string, proxyAddress: string, selectedMarket: CompoundMarketData, mainnetWeb3: Web3) => Promise<CompoundV3PositionData>;
@@ -18,7 +18,10 @@ import { ZERO_ADDRESS } from '../constants';
18
18
  import { calculateBorrowingAssetLimit } from '../moneymarket';
19
19
  import { formatBaseData, formatMarketData, getCompoundV3AggregatedData, getIncentiveApys, } from '../helpers/compoundHelpers';
20
20
  import { COMPOUND_V3_ETH, COMPOUND_V3_USDBC, COMPOUND_V3_USDC } from '../markets/compound';
21
- export const getCompoundV3MarketsData = (web3, network, selectedMarket, compPrice, defaultWeb3) => __awaiter(void 0, void 0, void 0, function* () {
21
+ import { getEthPrice, getCompPrice, getUSDCPrice } from '../services/priceService';
22
+ export const getCompoundV3MarketsData = (web3, network, selectedMarket, defaultWeb3) => __awaiter(void 0, void 0, void 0, function* () {
23
+ const baseAssetPrice = selectedMarket.baseAsset === 'ETH' ? yield getEthPrice(defaultWeb3) : yield getUSDCPrice(defaultWeb3);
24
+ const compPrice = yield getCompPrice(defaultWeb3);
22
25
  const contract = CompV3ViewContract(web3, network);
23
26
  const CompV3ViewAddress = contract.options.address;
24
27
  const calls = [
@@ -34,7 +37,7 @@ export const getCompoundV3MarketsData = (web3, network, selectedMarket, compPric
34
37
  },
35
38
  ];
36
39
  const data = yield multicall(calls, web3, network);
37
- const colls = data[1].colls.map((coll) => formatMarketData(coll, network));
40
+ const colls = data[1].colls.map((coll) => formatMarketData(coll, network, baseAssetPrice));
38
41
  if (selectedMarket.value === CompoundVersions.CompoundV3ETH) {
39
42
  for (const coll of colls) {
40
43
  if (coll.symbol === 'wstETH') {
@@ -61,7 +64,7 @@ export const getCompoundV3MarketsData = (web3, network, selectedMarket, compPric
61
64
  }
62
65
  }
63
66
  }
64
- const base = formatBaseData(data[0].baseToken, network);
67
+ const base = formatBaseData(data[0].baseToken, network, baseAssetPrice);
65
68
  const payload = {};
66
69
  const baseObj = Object.assign(Object.assign({}, base), getIncentiveApys(base, compPrice));
67
70
  const allAssets = [baseObj, ...colls];
@@ -191,8 +194,8 @@ export const getCompoundV3AccountData = (web3, network, address, proxyAddress, e
191
194
  });
192
195
  return payload;
193
196
  });
194
- export const getCompoundV3FullPositionData = (web3, network, address, proxyAddress, selectedMarket, compPrice, mainnetWeb3) => __awaiter(void 0, void 0, void 0, function* () {
195
- const marketData = yield getCompoundV3MarketsData(web3, network, selectedMarket, compPrice, mainnetWeb3);
197
+ export const getCompoundV3FullPositionData = (web3, network, address, proxyAddress, selectedMarket, mainnetWeb3) => __awaiter(void 0, void 0, void 0, function* () {
198
+ const marketData = yield getCompoundV3MarketsData(web3, network, selectedMarket, mainnetWeb3);
196
199
  const positionData = yield getCompoundV3AccountData(web3, network, address, proxyAddress, { selectedMarket, assetsData: marketData.assetsData });
197
200
  return positionData;
198
201
  });
@@ -2997,7 +2997,17 @@ export namespace McdDog {
2997
2997
  export { networks_55 as networks };
2998
2998
  }
2999
2999
  export namespace ChickenBondsView {
3000
- let abi_56: {
3000
+ let abi_56: ({
3001
+ inputs: never[];
3002
+ name: string;
3003
+ outputs: {
3004
+ internalType: string;
3005
+ name: string;
3006
+ type: string;
3007
+ }[];
3008
+ stateMutability: string;
3009
+ type: string;
3010
+ } | {
3001
3011
  inputs: {
3002
3012
  internalType: string;
3003
3013
  name: string;
@@ -3016,7 +3026,7 @@ export namespace ChickenBondsView {
3016
3026
  }[];
3017
3027
  stateMutability: string;
3018
3028
  type: string;
3019
- }[];
3029
+ })[];
3020
3030
  export { abi_56 as abi };
3021
3031
  let networks_56: {
3022
3032
  "1": {
@@ -3026,3 +3036,171 @@ export namespace ChickenBondsView {
3026
3036
  };
3027
3037
  export { networks_56 as networks };
3028
3038
  }
3039
+ export namespace ChickenBondsManager {
3040
+ let abi_57: {
3041
+ inputs: {
3042
+ internalType: string;
3043
+ name: string;
3044
+ type: string;
3045
+ }[];
3046
+ name: string;
3047
+ outputs: {
3048
+ internalType: string;
3049
+ name: string;
3050
+ type: string;
3051
+ }[];
3052
+ stateMutability: string;
3053
+ type: string;
3054
+ }[];
3055
+ export { abi_57 as abi };
3056
+ let networks_57: {
3057
+ "1": {
3058
+ address: string;
3059
+ };
3060
+ };
3061
+ export { networks_57 as networks };
3062
+ }
3063
+ export namespace COMPPriceFeed {
3064
+ let abi_58: ({
3065
+ inputs: {
3066
+ internalType: string;
3067
+ name: string;
3068
+ type: string;
3069
+ }[];
3070
+ stateMutability: string;
3071
+ type: string;
3072
+ anonymous?: undefined;
3073
+ name?: undefined;
3074
+ outputs?: undefined;
3075
+ } | {
3076
+ anonymous: boolean;
3077
+ inputs: {
3078
+ indexed: boolean;
3079
+ internalType: string;
3080
+ name: string;
3081
+ type: string;
3082
+ }[];
3083
+ name: string;
3084
+ type: string;
3085
+ stateMutability?: undefined;
3086
+ outputs?: undefined;
3087
+ } | {
3088
+ inputs: {
3089
+ internalType: string;
3090
+ name: string;
3091
+ type: string;
3092
+ }[];
3093
+ name: string;
3094
+ outputs: {
3095
+ internalType: string;
3096
+ name: string;
3097
+ type: string;
3098
+ }[];
3099
+ stateMutability: string;
3100
+ type: string;
3101
+ anonymous?: undefined;
3102
+ })[];
3103
+ export { abi_58 as abi };
3104
+ let networks_58: {
3105
+ "1": {
3106
+ address: string;
3107
+ };
3108
+ };
3109
+ export { networks_58 as networks };
3110
+ }
3111
+ export namespace ETHPriceFeed {
3112
+ let abi_59: ({
3113
+ inputs: {
3114
+ internalType: string;
3115
+ name: string;
3116
+ type: string;
3117
+ }[];
3118
+ stateMutability: string;
3119
+ type: string;
3120
+ anonymous?: undefined;
3121
+ name?: undefined;
3122
+ outputs?: undefined;
3123
+ } | {
3124
+ anonymous: boolean;
3125
+ inputs: {
3126
+ indexed: boolean;
3127
+ internalType: string;
3128
+ name: string;
3129
+ type: string;
3130
+ }[];
3131
+ name: string;
3132
+ type: string;
3133
+ stateMutability?: undefined;
3134
+ outputs?: undefined;
3135
+ } | {
3136
+ inputs: {
3137
+ internalType: string;
3138
+ name: string;
3139
+ type: string;
3140
+ }[];
3141
+ name: string;
3142
+ outputs: {
3143
+ internalType: string;
3144
+ name: string;
3145
+ type: string;
3146
+ }[];
3147
+ stateMutability: string;
3148
+ type: string;
3149
+ anonymous?: undefined;
3150
+ })[];
3151
+ export { abi_59 as abi };
3152
+ let networks_59: {
3153
+ "1": {
3154
+ address: string;
3155
+ };
3156
+ };
3157
+ export { networks_59 as networks };
3158
+ }
3159
+ export namespace USDCPriceFeed {
3160
+ let abi_60: ({
3161
+ inputs: {
3162
+ internalType: string;
3163
+ name: string;
3164
+ type: string;
3165
+ }[];
3166
+ stateMutability: string;
3167
+ type: string;
3168
+ anonymous?: undefined;
3169
+ name?: undefined;
3170
+ outputs?: undefined;
3171
+ } | {
3172
+ anonymous: boolean;
3173
+ inputs: {
3174
+ indexed: boolean;
3175
+ internalType: string;
3176
+ name: string;
3177
+ type: string;
3178
+ }[];
3179
+ name: string;
3180
+ type: string;
3181
+ stateMutability?: undefined;
3182
+ outputs?: undefined;
3183
+ } | {
3184
+ inputs: {
3185
+ internalType: string;
3186
+ name: string;
3187
+ type: string;
3188
+ }[];
3189
+ name: string;
3190
+ outputs: {
3191
+ internalType: string;
3192
+ name: string;
3193
+ type: string;
3194
+ }[];
3195
+ stateMutability: string;
3196
+ type: string;
3197
+ anonymous?: undefined;
3198
+ })[];
3199
+ export { abi_60 as abi };
3200
+ let networks_60: {
3201
+ "1": {
3202
+ address: string;
3203
+ };
3204
+ };
3205
+ export { networks_60 as networks };
3206
+ }