@tawf-labs/sharia-capital-standard 0.1.0
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/LICENSE +21 -0
- package/README.md +225 -0
- package/evm/out/AAOIFIGovernance.sol/AAOIFIGovernance.json +1 -0
- package/evm/out/Address.sol/Address.json +1 -0
- package/evm/out/Base.sol/CommonBase.json +1 -0
- package/evm/out/Base.sol/ScriptBase.json +1 -0
- package/evm/out/Base.sol/TestBase.json +1 -0
- package/evm/out/Context.sol/Context.json +1 -0
- package/evm/out/ERC20.sol/ERC20.json +1 -0
- package/evm/out/ERC20Mock.sol/ERC20Mock.json +1 -0
- package/evm/out/ERC4626.sol/ERC4626.json +1 -0
- package/evm/out/Errors.sol/Errors.json +1 -0
- package/evm/out/IAAOIFICompliant.sol/IAAOIFICompliant.json +1 -0
- package/evm/out/IERC1363.sol/IERC1363.json +1 -0
- package/evm/out/IERC165.sol/IERC165.json +1 -0
- package/evm/out/IERC20.sol/IERC20.json +1 -0
- package/evm/out/IERC20Metadata.sol/IERC20Metadata.json +1 -0
- package/evm/out/IERC4626.sol/IERC4626.json +1 -0
- package/evm/out/IMulticall3.sol/IMulticall3.json +1 -0
- package/evm/out/ISCS1.sol/ISCS1.json +1 -0
- package/evm/out/ISCS2.sol/ISCS2.json +1 -0
- package/evm/out/ISCS3.sol/ISCS3.json +1 -0
- package/evm/out/ISCS4.sol/ISCS4.json +1 -0
- package/evm/out/ISCS5.sol/ISCS5.json +1 -0
- package/evm/out/Math.sol/Math.json +1 -0
- package/evm/out/MudarabahFactory.sol/MudarabahFactory.json +1 -0
- package/evm/out/MudarabahGovernance.t.sol/MudarabahGovernanceIntegrationTest.json +1 -0
- package/evm/out/MudarabahInvariant.t.sol/Handler.json +1 -0
- package/evm/out/MudarabahInvariant.t.sol/MudarabahInvariantTest.json +1 -0
- package/evm/out/MudarabahPool.sol/MudarabahPool.json +1 -0
- package/evm/out/MudarabahPool.t.sol/MudarabahPoolTest.json +1 -0
- package/evm/out/MusharakahFactory.sol/MusharakahFactory.json +1 -0
- package/evm/out/MusharakahPool.sol/MusharakahPool.json +1 -0
- package/evm/out/MusharakahPool.t.sol/MusharakahPoolTest.json +1 -0
- package/evm/out/Ownable.sol/Ownable.json +1 -0
- package/evm/out/Panic.sol/Panic.json +1 -0
- package/evm/out/ReentrancyGuard.sol/ReentrancyGuard.json +1 -0
- package/evm/out/SCS5.t.sol/SCS5Test.json +1 -0
- package/evm/out/SCSEnforcement.sol/SCSEnforcement.json +1 -0
- package/evm/out/SCSEnforcement.t.sol/SCSEnforcementTest.json +1 -0
- package/evm/out/SafeCast.sol/SafeCast.json +1 -0
- package/evm/out/SafeERC20.sol/SafeERC20.json +1 -0
- package/evm/out/ShariaBoard.sol/ShariaBoard.json +1 -0
- package/evm/out/StdAssertions.sol/StdAssertions.json +1 -0
- package/evm/out/StdChains.sol/StdChains.json +1 -0
- package/evm/out/StdCheats.sol/StdCheats.json +1 -0
- package/evm/out/StdCheats.sol/StdCheatsSafe.json +1 -0
- package/evm/out/StdConstants.sol/StdConstants.json +1 -0
- package/evm/out/StdError.sol/stdError.json +1 -0
- package/evm/out/StdInvariant.sol/StdInvariant.json +1 -0
- package/evm/out/StdJson.sol/stdJson.json +1 -0
- package/evm/out/StdMath.sol/stdMath.json +1 -0
- package/evm/out/StdStorage.sol/stdStorage.json +1 -0
- package/evm/out/StdStorage.sol/stdStorageSafe.json +1 -0
- package/evm/out/StdStyle.sol/StdStyle.json +1 -0
- package/evm/out/StdToml.sol/stdToml.json +1 -0
- package/evm/out/StdUtils.sol/StdUtils.json +1 -0
- package/evm/out/Test.sol/Test.json +1 -0
- package/evm/out/VaultEngine.sol/VaultEngine.json +1 -0
- package/evm/out/VaultEngine.t.sol/VaultEngineTest.json +1 -0
- package/evm/out/Vm.sol/Vm.json +1 -0
- package/evm/out/Vm.sol/VmSafe.json +1 -0
- package/evm/out/build-info/2a4e30a158d233d6.json +1 -0
- package/evm/out/build-info/3cfabad7ae61d1a6.json +1 -0
- package/evm/out/build-info/3f56a5966e901978.json +1 -0
- package/evm/out/build-info/51fd519074d038f8.json +1 -0
- package/evm/out/build-info/5549fc83ea5c1d63.json +1 -0
- package/evm/out/build-info/5bf499a6a511a61a.json +1 -0
- package/evm/out/build-info/7c7c5b6c1419b2fb.json +1 -0
- package/evm/out/build-info/8827fecf32cac394.json +1 -0
- package/evm/out/build-info/a67fef21e51c6ba3.json +1 -0
- package/evm/out/build-info/e589fe78f07409be.json +1 -0
- package/evm/out/build-info/ec3d6bd6e52cad07.json +1 -0
- package/evm/out/build-info/efa7e90bb36ba58e.json +1 -0
- package/evm/out/build-info/ff0ee40a04a49548.json +1 -0
- package/evm/out/console.sol/console.json +1 -0
- package/evm/out/draft-IERC6093.sol/IERC1155Errors.json +1 -0
- package/evm/out/draft-IERC6093.sol/IERC20Errors.json +1 -0
- package/evm/out/draft-IERC6093.sol/IERC721Errors.json +1 -0
- package/evm/out/safeconsole.sol/safeconsole.json +1 -0
- package/evm/src/SCS1/MudarabahFactory.sol +61 -0
- package/evm/src/SCS1/MudarabahPool.sol +196 -0
- package/evm/src/SCS2/MusharakahFactory.sol +66 -0
- package/evm/src/SCS2/MusharakahPool.sol +218 -0
- package/evm/src/SCS3/VaultEngine.sol +238 -0
- package/evm/src/SCS4/SCSEnforcement.sol +113 -0
- package/evm/src/SCS5/AAOIFIGovernance.sol +112 -0
- package/evm/src/SCS5/ShariaBoard.sol +232 -0
- package/evm/src/interfaces/IAAOIFICompliant.sol +21 -0
- package/evm/src/interfaces/ISCS1.sol +69 -0
- package/evm/src/interfaces/ISCS2.sol +58 -0
- package/evm/src/interfaces/ISCS3.sol +71 -0
- package/evm/src/interfaces/ISCS4.sol +69 -0
- package/evm/src/interfaces/ISCS5.sol +85 -0
- package/package.json +47 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Sharia Capital Standard Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
# Sharia Capital Standard (SCS)
|
|
2
|
+
|
|
3
|
+
**Open infrastructure-grade risk-sharing capital formation primitive for EVM & SVM networks**
|
|
4
|
+
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
[](https://soliditylang.org/)
|
|
7
|
+
[](https://getfoundry.sh/)
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
SCS provides production-ready smart contract implementations for Sharia-compliant capital formation, implementing AAOIFI standards for:
|
|
12
|
+
|
|
13
|
+
- **SCS-1**: Mudarabah (manager-investor profit-sharing)
|
|
14
|
+
- **SCS-2**: Musharakah (joint venture capital)
|
|
15
|
+
- **SCS-3**: Profit-Sharing Vault Engine (NAV calculation, epochs)
|
|
16
|
+
- **SCS-4**: Non-Guaranteed Return Enforcement Layer
|
|
17
|
+
- **SCS-5**: AAOIFI Governance & Compliance
|
|
18
|
+
|
|
19
|
+
## AAOIFI Compliance
|
|
20
|
+
|
|
21
|
+
This project implements standards from the [Accounting and Auditing Organization for Islamic Financial Institutions](https://aaoifi.com/?lang=en):
|
|
22
|
+
|
|
23
|
+
- **[Sharia Standard #8](https://aaoifi.com/product/shari-a-standards/?lang=en)**: Mudarabah (profit-sharing partnership)
|
|
24
|
+
- **[Sharia Standard #12](https://aaoifi.com/product/shari-a-standards/?lang=en)**: Musharakah (joint venture)
|
|
25
|
+
- **[Sharia Standard #17](https://aaoifi.com/product/shari-a-standards/?lang=en)**: Investment Agencies
|
|
26
|
+
- **[Governance Standard #3](https://aaoifi.com/product/governance-standards-for-islamic-financial-institutions/?lang=en)**: Internal Sharia Review
|
|
27
|
+
- **[Financial Accounting Standards](https://aaoifi.com/product/financial-accounting-standards/?lang=en)**: FAS #4, #9, #27
|
|
28
|
+
|
|
29
|
+
## Project Structure
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
Sharia-Capital-Standard/
|
|
33
|
+
├── evm/ # EVM implementation (Solidity)
|
|
34
|
+
│ ├── src/
|
|
35
|
+
│ │ ├── interfaces/ # Core SCS interfaces
|
|
36
|
+
│ │ ├── SCS1/ # Mudarabah ✅
|
|
37
|
+
│ │ ├── SCS2/ # Musharakah ✅
|
|
38
|
+
│ │ ├── SCS3/ # Vault Engine ✅
|
|
39
|
+
│ │ ├── SCS4/ # Enforcement Layer ✅
|
|
40
|
+
│ │ ├── SCS5/ # AAOIFI Governance ✅
|
|
41
|
+
│ │ └── libraries/ # Shared libraries
|
|
42
|
+
│ └── test/ # Comprehensive test suite
|
|
43
|
+
└── solana/ # SVM implementation (Anchor)
|
|
44
|
+
└── programs/
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Installation
|
|
48
|
+
|
|
49
|
+
### For Foundry Projects (Recommended)
|
|
50
|
+
|
|
51
|
+
Install as a Foundry dependency:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
forge install tawf-labs/Sharia-Capital-Standard
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Add to your `remappings.txt`:
|
|
58
|
+
```
|
|
59
|
+
@sharia-capital/=lib/Sharia-Capital-Standard/evm/src/
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Import in your contracts:
|
|
63
|
+
```solidity
|
|
64
|
+
import "@sharia-capital/SCS1/MudarabahPool.sol";
|
|
65
|
+
import "@sharia-capital/SCS2/MusharakahPool.sol";
|
|
66
|
+
import "@sharia-capital/SCS3/VaultEngine.sol";
|
|
67
|
+
import "@sharia-capital/SCS4/SCSEnforcement.sol";
|
|
68
|
+
import "@sharia-capital/SCS5/AAOIFIGovernance.sol";
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### For Hardhat/npm Projects
|
|
72
|
+
|
|
73
|
+
Install via npm:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
npm install sharia-capital-standard
|
|
77
|
+
# or
|
|
78
|
+
yarn add sharia-capital-standard
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Import in your contracts (clean style):
|
|
82
|
+
```solidity
|
|
83
|
+
import "sharia-capital-standard/SCS1/MudarabahPool.sol";
|
|
84
|
+
import "sharia-capital-standard/interfaces/ISCS1.sol";
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Or use direct paths:
|
|
88
|
+
```solidity
|
|
89
|
+
import "sharia-capital-standard/evm/src/SCS1/MudarabahPool.sol";
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Access ABIs in JavaScript/TypeScript:
|
|
93
|
+
```javascript
|
|
94
|
+
const MudarabahPoolABI = require('sharia-capital-standard/evm/out/MudarabahPool.sol/MudarabahPool.json');
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### For Development
|
|
98
|
+
|
|
99
|
+
Clone the repository to contribute or run tests:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
git clone https://github.com/tawf-labs/Sharia-Capital-Standard.git
|
|
103
|
+
cd Sharia-Capital-Standard
|
|
104
|
+
|
|
105
|
+
# Install dependencies
|
|
106
|
+
forge install
|
|
107
|
+
|
|
108
|
+
# Build contracts
|
|
109
|
+
forge build
|
|
110
|
+
|
|
111
|
+
# Run tests
|
|
112
|
+
forge test
|
|
113
|
+
|
|
114
|
+
# Run tests with gas report
|
|
115
|
+
forge test --gas-report
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Usage Example
|
|
119
|
+
|
|
120
|
+
```solidity
|
|
121
|
+
// Create Mudarabah pool
|
|
122
|
+
MudarabahFactory factory = new MudarabahFactory(enforcementAddress);
|
|
123
|
+
|
|
124
|
+
address pool = factory.createPool(
|
|
125
|
+
usdcAddress,
|
|
126
|
+
managerAddress,
|
|
127
|
+
capitalProviderAddress,
|
|
128
|
+
2000, // 20% manager share (basis points)
|
|
129
|
+
8000, // 80% provider share (basis points)
|
|
130
|
+
"USDC Mudarabah Pool",
|
|
131
|
+
"MDP-USDC"
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
// Deposit capital
|
|
135
|
+
MudarabahPool mudarabah = MudarabahPool(pool);
|
|
136
|
+
usdc.approve(pool, 1000e6);
|
|
137
|
+
mudarabah.deposit(1000e6);
|
|
138
|
+
|
|
139
|
+
// Deploy to strategy
|
|
140
|
+
mudarabah.deployCapital(strategyAddress, 500e6);
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Core Concepts
|
|
144
|
+
|
|
145
|
+
### Mudarabah (SCS-1)
|
|
146
|
+
Manager-investor profit-sharing model where:
|
|
147
|
+
- Capital provider (Rabb al-Mal) provides capital
|
|
148
|
+
- Manager (Mudarib) manages investments
|
|
149
|
+
- Profits shared by pre-agreed ratio
|
|
150
|
+
- Losses borne by capital provider (except misconduct)
|
|
151
|
+
|
|
152
|
+
### Musharakah (SCS-2)
|
|
153
|
+
Joint venture model where:
|
|
154
|
+
- All partners contribute capital
|
|
155
|
+
- Profit ratio can differ from capital ratio
|
|
156
|
+
- Loss ratio MUST equal capital ratio (AAOIFI requirement)
|
|
157
|
+
|
|
158
|
+
### Vault Engine (SCS-3)
|
|
159
|
+
ERC-4626 compliant vault with:
|
|
160
|
+
- Epoch-based accounting
|
|
161
|
+
- NAV calculation
|
|
162
|
+
- Strategy management
|
|
163
|
+
|
|
164
|
+
### Enforcement Layer (SCS-4)
|
|
165
|
+
Ensures Sharia compliance by:
|
|
166
|
+
- Prohibiting guaranteed returns
|
|
167
|
+
- Preventing fixed-yield structures
|
|
168
|
+
- Validating profit-sharing ratios
|
|
169
|
+
|
|
170
|
+
### AAOIFI Governance (SCS-5)
|
|
171
|
+
Implements AAOIFI Governance Standard #3:
|
|
172
|
+
- Sharia Supervisory Board (SSB) oversight
|
|
173
|
+
- Multi-signature approval for investments
|
|
174
|
+
- Prohibited asset screening
|
|
175
|
+
- Financial ratio validation
|
|
176
|
+
|
|
177
|
+
## Documentation
|
|
178
|
+
|
|
179
|
+
- [SCS-1: Mudarabah Specification](docs/SCS-1-Mudarabah.md)
|
|
180
|
+
- [SCS-2: Musharakah Specification](docs/SCS-2-Musharakah.md)
|
|
181
|
+
- [SCS-3: Vault Engine Specification](docs/SCS-3-Vault.md)
|
|
182
|
+
- [SCS-4: Enforcement Layer](docs/SCS-4-Enforcement.md)
|
|
183
|
+
- [SCS-5: AAOIFI Governance](docs/SCS-5-Governance.md)
|
|
184
|
+
- [AAOIFI Compliance Guide](docs/AAOIFI-Compliance.md)
|
|
185
|
+
- [Integration Guide](docs/integration.md)
|
|
186
|
+
|
|
187
|
+
## Security
|
|
188
|
+
|
|
189
|
+
- Comprehensive test coverage (100%)
|
|
190
|
+
- Fuzz testing (256+ iterations)
|
|
191
|
+
- Invariant testing
|
|
192
|
+
- ReentrancyGuard protection
|
|
193
|
+
- Role-based access control
|
|
194
|
+
- External audit recommended before production use
|
|
195
|
+
|
|
196
|
+
See [SECURITY.md](SECURITY.md) for reporting vulnerabilities.
|
|
197
|
+
|
|
198
|
+
## Contributing
|
|
199
|
+
|
|
200
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines.
|
|
201
|
+
|
|
202
|
+
## License
|
|
203
|
+
|
|
204
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
|
205
|
+
|
|
206
|
+
## Disclaimer
|
|
207
|
+
|
|
208
|
+
This is reference implementation software. Users must:
|
|
209
|
+
1. Conduct independent Sharia compliance review
|
|
210
|
+
2. Obtain qualified Sharia Supervisory Board approval
|
|
211
|
+
3. Complete security audits before production deployment
|
|
212
|
+
4. Ensure compliance with local regulations
|
|
213
|
+
|
|
214
|
+
## References
|
|
215
|
+
|
|
216
|
+
- [AAOIFI Official Website](https://aaoifi.com/?lang=en)
|
|
217
|
+
- [AAOIFI Sharia Standards](https://aaoifi.com/product/shari-a-standards/?lang=en)
|
|
218
|
+
- [AAOIFI Governance Standards](https://aaoifi.com/product/governance-standards-for-islamic-financial-institutions/?lang=en)
|
|
219
|
+
- [AAOIFI Financial Accounting Standards](https://aaoifi.com/product/financial-accounting-standards/?lang=en)
|
|
220
|
+
- [ERC-4626 Tokenized Vault Standard](https://eips.ethereum.org/EIPS/eip-4626)
|
|
221
|
+
- [OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/)
|
|
222
|
+
|
|
223
|
+
## Contact
|
|
224
|
+
|
|
225
|
+
For questions or collaboration: [Create an issue](https://github.com/yourusername/Sharia-Capital-Standard/issues)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"abi":[{"type":"constructor","inputs":[{"name":"_shariaBoard","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"assetScreening","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"screened","type":"bool","internalType":"bool"},{"name":"compliant","type":"bool","internalType":"bool"},{"name":"screenedAt","type":"uint256","internalType":"uint256"},{"name":"reason","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getAssetScreening","inputs":[{"name":"asset","type":"address","internalType":"address"}],"outputs":[{"name":"screened","type":"bool","internalType":"bool"},{"name":"compliant","type":"bool","internalType":"bool"},{"name":"screenedAt","type":"uint256","internalType":"uint256"},{"name":"reason","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"maxDebtRatio","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxInterestRatio","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permitAsset","inputs":[{"name":"asset","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prohibitAsset","inputs":[{"name":"asset","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prohibitedAssets","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"screenAsset","inputs":[{"name":"asset","type":"address","internalType":"address"},{"name":"compliant","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxDebtRatio","inputs":[{"name":"ratio","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxInterestRatio","inputs":[{"name":"ratio","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setShariaBoard","inputs":[{"name":"_shariaBoard","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"shariaBoard","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISCS5"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validateAsset","inputs":[{"name":"asset","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"validateFinancialRatios","inputs":[{"name":"totalAssets","type":"uint256","internalType":"uint256"},{"name":"totalDebt","type":"uint256","internalType":"uint256"},{"name":"interestIncome","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"AssetPermitted","inputs":[{"name":"asset","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AssetProhibited","inputs":[{"name":"asset","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AssetScreened","inputs":[{"name":"asset","type":"address","indexed":true,"internalType":"address"},{"name":"compliant","type":"bool","indexed":false,"internalType":"bool"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RatioUpdated","inputs":[{"name":"ratioType","type":"string","indexed":false,"internalType":"string"},{"name":"newValue","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AssetIsProhibited","inputs":[]},{"type":"error","name":"AssetNotScreened","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"RatioExceeded","inputs":[]}],"bytecode":{"object":"0x6080604052610ce4600455610bb860055534801561001b575f80fd5b50604051610e05380380610e0583398101604081905261003a916100dd565b338061005f57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100688161008e565b50600180546001600160a01b0319166001600160a01b039290921691909117905561010a565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100ed575f80fd5b81516001600160a01b0381168114610103575f80fd5b9392505050565b610cee806101175f395ff3fe608060405234801561000f575f80fd5b5060043610610106575f3560e01c80638da5cb5b1161009e578063dfc8eb4d1161006e578063dfc8eb4d14610214578063e25756bd14610227578063f2fde38b1461024a578063fc4a5e0a1461025d578063fece5c3514610270575f80fd5b80638da5cb5b146101b75780639240d299146101db578063a2317b27146101ee578063bc6384d014610201575f80fd5b806371add9b8116100d957806371add9b8146101715780637559aec31461018857806379f74e9e1461019b5780638112555d146101a4575f80fd5b8063069d45111461010a5780630f413c03146101415780634edcf3e414610156578063715018a614610169575b5f80fd5b61012c610118366004610969565b60026020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61015461014f366004610996565b610283565b005b610154610164366004610969565b610358565b6101546103a8565b61017a60055481565b604051908152602001610138565b610154610196366004610a6f565b6103bb565b61017a60045481565b6101546101b2366004610969565b61041b565b5f546001600160a01b03165b6040516001600160a01b039091168152602001610138565b61012c6101e9366004610969565b610445565b6001546101c3906001600160a01b031681565b61015461020f366004610a6f565b610589565b61012c610222366004610a86565b6105e8565b61023a610235366004610969565b610680565b6040516101389493929190610add565b610154610258366004610969565b610734565b61015461026b366004610969565b610776565b61023a61027e366004610969565b6107c9565b61028b6108d3565b604080516080810182526001808252841515602080840191825242848601908152606085018781526001600160a01b038a165f90815260039093529590912084518154935161ffff1990941690151561ff001916176101009315159390930292909217825551918101919091559151909190600282019061030c9082610b93565b50905050826001600160a01b03167f409945ab345605735462334cc4735e8f590507e97479e21c7fff9458f8890f6e838360405161034b929190610c4e565b60405180910390a2505050565b6103606108d3565b6001600160a01b0381165f81815260026020526040808220805460ff19169055517fbfd78d1acd7fdf715658096e9116ace58b0b335d6d8d4fc53e0aec7edbd7d4419190a250565b6103b06108d3565b6103b95f6108ff565b565b6103c36108d3565b60048181556040805181815290810191909152631919589d60e21b6060820152602081018290527f0eed1599006b37c9967819b987baeea7fc062d214cc62b888ec0532a95d0e067906080015b60405180910390a150565b6104236108d3565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381165f9081526002602052604081205460ff161561047e57604051630767b96960e41b815260040160405180910390fd5b6001600160a01b0382165f9081526003602090815260408083208151608081018352815460ff80821615158352610100909104161515938101939093526001810154918301919091526002810180546060840191906104dc90610b0f565b80601f016020809104026020016040519081016040528092919081815260200182805461050890610b0f565b80156105535780601f1061052a57610100808354040283529160200191610553565b820191905f5260205f20905b81548152906001019060200180831161053657829003601f168201915b5050505050815250509050805f015161057f57604051637cdfe3cf60e11b815260040160405180910390fd5b6020015192915050565b6105916108d3565b600581905560408051818152600891810191909152671a5b9d195c995cdd60c21b6060820152602081018290527f0eed1599006b37c9967819b987baeea7fc062d214cc62b888ec0532a95d0e06790608001610410565b5f835f036105f857506001610679565b5f8461060685612710610c70565b6106109190610c99565b9050600454811115610635576040516310f0e3e360e31b815260040160405180910390fd5b5f8561064385612710610c70565b61064d9190610c99565b9050600554811115610672576040516310f0e3e360e31b815260040160405180910390fd5b6001925050505b9392505050565b60036020525f908152604090208054600182015460028301805460ff80851695610100909504169391906106b390610b0f565b80601f01602080910402602001604051908101604052809291908181526020018280546106df90610b0f565b801561072a5780601f106107015761010080835404028352916020019161072a565b820191905f5260205f20905b81548152906001019060200180831161070d57829003601f168201915b5050505050905084565b61073c6108d3565b6001600160a01b03811661076a57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610773816108ff565b50565b61077e6108d3565b6001600160a01b0381165f81815260026020526040808220805460ff19166001179055517ff6a8a87dfb3ed5a7865e9608d9d07931ea9483e8040a59f2e32391ec3c6adcb39190a250565b6001600160a01b0381165f9081526003602090815260408083208151608081018352815460ff8082161515835261010090910416151593810193909352600181015491830191909152600281018054849384936060938593838601919061082f90610b0f565b80601f016020809104026020016040519081016040528092919081815260200182805461085b90610b0f565b80156108a65780601f1061087d576101008083540402835291602001916108a6565b820191905f5260205f20905b81548152906001019060200180831161088957829003601f168201915b505050919092525050815160208301516040840151606090940151919a9099509297509550909350505050565b5f546001600160a01b031633146103b95760405163118cdaa760e01b8152336004820152602401610761565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b0381168114610964575f80fd5b919050565b5f60208284031215610979575f80fd5b6106798261094e565b634e487b7160e01b5f52604160045260245ffd5b5f805f606084860312156109a8575f80fd5b6109b18461094e565b9250602084013580151581146109c5575f80fd5b9150604084013567ffffffffffffffff8111156109e0575f80fd5b8401601f810186136109f0575f80fd5b803567ffffffffffffffff811115610a0a57610a0a610982565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610a3957610a39610982565b604052818152828201602001881015610a50575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f60208284031215610a7f575f80fd5b5035919050565b5f805f60608486031215610a98575f80fd5b505081359360208301359350604090920135919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b84151581528315156020820152826040820152608060608201525f610b056080830184610aaf565b9695505050505050565b600181811c90821680610b2357607f821691505b602082108103610b4157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610b8e57805f5260205f20601f840160051c81016020851015610b6c5750805b601f840160051c820191505b81811015610b8b575f8155600101610b78565b50505b505050565b815167ffffffffffffffff811115610bad57610bad610982565b610bc181610bbb8454610b0f565b84610b47565b6020601f821160018114610bf3575f8315610bdc5750848201515b5f19600385901b1c1916600184901b178455610b8b565b5f84815260208120601f198516915b82811015610c225787850151825560209485019460019092019101610c02565b5084821015610c3f57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b8215158152604060208201525f610c686040830184610aaf565b949350505050565b8082028115828204841417610c9357634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82610cb357634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220a5389931b03e964633f14a2a7d123010a9c5dfc5b6bcc972d961174e55247b4664736f6c634300081a0033","sourceMap":"322:3204:21:-:0;;;551:4;521:34;;611:4;577:38;;1114:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1156:10;;1269:95:19;;1322:31;;-1:-1:-1;;;1322:31:19;;1350:1;1322:31;;;455:51:25;428:18;;1322:31:19;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;1178:11:21::1;:33:::0;;-1:-1:-1;;;;;;1178:33:21::1;-1:-1:-1::0;;;;;1178:33:21;;;::::1;::::0;;;::::1;::::0;;322:3204;;2912:187:19;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:19;;;-1:-1:-1;;;;;;3020:17:19;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:290:25:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:25;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:25:o;309:203::-;322:3204:21;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f80fd5b5060043610610106575f3560e01c80638da5cb5b1161009e578063dfc8eb4d1161006e578063dfc8eb4d14610214578063e25756bd14610227578063f2fde38b1461024a578063fc4a5e0a1461025d578063fece5c3514610270575f80fd5b80638da5cb5b146101b75780639240d299146101db578063a2317b27146101ee578063bc6384d014610201575f80fd5b806371add9b8116100d957806371add9b8146101715780637559aec31461018857806379f74e9e1461019b5780638112555d146101a4575f80fd5b8063069d45111461010a5780630f413c03146101415780634edcf3e414610156578063715018a614610169575b5f80fd5b61012c610118366004610969565b60026020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61015461014f366004610996565b610283565b005b610154610164366004610969565b610358565b6101546103a8565b61017a60055481565b604051908152602001610138565b610154610196366004610a6f565b6103bb565b61017a60045481565b6101546101b2366004610969565b61041b565b5f546001600160a01b03165b6040516001600160a01b039091168152602001610138565b61012c6101e9366004610969565b610445565b6001546101c3906001600160a01b031681565b61015461020f366004610a6f565b610589565b61012c610222366004610a86565b6105e8565b61023a610235366004610969565b610680565b6040516101389493929190610add565b610154610258366004610969565b610734565b61015461026b366004610969565b610776565b61023a61027e366004610969565b6107c9565b61028b6108d3565b604080516080810182526001808252841515602080840191825242848601908152606085018781526001600160a01b038a165f90815260039093529590912084518154935161ffff1990941690151561ff001916176101009315159390930292909217825551918101919091559151909190600282019061030c9082610b93565b50905050826001600160a01b03167f409945ab345605735462334cc4735e8f590507e97479e21c7fff9458f8890f6e838360405161034b929190610c4e565b60405180910390a2505050565b6103606108d3565b6001600160a01b0381165f81815260026020526040808220805460ff19169055517fbfd78d1acd7fdf715658096e9116ace58b0b335d6d8d4fc53e0aec7edbd7d4419190a250565b6103b06108d3565b6103b95f6108ff565b565b6103c36108d3565b60048181556040805181815290810191909152631919589d60e21b6060820152602081018290527f0eed1599006b37c9967819b987baeea7fc062d214cc62b888ec0532a95d0e067906080015b60405180910390a150565b6104236108d3565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381165f9081526002602052604081205460ff161561047e57604051630767b96960e41b815260040160405180910390fd5b6001600160a01b0382165f9081526003602090815260408083208151608081018352815460ff80821615158352610100909104161515938101939093526001810154918301919091526002810180546060840191906104dc90610b0f565b80601f016020809104026020016040519081016040528092919081815260200182805461050890610b0f565b80156105535780601f1061052a57610100808354040283529160200191610553565b820191905f5260205f20905b81548152906001019060200180831161053657829003601f168201915b5050505050815250509050805f015161057f57604051637cdfe3cf60e11b815260040160405180910390fd5b6020015192915050565b6105916108d3565b600581905560408051818152600891810191909152671a5b9d195c995cdd60c21b6060820152602081018290527f0eed1599006b37c9967819b987baeea7fc062d214cc62b888ec0532a95d0e06790608001610410565b5f835f036105f857506001610679565b5f8461060685612710610c70565b6106109190610c99565b9050600454811115610635576040516310f0e3e360e31b815260040160405180910390fd5b5f8561064385612710610c70565b61064d9190610c99565b9050600554811115610672576040516310f0e3e360e31b815260040160405180910390fd5b6001925050505b9392505050565b60036020525f908152604090208054600182015460028301805460ff80851695610100909504169391906106b390610b0f565b80601f01602080910402602001604051908101604052809291908181526020018280546106df90610b0f565b801561072a5780601f106107015761010080835404028352916020019161072a565b820191905f5260205f20905b81548152906001019060200180831161070d57829003601f168201915b5050505050905084565b61073c6108d3565b6001600160a01b03811661076a57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610773816108ff565b50565b61077e6108d3565b6001600160a01b0381165f81815260026020526040808220805460ff19166001179055517ff6a8a87dfb3ed5a7865e9608d9d07931ea9483e8040a59f2e32391ec3c6adcb39190a250565b6001600160a01b0381165f9081526003602090815260408083208151608081018352815460ff8082161515835261010090910416151593810193909352600181015491830191909152600281018054849384936060938593838601919061082f90610b0f565b80601f016020809104026020016040519081016040528092919081815260200182805461085b90610b0f565b80156108a65780601f1061087d576101008083540402835291602001916108a6565b820191905f5260205f20905b81548152906001019060200180831161088957829003601f168201915b505050919092525050815160208301516040840151606090940151919a9099509297509550909350505050565b5f546001600160a01b031633146103b95760405163118cdaa760e01b8152336004820152602401610761565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b0381168114610964575f80fd5b919050565b5f60208284031215610979575f80fd5b6106798261094e565b634e487b7160e01b5f52604160045260245ffd5b5f805f606084860312156109a8575f80fd5b6109b18461094e565b9250602084013580151581146109c5575f80fd5b9150604084013567ffffffffffffffff8111156109e0575f80fd5b8401601f810186136109f0575f80fd5b803567ffffffffffffffff811115610a0a57610a0a610982565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610a3957610a39610982565b604052818152828201602001881015610a50575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f60208284031215610a7f575f80fd5b5035919050565b5f805f60608486031215610a98575f80fd5b505081359360208301359350604090920135919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b84151581528315156020820152826040820152608060608201525f610b056080830184610aaf565b9695505050505050565b600181811c90821680610b2357607f821691505b602082108103610b4157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610b8e57805f5260205f20601f840160051c81016020851015610b6c5750805b601f840160051c820191505b81811015610b8b575f8155600101610b78565b50505b505050565b815167ffffffffffffffff811115610bad57610bad610982565b610bc181610bbb8454610b0f565b84610b47565b6020601f821160018114610bf3575f8315610bdc5750848201515b5f19600385901b1c1916600184901b178455610b8b565b5f84815260208120601f198516915b82811015610c225787850151825560209485019460019092019101610c02565b5084821015610c3f57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b8215158152604060208201525f610c686040830184610aaf565b949350505050565b8082028115828204841417610c9357634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82610cb357634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220a5389931b03e964633f14a2a7d123010a9c5dfc5b6bcc972d961174e55247b4664736f6c634300081a0033","sourceMap":"322:3204:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;400:48;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;548:14:25;;541:22;523:41;;511:2;496:18;400:48:21;;;;;;;;1516:384;;;;;;:::i;:::-;;:::i;:::-;;1371:139;;;;;;:::i;:::-;;:::i;2293:101:19:-;;;:::i;577:38:21:-;;;;;;;;;2038:25:25;;;2026:2;2011:18;577:38:21;1892:177:25;2757:138:21;;;;;;:::i;:::-;;:::i;521:34::-;;;;;;3057:115;;;;;;:::i;:::-;;:::i;1638:85:19:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:19;1638:85;;;-1:-1:-1;;;;;2469:32:25;;;2451:51;;2439:2;2424:18;1638:85:19;2305:203:25;1906:318:21;;;;;;:::i;:::-;;:::i;365:24::-;;;;;-1:-1:-1;;;;;365:24:21;;;2901:150;;;;;;:::i;:::-;;:::i;2230:521::-;;;;;;:::i;:::-;;:::i;454:56::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;2543:215:19:-;;;;;;:::i;:::-;;:::i;1224:141:21:-;;;;;;:::i;:::-;;:::i;3178:346::-;;;;;;:::i;:::-;;:::i;1516:384::-;1531:13:19;:11;:13::i;:::-;1673:157:21::1;::::0;;::::1;::::0;::::1;::::0;;1712:4:::1;1673:157:::0;;;;::::1;;;::::0;;::::1;::::0;;;1776:15:::1;1673:157:::0;;;;;;;;;;;;-1:-1:-1;;;;;1649:21:21;::::1;-1:-1:-1::0;1649:21:21;;;:14:::1;:21:::0;;;;;;;:181;;;;;;-1:-1:-1;;1649:181:21;;;;::::1;;-1:-1:-1::0;;1649:181:21;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;;;;::::1;::::0;;;;;;1673:157;;1649:21;:181:::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;;;;;1868:5;-1:-1:-1::0;;;;;1854:39:21::1;;1875:9;1886:6;1854:39;;;;;;;:::i;:::-;;;;;;;;1516:384:::0;;;:::o;1371:139::-;1531:13:19;:11;:13::i;:::-;-1:-1:-1;;;;;1436:23:21;::::1;1462:5;1436:23:::0;;;:16:::1;:23;::::0;;;;;:31;;-1:-1:-1;;1436:31:21::1;::::0;;1482:21;::::1;::::0;1462:5;1482:21:::1;1371:139:::0;:::o;2293:101:19:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2757:138:21:-;1531:13:19;:11;:13::i;:::-;2826:12:21::1;:20:::0;;;2861:27:::1;::::0;;6988:21:25;;;7025:18;;;7018:29;;;;-1:-1:-1;;;7078:2:25;7063:18;;7056:34;7157:4;7142:20;;7135:36;;;2861:27:21::1;::::0;7122:3:25;7107:19;2861:27:21::1;;;;;;;;2757:138:::0;:::o;3057:115::-;1531:13:19;:11;:13::i;:::-;3132:11:21::1;:33:::0;;-1:-1:-1;;;;;;3132:33:21::1;-1:-1:-1::0;;;;;3132:33:21;;;::::1;::::0;;;::::1;::::0;;3057:115::o;1906:318::-;-1:-1:-1;;;;;1987:23:21;;1967:4;1987:23;;;:16;:23;;;;;;;;1983:55;;;2019:19;;-1:-1:-1;;;2019:19:21;;;;;;;;;;;1983:55;-1:-1:-1;;;;;2091:21:21;;2057:31;2091:21;;;:14;:21;;;;;;;;2057:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2127:9;:18;;;2122:50;;2154:18;;-1:-1:-1;;;2154:18:21;;;;;;;;;;;2122:50;2198:19;;;;1906:318;-1:-1:-1;;1906:318:21:o;2901:150::-;1531:13:19;:11;:13::i;:::-;2974:16:21::1;:24:::0;;;3013:31:::1;::::0;;7394:21:25;;;7451:1;7431:18;;;7424:29;;;;-1:-1:-1;;;7484:2:25;7469:18;;7462:38;7567:4;7552:20;;7545:36;;;3013:31:21::1;::::0;7532:3:25;7517:19;3013:31:21::1;7182:405:25::0;2230:521:21;2380:4;2400:11;2415:1;2400:16;2396:33;;-1:-1:-1;2425:4:21;2418:11;;2396:33;2448:17;2490:11;2469:17;:9;2481:5;2469:17;:::i;:::-;2468:33;;;;:::i;:::-;2448:53;;2527:12;;2515:9;:24;2511:52;;;2548:15;;-1:-1:-1;;;2548:15:21;;;;;;;;;;;2511:52;2582:21;2633:11;2607:22;:14;2624:5;2607:22;:::i;:::-;2606:38;;;;:::i;:::-;2582:62;;2674:16;;2658:13;:32;2654:60;;;2699:15;;-1:-1:-1;;;2699:15:21;;;;;;;;;;;2654:60;2740:4;2733:11;;;;2230:521;;;;;;:::o;454:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2543:215:19:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:19;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:19;;2700:1:::1;2672:31;::::0;::::1;2451:51:25::0;2424:18;;2672:31:19::1;;;;;;;;2623:91;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;1224:141:21:-;1531:13:19;:11;:13::i;:::-;-1:-1:-1;;;;;1291:23:21;::::1;;::::0;;;:16:::1;:23;::::0;;;;;:30;;-1:-1:-1;;1291:30:21::1;1317:4;1291:30;::::0;;1336:22;::::1;::::0;1291:23;1336:22:::1;1224:141:::0;:::o;3178:346::-;-1:-1:-1;;;;;3398:21:21;;3252:13;3398:21;;;:14;:21;;;;;;;;3364:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3252:13;;;;3327:20;;3252:13;;3364:55;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3364:55:21;;;;-1:-1:-1;;3437:18:21;;3457:19;;;;3478:20;;;;3500:16;;;;;3437:18;;3457:19;;-1:-1:-1;3478:20:21;;-1:-1:-1;3500:16:21;-1:-1:-1;3178:346:21;;-1:-1:-1;;;;3178:346:21:o;1796:162:19:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:19;735:10:20;1855:23:19;1851:101;;1901:40;;-1:-1:-1;;;1901:40:19;;735:10:20;1901:40:19;;;2451:51:25;2424:18;;1901:40:19;2305:203:25;2912:187:19;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:19;;;-1:-1:-1;;;;;;3020:17:19;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:173:25:-;82:20;;-1:-1:-1;;;;;131:31:25;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;575:127::-;636:10;631:3;627:20;624:1;617:31;667:4;664:1;657:15;691:4;688:1;681:15;707:1180;791:6;799;807;860:2;848:9;839:7;835:23;831:32;828:52;;;876:1;873;866:12;828:52;899:29;918:9;899:29;:::i;:::-;889:39;;978:2;967:9;963:18;950:32;1025:5;1018:13;1011:21;1004:5;1001:32;991:60;;1047:1;1044;1037:12;991:60;1070:5;-1:-1:-1;1126:2:25;1111:18;;1098:32;1153:18;1142:30;;1139:50;;;1185:1;1182;1175:12;1139:50;1208:22;;1261:4;1253:13;;1249:27;-1:-1:-1;1239:55:25;;1290:1;1287;1280:12;1239:55;1330:2;1317:16;1356:18;1348:6;1345:30;1342:56;;;1378:18;;:::i;:::-;1427:2;1421:9;1519:2;1481:17;;-1:-1:-1;;1477:31:25;;;1510:2;1473:40;1469:54;1457:67;;1554:18;1539:34;;1575:22;;;1536:62;1533:88;;;1601:18;;:::i;:::-;1637:2;1630:22;1661;;;1702:15;;;1719:2;1698:24;1695:37;-1:-1:-1;1692:57:25;;;1745:1;1742;1735:12;1692:57;1801:6;1796:2;1792;1788:11;1783:2;1775:6;1771:15;1758:50;1854:1;1849:2;1840:6;1832;1828:19;1824:28;1817:39;1875:6;1865:16;;;;;707:1180;;;;;:::o;2074:226::-;2133:6;2186:2;2174:9;2165:7;2161:23;2157:32;2154:52;;;2202:1;2199;2192:12;2154:52;-1:-1:-1;2247:23:25;;2074:226;-1:-1:-1;2074:226:25:o;2736:466::-;2813:6;2821;2829;2882:2;2870:9;2861:7;2857:23;2853:32;2850:52;;;2898:1;2895;2888:12;2850:52;-1:-1:-1;;2943:23:25;;;3063:2;3048:18;;3035:32;;-1:-1:-1;3166:2:25;3151:18;;;3138:32;;2736:466;-1:-1:-1;2736:466:25:o;3207:289::-;3249:3;3287:5;3281:12;3314:6;3309:3;3302:19;3370:6;3363:4;3356:5;3352:16;3345:4;3340:3;3336:14;3330:47;3422:1;3415:4;3406:6;3401:3;3397:16;3393:27;3386:38;3485:4;3478:2;3474:7;3469:2;3461:6;3457:15;3453:29;3448:3;3444:39;3440:50;3433:57;;;3207:289;;;;:::o;3501:455::-;3736:6;3729:14;3722:22;3711:9;3704:41;3795:6;3788:14;3781:22;3776:2;3765:9;3761:18;3754:50;3840:6;3835:2;3824:9;3820:18;3813:34;3883:3;3878:2;3867:9;3863:18;3856:31;3685:4;3904:46;3945:3;3934:9;3930:19;3922:6;3904:46;:::i;:::-;3896:54;3501:455;-1:-1:-1;;;;;;3501:455:25:o;3961:380::-;4040:1;4036:12;;;;4083;;;4104:61;;4158:4;4150:6;4146:17;4136:27;;4104:61;4211:2;4203:6;4200:14;4180:18;4177:38;4174:161;;4257:10;4252:3;4248:20;4245:1;4238:31;4292:4;4289:1;4282:15;4320:4;4317:1;4310:15;4174:161;;3961:380;;;:::o;4472:518::-;4574:2;4569:3;4566:11;4563:421;;;4610:5;4607:1;4600:16;4654:4;4651:1;4641:18;4724:2;4712:10;4708:19;4705:1;4701:27;4695:4;4691:38;4760:4;4748:10;4745:20;4742:47;;;-1:-1:-1;4783:4:25;4742:47;4838:2;4833:3;4829:12;4826:1;4822:20;4816:4;4812:31;4802:41;;4893:81;4911:2;4904:5;4901:13;4893:81;;;4970:1;4956:16;;4937:1;4926:13;4893:81;;;4897:3;;4563:421;4472:518;;;:::o;5166:1299::-;5292:3;5286:10;5319:18;5311:6;5308:30;5305:56;;;5341:18;;:::i;:::-;5370:97;5460:6;5420:38;5452:4;5446:11;5420:38;:::i;:::-;5414:4;5370:97;:::i;:::-;5516:4;5547:2;5536:14;;5564:1;5559:649;;;;6252:1;6269:6;6266:89;;;-1:-1:-1;6321:19:25;;;6315:26;6266:89;-1:-1:-1;;5123:1:25;5119:11;;;5115:24;5111:29;5101:40;5147:1;5143:11;;;5098:57;6368:81;;5529:930;;5559:649;4419:1;4412:14;;;4456:4;4443:18;;-1:-1:-1;;5595:20:25;;;5713:222;5727:7;5724:1;5721:14;5713:222;;;5809:19;;;5803:26;5788:42;;5916:4;5901:20;;;;5869:1;5857:14;;;;5743:12;5713:222;;;5717:3;5963:6;5954:7;5951:19;5948:201;;;6024:19;;;6018:26;-1:-1:-1;;6107:1:25;6103:14;;;6119:3;6099:24;6095:37;6091:42;6076:58;6061:74;;5948:201;-1:-1:-1;;;;6195:1:25;6179:14;;;6175:22;6162:36;;-1:-1:-1;5166:1299:25:o;6470:301::-;6655:6;6648:14;6641:22;6630:9;6623:41;6700:2;6695;6684:9;6680:18;6673:30;6604:4;6720:45;6761:2;6750:9;6746:18;6738:6;6720:45;:::i;:::-;6712:53;6470:301;-1:-1:-1;;;;6470:301:25:o;7592:265::-;7665:9;;;7696;;7713:15;;;7707:22;;7693:37;7683:168;;7773:10;7768:3;7764:20;7761:1;7754:31;7808:4;7805:1;7798:15;7836:4;7833:1;7826:15;7683:168;7592:265;;;;:::o;7862:217::-;7902:1;7928;7918:132;;7972:10;7967:3;7963:20;7960:1;7953:31;8007:4;8004:1;7997:15;8035:4;8032:1;8025:15;7918:132;-1:-1:-1;8064:9:25;;7862:217::o","linkReferences":{}},"methodIdentifiers":{"assetScreening(address)":"e25756bd","getAssetScreening(address)":"fece5c35","maxDebtRatio()":"79f74e9e","maxInterestRatio()":"71add9b8","owner()":"8da5cb5b","permitAsset(address)":"4edcf3e4","prohibitAsset(address)":"fc4a5e0a","prohibitedAssets(address)":"069d4511","renounceOwnership()":"715018a6","screenAsset(address,bool,string)":"0f413c03","setMaxDebtRatio(uint256)":"7559aec3","setMaxInterestRatio(uint256)":"bc6384d0","setShariaBoard(address)":"8112555d","shariaBoard()":"a2317b27","transferOwnership(address)":"f2fde38b","validateAsset(address)":"9240d299","validateFinancialRatios(uint256,uint256,uint256)":"dfc8eb4d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_shariaBoard\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AssetIsProhibited\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssetNotScreened\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RatioExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"AssetPermitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"AssetProhibited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"compliant\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"AssetScreened\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ratioType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"RatioUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"assetScreening\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"screened\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"compliant\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"screenedAt\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getAssetScreening\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"screened\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"compliant\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"screenedAt\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxDebtRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxInterestRatio\",\"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\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"permitAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"prohibitAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"prohibitedAssets\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"compliant\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"screenAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"setMaxDebtRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"setMaxInterestRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_shariaBoard\",\"type\":\"address\"}],\"name\":\"setShariaBoard\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"shariaBoard\",\"outputs\":[{\"internalType\":\"contract ISCS5\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"validateAsset\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalAssets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestIncome\",\"type\":\"uint256\"}],\"name\":\"validateFinancialRatios\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Integrates with ShariaBoard for compliance oversight\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"AAOIFIGovernance\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"AAOIFI Governance Standard #3 compliance layer\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"evm/src/SCS5/AAOIFIGovernance.sol\":\"AAOIFIGovernance\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/=evm/lib/openzeppelin-contracts/\",\":ds-test/=evm/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=evm/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=evm/lib/forge-std/src/\",\":halmos-cheatcodes/=evm/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=evm/lib/openzeppelin-contracts/\"]},\"sources\":{\"evm/lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"evm/lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"evm/src/SCS5/AAOIFIGovernance.sol\":{\"keccak256\":\"0xc024d00ebace4f654f9a3019e8a00d27e8c189909141679e01674fc958108337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24aa0c4d684398a56e11ea167e15c9574b8c105660ebb07bc295106aa069edc1\",\"dweb:/ipfs/QmZEr9gFsuMbmscn2cE7uwYdBJEk1nYXqssmjmzJ3geUjp\"]},\"evm/src/interfaces/ISCS5.sol\":{\"keccak256\":\"0x50749f04680b5128eda39d8eba81b5dd541915e32d93a369d0da780534e0595d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f2b78654a9554d2948c549efa0ee25591b6bab597cf17ff51eddca23897aac8\",\"dweb:/ipfs/QmeSQ8bBXwgHoLqaFoSqeMMoHUgTP1BKgGXWNSLx4Dm21g\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_shariaBoard","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AssetIsProhibited"},{"inputs":[],"type":"error","name":"AssetNotScreened"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"RatioExceeded"},{"inputs":[{"internalType":"address","name":"asset","type":"address","indexed":true}],"type":"event","name":"AssetPermitted","anonymous":false},{"inputs":[{"internalType":"address","name":"asset","type":"address","indexed":true}],"type":"event","name":"AssetProhibited","anonymous":false},{"inputs":[{"internalType":"address","name":"asset","type":"address","indexed":true},{"internalType":"bool","name":"compliant","type":"bool","indexed":false},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"AssetScreened","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"string","name":"ratioType","type":"string","indexed":false},{"internalType":"uint256","name":"newValue","type":"uint256","indexed":false}],"type":"event","name":"RatioUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"assetScreening","outputs":[{"internalType":"bool","name":"screened","type":"bool"},{"internalType":"bool","name":"compliant","type":"bool"},{"internalType":"uint256","name":"screenedAt","type":"uint256"},{"internalType":"string","name":"reason","type":"string"}]},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"stateMutability":"view","type":"function","name":"getAssetScreening","outputs":[{"internalType":"bool","name":"screened","type":"bool"},{"internalType":"bool","name":"compliant","type":"bool"},{"internalType":"uint256","name":"screenedAt","type":"uint256"},{"internalType":"string","name":"reason","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxDebtRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxInterestRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"permitAsset"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prohibitAsset"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"prohibitedAssets","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"bool","name":"compliant","type":"bool"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"screenAsset"},{"inputs":[{"internalType":"uint256","name":"ratio","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxDebtRatio"},{"inputs":[{"internalType":"uint256","name":"ratio","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxInterestRatio"},{"inputs":[{"internalType":"address","name":"_shariaBoard","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setShariaBoard"},{"inputs":[],"stateMutability":"view","type":"function","name":"shariaBoard","outputs":[{"internalType":"contract ISCS5","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"stateMutability":"view","type":"function","name":"validateAsset","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"totalAssets","type":"uint256"},{"internalType":"uint256","name":"totalDebt","type":"uint256"},{"internalType":"uint256","name":"interestIncome","type":"uint256"}],"stateMutability":"view","type":"function","name":"validateFinancialRatios","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=evm/lib/openzeppelin-contracts/","ds-test/=evm/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=evm/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=evm/lib/forge-std/src/","halmos-cheatcodes/=evm/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=evm/lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"evm/src/SCS5/AAOIFIGovernance.sol":"AAOIFIGovernance"},"evmVersion":"cancun","libraries":{}},"sources":{"evm/lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"evm/lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"evm/src/SCS5/AAOIFIGovernance.sol":{"keccak256":"0xc024d00ebace4f654f9a3019e8a00d27e8c189909141679e01674fc958108337","urls":["bzz-raw://24aa0c4d684398a56e11ea167e15c9574b8c105660ebb07bc295106aa069edc1","dweb:/ipfs/QmZEr9gFsuMbmscn2cE7uwYdBJEk1nYXqssmjmzJ3geUjp"],"license":"MIT"},"evm/src/interfaces/ISCS5.sol":{"keccak256":"0x50749f04680b5128eda39d8eba81b5dd541915e32d93a369d0da780534e0595d","urls":["bzz-raw://3f2b78654a9554d2948c549efa0ee25591b6bab597cf17ff51eddca23897aac8","dweb:/ipfs/QmeSQ8bBXwgHoLqaFoSqeMMoHUgTP1BKgGXWNSLx4Dm21g"],"license":"MIT"}},"version":1},"id":21}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"abi":[{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208a2a63c6db5005250d2c19f95d32c6aa928b1e6e17a35c4ad2e952b1ff0d662464736f6c634300081a0033","sourceMap":"233:5799:29:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;233:5799:29;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208a2a63c6db5005250d2c19f95d32c6aa928b1e6e17a35c4ad2e952b1ff0d662464736f6c634300081a0033","sourceMap":"233:5799:29:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"evm/lib/openzeppelin-contracts/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/=evm/lib/openzeppelin-contracts/\",\":ds-test/=evm/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=evm/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=evm/lib/forge-std/src/\",\":halmos-cheatcodes/=evm/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=evm/lib/openzeppelin-contracts/\"]},\"sources\":{\"evm/lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"evm/lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=evm/lib/openzeppelin-contracts/","ds-test/=evm/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=evm/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=evm/lib/forge-std/src/","halmos-cheatcodes/=evm/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=evm/lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"evm/lib/openzeppelin-contracts/contracts/utils/Address.sol":"Address"},"evmVersion":"cancun","libraries":{}},"sources":{"evm/lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"evm/lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"}},"version":1},"id":29}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"CONSOLE\":{\"details\":\"console.sol and console2.sol work by executing a staticcall to this address. Calculated as `address(uint160(uint88(bytes11(\\\"console.log\\\"))))`.\"},\"CREATE2_FACTORY\":{\"details\":\"Used when deploying with create2. Taken from https://github.com/Arachnid/deterministic-deployment-proxy.\"},\"DEFAULT_SENDER\":{\"details\":\"The default address for tx.origin and msg.sender. Calculated as `address(uint160(uint256(keccak256(\\\"foundry default caller\\\"))))`.\"},\"DEFAULT_TEST_CONTRACT\":{\"details\":\"The address of the first contract `CREATE`d by a running test contract. When running tests, each test contract is `CREATE`d by `DEFAULT_SENDER` with nonce 1. Calculated as `VM.computeCreateAddress(VM.computeCreateAddress(DEFAULT_SENDER, 1), 1)`.\"},\"MULTICALL3_ADDRESS\":{\"details\":\"Deterministic deployment address of the Multicall3 contract. Taken from https://www.multicall3.com.\"},\"SECP256K1_ORDER\":{\"details\":\"The order of the secp256k1 curve.\"},\"VM_ADDRESS\":{\"details\":\"Cheat code address. Calculated as `address(uint160(uint256(keccak256(\\\"hevm cheat code\\\"))))`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"evm/lib/forge-std/src/Base.sol\":\"CommonBase\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/=evm/lib/openzeppelin-contracts/\",\":ds-test/=evm/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=evm/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=evm/lib/forge-std/src/\",\":halmos-cheatcodes/=evm/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=evm/lib/openzeppelin-contracts/\"]},\"sources\":{\"evm/lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x926f1c9907b7dadb56dc920ae80dc473070989ab1f09b63e207ddc2d37110faa\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://8a470cde3eb7aa7ff3ac0d71c6b8e06f394609b937a7edbc7b5fdfab18c2b710\",\"dweb:/ipfs/QmUgmpmVzLXfmxhmnPjx9TUc2WdgNdBuucFZfh6fSciaFp\"]},\"evm/lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x85290fc3df17c1c59b86bd3479d9619f9b99e97faeb30f617bced925a0a49bf0\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b09672fe62652e01d4e8aa951cb4416c0ad4d2b8f8541ef31e28fd1d3bac87d7\",\"dweb:/ipfs/QmT17qtKCY83ct3AqqNYotHpr1feUDCZnKsis4Qgt6cBBX\"]},\"evm/lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x11aff2ee8ef31d9f95853b77f806d89c0028a4414969bd5f8d38d22b37f50f72\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://e4b069af93c08b8d4915c3205260c323788dff362aa46fe83c041c3d2c6f2cb4\",\"dweb:/ipfs/QmcYnpAfmbiLxFtPRAFSH8oUQXvsDfGrQXQ2A9MtEretba\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=evm/lib/openzeppelin-contracts/","ds-test/=evm/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=evm/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=evm/lib/forge-std/src/","halmos-cheatcodes/=evm/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=evm/lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"evm/lib/forge-std/src/Base.sol":"CommonBase"},"evmVersion":"cancun","libraries":{}},"sources":{"evm/lib/forge-std/src/Base.sol":{"keccak256":"0x926f1c9907b7dadb56dc920ae80dc473070989ab1f09b63e207ddc2d37110faa","urls":["bzz-raw://8a470cde3eb7aa7ff3ac0d71c6b8e06f394609b937a7edbc7b5fdfab18c2b710","dweb:/ipfs/QmUgmpmVzLXfmxhmnPjx9TUc2WdgNdBuucFZfh6fSciaFp"],"license":"MIT OR Apache-2.0"},"evm/lib/forge-std/src/StdStorage.sol":{"keccak256":"0x85290fc3df17c1c59b86bd3479d9619f9b99e97faeb30f617bced925a0a49bf0","urls":["bzz-raw://b09672fe62652e01d4e8aa951cb4416c0ad4d2b8f8541ef31e28fd1d3bac87d7","dweb:/ipfs/QmT17qtKCY83ct3AqqNYotHpr1feUDCZnKsis4Qgt6cBBX"],"license":"MIT OR Apache-2.0"},"evm/lib/forge-std/src/Vm.sol":{"keccak256":"0x11aff2ee8ef31d9f95853b77f806d89c0028a4414969bd5f8d38d22b37f50f72","urls":["bzz-raw://e4b069af93c08b8d4915c3205260c323788dff362aa46fe83c041c3d2c6f2cb4","dweb:/ipfs/QmcYnpAfmbiLxFtPRAFSH8oUQXvsDfGrQXQ2A9MtEretba"],"license":"MIT OR Apache-2.0"}},"version":1},"id":0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"evm/lib/forge-std/src/Base.sol\":\"ScriptBase\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/=evm/lib/openzeppelin-contracts/\",\":ds-test/=evm/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=evm/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=evm/lib/forge-std/src/\",\":halmos-cheatcodes/=evm/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=evm/lib/openzeppelin-contracts/\"]},\"sources\":{\"evm/lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x926f1c9907b7dadb56dc920ae80dc473070989ab1f09b63e207ddc2d37110faa\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://8a470cde3eb7aa7ff3ac0d71c6b8e06f394609b937a7edbc7b5fdfab18c2b710\",\"dweb:/ipfs/QmUgmpmVzLXfmxhmnPjx9TUc2WdgNdBuucFZfh6fSciaFp\"]},\"evm/lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x85290fc3df17c1c59b86bd3479d9619f9b99e97faeb30f617bced925a0a49bf0\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b09672fe62652e01d4e8aa951cb4416c0ad4d2b8f8541ef31e28fd1d3bac87d7\",\"dweb:/ipfs/QmT17qtKCY83ct3AqqNYotHpr1feUDCZnKsis4Qgt6cBBX\"]},\"evm/lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x11aff2ee8ef31d9f95853b77f806d89c0028a4414969bd5f8d38d22b37f50f72\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://e4b069af93c08b8d4915c3205260c323788dff362aa46fe83c041c3d2c6f2cb4\",\"dweb:/ipfs/QmcYnpAfmbiLxFtPRAFSH8oUQXvsDfGrQXQ2A9MtEretba\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=evm/lib/openzeppelin-contracts/","ds-test/=evm/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=evm/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=evm/lib/forge-std/src/","halmos-cheatcodes/=evm/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=evm/lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"evm/lib/forge-std/src/Base.sol":"ScriptBase"},"evmVersion":"cancun","libraries":{}},"sources":{"evm/lib/forge-std/src/Base.sol":{"keccak256":"0x926f1c9907b7dadb56dc920ae80dc473070989ab1f09b63e207ddc2d37110faa","urls":["bzz-raw://8a470cde3eb7aa7ff3ac0d71c6b8e06f394609b937a7edbc7b5fdfab18c2b710","dweb:/ipfs/QmUgmpmVzLXfmxhmnPjx9TUc2WdgNdBuucFZfh6fSciaFp"],"license":"MIT OR Apache-2.0"},"evm/lib/forge-std/src/StdStorage.sol":{"keccak256":"0x85290fc3df17c1c59b86bd3479d9619f9b99e97faeb30f617bced925a0a49bf0","urls":["bzz-raw://b09672fe62652e01d4e8aa951cb4416c0ad4d2b8f8541ef31e28fd1d3bac87d7","dweb:/ipfs/QmT17qtKCY83ct3AqqNYotHpr1feUDCZnKsis4Qgt6cBBX"],"license":"MIT OR Apache-2.0"},"evm/lib/forge-std/src/Vm.sol":{"keccak256":"0x11aff2ee8ef31d9f95853b77f806d89c0028a4414969bd5f8d38d22b37f50f72","urls":["bzz-raw://e4b069af93c08b8d4915c3205260c323788dff362aa46fe83c041c3d2c6f2cb4","dweb:/ipfs/QmcYnpAfmbiLxFtPRAFSH8oUQXvsDfGrQXQ2A9MtEretba"],"license":"MIT OR Apache-2.0"}},"version":1},"id":0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"evm/lib/forge-std/src/Base.sol\":\"TestBase\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/=evm/lib/openzeppelin-contracts/\",\":ds-test/=evm/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=evm/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=evm/lib/forge-std/src/\",\":halmos-cheatcodes/=evm/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=evm/lib/openzeppelin-contracts/\"]},\"sources\":{\"evm/lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x926f1c9907b7dadb56dc920ae80dc473070989ab1f09b63e207ddc2d37110faa\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://8a470cde3eb7aa7ff3ac0d71c6b8e06f394609b937a7edbc7b5fdfab18c2b710\",\"dweb:/ipfs/QmUgmpmVzLXfmxhmnPjx9TUc2WdgNdBuucFZfh6fSciaFp\"]},\"evm/lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x85290fc3df17c1c59b86bd3479d9619f9b99e97faeb30f617bced925a0a49bf0\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b09672fe62652e01d4e8aa951cb4416c0ad4d2b8f8541ef31e28fd1d3bac87d7\",\"dweb:/ipfs/QmT17qtKCY83ct3AqqNYotHpr1feUDCZnKsis4Qgt6cBBX\"]},\"evm/lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x11aff2ee8ef31d9f95853b77f806d89c0028a4414969bd5f8d38d22b37f50f72\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://e4b069af93c08b8d4915c3205260c323788dff362aa46fe83c041c3d2c6f2cb4\",\"dweb:/ipfs/QmcYnpAfmbiLxFtPRAFSH8oUQXvsDfGrQXQ2A9MtEretba\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=evm/lib/openzeppelin-contracts/","ds-test/=evm/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=evm/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=evm/lib/forge-std/src/","halmos-cheatcodes/=evm/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=evm/lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"evm/lib/forge-std/src/Base.sol":"TestBase"},"evmVersion":"cancun","libraries":{}},"sources":{"evm/lib/forge-std/src/Base.sol":{"keccak256":"0x926f1c9907b7dadb56dc920ae80dc473070989ab1f09b63e207ddc2d37110faa","urls":["bzz-raw://8a470cde3eb7aa7ff3ac0d71c6b8e06f394609b937a7edbc7b5fdfab18c2b710","dweb:/ipfs/QmUgmpmVzLXfmxhmnPjx9TUc2WdgNdBuucFZfh6fSciaFp"],"license":"MIT OR Apache-2.0"},"evm/lib/forge-std/src/StdStorage.sol":{"keccak256":"0x85290fc3df17c1c59b86bd3479d9619f9b99e97faeb30f617bced925a0a49bf0","urls":["bzz-raw://b09672fe62652e01d4e8aa951cb4416c0ad4d2b8f8541ef31e28fd1d3bac87d7","dweb:/ipfs/QmT17qtKCY83ct3AqqNYotHpr1feUDCZnKsis4Qgt6cBBX"],"license":"MIT OR Apache-2.0"},"evm/lib/forge-std/src/Vm.sol":{"keccak256":"0x11aff2ee8ef31d9f95853b77f806d89c0028a4414969bd5f8d38d22b37f50f72","urls":["bzz-raw://e4b069af93c08b8d4915c3205260c323788dff362aa46fe83c041c3d2c6f2cb4","dweb:/ipfs/QmcYnpAfmbiLxFtPRAFSH8oUQXvsDfGrQXQ2A9MtEretba"],"license":"MIT OR Apache-2.0"}},"version":1},"id":0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"evm/lib/openzeppelin-contracts/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/=evm/lib/openzeppelin-contracts/\",\":ds-test/=evm/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=evm/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=evm/lib/openzeppelin-contracts/lib/forge-std/src/\",\":halmos-cheatcodes/=evm/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=evm/lib/openzeppelin-contracts/\"]},\"sources\":{\"evm/lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=evm/lib/openzeppelin-contracts/","ds-test/=evm/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=evm/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=evm/lib/openzeppelin-contracts/lib/forge-std/src/","halmos-cheatcodes/=evm/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=evm/lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"evm/lib/openzeppelin-contracts/contracts/utils/Context.sol":"Context"},"evmVersion":"cancun","libraries":{}},"sources":{"evm/lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":4}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"evm/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/=evm/lib/openzeppelin-contracts/\",\":ds-test/=evm/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=evm/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=evm/lib/forge-std/src/\",\":halmos-cheatcodes/=evm/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=evm/lib/openzeppelin-contracts/\"]},\"sources\":{\"evm/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"evm/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xbf61ab2ae1d575a17ea58fbb99ca232baddcc4e0eeea180e84cbc74b0c348b31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4e0968705bad99747a8e5288aa008678c2be2f471f919dce3925a3cc4f1dee09\",\"dweb:/ipfs/QmbAFnCQfo4tw6ssfQSjhA5LzwHWNNryXN8bX7ty8jiqqn\"]},\"evm/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"evm/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"evm/lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"constructor":{"details":"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=evm/lib/openzeppelin-contracts/","ds-test/=evm/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=evm/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=evm/lib/forge-std/src/","halmos-cheatcodes/=evm/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=evm/lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"evm/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":"ERC20"},"evmVersion":"cancun","libraries":{}},"sources":{"evm/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"evm/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xbf61ab2ae1d575a17ea58fbb99ca232baddcc4e0eeea180e84cbc74b0c348b31","urls":["bzz-raw://4e0968705bad99747a8e5288aa008678c2be2f471f919dce3925a3cc4f1dee09","dweb:/ipfs/QmbAFnCQfo4tw6ssfQSjhA5LzwHWNNryXN8bX7ty8jiqqn"],"license":"MIT"},"evm/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"evm/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"evm/lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":25}
|