-
Notifications
You must be signed in to change notification settings - Fork 28
/
IAllowList.sol
85 lines (67 loc) · 2.92 KB
/
IAllowList.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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
interface IAllowList {
/*//////////////////////////////////////////////////////////////
EVENTS
//////////////////////////////////////////////////////////////*/
/// @notice Access mode of target contract is changed
event UpdateAccessMode(address indexed target, AccessMode previousMode, AccessMode newMode);
/// @notice Permission to call is changed
event UpdateCallPermission(address indexed caller, address indexed target, bytes4 indexed functionSig, bool status);
/// @notice Type of access to a specific contract includes three different modes
/// @param Closed No one has access to the contract
/// @param SpecialAccessOnly Any address with granted special access can interact with a contract (see `hasSpecialAccessToCall`)
/// @param Public Everyone can interact with a contract
enum AccessMode {
Closed,
SpecialAccessOnly,
Public
}
/// @dev A struct that contains deposit limit data of a token
/// @param depositLimitation Whether any deposit limitation is placed or not
/// @param depositCap The maximum amount that can be deposited.
struct Deposit {
bool depositLimitation;
uint256 depositCap;
}
/*//////////////////////////////////////////////////////////////
GETTERS
//////////////////////////////////////////////////////////////*/
function getAccessMode(address _target) external view returns (AccessMode);
function hasSpecialAccessToCall(
address _caller,
address _target,
bytes4 _functionSig
) external view returns (bool);
function canCall(
address _caller,
address _target,
bytes4 _functionSig
) external view returns (bool);
function getTokenDepositLimitData(address _l1Token) external view returns (Deposit memory);
/*//////////////////////////////////////////////////////////////
ALLOW LIST LOGIC
//////////////////////////////////////////////////////////////*/
function setBatchAccessMode(address[] calldata _targets, AccessMode[] calldata _accessMode) external;
function setAccessMode(address _target, AccessMode _accessMode) external;
function setBatchPermissionToCall(
address[] calldata _callers,
address[] calldata _targets,
bytes4[] calldata _functionSigs,
bool[] calldata _enables
) external;
function setPermissionToCall(
address _caller,
address _target,
bytes4 _functionSig,
bool _enable
) external;
/*//////////////////////////////////////////////////////////////
DEPOSIT LIMIT LOGIC
//////////////////////////////////////////////////////////////*/
function setDepositLimit(
address _l1Token,
bool _depositLimitation,
uint256 _depositCap
) external;
}