@defisaver/positions-sdk 0.0.5 → 0.0.7
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/cjs/aaveV2/index.d.ts +2 -2
- package/cjs/aaveV2/index.js +5 -3
- package/cjs/aaveV3/index.js +1 -1
- package/cjs/chickenBonds/index.js +2 -1
- package/cjs/compoundV3/index.d.ts +2 -2
- package/cjs/compoundV3/index.js +8 -5
- package/cjs/config/contracts.d.ts +144 -0
- package/cjs/config/contracts.js +18 -0
- package/cjs/contracts.d.ts +3 -0
- package/cjs/contracts.js +4 -1
- package/cjs/helpers/aaveHelpers/index.js +14 -2
- package/cjs/helpers/chickenBondsHelpers/index.d.ts +1 -0
- package/cjs/helpers/chickenBondsHelpers/index.js +14 -1
- package/cjs/helpers/compoundHelpers/index.d.ts +2 -2
- package/cjs/helpers/compoundHelpers/index.js +5 -4
- package/cjs/morphoAaveV2/index.d.ts +2 -2
- package/cjs/morphoAaveV2/index.js +5 -3
- package/cjs/services/priceService.d.ts +4 -0
- package/cjs/services/priceService.js +36 -0
- package/cjs/types/chickenBonds.d.ts +1 -0
- package/cjs/types/contracts/generated/COMPPriceFeed.d.ts +135 -0
- package/cjs/types/contracts/generated/COMPPriceFeed.js +5 -0
- package/cjs/types/contracts/generated/ETHPriceFeed.d.ts +135 -0
- package/cjs/types/contracts/generated/ETHPriceFeed.js +5 -0
- package/cjs/types/contracts/generated/USDCPriceFeed.d.ts +135 -0
- package/cjs/types/contracts/generated/USDCPriceFeed.js +5 -0
- package/cjs/types/contracts/generated/index.d.ts +3 -0
- package/esm/aaveV2/index.d.ts +2 -2
- package/esm/aaveV2/index.js +5 -3
- package/esm/aaveV3/index.js +1 -1
- package/esm/chickenBonds/index.js +3 -2
- package/esm/compoundV3/index.d.ts +2 -2
- package/esm/compoundV3/index.js +8 -5
- package/esm/config/contracts.d.ts +144 -0
- package/esm/config/contracts.js +18 -0
- package/esm/contracts.d.ts +3 -0
- package/esm/contracts.js +3 -0
- package/esm/helpers/aaveHelpers/index.js +14 -2
- package/esm/helpers/chickenBondsHelpers/index.d.ts +1 -0
- package/esm/helpers/chickenBondsHelpers/index.js +12 -0
- package/esm/helpers/compoundHelpers/index.d.ts +2 -2
- package/esm/helpers/compoundHelpers/index.js +5 -4
- package/esm/morphoAaveV2/index.d.ts +2 -2
- package/esm/morphoAaveV2/index.js +5 -3
- package/esm/services/priceService.d.ts +4 -0
- package/esm/services/priceService.js +27 -0
- package/esm/types/chickenBonds.d.ts +1 -0
- package/esm/types/contracts/generated/COMPPriceFeed.d.ts +135 -0
- package/esm/types/contracts/generated/COMPPriceFeed.js +4 -0
- package/esm/types/contracts/generated/ETHPriceFeed.d.ts +135 -0
- package/esm/types/contracts/generated/ETHPriceFeed.js +4 -0
- package/esm/types/contracts/generated/USDCPriceFeed.d.ts +135 -0
- package/esm/types/contracts/generated/USDCPriceFeed.js +4 -0
- package/esm/types/contracts/generated/index.d.ts +3 -0
- package/package.json +1 -1
- package/src/aaveV2/index.ts +5 -3
- package/src/aaveV3/index.ts +1 -0
- package/src/chickenBonds/index.ts +3 -2
- package/src/compoundV3/index.ts +8 -5
- package/src/config/contracts.js +18 -0
- package/src/contracts.ts +5 -1
- package/src/helpers/aaveHelpers/index.ts +16 -2
- package/src/helpers/chickenBondsHelpers/index.ts +11 -0
- package/src/helpers/compoundHelpers/index.ts +7 -4
- package/src/morphoAaveV2/index.ts +5 -3
- package/src/services/priceService.ts +22 -0
- package/src/types/chickenBonds.ts +1 -0
- package/src/types/contracts/generated/COMPPriceFeed.ts +202 -0
- package/src/types/contracts/generated/ETHPriceFeed.ts +202 -0
- package/src/types/contracts/generated/USDCPriceFeed.ts +202 -0
- package/src/types/contracts/generated/index.ts +3 -0
- package/yarn-error.log +64 -0
|
@@ -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 ETHPriceFeed extends BaseContract {
|
|
41
|
+
constructor(jsonInterface: any[], address?: string, options?: ContractOptions): ETHPriceFeed;
|
|
42
|
+
clone(): ETHPriceFeed;
|
|
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,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
|
+
}
|
|
@@ -7,6 +7,7 @@ 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";
|
|
11
12
|
export type { ChickenBondsManager } from "./ChickenBondsManager";
|
|
12
13
|
export type { ChickenBondsView } from "./ChickenBondsView";
|
|
@@ -17,6 +18,7 @@ export type { CompV3USDbCBulker } from "./CompV3USDbCBulker";
|
|
|
17
18
|
export type { CompV3View } from "./CompV3View";
|
|
18
19
|
export type { CompoundLoanInfo } from "./CompoundLoanInfo";
|
|
19
20
|
export type { Comptroller } from "./Comptroller";
|
|
21
|
+
export type { ETHPriceFeed } from "./ETHPriceFeed";
|
|
20
22
|
export type { Erc20 } from "./Erc20";
|
|
21
23
|
export type { GHO } from "./GHO";
|
|
22
24
|
export type { GhoDiscountRateStrategy } from "./GhoDiscountRateStrategy";
|
|
@@ -43,6 +45,7 @@ export type { SparkPoolAddressesProvider } from "./SparkPoolAddressesProvider";
|
|
|
43
45
|
export type { SparkProtocolDataProvider } from "./SparkProtocolDataProvider";
|
|
44
46
|
export type { SparkView } from "./SparkView";
|
|
45
47
|
export type { TroveManager } from "./TroveManager";
|
|
48
|
+
export type { USDCPriceFeed } from "./USDCPriceFeed";
|
|
46
49
|
export type { UniMulticall } from "./UniMulticall";
|
|
47
50
|
export type { CETHv3 } from "./CETHv3";
|
|
48
51
|
export type { CUSDCv3 } from "./CUSDCv3";
|
package/package.json
CHANGED
package/src/aaveV2/index.ts
CHANGED
|
@@ -15,8 +15,10 @@ import {
|
|
|
15
15
|
import { EMPTY_AAVE_DATA } from '../aaveV3';
|
|
16
16
|
import { AAVE_V2 } from '../markets/aave';
|
|
17
17
|
import { aaveAnyGetAggregatedPositionData } from '../helpers/aaveHelpers';
|
|
18
|
+
import { getEthPrice } from '../services/priceService';
|
|
18
19
|
|
|
19
|
-
export const getAaveV2MarketsData = async (web3: Web3, network: NetworkNumber, selectedMarket: AaveMarketInfo,
|
|
20
|
+
export const getAaveV2MarketsData = async (web3: Web3, network: NetworkNumber, selectedMarket: AaveMarketInfo, mainnetWeb3: Web3) => {
|
|
21
|
+
const ethPrice = await 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;
|
|
@@ -212,8 +214,8 @@ export const getAaveV2AccountData = async (web3: Web3, network: NetworkNumber, a
|
|
|
212
214
|
return payload;
|
|
213
215
|
};
|
|
214
216
|
|
|
215
|
-
export const getAaveV2FullPositionData = async (web3: Web3, network: NetworkNumber, address: string, market: AaveMarketInfo,
|
|
216
|
-
const marketData = await getAaveV2MarketsData(web3, network, market,
|
|
217
|
+
export const getAaveV2FullPositionData = async (web3: Web3, network: NetworkNumber, address: string, market: AaveMarketInfo, mainnetWeb3: Web3): Promise<AaveV2PositionData> => {
|
|
218
|
+
const marketData = await getAaveV2MarketsData(web3, network, market, mainnetWeb3);
|
|
217
219
|
const positionData = await getAaveV2AccountData(web3, network, address, marketData.assetsData, market);
|
|
218
220
|
return positionData;
|
|
219
221
|
};
|
package/src/aaveV3/index.ts
CHANGED
|
@@ -237,6 +237,7 @@ export async function getAaveV3MarketData(web3: Web3, network: NetworkNumber, ma
|
|
|
237
237
|
collateralFactor: new Dec(tokenMarket.ltv).div(10000).toString(),
|
|
238
238
|
priceSource: tokenMarket.priceSource,
|
|
239
239
|
},
|
|
240
|
+
aTokenAddress: tokenMarket.aTokenAddress,
|
|
240
241
|
});
|
|
241
242
|
}));
|
|
242
243
|
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
import { ChickenBondsManagerContract, ChickenBondsViewContract } from '../contracts';
|
|
10
10
|
import { BondInfoBasic, ChickenBondsSystemInfoBasic } from '../types';
|
|
11
11
|
import { multicall } from '../multicall';
|
|
12
|
-
import { calcAverageBondAgeMs, calcCBondsBLUSDFloorPrice } from '../helpers/chickenBondsHelpers';
|
|
12
|
+
import { calcAverageBondAgeMs, calcCBondsBLUSDFloorPrice, decodeTokenURIToSvg } from '../helpers/chickenBondsHelpers';
|
|
13
13
|
|
|
14
14
|
export const getChickenBondsAccountBalances = async (web3: Web3, network: NetworkNumber, block: Blockish, addressMapping: boolean, bondId: string): Promise<PositionBalances> => {
|
|
15
15
|
const viewContract = ChickenBondsViewContract(web3, network, block);
|
|
@@ -94,7 +94,7 @@ export const fetchCBondsForUser = async (web3: Web3, network: NetworkNumber, add
|
|
|
94
94
|
}) => ({
|
|
95
95
|
bondId: bondID,
|
|
96
96
|
status,
|
|
97
|
-
|
|
97
|
+
tokenURI: decodeTokenURIToSvg(tokenURI),
|
|
98
98
|
startTime: new Date(+startTime * 1000),
|
|
99
99
|
endTime: new Date(+endTime * 1000),
|
|
100
100
|
accruedBLUSD: assetAmountInEth(accruedBLUSD, 'bLUSD'),
|
|
@@ -118,5 +118,6 @@ export const fetchCBondForId = async (web3: Web3, network: NetworkNumber, bondId
|
|
|
118
118
|
claimedBLUSD: assetAmountInEth(bond.claimedBLUSD, 'bLUSD'),
|
|
119
119
|
lusdAmount: assetAmountInEth(bond.lusdAmount, 'LUSD'),
|
|
120
120
|
maxAmountBLUSD: assetAmountInEth(bond.maxAmountBLUSD, 'bLUSD'),
|
|
121
|
+
tokenURI: decodeTokenURIToSvg(bond.tokenURI),
|
|
121
122
|
};
|
|
122
123
|
};
|
package/src/compoundV3/index.ts
CHANGED
|
@@ -21,8 +21,11 @@ import {
|
|
|
21
21
|
formatBaseData, formatMarketData, getCompoundV3AggregatedData, getIncentiveApys,
|
|
22
22
|
} from '../helpers/compoundHelpers';
|
|
23
23
|
import { COMPOUND_V3_ETH, COMPOUND_V3_USDBC, COMPOUND_V3_USDC } from '../markets/compound';
|
|
24
|
+
import { getEthPrice, getCompPrice, getUSDCPrice } from '../services/priceService';
|
|
24
25
|
|
|
25
|
-
export const getCompoundV3MarketsData = async (web3: Web3, network: NetworkNumber, selectedMarket: CompoundMarketData,
|
|
26
|
+
export const getCompoundV3MarketsData = async (web3: Web3, network: NetworkNumber, selectedMarket: CompoundMarketData, defaultWeb3: Web3): Promise<CompoundV3MarketsData> => {
|
|
27
|
+
const baseAssetPrice = selectedMarket.baseAsset === 'ETH' ? await getEthPrice(defaultWeb3) : await getUSDCPrice(defaultWeb3);
|
|
28
|
+
const compPrice = await getCompPrice(defaultWeb3);
|
|
26
29
|
const contract = CompV3ViewContract(web3, network);
|
|
27
30
|
const CompV3ViewAddress = contract.options.address;
|
|
28
31
|
const calls = [
|
|
@@ -38,7 +41,7 @@ export const getCompoundV3MarketsData = async (web3: Web3, network: NetworkNumbe
|
|
|
38
41
|
},
|
|
39
42
|
];
|
|
40
43
|
const data = await multicall(calls, web3, network);
|
|
41
|
-
const colls = data[1].colls.map((coll: any) => formatMarketData(coll, network)) as CompoundV3AssetData[];
|
|
44
|
+
const colls = data[1].colls.map((coll: any) => formatMarketData(coll, network, baseAssetPrice)) as CompoundV3AssetData[];
|
|
42
45
|
if (selectedMarket.value === CompoundVersions.CompoundV3ETH) {
|
|
43
46
|
for (const coll of colls) {
|
|
44
47
|
if (coll.symbol === 'wstETH') {
|
|
@@ -65,7 +68,7 @@ export const getCompoundV3MarketsData = async (web3: Web3, network: NetworkNumbe
|
|
|
65
68
|
}
|
|
66
69
|
}
|
|
67
70
|
}
|
|
68
|
-
const base = formatBaseData(data[0].baseToken, network);
|
|
71
|
+
const base = formatBaseData(data[0].baseToken, network, baseAssetPrice);
|
|
69
72
|
|
|
70
73
|
const payload: CompoundV3AssetsData = {};
|
|
71
74
|
|
|
@@ -252,8 +255,8 @@ export const getCompoundV3AccountData = async (
|
|
|
252
255
|
return payload;
|
|
253
256
|
};
|
|
254
257
|
|
|
255
|
-
export const getCompoundV3FullPositionData = async (web3: Web3, network: NetworkNumber, address: string, proxyAddress: string, selectedMarket: CompoundMarketData,
|
|
256
|
-
const marketData = await getCompoundV3MarketsData(web3, network, selectedMarket,
|
|
258
|
+
export const getCompoundV3FullPositionData = async (web3: Web3, network: NetworkNumber, address: string, proxyAddress: string, selectedMarket: CompoundMarketData, mainnetWeb3: Web3): Promise<CompoundV3PositionData> => {
|
|
259
|
+
const marketData = await getCompoundV3MarketsData(web3, network, selectedMarket, mainnetWeb3);
|
|
257
260
|
const positionData = await getCompoundV3AccountData(web3, network, address, proxyAddress, { selectedMarket, assetsData: marketData.assetsData });
|
|
258
261
|
return positionData;
|
|
259
262
|
};
|
package/src/config/contracts.js
CHANGED
|
@@ -597,5 +597,23 @@ module.exports = {
|
|
|
597
597
|
"networks": {
|
|
598
598
|
"1": { "address": "0x57619FE9C539f890b19c61812226F9703ce37137" }
|
|
599
599
|
}
|
|
600
|
+
},
|
|
601
|
+
"COMPPriceFeed": {
|
|
602
|
+
"abi": [{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"},{"internalType":"address","name":"_accessController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"int256","name":"current","type":"int256"},{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"updatedAt","type":"uint256"}],"name":"AnswerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":true,"internalType":"address","name":"startedBy","type":"address"},{"indexed":false,"internalType":"uint256","name":"startedAt","type":"uint256"}],"name":"NewRound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"accessController","outputs":[{"internalType":"contract AccessControllerInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"aggregator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"}],"name":"confirmAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_roundId","type":"uint256"}],"name":"getAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"getRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_roundId","type":"uint256"}],"name":"getTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"phaseAggregators","outputs":[{"internalType":"contract AggregatorV2V3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"phaseId","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"}],"name":"proposeAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposedAggregator","outputs":[{"internalType":"contract AggregatorV2V3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"proposedGetRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposedLatestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_accessController","type":"address"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],
|
|
603
|
+
"networks": {
|
|
604
|
+
"1": { "address": "0xdbd020CAeF83eFd542f4De03e3cF0C28A4428bd5" }
|
|
605
|
+
}
|
|
606
|
+
},
|
|
607
|
+
"ETHPriceFeed": {
|
|
608
|
+
"abi": [{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"},{"internalType":"address","name":"_accessController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"int256","name":"current","type":"int256"},{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"updatedAt","type":"uint256"}],"name":"AnswerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":true,"internalType":"address","name":"startedBy","type":"address"},{"indexed":false,"internalType":"uint256","name":"startedAt","type":"uint256"}],"name":"NewRound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"accessController","outputs":[{"internalType":"contract AccessControllerInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"aggregator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"}],"name":"confirmAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_roundId","type":"uint256"}],"name":"getAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"getRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_roundId","type":"uint256"}],"name":"getTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"phaseAggregators","outputs":[{"internalType":"contract AggregatorV2V3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"phaseId","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"}],"name":"proposeAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposedAggregator","outputs":[{"internalType":"contract AggregatorV2V3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"proposedGetRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposedLatestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_accessController","type":"address"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],
|
|
609
|
+
"networks": {
|
|
610
|
+
"1": { "address": "0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419" }
|
|
611
|
+
},
|
|
612
|
+
},
|
|
613
|
+
"USDCPriceFeed": {
|
|
614
|
+
"abi": [{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"},{"internalType":"address","name":"_accessController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"int256","name":"current","type":"int256"},{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"updatedAt","type":"uint256"}],"name":"AnswerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":true,"internalType":"address","name":"startedBy","type":"address"},{"indexed":false,"internalType":"uint256","name":"startedAt","type":"uint256"}],"name":"NewRound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"accessController","outputs":[{"internalType":"contract AccessControllerInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"aggregator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"}],"name":"confirmAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_roundId","type":"uint256"}],"name":"getAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"getRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_roundId","type":"uint256"}],"name":"getTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"phaseAggregators","outputs":[{"internalType":"contract AggregatorV2V3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"phaseId","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"}],"name":"proposeAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposedAggregator","outputs":[{"internalType":"contract AggregatorV2V3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"proposedGetRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposedLatestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_accessController","type":"address"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],
|
|
615
|
+
"networks": {
|
|
616
|
+
"1": { "address": "0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6" }
|
|
617
|
+
}
|
|
600
618
|
}
|
|
601
619
|
}
|
package/src/contracts.ts
CHANGED
|
@@ -94,4 +94,8 @@ export const McdJugContract = createContractFromConfigFunc<ContractTypes.McdJug>
|
|
|
94
94
|
export const McdVatContract = createContractFromConfigFunc<ContractTypes.McdVat>('McdVat');
|
|
95
95
|
|
|
96
96
|
export const ChickenBondsViewContract = createContractFromConfigFunc<ContractTypes.ChickenBondsView>('ChickenBondsView');
|
|
97
|
-
export const ChickenBondsManagerContract = createContractFromConfigFunc<ContractTypes.ChickenBondsManager>('ChickenBondsManager');
|
|
97
|
+
export const ChickenBondsManagerContract = createContractFromConfigFunc<ContractTypes.ChickenBondsManager>('ChickenBondsManager');
|
|
98
|
+
|
|
99
|
+
export const ETHPriceFeedContract = createContractFromConfigFunc<ContractTypes.ETHPriceFeed>('ETHPriceFeed');
|
|
100
|
+
export const COMPPriceFeedContract = createContractFromConfigFunc<ContractTypes.COMPPriceFeed>('COMPPriceFeed');
|
|
101
|
+
export const USDCPriceFeedContract = createContractFromConfigFunc<ContractTypes.USDCPriceFeed>('USDCPriceFeed');
|
|
@@ -87,12 +87,26 @@ export const aaveAnyGetAggregatedPositionData = ({
|
|
|
87
87
|
payload.borrowLimitUsd = getAssetsTotal(
|
|
88
88
|
usedAssets,
|
|
89
89
|
({ isSupplied, collateral }: { isSupplied: boolean, collateral: string }) => isSupplied && collateral,
|
|
90
|
-
({ symbol, suppliedUsd }: { symbol: string, suppliedUsd: string }) =>
|
|
90
|
+
({ symbol, suppliedUsd }: { symbol: string, suppliedUsd: string }) => {
|
|
91
|
+
const suppliedUsdAmount = isMorphoAaveV3(data)
|
|
92
|
+
// Morpho has a slightly different method for calculating health ratio than underlying pool (To account for potential errors in rounding)
|
|
93
|
+
? new Dec(suppliedUsd).minus(new Dec(suppliedUsd).div(100).times(0.1)).toString()
|
|
94
|
+
: suppliedUsd;
|
|
95
|
+
|
|
96
|
+
return new Dec(suppliedUsdAmount).mul(aaveAnyGetEmodeMutableProps(data, symbol).collateralFactor);
|
|
97
|
+
},
|
|
91
98
|
);
|
|
92
99
|
payload.liquidationLimitUsd = getAssetsTotal(
|
|
93
100
|
usedAssets,
|
|
94
101
|
({ isSupplied, collateral }: { isSupplied: boolean, collateral: string }) => isSupplied && collateral,
|
|
95
|
-
({ symbol, suppliedUsd }: { symbol: string, suppliedUsd: string }) =>
|
|
102
|
+
({ symbol, suppliedUsd }: { symbol: string, suppliedUsd: string }) => {
|
|
103
|
+
const suppliedUsdAmount = isMorphoAaveV3(data)
|
|
104
|
+
// Morpho has a slightly different method for calculating health ratio than underlying pool (To account for potential errors in rounding)
|
|
105
|
+
? new Dec(suppliedUsd).minus(new Dec(suppliedUsd).div(100).times(0.1)).toString()
|
|
106
|
+
: suppliedUsd;
|
|
107
|
+
|
|
108
|
+
return new Dec(suppliedUsdAmount).mul(aaveAnyGetEmodeMutableProps(data, symbol).liquidationRatio);
|
|
109
|
+
},
|
|
96
110
|
);
|
|
97
111
|
payload.borrowedUsd = getAssetsTotal(usedAssets, ({ isBorrowed }: { isBorrowed: boolean }) => isBorrowed, ({ borrowedUsd }: { borrowedUsd: string }) => borrowedUsd);
|
|
98
112
|
const leftToBorrowUsd = new Dec(payload.borrowLimitUsd).sub(payload.borrowedUsd);
|
|
@@ -10,4 +10,15 @@ export const calcAverageBondAgeMs = (totalWeightedStartTimes: string, totalPendi
|
|
|
10
10
|
.toNumber();
|
|
11
11
|
|
|
12
12
|
return Date.now() - averageStartTimeMs;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export const decodeTokenURIToSvg = (tokenURI: string): string => {
|
|
16
|
+
try {
|
|
17
|
+
const dataStartIndex = tokenURI.indexOf('base64,') + 'base64,'.length;
|
|
18
|
+
const json = atob(tokenURI.slice(dataStartIndex));
|
|
19
|
+
return JSON.parse(json)?.image;
|
|
20
|
+
} catch (e) {
|
|
21
|
+
console.error(e);
|
|
22
|
+
return 'Error parsing NFT image';
|
|
23
|
+
}
|
|
13
24
|
};
|
|
@@ -11,12 +11,14 @@ import {
|
|
|
11
11
|
import { calculateNetApy } from '../../staking';
|
|
12
12
|
import { NetworkNumber } from '../../types/common';
|
|
13
13
|
|
|
14
|
-
export const formatMarketData = (data: any, network: NetworkNumber): CompoundV3AssetData => {
|
|
14
|
+
export const formatMarketData = (data: any, network: NetworkNumber, baseAssetPrice: string): CompoundV3AssetData => {
|
|
15
15
|
const assetInfo = getAssetInfoByAddress(data.tokenAddr, network);
|
|
16
16
|
const isWETH = assetInfo.symbol === 'WETH';
|
|
17
|
+
const price = getEthAmountForDecimals(data.price, 8);
|
|
17
18
|
return ({
|
|
18
19
|
...data,
|
|
19
|
-
|
|
20
|
+
priceInBaseAsset: getEthAmountForDecimals(data.price, 8),
|
|
21
|
+
price: new Dec(price).mul(baseAssetPrice).toString(),
|
|
20
22
|
collateralFactor: getEthAmountForDecimals(data.borrowCollateralFactor, 18),
|
|
21
23
|
liquidationRatio: getEthAmountForDecimals(data.liquidateCollateralFactor, 18),
|
|
22
24
|
supplyCap: getEthAmountForDecimals(data.supplyCap, assetInfo.decimals),
|
|
@@ -30,7 +32,7 @@ export const formatMarketData = (data: any, network: NetworkNumber): CompoundV3A
|
|
|
30
32
|
};
|
|
31
33
|
|
|
32
34
|
// TODO: maybe not hardcode decimals
|
|
33
|
-
export const formatBaseData = (data: any, network: NetworkNumber): CompoundV3AssetData & BaseAdditionalAssetData => {
|
|
35
|
+
export const formatBaseData = (data: any, network: NetworkNumber, baseAssetPrice: string): CompoundV3AssetData & BaseAdditionalAssetData => {
|
|
34
36
|
const assetInfo = getAssetInfoByAddress(data.tokenAddr, network);
|
|
35
37
|
const totalSupply = getEthAmountForDecimals(new Dec(data.totalSupply).mul(data.supplyIndex).toString(), 15 + assetInfo.decimals);
|
|
36
38
|
const totalBorrow = getEthAmountForDecimals(new Dec(data.totalBorrow).mul(data.borrowIndex).toString(), 15 + assetInfo.decimals);
|
|
@@ -45,7 +47,8 @@ export const formatBaseData = (data: any, network: NetworkNumber): CompoundV3Ass
|
|
|
45
47
|
totalBorrow,
|
|
46
48
|
marketLiquidity: new Dec(totalSupply).minus(totalBorrow).toString(),
|
|
47
49
|
symbol: wethToEth(assetInfo.symbol),
|
|
48
|
-
|
|
50
|
+
priceInBaseAsset: getEthAmountForDecimals(data.price, 8),
|
|
51
|
+
price: baseAssetPrice,
|
|
49
52
|
collateralFactor: '0',
|
|
50
53
|
liquidationRatio: '0',
|
|
51
54
|
canBeBorrowed: true,
|
|
@@ -14,8 +14,10 @@ import {
|
|
|
14
14
|
import { calculateBorrowingAssetLimit } from '../moneymarket';
|
|
15
15
|
import { EMPTY_AAVE_DATA } from '../aaveV3';
|
|
16
16
|
import { aaveAnyGetAggregatedPositionData } from '../helpers/aaveHelpers';
|
|
17
|
+
import { getEthPrice } from '../services/priceService';
|
|
17
18
|
|
|
18
|
-
export const getMorphoAaveV2MarketsData = async (web3: Web3, network: NetworkNumber,
|
|
19
|
+
export const getMorphoAaveV2MarketsData = async (web3: Web3, network: NetworkNumber, mainnetWeb3: Web3): Promise<MorphoAaveV2MarketData> => {
|
|
20
|
+
const ethPrice = await getEthPrice(mainnetWeb3);
|
|
19
21
|
const morphoAaveV2ViewContract = MorphoAaveV2ViewContract(web3, network);
|
|
20
22
|
|
|
21
23
|
const [contractData, morphoRewardsRes] = await Promise.allSettled([
|
|
@@ -246,8 +248,8 @@ export const getMorphoAaveV2AccountData = async (web3: Web3, network: NetworkNum
|
|
|
246
248
|
return payload;
|
|
247
249
|
};
|
|
248
250
|
|
|
249
|
-
export const getMorphoAaveV2FullPositionData = async (web3: Web3, network: NetworkNumber, address: string,
|
|
250
|
-
const marketData = await getMorphoAaveV2MarketsData(web3, network,
|
|
251
|
+
export const getMorphoAaveV2FullPositionData = async (web3: Web3, network: NetworkNumber, address: string, mainnetWeb3: Web3): Promise<MorphoAaveV2PositionData> => {
|
|
252
|
+
const marketData = await getMorphoAaveV2MarketsData(web3, network, mainnetWeb3);
|
|
251
253
|
const positionData = await getMorphoAaveV2AccountData(web3, network, address, marketData.assetsData);
|
|
252
254
|
return positionData;
|
|
253
255
|
};
|