forked from balancer/balancer-v2-monorepo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
MockCircuitBreakerLib.sol
70 lines (59 loc) · 2.55 KB
/
MockCircuitBreakerLib.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// SPDX-License-Identifier: GPL-3.0-or-later
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2;
import "../managed/CircuitBreakerStorageLib.sol";
import "../lib/CircuitBreakerLib.sol";
contract MockCircuitBreakerLib {
using FixedPoint for uint256;
function getCircuitBreakerFields(bytes32 circuitBreakerState)
external
pure
returns (uint256 bptPrice, uint256 weightComplement, uint256 lowerBound, uint256 upperBound)
{
return CircuitBreakerStorageLib.getCircuitBreakerFields(circuitBreakerState);
}
function getBptPriceBound(bytes32 circuitBreakerState, uint256 currentWeight, bool isLowerBound)
external
pure
returns (uint256)
{
return CircuitBreakerStorageLib.getBptPriceBound(circuitBreakerState, currentWeight, isLowerBound);
}
function hasCircuitBreakerTripped(
bytes32 circuitBreakerState,
uint256 virtualSupply,
uint256 normalizedWeight,
uint256 upscaledBalance,
bool isLowerBound
) external pure returns (bool) {
uint256 bptPriceBound = CircuitBreakerStorageLib.getBptPriceBound(circuitBreakerState, normalizedWeight, isLowerBound);
return
CircuitBreakerLib.hasCircuitBreakerTripped(
virtualSupply,
normalizedWeight,
upscaledBalance,
bptPriceBound,
isLowerBound
);
}
function setCircuitBreaker(uint256 bptPrice, uint256 weightComplement, uint256 lowerBound, uint256 upperBound)
external
pure
returns (bytes32)
{
return CircuitBreakerStorageLib.setCircuitBreaker(bptPrice, weightComplement, lowerBound, upperBound);
}
function updateAdjustedBounds(bytes32 circuitBreakerState, uint256 weight) external pure returns (bytes32) {
return CircuitBreakerStorageLib.updateAdjustedBounds(circuitBreakerState, weight);
}
}