morpho-contracts-helper 0.0.19 → 0.0.21
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/contracts/MorphoMarketDataFetcher.sol +36 -77
- package/contracts/MorphoVaultV2DeployHelper.sol +64 -4
- package/contracts/OracleFactory.sol +301 -63
- package/dist/typechain-types/contracts/{MorphoMarketDataFetcher.sol/MorphoMarketDataFetcher.d.ts → MorphoMarketDataFetcher.d.ts} +7 -7
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.d.ts.map +1 -0
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.js.map +1 -0
- package/dist/typechain-types/contracts/MorphoVaultV2DeployHelper.d.ts +3 -0
- package/dist/typechain-types/contracts/MorphoVaultV2DeployHelper.d.ts.map +1 -1
- package/dist/typechain-types/contracts/OracleFactory.sol/ManualChainlinkMockFeed.d.ts +132 -6
- package/dist/typechain-types/contracts/OracleFactory.sol/ManualChainlinkMockFeed.d.ts.map +1 -1
- package/dist/typechain-types/contracts/OracleFactory.sol/ManualChainlinkMockFeedFactory.d.ts +11 -21
- package/dist/typechain-types/contracts/OracleFactory.sol/ManualChainlinkMockFeedFactory.d.ts.map +1 -1
- package/dist/typechain-types/contracts/OracleFactory.sol/index.d.ts +0 -1
- package/dist/typechain-types/contracts/OracleFactory.sol/index.d.ts.map +1 -1
- package/dist/typechain-types/contracts/index.d.ts +1 -2
- package/dist/typechain-types/contracts/index.d.ts.map +1 -1
- package/dist/typechain-types/factories/contracts/{MorphoMarketDataFetcher.sol/MorphoMarketDataFetcher__factory.d.ts → MorphoMarketDataFetcher__factory.d.ts} +13 -13
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher__factory.d.ts.map +1 -0
- package/dist/typechain-types/factories/contracts/{MorphoMarketDataFetcher.sol/MorphoMarketDataFetcher__factory.js → MorphoMarketDataFetcher__factory.js} +11 -11
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/MorphoVaultV2DeployHelper__factory.d.ts +5 -1
- package/dist/typechain-types/factories/contracts/MorphoVaultV2DeployHelper__factory.d.ts.map +1 -1
- package/dist/typechain-types/factories/contracts/MorphoVaultV2DeployHelper__factory.js +6 -1
- package/dist/typechain-types/factories/contracts/MorphoVaultV2DeployHelper__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/OracleFactory.sol/ManualChainlinkMockFeedFactory__factory.d.ts +7 -37
- package/dist/typechain-types/factories/contracts/OracleFactory.sol/ManualChainlinkMockFeedFactory__factory.d.ts.map +1 -1
- package/dist/typechain-types/factories/contracts/OracleFactory.sol/ManualChainlinkMockFeedFactory__factory.js +8 -48
- package/dist/typechain-types/factories/contracts/OracleFactory.sol/ManualChainlinkMockFeedFactory__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/OracleFactory.sol/ManualChainlinkMockFeed__factory.d.ts +191 -7
- package/dist/typechain-types/factories/contracts/OracleFactory.sol/ManualChainlinkMockFeed__factory.d.ts.map +1 -1
- package/dist/typechain-types/factories/contracts/OracleFactory.sol/ManualChainlinkMockFeed__factory.js +246 -9
- package/dist/typechain-types/factories/contracts/OracleFactory.sol/ManualChainlinkMockFeed__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/OracleFactory.sol/index.d.ts +0 -1
- package/dist/typechain-types/factories/contracts/OracleFactory.sol/index.d.ts.map +1 -1
- package/dist/typechain-types/factories/contracts/OracleFactory.sol/index.js +1 -3
- package/dist/typechain-types/factories/contracts/OracleFactory.sol/index.js.map +1 -1
- package/dist/typechain-types/factories/contracts/index.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/index.d.ts.map +1 -1
- package/dist/typechain-types/factories/contracts/index.js +3 -2
- package/dist/typechain-types/factories/contracts/index.js.map +1 -1
- package/dist/typechain-types/index.d.ts +2 -4
- package/dist/typechain-types/index.d.ts.map +1 -1
- package/dist/typechain-types/index.js +3 -5
- package/dist/typechain-types/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/IChainlinkAggregator.d.ts +0 -60
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/IChainlinkAggregator.d.ts.map +0 -1
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/IChainlinkAggregator.js +0 -3
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/IChainlinkAggregator.js.map +0 -1
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/IERC20Metadata.d.ts +0 -48
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/IERC20Metadata.d.ts.map +0 -1
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/IERC20Metadata.js +0 -3
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/IERC20Metadata.js.map +0 -1
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/IMorpho.d.ts +0 -84
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/IMorpho.d.ts.map +0 -1
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/IMorpho.js +0 -3
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/IMorpho.js.map +0 -1
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/IMorphoChainlinkOracleV2.d.ts +0 -62
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/IMorphoChainlinkOracleV2.d.ts.map +0 -1
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/IMorphoChainlinkOracleV2.js +0 -3
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/IMorphoChainlinkOracleV2.js.map +0 -1
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/MorphoMarketDataFetcher.d.ts.map +0 -1
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/MorphoMarketDataFetcher.js.map +0 -1
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/index.d.ts +0 -6
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/index.d.ts.map +0 -1
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/index.js +0 -3
- package/dist/typechain-types/contracts/MorphoMarketDataFetcher.sol/index.js.map +0 -1
- package/dist/typechain-types/contracts/OracleFactory.sol/IChainlinkAggregator.d.ts +0 -60
- package/dist/typechain-types/contracts/OracleFactory.sol/IChainlinkAggregator.d.ts.map +0 -1
- package/dist/typechain-types/contracts/OracleFactory.sol/IChainlinkAggregator.js +0 -3
- package/dist/typechain-types/contracts/OracleFactory.sol/IChainlinkAggregator.js.map +0 -1
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/IChainlinkAggregator__factory.d.ts +0 -44
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/IChainlinkAggregator__factory.d.ts.map +0 -1
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/IChainlinkAggregator__factory.js +0 -67
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/IChainlinkAggregator__factory.js.map +0 -1
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/IERC20Metadata__factory.d.ts +0 -56
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/IERC20Metadata__factory.d.ts.map +0 -1
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/IERC20Metadata__factory.js +0 -84
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/IERC20Metadata__factory.js.map +0 -1
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/IMorphoChainlinkOracleV2__factory.d.ts +0 -108
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/IMorphoChainlinkOracleV2__factory.d.ts.map +0 -1
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/IMorphoChainlinkOracleV2__factory.js +0 -151
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/IMorphoChainlinkOracleV2__factory.js.map +0 -1
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/IMorpho__factory.d.ts +0 -69
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/IMorpho__factory.d.ts.map +0 -1
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/IMorpho__factory.js +0 -101
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/IMorpho__factory.js.map +0 -1
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/MorphoMarketDataFetcher__factory.d.ts.map +0 -1
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/MorphoMarketDataFetcher__factory.js.map +0 -1
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/index.d.ts +0 -6
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/index.d.ts.map +0 -1
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/index.js +0 -18
- package/dist/typechain-types/factories/contracts/MorphoMarketDataFetcher.sol/index.js.map +0 -1
- package/dist/typechain-types/factories/contracts/OracleFactory.sol/IChainlinkAggregator__factory.d.ts +0 -44
- package/dist/typechain-types/factories/contracts/OracleFactory.sol/IChainlinkAggregator__factory.d.ts.map +0 -1
- package/dist/typechain-types/factories/contracts/OracleFactory.sol/IChainlinkAggregator__factory.js +0 -67
- package/dist/typechain-types/factories/contracts/OracleFactory.sol/IChainlinkAggregator__factory.js.map +0 -1
- /package/dist/typechain-types/contracts/{MorphoMarketDataFetcher.sol/MorphoMarketDataFetcher.js → MorphoMarketDataFetcher.js} +0 -0
|
@@ -1,141 +1,379 @@
|
|
|
1
1
|
// SPDX-License-Identifier: MIT
|
|
2
2
|
pragma solidity ^0.8.20;
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
function decimals() external view returns (uint8);
|
|
4
|
+
import {AggregatorV3Interface} from "./external/morpho/interfaces/AggregatorV3Interface.sol";
|
|
6
5
|
|
|
7
|
-
function latestRoundData()
|
|
8
|
-
external
|
|
9
|
-
view
|
|
10
|
-
returns (
|
|
11
|
-
uint80 roundId,
|
|
12
|
-
int256 answer,
|
|
13
|
-
uint256 startedAt,
|
|
14
|
-
uint256 updatedAt,
|
|
15
|
-
uint80 answeredInRound
|
|
16
|
-
);
|
|
17
|
-
}
|
|
18
6
|
|
|
19
7
|
/**
|
|
20
8
|
* @title ManualChainlinkMockFeed
|
|
21
|
-
* @notice Mock Chainlink feed with manual price updates
|
|
9
|
+
* @notice Mock Chainlink feed with manual price updates and automated simulation modes.
|
|
10
|
+
*
|
|
11
|
+
* SIMULATION MODES:
|
|
12
|
+
* ─────────────────────────────────────────────────────────────────────
|
|
13
|
+
* 0 = MANUAL → Price is manually updated via setPrice()
|
|
14
|
+
* 1 = TRENDING_UP → Price compounds by `basisPoints` every 5 minutes (STEP)
|
|
15
|
+
* 2 = TRENDING_DOWN → Price compounds down by `basisPoints` every 5 minutes (STEP)
|
|
16
|
+
* 3 = CRASH_AND_RECOVER → Hourly-based custom curve:
|
|
17
|
+
* [0h – 23h) : Gradual compound growth (+basisPoints per hour)
|
|
18
|
+
* [23h – 24h) : Sharp linear crash down to 75% of the initial base price
|
|
19
|
+
* [24h – 25h) : Linear recovery from the crashed price back to the initial base price
|
|
20
|
+
* ≥ 25h : Remains flat at the initial base price
|
|
21
|
+
* ─────────────────────────────────────────────────────────────────────
|
|
22
|
+
*
|
|
23
|
+
* simStartTime: Timestamp of t=0 for the simulation (automatically set on setMode() or deployment)
|
|
24
|
+
* basisPoints : Rate of change (1 bp = 0.01%, e.g., 50 = 0.5% per STEP/HOUR)
|
|
22
25
|
*/
|
|
23
|
-
contract ManualChainlinkMockFeed is
|
|
26
|
+
contract ManualChainlinkMockFeed is AggregatorV3Interface {
|
|
27
|
+
|
|
28
|
+
// ── Enums & Constants ────────────────────────────────────────────
|
|
29
|
+
uint8 public constant MODE_MANUAL = 0;
|
|
30
|
+
uint8 public constant MODE_TRENDING_UP = 1;
|
|
31
|
+
uint8 public constant MODE_TRENDING_DOWN = 2;
|
|
32
|
+
uint8 public constant MODE_CRASH_AND_RECOVER = 3;
|
|
33
|
+
|
|
34
|
+
uint256 private constant STEP = 300; // 5 minutes step for trending modes
|
|
35
|
+
uint256 private constant HOUR = 3600; // 1 hour step for crash & recover mode
|
|
36
|
+
uint256 private constant BPS_DENOM = 10_000;
|
|
37
|
+
|
|
38
|
+
// ── Storage ──────────────────────────────────────────────────────
|
|
24
39
|
mapping(address => bool) public isOwner;
|
|
25
40
|
|
|
26
|
-
int256
|
|
27
|
-
uint8
|
|
41
|
+
int256 private _price;
|
|
42
|
+
uint8 private immutable _decimals;
|
|
43
|
+
string public description;
|
|
28
44
|
|
|
29
|
-
|
|
45
|
+
uint8 public simMode;
|
|
46
|
+
uint256 public simStartTime;
|
|
47
|
+
uint256 public basisPoints;
|
|
30
48
|
|
|
49
|
+
// ── Events ───────────────────────────────────────────────────────
|
|
31
50
|
event PriceUpdated(int256 newPrice, address indexed updatedBy);
|
|
51
|
+
event ModeChanged(uint8 newMode, uint256 startTime, uint256 basisPoints);
|
|
32
52
|
event OwnerAdded(address indexed newOwner);
|
|
33
53
|
|
|
54
|
+
// ── Modifiers ────────────────────────────────────────────────────
|
|
34
55
|
modifier onlyOwner() {
|
|
35
56
|
require(isOwner[msg.sender], "Unauthorized");
|
|
36
57
|
_;
|
|
37
58
|
}
|
|
38
59
|
|
|
60
|
+
// ── Constructor ──────────────────────────────────────────────────
|
|
39
61
|
constructor(
|
|
40
62
|
int256 initialPrice,
|
|
41
|
-
uint8
|
|
42
|
-
string memory
|
|
43
|
-
address[] memory owners_
|
|
63
|
+
uint8 decimals_,
|
|
64
|
+
string memory description_,
|
|
65
|
+
address[] memory owners_,
|
|
66
|
+
uint8 simMode_
|
|
44
67
|
) {
|
|
45
68
|
require(owners_.length > 0, "No owners provided");
|
|
46
|
-
|
|
47
69
|
for (uint256 i = 0; i < owners_.length; i++) {
|
|
48
70
|
require(owners_[i] != address(0), "Zero address");
|
|
49
|
-
|
|
50
71
|
isOwner[owners_[i]] = true;
|
|
51
|
-
|
|
52
72
|
emit OwnerAdded(owners_[i]);
|
|
53
73
|
}
|
|
74
|
+
_price = initialPrice;
|
|
75
|
+
_decimals = decimals_;
|
|
76
|
+
description = description_;
|
|
77
|
+
simMode = simMode_;
|
|
78
|
+
basisPoints = 50; // default: 0.5%
|
|
54
79
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
80
|
+
if (simMode_ != MODE_MANUAL) {
|
|
81
|
+
simStartTime = block.timestamp;
|
|
82
|
+
}
|
|
58
83
|
}
|
|
59
84
|
|
|
85
|
+
// ── IChainlinkAggregator ─────────────────────────────────────────
|
|
86
|
+
|
|
60
87
|
function latestRoundData()
|
|
61
88
|
external
|
|
62
89
|
view
|
|
63
90
|
override
|
|
64
91
|
returns (
|
|
65
|
-
uint80
|
|
66
|
-
int256
|
|
92
|
+
uint80 roundId,
|
|
93
|
+
int256 answer,
|
|
67
94
|
uint256 startedAt,
|
|
68
95
|
uint256 updatedAt,
|
|
69
|
-
uint80
|
|
96
|
+
uint80 answeredInRound
|
|
70
97
|
)
|
|
71
98
|
{
|
|
72
|
-
|
|
99
|
+
answer = _computePrice();
|
|
100
|
+
|
|
101
|
+
// Default roundId for MANUAL mode
|
|
102
|
+
uint256 dynamicRoundId = 1;
|
|
103
|
+
|
|
104
|
+
// For simulation modes, generate a realistic incrementing roundId
|
|
105
|
+
if (simMode != MODE_MANUAL) {
|
|
106
|
+
uint256 elapsed = block.timestamp - simStartTime;
|
|
107
|
+
uint256 currentStep = (simMode == MODE_CRASH_AND_RECOVER) ? HOUR : STEP;
|
|
108
|
+
dynamicRoundId = (elapsed / currentStep) + 1;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Explicitly cast uint256 to uint80 to prevent compilation errors
|
|
112
|
+
uint80 castedRoundId = uint80(dynamicRoundId);
|
|
113
|
+
|
|
114
|
+
return (
|
|
115
|
+
castedRoundId,
|
|
116
|
+
answer,
|
|
117
|
+
block.timestamp,
|
|
118
|
+
block.timestamp,
|
|
119
|
+
castedRoundId
|
|
120
|
+
);
|
|
73
121
|
}
|
|
74
122
|
|
|
75
123
|
function decimals() external view override returns (uint8) {
|
|
76
124
|
return _decimals;
|
|
77
125
|
}
|
|
78
126
|
|
|
127
|
+
// ── Price Computation ────────────────────────────────────────────
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* @dev Dynamically computes the current price based on the active simulation mode.
|
|
131
|
+
* All calculations happen inside this view function without modifying the state.
|
|
132
|
+
*/
|
|
133
|
+
function _computePrice() internal view returns (int256) {
|
|
134
|
+
if (simMode == MODE_MANUAL) {
|
|
135
|
+
return _price;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
int256 base = _price;
|
|
139
|
+
uint256 elapsed = block.timestamp - simStartTime;
|
|
140
|
+
|
|
141
|
+
if (simMode == MODE_TRENDING_UP) {
|
|
142
|
+
// compound: base * (1 + bp/10000)^steps (every 5 mins)
|
|
143
|
+
uint256 stepsElapsed = elapsed / STEP;
|
|
144
|
+
return _compoundGrow(base, basisPoints, stepsElapsed);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if (simMode == MODE_TRENDING_DOWN) {
|
|
148
|
+
// compound: base * (1 - bp/10000)^steps (every 5 mins)
|
|
149
|
+
uint256 stepsElapsed = elapsed / STEP;
|
|
150
|
+
return _compoundDecay(base, basisPoints, stepsElapsed);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if (simMode == MODE_CRASH_AND_RECOVER) {
|
|
154
|
+
return _crashAndRecover(base, elapsed);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return base;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* @dev CRASH_AND_RECOVER price curve (Hourly based):
|
|
162
|
+
*
|
|
163
|
+
* Phase A [0 – 23h) : Compound growth (+basisPoints per hour)
|
|
164
|
+
* Phase B [23h – 24h) : Starts at Phase A peak, linear drop to base * 0.75 within 1 hour
|
|
165
|
+
* Phase C [24h – 25h) : Linear recovery from base * 0.75 back to the original base price
|
|
166
|
+
* Phase D ≥ 25h : Stays flat at the original base price
|
|
167
|
+
*/
|
|
168
|
+
function _crashAndRecover(int256 base, uint256 elapsed)
|
|
169
|
+
internal
|
|
170
|
+
view
|
|
171
|
+
returns (int256)
|
|
172
|
+
{
|
|
173
|
+
if (base == 0) return 0;
|
|
174
|
+
|
|
175
|
+
uint256 PHASE_A_END = 23 * HOUR;
|
|
176
|
+
uint256 PHASE_B_END = 24 * HOUR;
|
|
177
|
+
uint256 PHASE_C_END = 25 * HOUR;
|
|
178
|
+
|
|
179
|
+
// Peak price calculation strictly uses 23 hourly intervals
|
|
180
|
+
int256 peakPrice = _compoundGrow(base, basisPoints, 23);
|
|
181
|
+
int256 crashPrice = (base * 75) / 100;
|
|
182
|
+
|
|
183
|
+
if (elapsed < PHASE_A_END) {
|
|
184
|
+
uint256 h = elapsed / HOUR;
|
|
185
|
+
return _compoundGrow(base, basisPoints, h);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
if (elapsed < PHASE_B_END) {
|
|
189
|
+
uint256 phaseElapsed = elapsed - PHASE_A_END;
|
|
190
|
+
return _lerp(peakPrice, crashPrice, phaseElapsed, HOUR);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
if (elapsed < PHASE_C_END) {
|
|
194
|
+
uint256 phaseElapsed = elapsed - PHASE_B_END;
|
|
195
|
+
return _lerp(crashPrice, base, phaseElapsed, HOUR);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
return base;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// ── Math Helpers ─────────────────────────────────────────────────
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* @dev Integer linear interpolation:
|
|
205
|
+
* result = from + (to - from) * t / duration
|
|
206
|
+
*/
|
|
207
|
+
function _lerp(
|
|
208
|
+
int256 from,
|
|
209
|
+
int256 to,
|
|
210
|
+
uint256 t,
|
|
211
|
+
uint256 duration
|
|
212
|
+
) internal pure returns (int256) {
|
|
213
|
+
if (t >= duration) return to;
|
|
214
|
+
int256 delta = to - from;
|
|
215
|
+
return from + (delta * int256(t)) / int256(duration);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* @dev Compound Growth: value * ((10000 + bp) / 10000)^n
|
|
220
|
+
* Iterative approach used to manage precision and avoid overflow.
|
|
221
|
+
*/
|
|
222
|
+
function _compoundGrow(
|
|
223
|
+
int256 value,
|
|
224
|
+
uint256 bp,
|
|
225
|
+
uint256 n
|
|
226
|
+
) internal pure returns (int256) {
|
|
227
|
+
if (n == 0 || value == 0) return value;
|
|
228
|
+
|
|
229
|
+
uint256 baseRate = BPS_DENOM + bp;
|
|
230
|
+
uint256 multiplier = BPS_DENOM;
|
|
231
|
+
|
|
232
|
+
// Exponentiation by squaring
|
|
233
|
+
while (n > 0) {
|
|
234
|
+
if (n % 2 == 1) {
|
|
235
|
+
multiplier = (multiplier * baseRate) / BPS_DENOM;
|
|
236
|
+
}
|
|
237
|
+
baseRate = (baseRate * baseRate) / BPS_DENOM;
|
|
238
|
+
n /= 2;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
return (value * int256(multiplier)) / int256(BPS_DENOM);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* @dev Compound Decay: value * ((10000 - bp) / 10000)^n
|
|
246
|
+
*/
|
|
247
|
+
function _compoundDecay(
|
|
248
|
+
int256 value,
|
|
249
|
+
uint256 bp,
|
|
250
|
+
uint256 n
|
|
251
|
+
) internal pure returns (int256) {
|
|
252
|
+
if (n == 0 || value == 0) return value;
|
|
253
|
+
|
|
254
|
+
uint256 baseRate = BPS_DENOM - bp;
|
|
255
|
+
uint256 multiplier = BPS_DENOM;
|
|
256
|
+
|
|
257
|
+
while (n > 0) {
|
|
258
|
+
if (n % 2 == 1) {
|
|
259
|
+
multiplier = (multiplier * baseRate) / BPS_DENOM;
|
|
260
|
+
}
|
|
261
|
+
baseRate = (baseRate * baseRate) / BPS_DENOM;
|
|
262
|
+
n /= 2;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
return (value * int256(multiplier)) / int256(BPS_DENOM);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
// ── Owner Functions ──────────────────────────────────────────────
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* @notice Updates the simulation mode and resets the timer to current timestamp.
|
|
272
|
+
* @param mode_ New mode (0-3)
|
|
273
|
+
* @param basisPoints_ Rate of change (bp). Ignored in MANUAL mode.
|
|
274
|
+
*/
|
|
275
|
+
function setMode(uint8 mode_, uint256 basisPoints_) external onlyOwner {
|
|
276
|
+
require(mode_ <= MODE_CRASH_AND_RECOVER, "Invalid mode");
|
|
277
|
+
simMode = mode_;
|
|
278
|
+
simStartTime = block.timestamp;
|
|
279
|
+
basisPoints = basisPoints_;
|
|
280
|
+
emit ModeChanged(mode_, block.timestamp, basisPoints_);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* @notice Updates the static price. Only allowed in MANUAL mode.
|
|
285
|
+
*/
|
|
79
286
|
function setPrice(int256 newPrice) external onlyOwner {
|
|
287
|
+
require(simMode == MODE_MANUAL, "Not in MANUAL mode");
|
|
80
288
|
_price = newPrice;
|
|
81
|
-
|
|
82
289
|
emit PriceUpdated(newPrice, msg.sender);
|
|
83
290
|
}
|
|
84
291
|
|
|
292
|
+
/**
|
|
293
|
+
* @notice Updates the initial base price for automated simulation modes without resetting the timer.
|
|
294
|
+
*/
|
|
295
|
+
function setBasePrice(int256 newBasePrice) external onlyOwner {
|
|
296
|
+
_price = newBasePrice;
|
|
297
|
+
|
|
298
|
+
if (simMode != MODE_MANUAL) {
|
|
299
|
+
simStartTime = block.timestamp;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
emit PriceUpdated(newBasePrice, msg.sender);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* @notice Restarts the simulation from the current timestamp (mode remains unchanged).
|
|
307
|
+
*/
|
|
308
|
+
function restartSimulation() external onlyOwner {
|
|
309
|
+
require(simMode != MODE_MANUAL, "Use setPrice for MANUAL mode");
|
|
310
|
+
simStartTime = block.timestamp;
|
|
311
|
+
emit ModeChanged(simMode, block.timestamp, basisPoints);
|
|
312
|
+
}
|
|
313
|
+
|
|
85
314
|
function addOwner(address newOwner) external onlyOwner {
|
|
86
315
|
require(newOwner != address(0), "Zero address");
|
|
87
|
-
|
|
88
316
|
isOwner[newOwner] = true;
|
|
89
|
-
|
|
90
317
|
emit OwnerAdded(newOwner);
|
|
91
318
|
}
|
|
319
|
+
|
|
320
|
+
// ── View Helpers ─────────────────────────────────────────────────
|
|
321
|
+
|
|
322
|
+
/// @notice Returns the dynamically computed current price (matches latestRoundData().answer)
|
|
323
|
+
function currentPrice() external view returns (int256) {
|
|
324
|
+
return _computePrice();
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/// @notice Returns the seconds elapsed since the start of the current simulation
|
|
328
|
+
function elapsedSeconds() external view returns (uint256) {
|
|
329
|
+
if (simMode == MODE_MANUAL) return 0;
|
|
330
|
+
return block.timestamp - simStartTime;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
function version() external pure returns (uint256) {
|
|
334
|
+
return 1;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
function getRoundData(uint80 _roundId)
|
|
338
|
+
external
|
|
339
|
+
view
|
|
340
|
+
returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound) {
|
|
341
|
+
return (_roundId, _price, block.timestamp, block.timestamp, 1);
|
|
342
|
+
}
|
|
92
343
|
}
|
|
93
344
|
|
|
345
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
346
|
+
|
|
94
347
|
/**
|
|
95
348
|
* @title ManualChainlinkMockFeedFactory
|
|
96
349
|
*/
|
|
97
350
|
contract ManualChainlinkMockFeedFactory {
|
|
98
|
-
address[] public allFeeds;
|
|
99
351
|
|
|
100
352
|
event FeedCreated(
|
|
101
353
|
address indexed feed,
|
|
102
|
-
string
|
|
103
|
-
int256
|
|
104
|
-
uint8
|
|
354
|
+
string description,
|
|
355
|
+
int256 initialPrice,
|
|
356
|
+
uint8 decimals,
|
|
105
357
|
address[] owners
|
|
106
358
|
);
|
|
107
359
|
|
|
108
360
|
function createFeed(
|
|
109
|
-
int256
|
|
110
|
-
uint8
|
|
111
|
-
string memory
|
|
112
|
-
address[] memory owners_
|
|
361
|
+
int256 initialPrice,
|
|
362
|
+
uint8 decimals_,
|
|
363
|
+
string memory description_,
|
|
364
|
+
address[] memory owners_,
|
|
365
|
+
uint8 simMode_
|
|
113
366
|
) external returns (address feedAddress) {
|
|
367
|
+
require(simMode_ < 4, "Please enter a valid simulation mode. Enter 0 for manual.");
|
|
368
|
+
|
|
114
369
|
ManualChainlinkMockFeed feed = new ManualChainlinkMockFeed(
|
|
115
370
|
initialPrice,
|
|
116
371
|
decimals_,
|
|
117
|
-
|
|
118
|
-
owners_
|
|
372
|
+
description_,
|
|
373
|
+
owners_,
|
|
374
|
+
simMode_
|
|
119
375
|
);
|
|
120
|
-
|
|
121
376
|
feedAddress = address(feed);
|
|
122
|
-
|
|
123
|
-
allFeeds.push(feedAddress);
|
|
124
|
-
|
|
125
|
-
emit FeedCreated(
|
|
126
|
-
feedAddress,
|
|
127
|
-
symbol_,
|
|
128
|
-
initialPrice,
|
|
129
|
-
decimals_,
|
|
130
|
-
owners_
|
|
131
|
-
);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
function getAllFeeds() external view returns (address[] memory) {
|
|
135
|
-
return allFeeds;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
function totalFeeds() external view returns (uint256) {
|
|
139
|
-
return allFeeds.length;
|
|
377
|
+
emit FeedCreated(feedAddress, description_, initialPrice, decimals_, owners_);
|
|
140
378
|
}
|
|
141
379
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers";
|
|
2
|
-
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedListener, TypedContractMethod } from "
|
|
2
|
+
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedListener, TypedContractMethod } from "../common";
|
|
3
3
|
export type MarketParamsStruct = {
|
|
4
4
|
loanToken: AddressLike;
|
|
5
5
|
collateralToken: AddressLike;
|
|
@@ -63,11 +63,11 @@ export declare namespace MorphoMarketDataFetcher {
|
|
|
63
63
|
baseFeed1: AddressLike;
|
|
64
64
|
baseFeed2: AddressLike;
|
|
65
65
|
baseVault: AddressLike;
|
|
66
|
-
baseVaultConversionSample:
|
|
66
|
+
baseVaultConversionSample: BigNumberish;
|
|
67
67
|
quoteFeed1: AddressLike;
|
|
68
68
|
quoteFeed2: AddressLike;
|
|
69
69
|
quoteVault: AddressLike;
|
|
70
|
-
quoteVaultConversionSample:
|
|
70
|
+
quoteVaultConversionSample: BigNumberish;
|
|
71
71
|
scaleFactor: BigNumberish;
|
|
72
72
|
currentPrice: BigNumberish;
|
|
73
73
|
baseFeed: MorphoMarketDataFetcher.MockOracleInfoStruct;
|
|
@@ -78,11 +78,11 @@ export declare namespace MorphoMarketDataFetcher {
|
|
|
78
78
|
baseFeed1: string,
|
|
79
79
|
baseFeed2: string,
|
|
80
80
|
baseVault: string,
|
|
81
|
-
baseVaultConversionSample:
|
|
81
|
+
baseVaultConversionSample: bigint,
|
|
82
82
|
quoteFeed1: string,
|
|
83
83
|
quoteFeed2: string,
|
|
84
84
|
quoteVault: string,
|
|
85
|
-
quoteVaultConversionSample:
|
|
85
|
+
quoteVaultConversionSample: bigint,
|
|
86
86
|
scaleFactor: bigint,
|
|
87
87
|
currentPrice: bigint,
|
|
88
88
|
baseFeed: MorphoMarketDataFetcher.MockOracleInfoStructOutput,
|
|
@@ -92,11 +92,11 @@ export declare namespace MorphoMarketDataFetcher {
|
|
|
92
92
|
baseFeed1: string;
|
|
93
93
|
baseFeed2: string;
|
|
94
94
|
baseVault: string;
|
|
95
|
-
baseVaultConversionSample:
|
|
95
|
+
baseVaultConversionSample: bigint;
|
|
96
96
|
quoteFeed1: string;
|
|
97
97
|
quoteFeed2: string;
|
|
98
98
|
quoteVault: string;
|
|
99
|
-
quoteVaultConversionSample:
|
|
99
|
+
quoteVaultConversionSample: bigint;
|
|
100
100
|
scaleFactor: bigint;
|
|
101
101
|
currentPrice: bigint;
|
|
102
102
|
baseFeed: MorphoMarketDataFetcher.MockOracleInfoStructOutput;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MorphoMarketDataFetcher.d.ts","sourceRoot":"","sources":["../../../typechain-types/contracts/MorphoMarketDataFetcher.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,MAAM,EACN,SAAS,EACT,WAAW,EACX,cAAc,EACd,cAAc,EACd,QAAQ,EACT,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EACV,kBAAkB,EAClB,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,mBAAmB,EACpB,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,WAAW,CAAC;IACvB,eAAe,EAAE,WAAW,CAAC;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,GAAG,EAAE,WAAW,CAAC;IACjB,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,MAAM;IACjB,eAAe,EAAE,MAAM;IACvB,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,MAAM;CACb,GAAG;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,CAAC,OAAO,WAAW,uBAAuB,CAAC;IAC/C,KAAY,eAAe,GAAG;QAC5B,YAAY,EAAE,WAAW,CAAC;QAC1B,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,YAAY,CAAC;QACvB,aAAa,EAAE,YAAY,CAAC;KAC7B,CAAC;IAEF,KAAY,qBAAqB,GAAG;QAClC,YAAY,EAAE,MAAM;QACpB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,MAAM;QAChB,aAAa,EAAE,MAAM;KACtB,GAAG;QACF,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IAEF,KAAY,oBAAoB,GAAG;QACjC,aAAa,EAAE,WAAW,CAAC;QAC3B,KAAK,EAAE,YAAY,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,YAAY,CAAC;KACxB,CAAC;IAEF,KAAY,0BAA0B,GAAG;QACvC,aAAa,EAAE,MAAM;QACrB,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,MAAM;KACjB,GAAG;QACF,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,KAAY,gBAAgB,GAAG;QAC7B,aAAa,EAAE,WAAW,CAAC;QAC3B,SAAS,EAAE,WAAW,CAAC;QACvB,SAAS,EAAE,WAAW,CAAC;QACvB,SAAS,EAAE,WAAW,CAAC;QACvB,yBAAyB,EAAE,YAAY,CAAC;QACxC,UAAU,EAAE,WAAW,CAAC;QACxB,UAAU,EAAE,WAAW,CAAC;QACxB,UAAU,EAAE,WAAW,CAAC;QACxB,0BAA0B,EAAE,YAAY,CAAC;QACzC,WAAW,EAAE,YAAY,CAAC;QAC1B,YAAY,EAAE,YAAY,CAAC;QAC3B,QAAQ,EAAE,uBAAuB,CAAC,oBAAoB,CAAC;QACvD,SAAS,EAAE,uBAAuB,CAAC,oBAAoB,CAAC;KACzD,CAAC;IAEF,KAAY,sBAAsB,GAAG;QACnC,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,MAAM;QACjB,yBAAyB,EAAE,MAAM;QACjC,UAAU,EAAE,MAAM;QAClB,UAAU,EAAE,MAAM;QAClB,UAAU,EAAE,MAAM;QAClB,0BAA0B,EAAE,MAAM;QAClC,WAAW,EAAE,MAAM;QACnB,YAAY,EAAE,MAAM;QACpB,QAAQ,EAAE,uBAAuB,CAAC,0BAA0B;QAC5D,SAAS,EAAE,uBAAuB,CAAC,0BAA0B;KAC9D,GAAG;QACF,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,yBAAyB,EAAE,MAAM,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,0BAA0B,EAAE,MAAM,CAAC;QACnC,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,uBAAuB,CAAC,0BAA0B,CAAC;QAC7D,SAAS,EAAE,uBAAuB,CAAC,0BAA0B,CAAC;KAC/D,CAAC;IAEF,KAAY,gBAAgB,GAAG;QAC7B,SAAS,EAAE,uBAAuB,CAAC,eAAe,CAAC;QACnD,eAAe,EAAE,uBAAuB,CAAC,eAAe,CAAC;QACzD,MAAM,EAAE,uBAAuB,CAAC,gBAAgB,CAAC;QACjD,YAAY,EAAE,kBAAkB,CAAC;QACjC,iBAAiB,EAAE,YAAY,CAAC;KACjC,CAAC;IAEF,KAAY,sBAAsB,GAAG;QACnC,SAAS,EAAE,uBAAuB,CAAC,qBAAqB;QACxD,eAAe,EAAE,uBAAuB,CAAC,qBAAqB;QAC9D,MAAM,EAAE,uBAAuB,CAAC,sBAAsB;QACtD,YAAY,EAAE,wBAAwB;QACtC,iBAAiB,EAAE,MAAM;KAC1B,GAAG;QACF,SAAS,EAAE,uBAAuB,CAAC,qBAAqB,CAAC;QACzD,eAAe,EAAE,uBAAuB,CAAC,qBAAqB,CAAC;QAC/D,MAAM,EAAE,uBAAuB,CAAC,sBAAsB,CAAC;QACvD,YAAY,EAAE,wBAAwB,CAAC;QACvC,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,gCAAiC,SAAQ,SAAS;IACjE,WAAW,CACT,eAAe,EAAE,kBAAkB,GAAG,eAAe,GACpD,gBAAgB,CAAC;IAEpB,kBAAkB,CAChB,gBAAgB,EAAE,kBAAkB,EACpC,MAAM,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,GAC/B,MAAM,CAAC;IACV,kBAAkB,CAChB,gBAAgB,EAAE,eAAe,EACjC,MAAM,CAAC,EAAE,SAAS,GACjB,MAAM,CAAC;IAEV,oBAAoB,CAClB,gBAAgB,EAAE,kBAAkB,EACpC,IAAI,EAAE,SAAS,GACd,MAAM,CAAC;IACV,oBAAoB,CAClB,gBAAgB,EAAE,eAAe,EACjC,IAAI,EAAE,SAAS,GACd,MAAM,CAAC;CACX;AAED,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,OAAO,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,uBAAuB,CAAC;IACjE,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC,SAAS,EAAE,gCAAgC,CAAC;IAE5C,WAAW,CAAC,OAAO,SAAS,kBAAkB,EAC5C,KAAK,EAAE,OAAO,EACd,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EAClD,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GACpC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1C,WAAW,CAAC,OAAO,SAAS,kBAAkB,EAC5C,MAAM,EAAE,wBAAwB,CAAC,OAAO,CAAC,EACzC,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EAClD,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GACpC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAE1C,EAAE,CAAC,OAAO,SAAS,kBAAkB,EACnC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,EAAE,CAAC,OAAO,SAAS,kBAAkB,EACnC,MAAM,EAAE,wBAAwB,CAAC,OAAO,CAAC,EACzC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,IAAI,CAAC,OAAO,SAAS,kBAAkB,EACrC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,IAAI,CAAC,OAAO,SAAS,kBAAkB,EACrC,MAAM,EAAE,wBAAwB,CAAC,OAAO,CAAC,EACzC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,SAAS,CAAC,OAAO,SAAS,kBAAkB,EAC1C,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1C,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,kBAAkB,CAAC,OAAO,SAAS,kBAAkB,EACnD,KAAK,CAAC,EAAE,OAAO,GACd,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,gBAAgB,EAAE,mBAAmB,CACnC;QAAC,QAAQ,EAAE,SAAS;QAAE,IAAI,EAAE,WAAW;KAAC,EACxC;QAAC,uBAAuB,CAAC,sBAAsB;KAAC,EAChD,MAAM,CACP,CAAC;IAEF,aAAa,EAAE,mBAAmB,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAEzD,WAAW,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EACnD,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAC7B,CAAC,CAAC;IAEL,WAAW,CACT,eAAe,EAAE,kBAAkB,GAClC,mBAAmB,CACpB;QAAC,QAAQ,EAAE,SAAS;QAAE,IAAI,EAAE,WAAW;KAAC,EACxC;QAAC,uBAAuB,CAAC,sBAAsB;KAAC,EAChD,MAAM,CACP,CAAC;IACF,WAAW,CACT,eAAe,EAAE,eAAe,GAC/B,mBAAmB,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAE7C,OAAO,EAAE,EAAE,CAAC;CACb"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MorphoMarketDataFetcher.js","sourceRoot":"","sources":["../../../typechain-types/contracts/MorphoMarketDataFetcher.ts"],"names":[],"mappings":""}
|
|
@@ -9,6 +9,7 @@ export declare namespace MorphoVaultV2DeployHelper {
|
|
|
9
9
|
finalCurator: AddressLike;
|
|
10
10
|
allocator: AddressLike;
|
|
11
11
|
sentinel: AddressLike;
|
|
12
|
+
marketID: BytesLike;
|
|
12
13
|
vaultTimelockHigh: BigNumberish;
|
|
13
14
|
vaultTimelockMid: BigNumberish;
|
|
14
15
|
adapterTimelock: BigNumberish;
|
|
@@ -21,6 +22,7 @@ export declare namespace MorphoVaultV2DeployHelper {
|
|
|
21
22
|
finalCurator: string,
|
|
22
23
|
allocator: string,
|
|
23
24
|
sentinel: string,
|
|
25
|
+
marketID: string,
|
|
24
26
|
vaultTimelockHigh: bigint,
|
|
25
27
|
vaultTimelockMid: bigint,
|
|
26
28
|
adapterTimelock: bigint
|
|
@@ -32,6 +34,7 @@ export declare namespace MorphoVaultV2DeployHelper {
|
|
|
32
34
|
finalCurator: string;
|
|
33
35
|
allocator: string;
|
|
34
36
|
sentinel: string;
|
|
37
|
+
marketID: string;
|
|
35
38
|
vaultTimelockHigh: bigint;
|
|
36
39
|
vaultTimelockMid: bigint;
|
|
37
40
|
adapterTimelock: bigint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MorphoVaultV2DeployHelper.d.ts","sourceRoot":"","sources":["../../../typechain-types/contracts/MorphoVaultV2DeployHelper.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MorphoVaultV2DeployHelper.d.ts","sourceRoot":"","sources":["../../../typechain-types/contracts/MorphoVaultV2DeployHelper.ts"],"names":[],"mappings":"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"}
|