Skip to content

Commit 40b8292

Browse files
Added blast support
1 parent be33a37 commit 40b8292

File tree

4 files changed

+82
-0
lines changed

4 files changed

+82
-0
lines changed

lib/blast/IBlast.sol

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.18;
3+
4+
enum YieldMode {
5+
AUTOMATIC,
6+
VOID,
7+
CLAIMABLE
8+
}
9+
10+
enum GasMode {
11+
VOID,
12+
CLAIMABLE
13+
}
14+
15+
interface IBlast {
16+
// configure
17+
function configureContract(address contractAddress, YieldMode _yield, GasMode gasMode, address governor) external;
18+
function configure(YieldMode _yield, GasMode gasMode, address governor) external;
19+
20+
// base configuration options
21+
function configureClaimableYield() external;
22+
function configureClaimableYieldOnBehalf(address contractAddress) external;
23+
function configureAutomaticYield() external;
24+
function configureAutomaticYieldOnBehalf(address contractAddress) external;
25+
function configureVoidYield() external;
26+
function configureVoidYieldOnBehalf(address contractAddress) external;
27+
function configureClaimableGas() external;
28+
function configureClaimableGasOnBehalf(address contractAddress) external;
29+
function configureVoidGas() external;
30+
function configureVoidGasOnBehalf(address contractAddress) external;
31+
function configureGovernor(address _governor) external;
32+
function configureGovernorOnBehalf(address _newGovernor, address contractAddress) external;
33+
34+
// claim yield
35+
function claimYield(address contractAddress, address recipientOfYield, uint256 amount) external returns (uint256);
36+
function claimAllYield(address contractAddress, address recipientOfYield) external returns (uint256);
37+
38+
// claim gas
39+
function claimAllGas(address contractAddress, address recipientOfGas) external returns (uint256);
40+
function claimGasAtMinClaimRate(address contractAddress, address recipientOfGas, uint256 minClaimRateBips)
41+
external
42+
returns (uint256);
43+
function claimMaxGas(address contractAddress, address recipientOfGas) external returns (uint256);
44+
function claimGas(address contractAddress, address recipientOfGas, uint256 gasToClaim, uint256 gasSecondsToConsume)
45+
external
46+
returns (uint256);
47+
48+
// read functions
49+
function readClaimableYield(address contractAddress) external view returns (uint256);
50+
function readYieldConfiguration(address contractAddress) external view returns (uint8);
51+
function readGasParams(address contractAddress)
52+
external
53+
view
54+
returns (uint256 etherSeconds, uint256 etherBalance, uint256 lastUpdated, GasMode);
55+
}

lib/blast/IBlastPoints.sol

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.18;
3+
4+
interface IBlastPoints {
5+
function configurePointsOperator(address operator) external;
6+
function configurePointsOperatorOnBehalf(address contractAddress, address operator) external;
7+
}
File renamed without changes.

src/EchoBlast.sol

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.18;
3+
4+
import "./Echo.sol";
5+
import "blast/IBlast.sol";
6+
import "blast/IBlastPoints.sol";
7+
8+
contract EchoBlast is Echo {
9+
IBlast public constant BLAST = IBlast(0x4300000000000000000000000000000000000002);
10+
11+
constructor(address owner, address blastPointsAddress) Echo(owner) {
12+
IBlastPoints(blastPointsAddress).configurePointsOperator(owner);
13+
BLAST.configureAutomaticYield();
14+
BLAST.configureClaimableGas();
15+
}
16+
17+
function claimGas() external onlyOwner {
18+
BLAST.claimMaxGas(address(this), msg.sender);
19+
}
20+
}

0 commit comments

Comments
 (0)