From e3d595c7e1cce73da354e023da6ada1ffdd2526f Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Tue, 10 Mar 2026 14:16:10 +0100 Subject: [PATCH 1/8] feat(validation): add RuleSpenderWhitelist (+Ownable2Step) with tests, docs, and coverage updates --- AGENTS.md | 5 +- CLAUDE.md | 5 +- README.md | 14 +- .../base/RuleSpenderWhitelistBase.sol | 87 ++++++++++++ .../RuleSpenderWhitelistInvariantStorage.sol | 19 +++ .../deployment/RuleSpenderWhitelist.sol | 47 +++++++ .../RuleSpenderWhitelistOwnable2Step.sol | 35 +++++ .../RuleSpenderWhitelistOwnable2Step.t.sol | 70 ++++++++++ .../RuleSpenderWhitelist.t.sol | 128 ++++++++++++++++++ 9 files changed, 404 insertions(+), 6 deletions(-) create mode 100644 src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol create mode 100644 src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol create mode 100644 src/rules/validation/deployment/RuleSpenderWhitelist.sol create mode 100644 src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol create mode 100644 test/RuleSpenderWhitelist/Ownable/RuleSpenderWhitelistOwnable2Step.t.sol create mode 100644 test/RuleSpenderWhitelist/RuleSpenderWhitelist.t.sol diff --git a/AGENTS.md b/AGENTS.md index 2db4e2a..a3de691 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,7 +1,7 @@ # Project Guide ## Purpose -Modular compliance-rule library for CMTAT / ERC-3643 security tokens. Each rule enforces a transfer restriction (whitelist, blacklist, sanctions, max supply, identity, conditional approval) and can be used standalone or composed via a `RuleEngine`. +Modular compliance-rule library for CMTAT / ERC-3643 security tokens. Each rule enforces a transfer restriction (whitelist, spender whitelist, blacklist, sanctions, max supply, identity, conditional approval) and can be used standalone or composed via a `RuleEngine`. ## Key Directories | Path | Description | @@ -23,6 +23,7 @@ Modular compliance-rule library for CMTAT / ERC-3643 security tokens. Each rule | `RuleSanctionsList` | Block sanctioned addresses via Chainalysis oracle | | `RuleMaxTotalSupply` | Cap minting so total supply never exceeds a maximum | | `RuleIdentityRegistry` | Check ERC-3643 identity registry for participant verification | +| `RuleSpenderWhitelist` / `RuleSpenderWhitelistOwnable2Step` | Allow `transferFrom` only when spender is whitelisted; direct transfers are always allowed | | `RuleERC2980` | ERC-2980 Swiss Compliant rule: whitelist (recipient-only) + frozenlist (blocks sender and recipient); frozenlist takes priority | | `RuleERC2980Ownable2Step` | Ownable2Step variant of RuleERC2980 | | `RuleConditionalTransferLight` | Require operator approval before each transfer | @@ -57,6 +58,7 @@ Foundry config: `foundry.toml` (solc 0.8.34, EVM prague, optimizer 200 runs). | RuleMaxTotalSupply | 50 | | RuleIdentityRegistry | 55–57 | | RuleERC2980 | 60–63 | +| RuleSpenderWhitelist | 66 | ## Conventions - Each rule has an `InvariantStorage` abstract contract holding its constants, custom errors, and events. @@ -71,3 +73,4 @@ Foundry config: `foundry.toml` (solc 0.8.34, EVM prague, optimizer 200 runs). - Use `require(condition, CustomError(...))` for custom errors; avoid direct `revert CustomError(...)`. - `AGENTS.md` and `CLAUDE.md` are identical — always update both together. - Always update README.md with the latest change +- New rule or features implemented: create/update technical documentation in `doc/technical`, update README, create/update test (target: 100% of code coverage), update CHANGELOG.md. Code coverage, run `forge coverage --report summary` diff --git a/CLAUDE.md b/CLAUDE.md index 77711c0..2694617 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,7 +1,7 @@ # Project Guide ## Purpose -Modular compliance-rule library for CMTAT / ERC-3643 security tokens. Each rule enforces a transfer restriction (whitelist, blacklist, sanctions, max supply, identity, conditional approval) and can be used standalone or composed via a `RuleEngine`. +Modular compliance-rule library for CMTAT / ERC-3643 security tokens. Each rule enforces a transfer restriction (whitelist, spender whitelist, blacklist, sanctions, max supply, identity, conditional approval) and can be used standalone or composed via a `RuleEngine`. ## Key Directories | Path | Description | @@ -23,6 +23,7 @@ Modular compliance-rule library for CMTAT / ERC-3643 security tokens. Each rule | `RuleSanctionsList` | Block sanctioned addresses via Chainalysis oracle | | `RuleMaxTotalSupply` | Cap minting so total supply never exceeds a maximum | | `RuleIdentityRegistry` | Check ERC-3643 identity registry for participant verification | +| `RuleSpenderWhitelist` / `RuleSpenderWhitelistOwnable2Step` | Allow `transferFrom` only when spender is whitelisted; direct transfers are always allowed | | `RuleERC2980` | ERC-2980 Swiss Compliant rule: whitelist (recipient-only) + frozenlist (blocks sender and recipient); frozenlist takes priority | | `RuleERC2980Ownable2Step` | Ownable2Step variant of RuleERC2980 | | `RuleConditionalTransferLight` | Require operator approval before each transfer | @@ -57,6 +58,7 @@ Foundry config: `foundry.toml` (solc 0.8.34, EVM prague, optimizer 200 runs). | RuleMaxTotalSupply | 50 | | RuleIdentityRegistry | 55–57 | | RuleERC2980 | 60–63 | +| RuleSpenderWhitelist | 66 | ## Conventions - Each rule has an `InvariantStorage` abstract contract holding its constants, custom errors, and events. @@ -70,3 +72,4 @@ Foundry config: `foundry.toml` (solc 0.8.34, EVM prague, optimizer 200 runs). - Use `require(condition, CustomError(...))` for custom errors; avoid direct `revert CustomError(...)`. - `AGENTS.md` and `CLAUDE.md` are identical — always update both together. - Always update README.md with the latest change +- New rule or features implemented: create/update technical documentation in `doc/technical`, update README, create/update test (target: 100% of code coverage), update CHANGELOG.md. Code coverage, run `forge coverage --report summary` diff --git a/README.md b/README.md index 5122c55..ddfe227 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Each rule can be used **standalone**, directly plugged into a CMTAT token, **or* **Status:** *Repository under active development* -Latest update: completed 100% coverage across `src/` contracts, including direct coverage for `RuleAddressSet.contains(address)`, mint/burn-path coverage for `RuleConditionalTransferLightBase.detectTransferRestriction(...)`, and removal of an unreachable duplicate admin-zero check in `RuleConditionalTransferLight` constructor. +Latest update: added `RuleSpenderWhitelist` (+ `Ownable2Step` variant), technical documentation, and tests; `src/` contract coverage remains at 100%. ## Schema @@ -169,7 +169,9 @@ Here the list of codes used by the different rules | | CODE_ADDRESS_TO_IS_FROZEN | 61 | | | CODE_ADDRESS_SPENDER_IS_FROZEN | 62 | | | CODE_ADDRESS_TO_NOT_WHITELISTED | 63 | -| | Reserved slot | 64-65 | +| | Reserved slot | 64-65 | +| RuleSpenderWhitelist | CODE_ADDRESS_SPENDER_NOT_WHITELISTED | 66 | +| | Reserved slot | 67-70 | Note: @@ -304,7 +306,7 @@ Validation rules only read blockchain state — they never modify it during a tr All validation rules implement `IRuleEngine` to be usable both standalone (plugged directly into CMTAT) and via the RuleEngine. -Available validation rules: `RuleWhitelist`, `RuleWhitelistWrapper`, `RuleBlacklist`, `RuleSanctionsList`, `RuleMaxTotalSupply`, `RuleIdentityRegistry`, `RuleERC2980`. +Available validation rules: `RuleWhitelist`, `RuleWhitelistWrapper`, `RuleSpenderWhitelist`, `RuleBlacklist`, `RuleSanctionsList`, `RuleMaxTotalSupply`, `RuleIdentityRegistry`, `RuleERC2980`. A community made project, [RuleSelf](https://github.com/rya-sge/ruleself), which uses [Self](https://self.xyz), a zero-knowledge identity is also available but is not developed or maintained by CMTA. @@ -342,6 +344,7 @@ Several rules are available in multiple access-control variants. Use the simples - Examples: - Whitelist - Whitelist Wrapper + - Spender Whitelist - Blacklist - Sanction list (Chainalysis) - ERC-2980 (whitelist + frozenlist) @@ -364,6 +367,7 @@ Several rules are available in multiple access-control variants. Use the simples | RuleSanctionList | Read-Only | | | | The purpose of this contract is to use the oracle contract from [Chainalysis](https://go.chainalysis.com/chainalysis-oracle-docs.html) to forbid transfer from/to an address included in a sanctions designation (US, EU, or UN). | | RuleMaxTotalSupply | Read-Only | | | | This rule limits minting so that the total supply never exceeds a configured maximum. | | RuleIdentityRegistry | Read-Only | | | | This rule checks the ERC-3643 Identity Registry for transfer participants when configured. | +| RuleSpenderWhitelist | Read-Only | | | | This rule blocks `transferFrom` when the spender is not in the whitelist. Direct transfers are always allowed. | | RuleERC2980 | Read-Only | | | | ERC-2980 Swiss Compliant rule combining a whitelist (recipient-only) and a frozenlist (blocks both sender and recipient). Frozenlist takes priority over whitelist. | | RuleConditionalTransferLight | Read-Write | | | | This rule requires that transfers have to be approved by an operator before being executed. Each approval is consumed once and the same transfer can be approved multiple times. | | [RuleConditionalTransfer](https://github.com/CMTA/RuleConditionalTransfer) (external) | Read-Write | | |
(experimental rule) | Full-featured approval-based transfer rule implementing Swiss law *Vinkulierung*. Supports automatic approval after three months, automatic transfer execution, and a conditional whitelist for address pairs that bypass approval. Maintained in a separate repository. | @@ -383,6 +387,7 @@ Detailed technical documentation for each rule is available in [`doc/technical/` | RuleSanctionsList | [RuleSanctionList.md](./doc/technical/RuleSanctionList.md) | | RuleMaxTotalSupply | [RuleMaxTotalSupply.md](./doc/technical/RuleMaxTotalSupply.md) | | RuleIdentityRegistry | [RuleIdentityRegistry.md](./doc/technical/RuleIdentityRegistry.md) | +| RuleSpenderWhitelist | [RuleSpenderWhitelist.md](./doc/technical/RuleSpenderWhitelist.md) | | RuleERC2980 | [RuleERC2980.md](./doc/technical/RuleERC2980.md) | | RuleConditionalTransferLight | [RuleConditionalTransferLight.md](./doc/technical/RuleConditionalTransferLight.md) | @@ -395,6 +400,7 @@ Detailed technical documentation for each rule is available in [`doc/technical/` - `RuleMaxTotalSupply` trusts the configured `tokenContract` to return an accurate `totalSupply()`. - `RuleMaxTotalSupply` does not allow clearing the token contract; disable the rule by removing it from the RuleEngine or token. - `RuleWhitelistWrapper` requires child rules that implement `IAddressList`. Gas cost grows with the number of rules, and a wrapper with zero rules will reject all transfers. +- `RuleSpenderWhitelist` only checks the spender in `transferFrom`; direct transfers always pass this rule. - Read-only rules still implement `transferred()` to comply with ERC-3643 and RuleEngine interfaces, but they do not change state. - `RuleConditionalTransferLight` approvals are keyed by `(from, to, value)` and are not nonce-based. - `RuleConditionalTransferLight` provides `approveAndTransferIfAllowed` to approve and immediately execute `transferFrom` when this rule has allowance; it assumes the token calls back `transferred()` during the transfer. @@ -409,7 +415,7 @@ Detailed technical documentation for each rule is available in [`doc/technical/` ### Read-only (validation) rule -Currently, there are seven validation rules: whitelist, whitelistWrapper, blacklist, sanctionlist, max total supply, identity registry, and ERC-2980. +Currently, there are eight validation rules: whitelist, whitelistWrapper, spender whitelist, blacklist, sanctionlist, max total supply, identity registry, and ERC-2980. #### Whitelist diff --git a/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol b/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol new file mode 100644 index 0000000..4728ad0 --- /dev/null +++ b/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol @@ -0,0 +1,87 @@ +// SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +import {RuleAddressSet} from "../RuleAddressSet/RuleAddressSet.sol"; +import {RuleNFTAdapter} from "../core/RuleNFTAdapter.sol"; +import {RuleSpenderWhitelistInvariantStorage} from "../invariant/RuleSpenderWhitelistInvariantStorage.sol"; +import {IERC1404, IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol"; +import {IERC3643IComplianceContract} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol"; +import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol"; + +/** + * @title RuleSpenderWhitelistBase + * @notice Restricts `transferFrom`-style flows to whitelisted spenders only. + * @dev Direct transfers (`transferred(from,to,value)`) are intentionally no-op. + */ +abstract contract RuleSpenderWhitelistBase is RuleAddressSet, RuleNFTAdapter, RuleSpenderWhitelistInvariantStorage { + constructor(address forwarderIrrevocable) RuleAddressSet(forwarderIrrevocable) {} + + function _detectTransferRestriction(address, address, uint256) + internal + pure + virtual + override + returns (uint8) + { + return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + } + + function _detectTransferRestrictionFrom(address spender, address, address, uint256) + internal + view + virtual + override + returns (uint8) + { + if (spender != address(0) && !_isAddressListed(spender)) { + return CODE_ADDRESS_SPENDER_NOT_WHITELISTED; + } + return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + } + + function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool) { + return restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED; + } + + function messageForTransferRestriction(uint8 restrictionCode) + public + pure + override(IERC1404) + returns (string memory) + { + if (restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED) { + return TEXT_ADDRESS_SPENDER_NOT_WHITELISTED; + } + return TEXT_CODE_NOT_FOUND; + } + + /** + * @dev Regular transfers are always accepted by this rule. + */ + function transferred(address, address, uint256) public view override(IERC3643IComplianceContract) {} + + function transferred(address spender, address from, address to, uint256 value) + public + view + override(IRuleEngine) + { + _transferredFrom(spender, from, to, value); + } + + function _transferred(address, address, uint256) internal view virtual override { + // no-op: regular transfers are intentionally ignored by this rule + } + + function _transferredFrom(address spender, address from, address to, uint256 value) + internal + view + virtual + override + { + uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); + require( + code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), + RuleSpenderWhitelist_InvalidTransferFrom(address(this), spender, from, to, value, code) + ); + } +} diff --git a/src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol b/src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol new file mode 100644 index 0000000..c35a85b --- /dev/null +++ b/src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +import {RuleCommonInvariantStorage} from "./RuleCommonInvariantStorage.sol"; + +abstract contract RuleSpenderWhitelistInvariantStorage is RuleCommonInvariantStorage { + // It is very important that each rule uses an unique code + uint8 public constant CODE_ADDRESS_SPENDER_NOT_WHITELISTED = 66; + string constant TEXT_ADDRESS_SPENDER_NOT_WHITELISTED = "SpenderWhitelist: Spender is not whitelisted"; + + error RuleSpenderWhitelist_InvalidTransferFrom( + address ruleEngine, + address spender, + address from, + address to, + uint256 value, + uint8 restrictionCode + ); +} diff --git a/src/rules/validation/deployment/RuleSpenderWhitelist.sol b/src/rules/validation/deployment/RuleSpenderWhitelist.sol new file mode 100644 index 0000000..ee1bb70 --- /dev/null +++ b/src/rules/validation/deployment/RuleSpenderWhitelist.sol @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol"; +import {Context} from "OZ/utils/Context.sol"; +import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol"; +import {RuleSpenderWhitelistBase} from "../abstract/base/RuleSpenderWhitelistBase.sol"; +import {RuleAddressSet} from "../abstract/RuleAddressSet/RuleAddressSet.sol"; +import {RuleTransferValidation} from "../abstract/core/RuleTransferValidation.sol"; + +/** + * @title RuleSpenderWhitelist + * @notice AccessControlEnumerable deployment variant of spender whitelist rule. + */ +contract RuleSpenderWhitelist is RuleSpenderWhitelistBase, AccessControlModuleStandalone { + constructor(address admin, address forwarderIrrevocable) + RuleSpenderWhitelistBase(forwarderIrrevocable) + AccessControlModuleStandalone(admin) + {} + + function supportsInterface(bytes4 interfaceId) + public + view + virtual + override(AccessControlEnumerable, RuleTransferValidation) + returns (bool) + { + return AccessControlEnumerable.supportsInterface(interfaceId) + || RuleTransferValidation.supportsInterface(interfaceId); + } + + function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {} + + function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {} + + function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) { + return super._msgSender(); + } + + function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) { + return super._msgData(); + } + + function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) { + return super._contextSuffixLength(); + } +} diff --git a/src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol b/src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol new file mode 100644 index 0000000..18ab65e --- /dev/null +++ b/src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +import {Ownable} from "OZ/access/Ownable.sol"; +import {Ownable2Step} from "OZ/access/Ownable2Step.sol"; +import {Context} from "OZ/utils/Context.sol"; +import {RuleSpenderWhitelistBase} from "../abstract/base/RuleSpenderWhitelistBase.sol"; +import {RuleAddressSet} from "../abstract/RuleAddressSet/RuleAddressSet.sol"; + +/** + * @title RuleSpenderWhitelistOwnable2Step + * @notice Ownable2Step deployment variant of spender whitelist rule. + */ +contract RuleSpenderWhitelistOwnable2Step is RuleSpenderWhitelistBase, Ownable2Step { + constructor(address owner, address forwarderIrrevocable) + RuleSpenderWhitelistBase(forwarderIrrevocable) + Ownable(owner) + {} + + function _authorizeAddressListAdd() internal view virtual override onlyOwner {} + + function _authorizeAddressListRemove() internal view virtual override onlyOwner {} + + function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) { + return super._msgSender(); + } + + function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) { + return super._msgData(); + } + + function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) { + return super._contextSuffixLength(); + } +} diff --git a/test/RuleSpenderWhitelist/Ownable/RuleSpenderWhitelistOwnable2Step.t.sol b/test/RuleSpenderWhitelist/Ownable/RuleSpenderWhitelistOwnable2Step.t.sol new file mode 100644 index 0000000..6f8a55e --- /dev/null +++ b/test/RuleSpenderWhitelist/Ownable/RuleSpenderWhitelistOwnable2Step.t.sol @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +import {Test} from "forge-std/Test.sol"; +import {HelperContract} from "../../HelperContract.sol"; +import {Ownable} from "OZ/access/Ownable.sol"; +import {RuleSpenderWhitelistOwnable2Step} from "src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol"; + +contract RuleSpenderWhitelistOwnable2StepHarness is RuleSpenderWhitelistOwnable2Step { + constructor(address owner, address forwarderIrrevocable) RuleSpenderWhitelistOwnable2Step(owner, forwarderIrrevocable) {} + + function exposedMsgSender() external view returns (address) { + return _msgSender(); + } + + function exposedMsgData() external view returns (bytes memory) { + return _msgData(); + } + + function exposedContextSuffixLength() external view returns (uint256) { + return _contextSuffixLength(); + } +} + +contract RuleSpenderWhitelistOwnable2StepTest is Test, HelperContract { + RuleSpenderWhitelistOwnable2StepHarness private rule; + + function setUp() public { + rule = new RuleSpenderWhitelistOwnable2StepHarness(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS); + } + + function testOnlyOwnerCanManageList() public { + vm.expectRevert(); + vm.prank(ADDRESS1); + rule.addAddress(ADDRESS3); + + vm.expectRevert(); + vm.prank(ADDRESS1); + rule.removeAddress(ADDRESS3); + + vm.prank(DEFAULT_ADMIN_ADDRESS); + rule.addAddress(ADDRESS3); + assertTrue(rule.isAddressListed(ADDRESS3)); + + vm.prank(DEFAULT_ADMIN_ADDRESS); + rule.removeAddress(ADDRESS3); + assertFalse(rule.isAddressListed(ADDRESS3)); + } + + function testOnlyOwnerCanTransferOwnership() public { + vm.prank(ADDRESS1); + vm.expectRevert(); + rule.transferOwnership(ADDRESS2); + + vm.prank(DEFAULT_ADMIN_ADDRESS); + rule.transferOwnership(ADDRESS2); + assertEq(rule.pendingOwner(), ADDRESS2); + } + + function testMetaTxOverridesAreReachable() public view { + assertEq(rule.exposedMsgSender(), address(this)); + assertEq(rule.exposedContextSuffixLength(), 20); + assertGe(rule.exposedMsgData().length, 4); + } + + function testCannotDeployWithZeroOwner() public { + vm.expectRevert(abi.encodeWithSelector(Ownable.OwnableInvalidOwner.selector, ZERO_ADDRESS)); + new RuleSpenderWhitelistOwnable2Step(ZERO_ADDRESS, ZERO_ADDRESS); + } +} diff --git a/test/RuleSpenderWhitelist/RuleSpenderWhitelist.t.sol b/test/RuleSpenderWhitelist/RuleSpenderWhitelist.t.sol new file mode 100644 index 0000000..27a20f6 --- /dev/null +++ b/test/RuleSpenderWhitelist/RuleSpenderWhitelist.t.sol @@ -0,0 +1,128 @@ +// SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +import {Test} from "forge-std/Test.sol"; +import {HelperContract} from "../HelperContract.sol"; +import {RuleSpenderWhitelist} from "src/rules/validation/deployment/RuleSpenderWhitelist.sol"; +import {AccessControlModuleStandalone} from "src/modules/AccessControlModuleStandalone.sol"; +import {IAccessControl} from "OZ/access/IAccessControl.sol"; +import {IRule} from "RuleEngine/interfaces/IRule.sol"; + +contract RuleSpenderWhitelistHarness is RuleSpenderWhitelist { + constructor(address admin, address forwarderIrrevocable) RuleSpenderWhitelist(admin, forwarderIrrevocable) {} + + function exposedMsgSender() external view returns (address) { + return _msgSender(); + } + + function exposedMsgData() external view returns (bytes memory) { + return _msgData(); + } + + function exposedContextSuffixLength() external view returns (uint256) { + return _contextSuffixLength(); + } +} + +contract RuleSpenderWhitelistTest is Test, HelperContract { + uint8 internal constant CODE_SPENDER_NOT_WHITELISTED = 66; + string internal constant TEXT_SPENDER_NOT_WHITELISTED = "SpenderWhitelist: Spender is not whitelisted"; + + RuleSpenderWhitelist private rule; + RuleSpenderWhitelistHarness private harness; + + function setUp() public { + vm.prank(DEFAULT_ADMIN_ADDRESS); + rule = new RuleSpenderWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS); + vm.prank(DEFAULT_ADMIN_ADDRESS); + harness = new RuleSpenderWhitelistHarness(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS); + } + + function testRegularTransfersAlwaysAllowed() public { + assertEq(rule.detectTransferRestriction(ADDRESS1, ADDRESS2, 10), TRANSFER_OK); + assertTrue(rule.canTransfer(ADDRESS1, ADDRESS2, 10)); + + rule.transferred(ADDRESS1, ADDRESS2, 10); + } + + function testTransferFromRejectedWhenSpenderNotWhitelisted() public { + assertEq( + rule.detectTransferRestrictionFrom(ADDRESS3, ADDRESS1, ADDRESS2, 10), + CODE_SPENDER_NOT_WHITELISTED + ); + assertFalse(rule.canTransferFrom(ADDRESS3, ADDRESS1, ADDRESS2, 10)); + + vm.expectRevert(); + rule.transferred(ADDRESS3, ADDRESS1, ADDRESS2, 10); + } + + function testTransferFromAllowedWhenSpenderWhitelisted() public { + vm.prank(DEFAULT_ADMIN_ADDRESS); + rule.addAddress(ADDRESS3); + + assertEq(rule.detectTransferRestrictionFrom(ADDRESS3, ADDRESS1, ADDRESS2, 10), TRANSFER_OK); + assertTrue(rule.canTransferFrom(ADDRESS3, ADDRESS1, ADDRESS2, 10)); + + rule.transferred(ADDRESS3, ADDRESS1, ADDRESS2, 10); + } + + function testTokenIdAndContextOverloads() public { + vm.prank(DEFAULT_ADMIN_ADDRESS); + rule.addAddress(ADDRESS3); + + assertEq(rule.detectTransferRestriction(ADDRESS1, ADDRESS2, 1, 10), TRANSFER_OK); + assertEq( + rule.detectTransferRestrictionFrom(ADDRESS3, ADDRESS1, ADDRESS2, 1, 10), + TRANSFER_OK + ); + assertTrue(rule.canTransfer(ADDRESS1, ADDRESS2, 1, 10)); + assertTrue(rule.canTransferFrom(ADDRESS3, ADDRESS1, ADDRESS2, 1, 10)); + rule.transferred(ADDRESS1, ADDRESS2, 1, 10); + rule.transferred(ADDRESS3, ADDRESS1, ADDRESS2, 1, 10); + } + + function testCanReturnRestrictionCodeAndMessage() public view { + assertTrue(rule.canReturnTransferRestrictionCode(CODE_SPENDER_NOT_WHITELISTED)); + assertFalse(rule.canReturnTransferRestrictionCode(CODE_NONEXISTENT)); + + assertEq( + rule.messageForTransferRestriction(CODE_SPENDER_NOT_WHITELISTED), + TEXT_SPENDER_NOT_WHITELISTED + ); + assertEq(rule.messageForTransferRestriction(CODE_NONEXISTENT), TEXT_CODE_NOT_FOUND); + } + + function testOnlyAdminCanManageSpenderWhitelist() public { + vm.expectRevert(); + vm.prank(ADDRESS1); + rule.addAddress(ADDRESS3); + + vm.expectRevert(); + vm.prank(ADDRESS1); + rule.removeAddress(ADDRESS3); + + vm.prank(DEFAULT_ADMIN_ADDRESS); + rule.addAddress(ADDRESS3); + assertTrue(rule.isAddressListed(ADDRESS3)); + + vm.prank(DEFAULT_ADMIN_ADDRESS); + rule.removeAddress(ADDRESS3); + assertFalse(rule.isAddressListed(ADDRESS3)); + } + + function testSupportsInterface() public view { + assertTrue(rule.supportsInterface(type(IAccessControl).interfaceId)); + assertTrue(rule.supportsInterface(type(IRule).interfaceId)); + } + + function testMetaTxOverridesAreReachable() public view { + assertEq(harness.exposedMsgSender(), address(this)); + assertEq(harness.exposedContextSuffixLength(), 20); + assertGe(harness.exposedMsgData().length, 4); + } + + function testCannotDeployWithZeroAdmin() public { + vm.expectRevert(AccessControlModuleStandalone.AccessControlModuleStandalone_AddressZeroNotAllowed.selector); + new RuleSpenderWhitelist(ZERO_ADDRESS, ZERO_ADDRESS); + } +} From e2816a0712c032e303f6a10d8fa89ed58323883e Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Tue, 10 Mar 2026 14:37:10 +0100 Subject: [PATCH 2/8] Create mock directory and contract --- CHANGELOG.md | 8 + README.md | 2 +- doc/coverage/lcov.info | 846 +++++++++++++++--- doc/technical/RuleSpenderWhitelist.md | 65 ++ .../mocks}/IdentityRegistryMock.sol | 0 src/mocks/MockERC20TransferFromFalse.sol | 18 + src/mocks/MockERC20WithTransferContext.sol | 94 ++ src/mocks/MockERC721WithTransferContext.sol | 42 + .../mocks}/SanctionListOracle.sol | 10 +- {test/utils => src/mocks}/TotalSupplyMock.sol | 0 .../harness/DeploymentCoverageHarnesses.sol | 95 ++ .../RuleSanctionsListOwnable2StepHarness.sol | 23 + .../harness/RuleSpenderWhitelistHarnesses.sol | 37 + .../RuleWhitelistWrapperHarnessInternal.sol | 14 + .../abstract/core/RuleNFTAdapter.sol | 4 +- .../DeploymentOperationCoverage.t.sol | 93 +- ...oyCMTATWithBlacklistAndSanctionsList.t.sol | 2 +- ...ionalTransferLightApproveAndTransfer.t.sol | 19 +- .../RuleIdentityRegistryOwnable2Step.t.sol | 2 +- ...dentityRegistryRuleEngineIntegration.t.sol | 2 +- .../RuleIdentityRegistryUnit.t.sol | 2 +- .../RuleMaxTotalSupplyOwnable2Step.t.sol | 2 +- ...eMaxTotalSupplyRuleEngineIntegration.t.sol | 2 +- .../RuleMaxTotalSupplyUnit.t.sol | 2 +- .../RuleSanctionsListOwnable2Step.t.sol | 21 +- .../RuleEngineIntegration.t.sol | 2 +- .../RuleSanctionListAddTest.t.sol | 2 +- .../RuleSanctionListDeploymentTest.t.sol | 2 +- .../RuleSanctionListTest.t.sol | 2 +- .../RuleSpenderWhitelistOwnable2Step.t.sol | 17 +- .../RuleSpenderWhitelist.t.sol | 17 +- test/RuleWhitelist/WhitelistWrapper.t.sol | 11 +- test/TransferContext/TransferContext.t.sol | 2 +- .../TransferContextMocks.t.sol | 127 +++ test/utils/MockERC20WithTransferContext.sol | 127 --- 35 files changed, 1294 insertions(+), 420 deletions(-) create mode 100644 doc/technical/RuleSpenderWhitelist.md rename {test/utils => src/mocks}/IdentityRegistryMock.sol (100%) create mode 100644 src/mocks/MockERC20TransferFromFalse.sol create mode 100644 src/mocks/MockERC20WithTransferContext.sol create mode 100644 src/mocks/MockERC721WithTransferContext.sol rename {test/utils => src/mocks}/SanctionListOracle.sol (64%) rename {test/utils => src/mocks}/TotalSupplyMock.sol (100%) create mode 100644 src/mocks/harness/DeploymentCoverageHarnesses.sol create mode 100644 src/mocks/harness/RuleSanctionsListOwnable2StepHarness.sol create mode 100644 src/mocks/harness/RuleSpenderWhitelistHarnesses.sol create mode 100644 src/mocks/harness/RuleWhitelistWrapperHarnessInternal.sol create mode 100644 test/TransferContext/TransferContextMocks.t.sol delete mode 100644 test/utils/MockERC20WithTransferContext.sol diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e33147..6a0eefa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -49,6 +49,12 @@ Commit: `TBD` ### Added +- `RuleSpenderWhitelist` — validation rule that blocks `transferFrom` when spender is not listed; direct transfers are always allowed. Restriction code 66. +- `RuleSpenderWhitelistOwnable2Step` — Ownable2Step variant of `RuleSpenderWhitelist`. +- Technical documentation file `doc/technical/RuleSpenderWhitelist.md`. +- Transfer-context mocks in `src/mocks`: `MockERC20WithTransferContext` and `MockERC721WithTransferContext`. +- Transfer-context mocks in `src/mocks` now inherit OpenZeppelin `ERC20` / `ERC721` and emit rule callbacks through `ITransferContext`. +- Transfer-context tests for ERC-20/ERC-721 mock integration in `test/TransferContext/TransferContextMocks.t.sol`. - `RuleERC2980` — ERC-2980 Swiss Compliant rule combining a whitelist (recipient-only) and a frozenlist (blocks sender, recipient, and spender); frozenlist takes priority. Restriction codes 60–63. - `RuleERC2980Ownable2Step` — Ownable2Step variant of `RuleERC2980`. - `IERC2980` interface with NatSpec documenting the deviation from the ERC example interfaces (single-item functions revert on invalid input rather than returning `bool`). @@ -72,6 +78,8 @@ Commit: `TBD` - `RuleConditionalTransferLight` and `RuleMaxTotalSupply` are ERC-20 only; ERC-721/1155 compliance interfaces are limited to validation rules. - Address list batch updates emit only add/remove events (no summary events). - Reorganized validation contracts into `abstract/base`, `abstract/core`, `abstract/invariant`, and `deployment` folders. +- Rule transfer-context dispatch now treats `sender == from` as direct transfer (non-spender path) in `RuleNFTAdapter`. +- Concrete utilities and harness contracts used by tests were moved from `test/` into `src/mocks` and `src/mocks/harness`. ### Dependencies diff --git a/README.md b/README.md index ddfe227..dd9bdb0 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Each rule can be used **standalone**, directly plugged into a CMTAT token, **or* **Status:** *Repository under active development* -Latest update: added `RuleSpenderWhitelist` (+ `Ownable2Step` variant), technical documentation, and tests; `src/` contract coverage remains at 100%. +Latest update: transfer-context token mocks now use OpenZeppelin ERC-20/ERC-721; test utilities and harness contracts were moved from `test/` to `src/mocks` and `src/mocks/harness`; context spender handling remains `sender == from` => direct transfer. ## Schema diff --git a/doc/coverage/lcov.info b/doc/coverage/lcov.info index f8b64c2..f2bc445 100644 --- a/doc/coverage/lcov.info +++ b/doc/coverage/lcov.info @@ -1,20 +1,116 @@ TN: +SF:script/DeployCMTATWithBlacklist.s.sol +DA:11,1 +FN:11,DeployCMTATWithBlacklist.deploy +FNDA:1,DeployCMTATWithBlacklist.deploy +DA:15,1 +DA:16,1 +DA:17,1 +DA:18,1 +DA:25,1 +DA:27,1 +DA:28,1 +DA:30,1 +DA:32,1 +BRDA:32,0,0,1 +DA:33,1 +DA:34,1 +DA:38,0 +FN:38,DeployCMTATWithBlacklist.run +FNDA:0,DeployCMTATWithBlacklist.run +DA:39,0 +DA:40,0 +DA:41,0 +FNF:2 +FNH:1 +LF:16 +LH:12 +BRF:1 +BRH:1 +end_of_record +TN: +SF:script/DeployCMTATWithBlacklistAndSanctionsList.s.sol +DA:27,18 +FN:27,DeployCMTATWithBlacklistAndSanctionsList.deploy +FNDA:18,DeployCMTATWithBlacklistAndSanctionsList.deploy +DA:36,18 +DA:37,18 +DA:38,18 +DA:39,18 +DA:46,18 +DA:49,18 +DA:52,18 +DA:53,18 +DA:57,18 +DA:60,18 +DA:61,18 +DA:64,18 +DA:67,18 +BRDA:67,0,0,18 +DA:68,18 +DA:69,18 +DA:70,18 +DA:71,18 +DA:75,0 +FN:75,DeployCMTATWithBlacklistAndSanctionsList.run +FNDA:0,DeployCMTATWithBlacklistAndSanctionsList.run +DA:84,0 +DA:87,0 +DA:89,0 +FNF:2 +FNH:1 +LF:22 +LH:18 +BRF:1 +BRH:1 +end_of_record +TN: +SF:script/DeployCMTATWithWhitelist.s.sol +DA:11,1 +FN:11,DeployCMTATWithWhitelist.deploy +FNDA:1,DeployCMTATWithWhitelist.deploy +DA:15,1 +DA:16,1 +DA:17,1 +DA:18,1 +DA:25,1 +DA:27,1 +DA:28,1 +DA:30,1 +DA:32,1 +BRDA:32,0,0,1 +DA:33,1 +DA:34,1 +DA:38,0 +FN:38,DeployCMTATWithWhitelist.run +FNDA:0,DeployCMTATWithWhitelist.run +DA:39,0 +DA:40,0 +DA:41,0 +FNF:2 +FNH:1 +LF:16 +LH:12 +BRF:1 +BRH:1 +end_of_record +TN: SF:src/modules/AccessControlModuleStandalone.sol -DA:24,396 +DA:24,415 FN:24,AccessControlModuleStandalone.constructor -FNDA:396,AccessControlModuleStandalone.constructor -DA:25,396 -BRDA:25,0,0,5 -BRDA:25,0,1,391 -DA:29,391 -DA:38,507 +FNDA:415,AccessControlModuleStandalone.constructor +DA:25,415 +BRDA:25,0,0,6 +BRDA:25,0,1,409 +DA:29,409 +DA:38,525 FN:38,AccessControlModuleStandalone.hasRole -FNDA:507,AccessControlModuleStandalone.hasRole -DA:47,3597 -BRDA:47,1,0,3110 -BRDA:47,1,1,487 -DA:48,3110 -DA:50,487 +FNDA:525,AccessControlModuleStandalone.hasRole +DA:47,3622 +BRDA:47,1,0,3115 +BRDA:47,1,1,507 +DA:48,3115 +DA:50,507 FNF:2 FNH:2 LF:7 @@ -50,15 +146,15 @@ DA:42,1 FN:42,RuleConditionalTransferLight.destroyed FNDA:1,RuleConditionalTransferLight.destroyed DA:43,1 -DA:46,1947 +DA:46,1948 FN:46,RuleConditionalTransferLight._authorizeTransferApproval -FNDA:1947,RuleConditionalTransferLight._authorizeTransferApproval -DA:48,857 +FNDA:1948,RuleConditionalTransferLight._authorizeTransferApproval +DA:48,844 FN:48,RuleConditionalTransferLight._authorizeTransferExecution -FNDA:857,RuleConditionalTransferLight._authorizeTransferExecution -DA:49,857 +FNDA:844,RuleConditionalTransferLight._authorizeTransferExecution +DA:49,844 BRDA:49,0,0,1 -BRDA:49,0,1,856 +BRDA:49,0,1,843 DA:55,19 FN:55,RuleConditionalTransferLight._onlyComplianceManager FNDA:19,RuleConditionalTransferLight._onlyComplianceManager @@ -91,12 +187,12 @@ BRH:0 end_of_record TN: SF:src/rules/operation/abstract/RuleConditionalTransferLightBase.sol -DA:25,1940 +DA:25,1941 FN:25,RuleConditionalTransferLightBase.approveTransfer -FNDA:1940,RuleConditionalTransferLightBase.approveTransfer -DA:26,1941 -DA:27,1941 -DA:28,1941 +FNDA:1941,RuleConditionalTransferLightBase.approveTransfer +DA:26,1942 +DA:27,1942 +DA:28,1942 DA:31,4 FN:31,RuleConditionalTransferLightBase.cancelTransferApproval FNDA:4,RuleConditionalTransferLightBase.cancelTransferApproval @@ -128,10 +224,10 @@ FN:65,RuleConditionalTransferLightBase.approvedCount FNDA:264,RuleConditionalTransferLightBase.approvedCount DA:66,264 DA:67,264 -DA:70,856 +DA:70,843 FN:70,RuleConditionalTransferLightBase.transferred.0 -FNDA:856,RuleConditionalTransferLightBase.transferred.0 -DA:75,854 +FNDA:843,RuleConditionalTransferLightBase.transferred.0 +DA:75,841 DA:78,1 FN:78,RuleConditionalTransferLightBase.transferred.1 FNDA:1,RuleConditionalTransferLightBase.transferred.1 @@ -178,23 +274,23 @@ DA:150,3 FN:150,RuleConditionalTransferLightBase._transferredFromContext FNDA:3,RuleConditionalTransferLightBase._transferredFromContext DA:151,3 -DA:154,860 +DA:154,847 FN:154,RuleConditionalTransferLightBase._transferred -FNDA:860,RuleConditionalTransferLightBase._transferred -DA:155,860 -BRDA:155,7,0,860 -DA:156,860 -DA:158,846 -DA:159,846 -DA:161,846 +FNDA:847,RuleConditionalTransferLightBase._transferred +DA:155,847 +BRDA:155,7,0,847 +DA:156,847 +DA:158,833 +DA:159,833 +DA:161,833 BRDA:161,8,0,3 -BRDA:161,8,1,843 -DA:163,843 -DA:164,843 -DA:167,3063 +BRDA:161,8,1,830 +DA:163,830 +DA:164,830 +DA:167,3051 FN:167,RuleConditionalTransferLightBase._transferHash -FNDA:3063,RuleConditionalTransferLightBase._transferHash -DA:168,3063 +FNDA:3051,RuleConditionalTransferLightBase._transferHash +DA:168,3051 DA:175,4 FN:175,RuleConditionalTransferLightBase.onlyTransferApprover FNDA:4,RuleConditionalTransferLightBase.onlyTransferApprover @@ -222,30 +318,30 @@ FN:63,RuleAddressSet.removeAddresses FNDA:260,RuleAddressSet.removeAddresses DA:64,259 DA:65,259 -DA:75,105 +DA:75,111 FN:75,RuleAddressSet.addAddress -FNDA:105,RuleAddressSet.addAddress -DA:76,102 +FNDA:111,RuleAddressSet.addAddress +DA:76,106 BRDA:76,0,0,1 -BRDA:76,0,1,101 -DA:77,101 -DA:78,101 -DA:88,8 +BRDA:76,0,1,105 +DA:77,105 +DA:78,105 +DA:88,12 FN:88,RuleAddressSet.removeAddress -FNDA:8,RuleAddressSet.removeAddress -DA:89,5 +FNDA:12,RuleAddressSet.removeAddress +DA:89,7 BRDA:89,1,0,1 -BRDA:89,1,1,4 -DA:90,4 -DA:91,4 +BRDA:89,1,1,6 +DA:90,6 +DA:91,6 DA:98,275 FN:98,RuleAddressSet.onlyAddressListAdd FNDA:275,RuleAddressSet.onlyAddressListAdd DA:99,275 -DA:103,8 +DA:103,12 FN:103,RuleAddressSet.onlyAddressListRemove -FNDA:8,RuleAddressSet.onlyAddressListRemove -DA:104,8 +FNDA:12,RuleAddressSet.onlyAddressListRemove +DA:104,12 DA:116,536 FN:116,RuleAddressSet.listedAddressCount FNDA:536,RuleAddressSet.listedAddressCount @@ -254,28 +350,28 @@ DA:125,2 FN:125,RuleAddressSet.contains FNDA:2,RuleAddressSet.contains DA:126,2 -DA:134,67 +DA:134,71 FN:134,RuleAddressSet.isAddressListed -FNDA:67,RuleAddressSet.isAddressListed -DA:135,383 +FNDA:71,RuleAddressSet.isAddressListed +DA:135,387 DA:143,108 FN:143,RuleAddressSet.areAddressesListed FNDA:108,RuleAddressSet.areAddressesListed DA:144,108 DA:145,108 DA:146,244 -DA:154,882 +DA:154,917 FN:154,RuleAddressSet._msgSender -FNDA:882,RuleAddressSet._msgSender -DA:155,882 -DA:159,4 +FNDA:917,RuleAddressSet._msgSender +DA:155,917 +DA:159,6 FN:159,RuleAddressSet._msgData -FNDA:4,RuleAddressSet._msgData -DA:160,4 -DA:164,886 +FNDA:6,RuleAddressSet._msgData +DA:160,6 +DA:164,925 FN:164,RuleAddressSet._contextSuffixLength -FNDA:886,RuleAddressSet._contextSuffixLength -DA:165,886 +FNDA:925,RuleAddressSet._contextSuffixLength +DA:165,925 FNF:13 FNH:13 LF:34 @@ -303,22 +399,22 @@ BRDA:65,1,0,518 BRDA:65,1,1,257 DA:66,518 DA:68,257 -DA:77,101 +DA:77,105 FN:77,RuleAddressSetInternal._addAddress -FNDA:101,RuleAddressSetInternal._addAddress -DA:78,101 -DA:85,4 +FNDA:105,RuleAddressSetInternal._addAddress +DA:78,105 +DA:85,6 FN:85,RuleAddressSetInternal._removeAddress -FNDA:4,RuleAddressSetInternal._removeAddress -DA:86,4 +FNDA:6,RuleAddressSetInternal._removeAddress +DA:86,6 DA:93,536 FN:93,RuleAddressSetInternal._listedAddressCount FNDA:536,RuleAddressSetInternal._listedAddressCount DA:94,536 -DA:102,738 +DA:102,757 FN:102,RuleAddressSetInternal._isAddressListed -FNDA:738,RuleAddressSetInternal._isAddressListed -DA:103,738 +FNDA:757,RuleAddressSetInternal._isAddressListed +DA:103,757 FNF:6 FNH:6 LF:18 @@ -964,6 +1060,54 @@ BRF:18 BRH:18 end_of_record TN: +SF:src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol +DA:19,4 +FN:19,RuleSpenderWhitelistBase._detectTransferRestriction +FNDA:4,RuleSpenderWhitelistBase._detectTransferRestriction +DA:26,4 +DA:29,9 +FN:29,RuleSpenderWhitelistBase._detectTransferRestrictionFrom +FNDA:9,RuleSpenderWhitelistBase._detectTransferRestrictionFrom +DA:36,9 +BRDA:36,0,0,3 +DA:37,3 +DA:39,6 +DA:42,2 +FN:42,RuleSpenderWhitelistBase.canReturnTransferRestrictionCode +FNDA:2,RuleSpenderWhitelistBase.canReturnTransferRestrictionCode +DA:43,2 +DA:46,2 +FN:46,RuleSpenderWhitelistBase.messageForTransferRestriction +FNDA:2,RuleSpenderWhitelistBase.messageForTransferRestriction +DA:52,2 +BRDA:52,1,0,1 +DA:53,1 +DA:55,1 +DA:61,1 +FN:61,RuleSpenderWhitelistBase.transferred.0 +FNDA:1,RuleSpenderWhitelistBase.transferred.0 +DA:63,2 +FN:63,RuleSpenderWhitelistBase.transferred.1 +FNDA:2,RuleSpenderWhitelistBase.transferred.1 +DA:68,2 +DA:71,1 +FN:71,RuleSpenderWhitelistBase._transferred +FNDA:1,RuleSpenderWhitelistBase._transferred +DA:75,3 +FN:75,RuleSpenderWhitelistBase._transferredFrom +FNDA:3,RuleSpenderWhitelistBase._transferredFrom +DA:81,3 +DA:82,3 +BRDA:82,2,0,1 +BRDA:82,2,1,2 +FNF:8 +FNH:8 +LF:19 +LH:19 +BRF:4 +BRH:4 +end_of_record +TN: SF:src/rules/validation/abstract/base/RuleWhitelistBase.sol DA:15,157 FN:15,RuleWhitelistBase.constructor @@ -1135,30 +1279,30 @@ BRH:14 end_of_record TN: SF:src/rules/validation/abstract/core/RuleNFTAdapter.sol -DA:40,16 +DA:40,17 FN:40,RuleNFTAdapter.detectTransferRestriction -FNDA:16,RuleNFTAdapter.detectTransferRestriction -DA:47,16 -DA:53,12 +FNDA:17,RuleNFTAdapter.detectTransferRestriction +DA:47,17 +DA:53,13 FN:53,RuleNFTAdapter.detectTransferRestrictionFrom -FNDA:12,RuleNFTAdapter.detectTransferRestrictionFrom -DA:60,12 -DA:66,14 +FNDA:13,RuleNFTAdapter.detectTransferRestrictionFrom +DA:60,13 +DA:66,15 FN:66,RuleNFTAdapter.canTransfer -FNDA:14,RuleNFTAdapter.canTransfer -DA:72,14 -DA:78,10 +FNDA:15,RuleNFTAdapter.canTransfer +DA:72,15 +DA:78,11 FN:78,RuleNFTAdapter.canTransferFrom -FNDA:10,RuleNFTAdapter.canTransferFrom -DA:85,10 -DA:92,13 +FNDA:11,RuleNFTAdapter.canTransferFrom +DA:85,11 +DA:92,14 FN:92,RuleNFTAdapter.transferred.0 -FNDA:13,RuleNFTAdapter.transferred.0 -DA:97,13 -DA:103,8 +FNDA:14,RuleNFTAdapter.transferred.0 +DA:97,14 +DA:103,9 FN:103,RuleNFTAdapter.transferred.1 -FNDA:8,RuleNFTAdapter.transferred.1 -DA:108,8 +FNDA:9,RuleNFTAdapter.transferred.1 +DA:108,9 DA:114,2 FN:114,RuleNFTAdapter.transferred.2 FNDA:2,RuleNFTAdapter.transferred.2 @@ -1184,26 +1328,26 @@ BRH:4 end_of_record TN: SF:src/rules/validation/abstract/core/RuleTransferValidation.sol -DA:46,348 +DA:46,349 FN:46,RuleTransferValidation.detectTransferRestriction -FNDA:348,RuleTransferValidation.detectTransferRestriction -DA:53,348 -DA:59,36 +FNDA:349,RuleTransferValidation.detectTransferRestriction +DA:53,349 +DA:59,38 FN:59,RuleTransferValidation.detectTransferRestrictionFrom -FNDA:36,RuleTransferValidation.detectTransferRestrictionFrom -DA:66,36 -DA:77,20 +FNDA:38,RuleTransferValidation.detectTransferRestrictionFrom +DA:66,38 +DA:77,21 FN:77,RuleTransferValidation.canTransfer -FNDA:20,RuleTransferValidation.canTransfer -DA:83,20 -DA:89,12 +FNDA:21,RuleTransferValidation.canTransfer +DA:83,21 +DA:89,14 FN:89,RuleTransferValidation.canTransferFrom -FNDA:12,RuleTransferValidation.canTransferFrom -DA:96,12 -DA:100,195 +FNDA:14,RuleTransferValidation.canTransferFrom +DA:96,14 +DA:100,196 FN:100,RuleTransferValidation.supportsInterface -FNDA:195,RuleTransferValidation.supportsInterface -DA:101,195 +FNDA:196,RuleTransferValidation.supportsInterface +DA:101,196 FNF:5 FNH:5 LF:10 @@ -1503,6 +1647,65 @@ BRF:0 BRH:0 end_of_record TN: +SF:src/rules/validation/deployment/RuleSpenderWhitelist.sol +DA:21,2 +FN:21,RuleSpenderWhitelist.supportsInterface +FNDA:2,RuleSpenderWhitelist.supportsInterface +DA:28,2 +DA:29,1 +DA:32,4 +FN:32,RuleSpenderWhitelist._authorizeAddressListAdd +FNDA:4,RuleSpenderWhitelist._authorizeAddressListAdd +DA:34,2 +FN:34,RuleSpenderWhitelist._authorizeAddressListRemove +FNDA:2,RuleSpenderWhitelist._authorizeAddressListRemove +DA:36,25 +FN:36,RuleSpenderWhitelist._msgSender +FNDA:25,RuleSpenderWhitelist._msgSender +DA:37,25 +DA:40,1 +FN:40,RuleSpenderWhitelist._msgData +FNDA:1,RuleSpenderWhitelist._msgData +DA:41,1 +DA:44,27 +FN:44,RuleSpenderWhitelist._contextSuffixLength +FNDA:27,RuleSpenderWhitelist._contextSuffixLength +DA:45,27 +FNF:6 +FNH:6 +LF:11 +LH:11 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol +DA:20,2 +FN:20,RuleSpenderWhitelistOwnable2Step._authorizeAddressListAdd +FNDA:2,RuleSpenderWhitelistOwnable2Step._authorizeAddressListAdd +DA:22,2 +FN:22,RuleSpenderWhitelistOwnable2Step._authorizeAddressListRemove +FNDA:2,RuleSpenderWhitelistOwnable2Step._authorizeAddressListRemove +DA:24,10 +FN:24,RuleSpenderWhitelistOwnable2Step._msgSender +FNDA:10,RuleSpenderWhitelistOwnable2Step._msgSender +DA:25,10 +DA:28,1 +FN:28,RuleSpenderWhitelistOwnable2Step._msgData +FNDA:1,RuleSpenderWhitelistOwnable2Step._msgData +DA:29,1 +DA:32,12 +FN:32,RuleSpenderWhitelistOwnable2Step._contextSuffixLength +FNDA:12,RuleSpenderWhitelistOwnable2Step._contextSuffixLength +DA:33,12 +FNF:5 +FNH:5 +LF:8 +LH:8 +BRF:0 +BRH:0 +end_of_record +TN: SF:src/rules/validation/deployment/RuleWhitelist.sol DA:42,40 FN:42,RuleWhitelist.supportsInterface @@ -1637,3 +1840,426 @@ LH:8 BRF:0 BRH:0 end_of_record +TN: +SF:test/Coverage/DeploymentOperationCoverage.t.sol +DA:25,1 +FN:25,RuleBlacklistHarness.exposedMsgDataLength.0 +FNDA:1,RuleBlacklistHarness.exposedMsgDataLength.0 +DA:26,1 +DA:35,1 +FN:35,RuleWhitelistHarness.exposedMsgDataLength.1 +FNDA:1,RuleWhitelistHarness.exposedMsgDataLength.1 +DA:36,1 +DA:45,1 +FN:45,RuleWhitelistWrapperHarness.exposedMsgDataLength.2 +FNDA:1,RuleWhitelistWrapperHarness.exposedMsgDataLength.2 +DA:46,1 +DA:53,1 +FN:53,RuleERC2980Harness.exposedMsgDataLength.3 +FNDA:1,RuleERC2980Harness.exposedMsgDataLength.3 +DA:54,1 +DA:63,1 +FN:63,RuleSanctionsListHarness.exposedMsgDataLength.4 +FNDA:1,RuleSanctionsListHarness.exposedMsgDataLength.4 +DA:64,1 +DA:71,1 +FN:71,RuleBlacklistOwnable2StepHarness.exposedMsgDataLength.5 +FNDA:1,RuleBlacklistOwnable2StepHarness.exposedMsgDataLength.5 +DA:72,1 +DA:81,1 +FN:81,RuleWhitelistOwnable2StepHarness.exposedMsgDataLength.6 +FNDA:1,RuleWhitelistOwnable2StepHarness.exposedMsgDataLength.6 +DA:82,1 +DA:91,1 +FN:91,RuleWhitelistWrapperOwnable2StepHarness.exposedMsgDataLength.7 +FNDA:1,RuleWhitelistWrapperOwnable2StepHarness.exposedMsgDataLength.7 +DA:92,1 +DA:99,1 +FN:99,RuleERC2980Ownable2StepHarness.exposedMsgDataLength.8 +FNDA:1,RuleERC2980Ownable2StepHarness.exposedMsgDataLength.8 +DA:100,1 +FNF:9 +FNH:9 +LF:18 +LH:18 +BRF:0 +BRH:0 +end_of_record +TN: +SF:test/RuleBlacklist/Ownable/RuleBlacklistOwnable2Step.t.sol +DA:9,2 +FN:9,RuleBlacklistOwnable2StepTest._deployOwnable2Step +FNDA:2,RuleBlacklistOwnable2StepTest._deployOwnable2Step +DA:10,2 +DA:11,2 +DA:12,2 +FNF:1 +FNH:1 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:test/RuleBlacklist/Ownable/RuleBlacklistOwnableAccessControl.t.sol +DA:9,2 +FN:9,RuleBlacklistOwnable2StepAccessControl._deployAddressList +FNDA:2,RuleBlacklistOwnable2StepAccessControl._deployAddressList +DA:10,2 +DA:11,2 +DA:12,2 +FNF:1 +FNH:1 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:test/RuleConditionalTransferLight/RuleConditionalTransferLightApproveAndTransfer.t.sol +DA:12,1 +FN:12,MockERC20TransferFromFalse.setAllowance +FNDA:1,MockERC20TransferFromFalse.setAllowance +DA:13,1 +DA:16,1 +FN:16,MockERC20TransferFromFalse.allowance +FNDA:1,MockERC20TransferFromFalse.allowance +DA:17,1 +DA:20,1 +FN:20,MockERC20TransferFromFalse.transferFrom +FNDA:1,MockERC20TransferFromFalse.transferFrom +DA:21,1 +FNF:3 +FNH:3 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:test/RuleERC2980/Ownable/RuleERC2980Ownable2Step.t.sol +DA:9,2 +FN:9,RuleERC2980Ownable2StepTest._deployOwnable2Step +FNDA:2,RuleERC2980Ownable2StepTest._deployOwnable2Step +DA:10,2 +DA:11,2 +DA:12,2 +FNF:1 +FNH:1 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:test/RuleIdentityRegistry/Ownable/RuleIdentityRegistryOwnable2Step.t.sol +DA:12,2 +FN:12,RuleIdentityRegistryOwnable2StepTest._deployOwnable2Step +FNDA:2,RuleIdentityRegistryOwnable2StepTest._deployOwnable2Step +DA:13,2 +DA:14,2 +DA:15,2 +DA:16,2 +FNF:1 +FNH:1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:test/RuleMaxTotalSupply/Ownable/RuleMaxTotalSupplyOwnable2Step.t.sol +DA:11,2 +FN:11,RuleMaxTotalSupplyOwnable2StepTest._deployOwnable2Step +FNDA:2,RuleMaxTotalSupplyOwnable2StepTest._deployOwnable2Step +DA:12,2 +DA:13,2 +DA:14,2 +DA:15,2 +FNF:1 +FNH:1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:test/RuleSanctionList/Ownable/RuleSanctionsListOwnable2Step.t.sol +DA:16,1 +FN:16,RuleSanctionsListOwnable2StepHarness.exposedMsgSender +FNDA:1,RuleSanctionsListOwnable2StepHarness.exposedMsgSender +DA:17,1 +DA:20,1 +FN:20,RuleSanctionsListOwnable2StepHarness.exposedMsgData +FNDA:1,RuleSanctionsListOwnable2StepHarness.exposedMsgData +DA:21,1 +DA:24,1 +FN:24,RuleSanctionsListOwnable2StepHarness.exposedContextSuffixLength +FNDA:1,RuleSanctionsListOwnable2StepHarness.exposedContextSuffixLength +DA:25,1 +DA:30,2 +FN:30,RuleSanctionsListOwnable2StepTest._deployOwnable2Step +FNDA:2,RuleSanctionsListOwnable2StepTest._deployOwnable2Step +DA:31,2 +DA:32,2 +DA:33,2 +DA:34,2 +FNF:4 +FNH:4 +LF:11 +LH:11 +BRF:0 +BRH:0 +end_of_record +TN: +SF:test/RuleSpenderWhitelist/Ownable/RuleSpenderWhitelistOwnable2Step.t.sol +DA:12,1 +FN:12,RuleSpenderWhitelistOwnable2StepHarness.exposedMsgSender +FNDA:1,RuleSpenderWhitelistOwnable2StepHarness.exposedMsgSender +DA:13,1 +DA:16,1 +FN:16,RuleSpenderWhitelistOwnable2StepHarness.exposedMsgData +FNDA:1,RuleSpenderWhitelistOwnable2StepHarness.exposedMsgData +DA:17,1 +DA:20,1 +FN:20,RuleSpenderWhitelistOwnable2StepHarness.exposedContextSuffixLength +FNDA:1,RuleSpenderWhitelistOwnable2StepHarness.exposedContextSuffixLength +DA:21,1 +FNF:3 +FNH:3 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:test/RuleSpenderWhitelist/RuleSpenderWhitelist.t.sol +DA:14,1 +FN:14,RuleSpenderWhitelistHarness.exposedMsgSender +FNDA:1,RuleSpenderWhitelistHarness.exposedMsgSender +DA:15,1 +DA:18,1 +FN:18,RuleSpenderWhitelistHarness.exposedMsgData +FNDA:1,RuleSpenderWhitelistHarness.exposedMsgData +DA:19,1 +DA:22,1 +FN:22,RuleSpenderWhitelistHarness.exposedContextSuffixLength +FNDA:1,RuleSpenderWhitelistHarness.exposedContextSuffixLength +DA:23,1 +FNF:3 +FNH:3 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:test/RuleWhitelist/Ownable/RuleWhitelistOwnable2Step.t.sol +DA:9,2 +FN:9,RuleWhitelistOwnable2StepTest._deployOwnable2Step +FNDA:2,RuleWhitelistOwnable2StepTest._deployOwnable2Step +DA:10,2 +DA:11,2 +DA:12,2 +FNF:1 +FNH:1 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:test/RuleWhitelist/Ownable/RuleWhitelistOwnableAccessControl.t.sol +DA:9,2 +FN:9,RuleWhitelistOwnable2StepAccessControl._deployAddressList +FNDA:2,RuleWhitelistOwnable2StepAccessControl._deployAddressList +DA:10,2 +DA:11,2 +DA:12,2 +FNF:1 +FNH:1 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:test/RuleWhitelist/WhitelistWrapper.t.sol +DA:18,1 +FN:18,RuleWhitelistWrapperHarnessInternal.exposedTransferredSpenderInternal +FNDA:1,RuleWhitelistWrapperHarnessInternal.exposedTransferredSpenderInternal +DA:19,1 +FNF:1 +FNH:1 +LF:2 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:test/utils/AccessControlEnumerableTestBase.sol +DA:24,7 +FN:24,AccessControlEnumerableTestBase.setUp +FNDA:7,AccessControlEnumerableTestBase.setUp +DA:25,7 +DA:28,14 +FN:28,AccessControlEnumerableTestBase._assertRoleMembers +FNDA:14,AccessControlEnumerableTestBase._assertRoleMembers +DA:29,14 +DA:30,14 +DA:31,14 +BRDA:31,0,0,7 +DA:32,7 +DA:34,7 +DA:35,7 +DA:36,7 +FNF:2 +FNH:2 +LF:10 +LH:10 +BRF:1 +BRH:1 +end_of_record +TN: +SF:test/utils/IdentityRegistryMock.sol +DA:9,17 +FN:9,IdentityRegistryMock.setVerified +FNDA:17,IdentityRegistryMock.setVerified +DA:10,17 +DA:13,25 +FN:13,IdentityRegistryMock.isVerified +FNDA:25,IdentityRegistryMock.isVerified +DA:14,25 +FNF:2 +FNH:2 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:test/utils/MockERC20WithTransferContext.sol +DA:19,10 +FN:19,MockERC20WithTransferContext.constructor +FNDA:10,MockERC20WithTransferContext.constructor +DA:20,10 +DA:21,10 +DA:22,10 +DA:25,10 +FN:25,MockERC20WithTransferContext.setRule +FNDA:10,MockERC20WithTransferContext.setRule +DA:26,10 +DA:29,10 +FN:29,MockERC20WithTransferContext.mint +FNDA:10,MockERC20WithTransferContext.mint +DA:30,10 +DA:31,10 +DA:34,4 +FN:34,MockERC20WithTransferContext.approve +FNDA:4,MockERC20WithTransferContext.approve +DA:35,4 +DA:36,4 +DA:37,4 +DA:40,0 +FN:40,MockERC20WithTransferContext.transfer +FNDA:0,MockERC20WithTransferContext.transfer +DA:41,0 +DA:42,0 +DA:43,0 +DA:46,1 +FN:46,MockERC20WithTransferContext.transferFrom +FNDA:1,MockERC20WithTransferContext.transferFrom +DA:47,1 +DA:48,1 +BRDA:48,0,0,- +BRDA:48,0,1,1 +DA:49,1 +DA:50,1 +DA:51,1 +DA:52,1 +DA:55,3 +FN:55,MockERC20WithTransferContext.transferWithContext +FNDA:3,MockERC20WithTransferContext.transferWithContext +DA:59,3 +DA:60,3 +DA:61,3 +DA:64,3 +FN:64,MockERC20WithTransferContext.transferFromWithContext +FNDA:3,MockERC20WithTransferContext.transferFromWithContext +DA:71,3 +DA:72,3 +BRDA:72,1,0,- +BRDA:72,1,1,3 +DA:73,3 +DA:74,3 +DA:75,3 +DA:76,3 +DA:79,7 +FN:79,MockERC20WithTransferContext._transfer +FNDA:7,MockERC20WithTransferContext._transfer +DA:80,7 +BRDA:80,2,0,- +BRDA:80,2,1,7 +DA:81,7 +DA:82,7 +DA:83,7 +DA:86,7 +FN:86,MockERC20WithTransferContext._callRuleContext +FNDA:7,MockERC20WithTransferContext._callRuleContext +DA:94,7 +BRDA:94,3,0,7 +DA:95,7 +DA:98,5 +BRDA:98,4,0,5 +BRDA:98,4,1,2 +DA:99,5 +DA:100,5 +DA:110,5 +DA:112,2 +DA:113,2 +DA:124,2 +FNF:10 +FNH:9 +LF:50 +LH:46 +BRF:9 +BRH:6 +end_of_record +TN: +SF:test/utils/SanctionListOracle.sol +DA:15,22 +FN:15,SanctionListOracle.addToSanctionsList +FNDA:22,SanctionListOracle.addToSanctionsList +DA:16,22 +DA:19,0 +FN:19,SanctionListOracle.removeFromSanctionsList +FNDA:0,SanctionListOracle.removeFromSanctionsList +DA:20,0 +DA:23,159 +FN:23,SanctionListOracle.isSanctioned +FNDA:159,SanctionListOracle.isSanctioned +DA:24,159 +FNF:3 +FNH:2 +LF:6 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:test/utils/TotalSupplyMock.sol +DA:7,268 +FN:7,TotalSupplyMock.totalSupply +FNDA:268,TotalSupplyMock.totalSupply +DA:8,268 +DA:11,267 +FN:11,TotalSupplyMock.setTotalSupply +FNDA:267,TotalSupplyMock.setTotalSupply +DA:12,267 +FNF:2 +FNH:2 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record diff --git a/doc/technical/RuleSpenderWhitelist.md b/doc/technical/RuleSpenderWhitelist.md new file mode 100644 index 0000000..bf3281f --- /dev/null +++ b/doc/technical/RuleSpenderWhitelist.md @@ -0,0 +1,65 @@ +# Rule SpenderWhitelist + +[TOC] + +This rule restricts only spender-initiated transfers (`transferFrom`): the spender must be listed in an internal whitelist. Regular transfers (`transfer`) are always accepted by this rule. + +## Configuration + +### Constructor parameters + +| Parameter | Description | +| --- | --- | +| `admin` / `owner` | Access-control authority (`AccessControlEnumerable` or `Ownable2Step` variant) | +| `forwarderIrrevocable` | ERC-2771 trusted forwarder address for meta-transactions (use `address(0)` to disable) | + +## Schema + +### Graph + +![surya_graph_RuleSpenderWhitelist](../surya/surya_graph/surya_graph_RuleSpenderWhitelist.sol.png) + +### Inheritance + +![surya_inheritance_RuleSpenderWhitelist](../surya/surya_inheritance/surya_inheritance_RuleSpenderWhitelist.sol.png) + +## Restriction codes + +| Constant | Code | Meaning | +| --- | --- | --- | +| `CODE_ADDRESS_SPENDER_NOT_WHITELISTED` | 66 | `transferFrom` spender is not in the whitelist | + +## Access control + +### AccessControlEnumerable variant (`RuleSpenderWhitelist`) + +| Role | Description | +| --- | --- | +| `DEFAULT_ADMIN_ROLE` | Manages all roles | +| `ADDRESS_LIST_ADD_ROLE` | May add spenders (`addAddress`, `addAddresses`) | +| `ADDRESS_LIST_REMOVE_ROLE` | May remove spenders (`removeAddress`, `removeAddresses`) | + +### Ownable2Step variant (`RuleSpenderWhitelistOwnable2Step`) + +Owner can manage the spender list and transfer ownership with two-step acceptance. + +## Behavior + +### Direct transfer path + +`detectTransferRestriction(from, to, value)` always returns `TRANSFER_OK`. +`transferred(from, to, value)` is a no-op and never reverts. + +### Spender path (`transferFrom`) + +`detectTransferRestrictionFrom(spender, from, to, value)` returns: +- `66` if `spender` is not listed +- `0` otherwise + +`transferred(spender, from, to, value)` reverts with `RuleSpenderWhitelist_InvalidTransferFrom` when the spender is not listed. + +## Notes + +- The rule does not validate `from` or `to` addresses. +- The rule also supports ERC-7943 tokenId/context overloads through `RuleNFTAdapter`. +- Batch add/remove follows the project convention: skips duplicates/missing entries without reverting. diff --git a/test/utils/IdentityRegistryMock.sol b/src/mocks/IdentityRegistryMock.sol similarity index 100% rename from test/utils/IdentityRegistryMock.sol rename to src/mocks/IdentityRegistryMock.sol diff --git a/src/mocks/MockERC20TransferFromFalse.sol b/src/mocks/MockERC20TransferFromFalse.sol new file mode 100644 index 0000000..9148545 --- /dev/null +++ b/src/mocks/MockERC20TransferFromFalse.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +contract MockERC20TransferFromFalse { + mapping(address => mapping(address => uint256)) private _allowances; + + function setAllowance(address owner, address spender, uint256 value) external { + _allowances[owner][spender] = value; + } + + function allowance(address owner, address spender) external view returns (uint256) { + return _allowances[owner][spender]; + } + + function transferFrom(address, address, uint256) external pure returns (bool) { + return false; + } +} diff --git a/src/mocks/MockERC20WithTransferContext.sol b/src/mocks/MockERC20WithTransferContext.sol new file mode 100644 index 0000000..83e0912 --- /dev/null +++ b/src/mocks/MockERC20WithTransferContext.sol @@ -0,0 +1,94 @@ +// SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +import {ERC20} from "OZ/token/ERC20/ERC20.sol"; +import {ITransferContext} from "src/rules/interfaces/ITransferContext.sol"; + +contract MockERC20WithTransferContext is ERC20 { + ITransferContext public rule; + + constructor(string memory name_, string memory symbol_) ERC20(name_, symbol_) {} + + function setRule(address rule_) external { + rule = ITransferContext(rule_); + } + + function mint(address to, uint256 value) external { + _mint(to, value); + } + + function transfer(address to, uint256 value) public virtual override returns (bool) { + bool success = super.transfer(to, value); + _notifyFungible(_msgSender(), _msgSender(), to, value); + return success; + } + + function transferFrom(address from, address to, uint256 value) public virtual override returns (bool) { + address sender = _msgSender(); + bool success = super.transferFrom(from, to, value); + _notifyFungible(sender, from, to, value); + return success; + } + + function transferWithContext(address to, uint256 value, bool useFungibleContext, uint256 tokenId) external returns (bool) { + _transfer(_msgSender(), to, value); + if (useFungibleContext) { + _notifyFungible(_msgSender(), _msgSender(), to, value); + } else { + _notifyMultiToken(_msgSender(), _msgSender(), to, value, tokenId); + } + return true; + } + + function transferFromWithContext( + address from, + address to, + uint256 value, + bool useFungibleContext, + uint256 tokenId + ) external returns (bool) { + address sender = _msgSender(); + _spendAllowance(from, sender, value); + _transfer(from, to, value); + + if (useFungibleContext) { + _notifyFungible(sender, from, to, value); + } else { + _notifyMultiToken(sender, from, to, value, tokenId); + } + return true; + } + + function _notifyFungible(address sender, address from, address to, uint256 value) internal { + if (address(rule) == address(0)) { + return; + } + + ITransferContext.FungibleTransferContext memory ctx = ITransferContext.FungibleTransferContext({ + selector: sender == from ? this.transfer.selector : this.transferFrom.selector, + sender: sender, + from: from, + to: to, + value: value, + data: "" + }); + rule.transferred(ctx); + } + + function _notifyMultiToken(address sender, address from, address to, uint256 value, uint256 tokenId) internal { + if (address(rule) == address(0)) { + return; + } + + ITransferContext.MultiTokenTransferContext memory ctx = ITransferContext.MultiTokenTransferContext({ + selector: sender == from ? this.transfer.selector : this.transferFrom.selector, + sender: sender, + from: from, + to: to, + value: value, + tokenId: tokenId, + data: "" + }); + rule.transferred(ctx); + } +} diff --git a/src/mocks/MockERC721WithTransferContext.sol b/src/mocks/MockERC721WithTransferContext.sol new file mode 100644 index 0000000..38b0977 --- /dev/null +++ b/src/mocks/MockERC721WithTransferContext.sol @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +import {ERC721} from "OZ/token/ERC721/ERC721.sol"; +import {ITransferContext} from "src/rules/interfaces/ITransferContext.sol"; + +contract MockERC721WithTransferContext is ERC721 { + ITransferContext public rule; + + constructor(string memory name_, string memory symbol_) ERC721(name_, symbol_) {} + + function setRule(address rule_) external { + rule = ITransferContext(rule_); + } + + function mint(address to, uint256 tokenId) external { + _mint(to, tokenId); + } + + function transferFrom(address from, address to, uint256 tokenId) public virtual override { + address sender = _msgSender(); + super.transferFrom(from, to, tokenId); + _notifyRule(sender, from, to, tokenId); + } + + function _notifyRule(address sender, address from, address to, uint256 tokenId) internal { + if (address(rule) == address(0)) { + return; + } + + ITransferContext.MultiTokenTransferContext memory ctx = ITransferContext.MultiTokenTransferContext({ + selector: this.transferFrom.selector, + sender: sender, + from: from, + to: to, + value: 1, + tokenId: tokenId, + data: "" + }); + rule.transferred(ctx); + } +} diff --git a/test/utils/SanctionListOracle.sol b/src/mocks/SanctionListOracle.sol similarity index 64% rename from test/utils/SanctionListOracle.sol rename to src/mocks/SanctionListOracle.sol index 1eab28a..b81a377 100644 --- a/test/utils/SanctionListOracle.sol +++ b/src/mocks/SanctionListOracle.sol @@ -1,15 +1,9 @@ // SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; -import {ISanctionsList} from "../../src/rules/interfaces/ISanctionsList.sol"; -/** - * @notice Test contract from - * https://etherscan.io/address/0x40c57923924b5c5c5455c48d93317139addac8fb#code - */ +import {ISanctionsList} from "src/rules/interfaces/ISanctionsList.sol"; contract SanctionListOracle is ISanctionsList { - constructor() {} - mapping(address => bool) private sanctionedAddresses; function addToSanctionsList(address newSanction) public { @@ -21,6 +15,6 @@ contract SanctionListOracle is ISanctionsList { } function isSanctioned(address addr) public view returns (bool) { - return sanctionedAddresses[addr] == true; + return sanctionedAddresses[addr]; } } diff --git a/test/utils/TotalSupplyMock.sol b/src/mocks/TotalSupplyMock.sol similarity index 100% rename from test/utils/TotalSupplyMock.sol rename to src/mocks/TotalSupplyMock.sol diff --git a/src/mocks/harness/DeploymentCoverageHarnesses.sol b/src/mocks/harness/DeploymentCoverageHarnesses.sol new file mode 100644 index 0000000..d3e3d17 --- /dev/null +++ b/src/mocks/harness/DeploymentCoverageHarnesses.sol @@ -0,0 +1,95 @@ +// SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +import {ISanctionsList} from "src/rules/interfaces/ISanctionsList.sol"; +import {RuleBlacklist} from "src/rules/validation/deployment/RuleBlacklist.sol"; +import {RuleWhitelist} from "src/rules/validation/deployment/RuleWhitelist.sol"; +import {RuleWhitelistWrapper} from "src/rules/validation/deployment/RuleWhitelistWrapper.sol"; +import {RuleERC2980} from "src/rules/validation/deployment/RuleERC2980.sol"; +import {RuleSanctionsList} from "src/rules/validation/deployment/RuleSanctionsList.sol"; +import {RuleBlacklistOwnable2Step} from "src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol"; +import {RuleWhitelistOwnable2Step} from "src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol"; +import {RuleWhitelistWrapperOwnable2Step} from "src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol"; +import {RuleERC2980Ownable2Step} from "src/rules/validation/deployment/RuleERC2980Ownable2Step.sol"; + +contract RuleBlacklistHarness is RuleBlacklist { + constructor(address admin, address forwarderIrrevocable) RuleBlacklist(admin, forwarderIrrevocable) {} + + function exposedMsgDataLength() external view returns (uint256) { + return _msgData().length; + } +} + +contract RuleWhitelistHarness is RuleWhitelist { + constructor(address admin, address forwarderIrrevocable, bool checkSpender_) + RuleWhitelist(admin, forwarderIrrevocable, checkSpender_) + {} + + function exposedMsgDataLength() external view returns (uint256) { + return _msgData().length; + } +} + +contract RuleWhitelistWrapperHarness is RuleWhitelistWrapper { + constructor(address admin, address forwarderIrrevocable, bool checkSpender_) + RuleWhitelistWrapper(admin, forwarderIrrevocable, checkSpender_) + {} + + function exposedMsgDataLength() external view returns (uint256) { + return _msgData().length; + } +} + +contract RuleERC2980Harness is RuleERC2980 { + constructor(address admin, address forwarderIrrevocable) RuleERC2980(admin, forwarderIrrevocable) {} + + function exposedMsgDataLength() external view returns (uint256) { + return _msgData().length; + } +} + +contract RuleSanctionsListHarness is RuleSanctionsList { + constructor(address admin, address forwarderIrrevocable, ISanctionsList sanctionContractOracle_) + RuleSanctionsList(admin, forwarderIrrevocable, sanctionContractOracle_) + {} + + function exposedMsgDataLength() external view returns (uint256) { + return _msgData().length; + } +} + +contract RuleBlacklistOwnable2StepHarness is RuleBlacklistOwnable2Step { + constructor(address owner, address forwarderIrrevocable) RuleBlacklistOwnable2Step(owner, forwarderIrrevocable) {} + + function exposedMsgDataLength() external view returns (uint256) { + return _msgData().length; + } +} + +contract RuleWhitelistOwnable2StepHarness is RuleWhitelistOwnable2Step { + constructor(address owner, address forwarderIrrevocable, bool checkSpender_) + RuleWhitelistOwnable2Step(owner, forwarderIrrevocable, checkSpender_) + {} + + function exposedMsgDataLength() external view returns (uint256) { + return _msgData().length; + } +} + +contract RuleWhitelistWrapperOwnable2StepHarness is RuleWhitelistWrapperOwnable2Step { + constructor(address owner, address forwarderIrrevocable, bool checkSpender_) + RuleWhitelistWrapperOwnable2Step(owner, forwarderIrrevocable, checkSpender_) + {} + + function exposedMsgDataLength() external view returns (uint256) { + return _msgData().length; + } +} + +contract RuleERC2980Ownable2StepHarness is RuleERC2980Ownable2Step { + constructor(address owner, address forwarderIrrevocable) RuleERC2980Ownable2Step(owner, forwarderIrrevocable) {} + + function exposedMsgDataLength() external view returns (uint256) { + return _msgData().length; + } +} diff --git a/src/mocks/harness/RuleSanctionsListOwnable2StepHarness.sol b/src/mocks/harness/RuleSanctionsListOwnable2StepHarness.sol new file mode 100644 index 0000000..8584253 --- /dev/null +++ b/src/mocks/harness/RuleSanctionsListOwnable2StepHarness.sol @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +import {ISanctionsList} from "src/rules/interfaces/ISanctionsList.sol"; +import {RuleSanctionsListOwnable2Step} from "src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol"; + +contract RuleSanctionsListOwnable2StepHarness is RuleSanctionsListOwnable2Step { + constructor(address owner, address forwarderIrrevocable, ISanctionsList sanctionContractOracle_) + RuleSanctionsListOwnable2Step(owner, forwarderIrrevocable, sanctionContractOracle_) + {} + + function exposedMsgSender() external view returns (address) { + return _msgSender(); + } + + function exposedMsgData() external view returns (bytes memory) { + return _msgData(); + } + + function exposedContextSuffixLength() external view returns (uint256) { + return _contextSuffixLength(); + } +} diff --git a/src/mocks/harness/RuleSpenderWhitelistHarnesses.sol b/src/mocks/harness/RuleSpenderWhitelistHarnesses.sol new file mode 100644 index 0000000..7d0982e --- /dev/null +++ b/src/mocks/harness/RuleSpenderWhitelistHarnesses.sol @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +import {RuleSpenderWhitelist} from "src/rules/validation/deployment/RuleSpenderWhitelist.sol"; +import {RuleSpenderWhitelistOwnable2Step} from "src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol"; + +contract RuleSpenderWhitelistHarness is RuleSpenderWhitelist { + constructor(address admin, address forwarderIrrevocable) RuleSpenderWhitelist(admin, forwarderIrrevocable) {} + + function exposedMsgSender() external view returns (address) { + return _msgSender(); + } + + function exposedMsgData() external view returns (bytes memory) { + return _msgData(); + } + + function exposedContextSuffixLength() external view returns (uint256) { + return _contextSuffixLength(); + } +} + +contract RuleSpenderWhitelistOwnable2StepHarness is RuleSpenderWhitelistOwnable2Step { + constructor(address owner, address forwarderIrrevocable) RuleSpenderWhitelistOwnable2Step(owner, forwarderIrrevocable) {} + + function exposedMsgSender() external view returns (address) { + return _msgSender(); + } + + function exposedMsgData() external view returns (bytes memory) { + return _msgData(); + } + + function exposedContextSuffixLength() external view returns (uint256) { + return _contextSuffixLength(); + } +} diff --git a/src/mocks/harness/RuleWhitelistWrapperHarnessInternal.sol b/src/mocks/harness/RuleWhitelistWrapperHarnessInternal.sol new file mode 100644 index 0000000..36a74ab --- /dev/null +++ b/src/mocks/harness/RuleWhitelistWrapperHarnessInternal.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +import {RuleWhitelistWrapper} from "src/rules/validation/deployment/RuleWhitelistWrapper.sol"; + +contract RuleWhitelistWrapperHarnessInternal is RuleWhitelistWrapper { + constructor(address admin, address forwarderIrrevocable, bool checkSpender_) + RuleWhitelistWrapper(admin, forwarderIrrevocable, checkSpender_) + {} + + function exposedTransferredSpenderInternal(address spender, address from, address to, uint256 value) external view { + _transferred(spender, from, to, value); + } +} diff --git a/src/rules/validation/abstract/core/RuleNFTAdapter.sol b/src/rules/validation/abstract/core/RuleNFTAdapter.sol index 0be7ddb..85e0538 100644 --- a/src/rules/validation/abstract/core/RuleNFTAdapter.sol +++ b/src/rules/validation/abstract/core/RuleNFTAdapter.sol @@ -112,7 +112,7 @@ abstract contract RuleNFTAdapter is RuleTransferValidation, IERC7943NonFungibleC * @inheritdoc ITransferContext */ function transferred(MultiTokenTransferContext calldata ctx) external virtual override { - if (ctx.sender != address(0)) { + if (ctx.sender != address(0) && ctx.sender != ctx.from) { _transferredFrom(ctx.sender, ctx.from, ctx.to, ctx.value); } else { _transferred(ctx.from, ctx.to, ctx.value); @@ -123,7 +123,7 @@ abstract contract RuleNFTAdapter is RuleTransferValidation, IERC7943NonFungibleC * @inheritdoc ITransferContext */ function transferred(FungibleTransferContext calldata ctx) external virtual override { - if (ctx.sender != address(0)) { + if (ctx.sender != address(0) && ctx.sender != ctx.from) { _transferredFrom(ctx.sender, ctx.from, ctx.to, ctx.value); } else { _transferred(ctx.from, ctx.to, ctx.value); diff --git a/test/Coverage/DeploymentOperationCoverage.t.sol b/test/Coverage/DeploymentOperationCoverage.t.sol index f71291a..5dc650f 100644 --- a/test/Coverage/DeploymentOperationCoverage.t.sol +++ b/test/Coverage/DeploymentOperationCoverage.t.sol @@ -18,88 +18,17 @@ import {RuleBlacklistOwnable2Step} from "src/rules/validation/deployment/RuleBla import {RuleWhitelistOwnable2Step} from "src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol"; import {RuleWhitelistWrapperOwnable2Step} from "src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol"; import {RuleERC2980Ownable2Step} from "src/rules/validation/deployment/RuleERC2980Ownable2Step.sol"; - -contract RuleBlacklistHarness is RuleBlacklist { - constructor(address admin, address forwarderIrrevocable) RuleBlacklist(admin, forwarderIrrevocable) {} - - function exposedMsgDataLength() external view returns (uint256) { - return _msgData().length; - } -} - -contract RuleWhitelistHarness is RuleWhitelist { - constructor(address admin, address forwarderIrrevocable, bool checkSpender_) - RuleWhitelist(admin, forwarderIrrevocable, checkSpender_) - {} - - function exposedMsgDataLength() external view returns (uint256) { - return _msgData().length; - } -} - -contract RuleWhitelistWrapperHarness is RuleWhitelistWrapper { - constructor(address admin, address forwarderIrrevocable, bool checkSpender_) - RuleWhitelistWrapper(admin, forwarderIrrevocable, checkSpender_) - {} - - function exposedMsgDataLength() external view returns (uint256) { - return _msgData().length; - } -} - -contract RuleERC2980Harness is RuleERC2980 { - constructor(address admin, address forwarderIrrevocable) RuleERC2980(admin, forwarderIrrevocable) {} - - function exposedMsgDataLength() external view returns (uint256) { - return _msgData().length; - } -} - -contract RuleSanctionsListHarness is RuleSanctionsList { - constructor(address admin, address forwarderIrrevocable, ISanctionsList sanctionContractOracle_) - RuleSanctionsList(admin, forwarderIrrevocable, sanctionContractOracle_) - {} - - function exposedMsgDataLength() external view returns (uint256) { - return _msgData().length; - } -} - -contract RuleBlacklistOwnable2StepHarness is RuleBlacklistOwnable2Step { - constructor(address owner, address forwarderIrrevocable) RuleBlacklistOwnable2Step(owner, forwarderIrrevocable) {} - - function exposedMsgDataLength() external view returns (uint256) { - return _msgData().length; - } -} - -contract RuleWhitelistOwnable2StepHarness is RuleWhitelistOwnable2Step { - constructor(address owner, address forwarderIrrevocable, bool checkSpender_) - RuleWhitelistOwnable2Step(owner, forwarderIrrevocable, checkSpender_) - {} - - function exposedMsgDataLength() external view returns (uint256) { - return _msgData().length; - } -} - -contract RuleWhitelistWrapperOwnable2StepHarness is RuleWhitelistWrapperOwnable2Step { - constructor(address owner, address forwarderIrrevocable, bool checkSpender_) - RuleWhitelistWrapperOwnable2Step(owner, forwarderIrrevocable, checkSpender_) - {} - - function exposedMsgDataLength() external view returns (uint256) { - return _msgData().length; - } -} - -contract RuleERC2980Ownable2StepHarness is RuleERC2980Ownable2Step { - constructor(address owner, address forwarderIrrevocable) RuleERC2980Ownable2Step(owner, forwarderIrrevocable) {} - - function exposedMsgDataLength() external view returns (uint256) { - return _msgData().length; - } -} +import { + RuleBlacklistHarness, + RuleWhitelistHarness, + RuleWhitelistWrapperHarness, + RuleERC2980Harness, + RuleSanctionsListHarness, + RuleBlacklistOwnable2StepHarness, + RuleWhitelistOwnable2StepHarness, + RuleWhitelistWrapperOwnable2StepHarness, + RuleERC2980Ownable2StepHarness +} from "src/mocks/harness/DeploymentCoverageHarnesses.sol"; contract DeploymentCoverageExtraTest is Test, HelperContract { function testDeploymentWrappersAndHooksCoverage() public { diff --git a/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol b/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol index b04008b..ffc51e4 100644 --- a/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol +++ b/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol @@ -12,7 +12,7 @@ import {RuleBlacklistInvariantStorage} from "src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol"; import {RuleSanctionsListInvariantStorage} from "src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol"; -import {SanctionListOracle} from "../utils/SanctionListOracle.sol"; +import {SanctionListOracle} from "src/mocks/SanctionListOracle.sol"; import {DeployCMTATWithBlacklistAndSanctionsList} from "script/DeployCMTATWithBlacklistAndSanctionsList.s.sol"; diff --git a/test/RuleConditionalTransferLight/RuleConditionalTransferLightApproveAndTransfer.t.sol b/test/RuleConditionalTransferLight/RuleConditionalTransferLightApproveAndTransfer.t.sol index 24a2891..2449845 100644 --- a/test/RuleConditionalTransferLight/RuleConditionalTransferLightApproveAndTransfer.t.sol +++ b/test/RuleConditionalTransferLight/RuleConditionalTransferLightApproveAndTransfer.t.sol @@ -4,23 +4,8 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; import {HelperContract} from "../HelperContract.sol"; import {RuleConditionalTransferLight} from "src/rules/operation/RuleConditionalTransferLight.sol"; -import {MockERC20WithTransferContext} from "../utils/MockERC20WithTransferContext.sol"; - -contract MockERC20TransferFromFalse { - mapping(address => mapping(address => uint256)) private _allowances; - - function setAllowance(address owner, address spender, uint256 value) external { - _allowances[owner][spender] = value; - } - - function allowance(address owner, address spender) external view returns (uint256) { - return _allowances[owner][spender]; - } - - function transferFrom(address, address, uint256) external pure returns (bool) { - return false; - } -} +import {MockERC20WithTransferContext} from "src/mocks/MockERC20WithTransferContext.sol"; +import {MockERC20TransferFromFalse} from "src/mocks/MockERC20TransferFromFalse.sol"; contract RuleConditionalTransferLightApproveAndTransfer is Test, HelperContract { RuleConditionalTransferLight private rule; diff --git a/test/RuleIdentityRegistry/Ownable/RuleIdentityRegistryOwnable2Step.t.sol b/test/RuleIdentityRegistry/Ownable/RuleIdentityRegistryOwnable2Step.t.sol index 4f8b069..056fb0d 100644 --- a/test/RuleIdentityRegistry/Ownable/RuleIdentityRegistryOwnable2Step.t.sol +++ b/test/RuleIdentityRegistry/Ownable/RuleIdentityRegistryOwnable2Step.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; import {HelperContract} from "../../HelperContract.sol"; import {Ownable2StepTestBase, IOwnable2StepLike} from "../../utils/Ownable2StepTestBase.sol"; -import {IdentityRegistryMock} from "../../utils/IdentityRegistryMock.sol"; +import {IdentityRegistryMock} from "src/mocks/IdentityRegistryMock.sol"; import {RuleIdentityRegistryOwnable2Step} from "src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol"; diff --git a/test/RuleIdentityRegistry/RuleIdentityRegistryRuleEngineIntegration.t.sol b/test/RuleIdentityRegistry/RuleIdentityRegistryRuleEngineIntegration.t.sol index 7f29962..0d3446b 100644 --- a/test/RuleIdentityRegistry/RuleIdentityRegistryRuleEngineIntegration.t.sol +++ b/test/RuleIdentityRegistry/RuleIdentityRegistryRuleEngineIntegration.t.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; import {HelperContract} from "../HelperContract.sol"; -import {IdentityRegistryMock} from "../utils/IdentityRegistryMock.sol"; +import {IdentityRegistryMock} from "src/mocks/IdentityRegistryMock.sol"; import {RuleEngine} from "RuleEngine/RuleEngine.sol"; import {RuleIdentityRegistry} from "src/rules/validation/deployment/RuleIdentityRegistry.sol"; diff --git a/test/RuleIdentityRegistry/RuleIdentityRegistryUnit.t.sol b/test/RuleIdentityRegistry/RuleIdentityRegistryUnit.t.sol index f59db86..81789ae 100644 --- a/test/RuleIdentityRegistry/RuleIdentityRegistryUnit.t.sol +++ b/test/RuleIdentityRegistry/RuleIdentityRegistryUnit.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; import {HelperContract} from "../HelperContract.sol"; import {RuleIdentityRegistry} from "src/rules/validation/deployment/RuleIdentityRegistry.sol"; -import {IdentityRegistryMock} from "../utils/IdentityRegistryMock.sol"; +import {IdentityRegistryMock} from "src/mocks/IdentityRegistryMock.sol"; contract RuleIdentityRegistryUnit is Test, HelperContract { IdentityRegistryMock private registry; diff --git a/test/RuleMaxTotalSupply/Ownable/RuleMaxTotalSupplyOwnable2Step.t.sol b/test/RuleMaxTotalSupply/Ownable/RuleMaxTotalSupplyOwnable2Step.t.sol index b1028df..4a44346 100644 --- a/test/RuleMaxTotalSupply/Ownable/RuleMaxTotalSupplyOwnable2Step.t.sol +++ b/test/RuleMaxTotalSupply/Ownable/RuleMaxTotalSupplyOwnable2Step.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; import {HelperContract} from "../../HelperContract.sol"; import {Ownable2StepTestBase, IOwnable2StepLike} from "../../utils/Ownable2StepTestBase.sol"; -import {TotalSupplyMock} from "../../utils/TotalSupplyMock.sol"; +import {TotalSupplyMock} from "src/mocks/TotalSupplyMock.sol"; import {RuleMaxTotalSupplyOwnable2Step} from "src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol"; contract RuleMaxTotalSupplyOwnable2StepTest is Ownable2StepTestBase { diff --git a/test/RuleMaxTotalSupply/RuleMaxTotalSupplyRuleEngineIntegration.t.sol b/test/RuleMaxTotalSupply/RuleMaxTotalSupplyRuleEngineIntegration.t.sol index 3ac3846..8307b59 100644 --- a/test/RuleMaxTotalSupply/RuleMaxTotalSupplyRuleEngineIntegration.t.sol +++ b/test/RuleMaxTotalSupply/RuleMaxTotalSupplyRuleEngineIntegration.t.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; import {HelperContract} from "../HelperContract.sol"; -import {TotalSupplyMock} from "../utils/TotalSupplyMock.sol"; +import {TotalSupplyMock} from "src/mocks/TotalSupplyMock.sol"; import {RuleEngine} from "RuleEngine/RuleEngine.sol"; import {RuleMaxTotalSupply} from "src/rules/validation/deployment/RuleMaxTotalSupply.sol"; diff --git a/test/RuleMaxTotalSupply/RuleMaxTotalSupplyUnit.t.sol b/test/RuleMaxTotalSupply/RuleMaxTotalSupplyUnit.t.sol index d4de2cc..a27d2d3 100644 --- a/test/RuleMaxTotalSupply/RuleMaxTotalSupplyUnit.t.sol +++ b/test/RuleMaxTotalSupply/RuleMaxTotalSupplyUnit.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; import {HelperContract} from "../HelperContract.sol"; import {RuleMaxTotalSupply} from "src/rules/validation/deployment/RuleMaxTotalSupply.sol"; -import {TotalSupplyMock} from "../utils/TotalSupplyMock.sol"; +import {TotalSupplyMock} from "src/mocks/TotalSupplyMock.sol"; contract RuleMaxTotalSupplyUnit is Test, HelperContract { TotalSupplyMock private token; diff --git a/test/RuleSanctionList/Ownable/RuleSanctionsListOwnable2Step.t.sol b/test/RuleSanctionList/Ownable/RuleSanctionsListOwnable2Step.t.sol index 090f0f3..709379f 100644 --- a/test/RuleSanctionList/Ownable/RuleSanctionsListOwnable2Step.t.sol +++ b/test/RuleSanctionList/Ownable/RuleSanctionsListOwnable2Step.t.sol @@ -4,27 +4,10 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; import {HelperContract} from "../../HelperContract.sol"; import {Ownable2StepTestBase, IOwnable2StepLike} from "../../utils/Ownable2StepTestBase.sol"; -import {SanctionListOracle} from "../../utils/SanctionListOracle.sol"; +import {SanctionListOracle} from "src/mocks/SanctionListOracle.sol"; import {ISanctionsList} from "src/rules/interfaces/ISanctionsList.sol"; import {RuleSanctionsListOwnable2Step} from "src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol"; - -contract RuleSanctionsListOwnable2StepHarness is RuleSanctionsListOwnable2Step { - constructor(address owner, address forwarderIrrevocable, ISanctionsList sanctionContractOracle_) - RuleSanctionsListOwnable2Step(owner, forwarderIrrevocable, sanctionContractOracle_) - {} - - function exposedMsgSender() external view returns (address) { - return _msgSender(); - } - - function exposedMsgData() external view returns (bytes memory) { - return _msgData(); - } - - function exposedContextSuffixLength() external view returns (uint256) { - return _contextSuffixLength(); - } -} +import {RuleSanctionsListOwnable2StepHarness} from "src/mocks/harness/RuleSanctionsListOwnable2StepHarness.sol"; contract RuleSanctionsListOwnable2StepTest is Ownable2StepTestBase { function _deployOwnable2Step() internal override returns (IOwnable2StepLike, address) { diff --git a/test/RuleSanctionList/RuleEngineIntegration.t.sol b/test/RuleSanctionList/RuleEngineIntegration.t.sol index 1af0a96..62e7a19 100644 --- a/test/RuleSanctionList/RuleEngineIntegration.t.sol +++ b/test/RuleSanctionList/RuleEngineIntegration.t.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; import {HelperContract} from "../HelperContract.sol"; -import {SanctionListOracle} from "../utils/SanctionListOracle.sol"; +import {SanctionListOracle} from "src/mocks/SanctionListOracle.sol"; import {RuleEngine} from "RuleEngine/RuleEngine.sol"; import {RuleSanctionsList} from "src/rules/validation/deployment/RuleSanctionsList.sol"; diff --git a/test/RuleSanctionList/RuleSanctionListAddTest.t.sol b/test/RuleSanctionList/RuleSanctionListAddTest.t.sol index 1de70c6..7e8e040 100644 --- a/test/RuleSanctionList/RuleSanctionListAddTest.t.sol +++ b/test/RuleSanctionList/RuleSanctionListAddTest.t.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; import {HelperContract} from "../HelperContract.sol"; -import {SanctionListOracle} from "../utils/SanctionListOracle.sol"; +import {SanctionListOracle} from "src/mocks/SanctionListOracle.sol"; import {RuleSanctionsList, ISanctionsList} from "src/rules/validation/deployment/RuleSanctionsList.sol"; /** * @title General functions of the ruleSanctionList diff --git a/test/RuleSanctionList/RuleSanctionListDeploymentTest.t.sol b/test/RuleSanctionList/RuleSanctionListDeploymentTest.t.sol index 4fbe45d..2779b69 100644 --- a/test/RuleSanctionList/RuleSanctionListDeploymentTest.t.sol +++ b/test/RuleSanctionList/RuleSanctionListDeploymentTest.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; import {HelperContract} from "../HelperContract.sol"; import {MinimalForwarderMock} from "CMTAT/mocks/MinimalForwarderMock.sol"; -import {SanctionListOracle} from "../utils/SanctionListOracle.sol"; +import {SanctionListOracle} from "src/mocks/SanctionListOracle.sol"; import {RuleSanctionsList, ISanctionsList} from "src/rules/validation/deployment/RuleSanctionsList.sol"; import {AccessControlModuleStandalone} from "../../src/modules/AccessControlModuleStandalone.sol"; /** diff --git a/test/RuleSanctionList/RuleSanctionListTest.t.sol b/test/RuleSanctionList/RuleSanctionListTest.t.sol index 29d16b1..6727ee1 100644 --- a/test/RuleSanctionList/RuleSanctionListTest.t.sol +++ b/test/RuleSanctionList/RuleSanctionListTest.t.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; import {HelperContract} from "../HelperContract.sol"; -import {SanctionListOracle} from "../utils/SanctionListOracle.sol"; +import {SanctionListOracle} from "src/mocks/SanctionListOracle.sol"; import {RuleSanctionsList, ISanctionsList} from "src/rules/validation/deployment/RuleSanctionsList.sol"; /** * @title General functions of the ruleSanctionList diff --git a/test/RuleSpenderWhitelist/Ownable/RuleSpenderWhitelistOwnable2Step.t.sol b/test/RuleSpenderWhitelist/Ownable/RuleSpenderWhitelistOwnable2Step.t.sol index 6f8a55e..3785f1e 100644 --- a/test/RuleSpenderWhitelist/Ownable/RuleSpenderWhitelistOwnable2Step.t.sol +++ b/test/RuleSpenderWhitelist/Ownable/RuleSpenderWhitelistOwnable2Step.t.sol @@ -5,22 +5,7 @@ import {Test} from "forge-std/Test.sol"; import {HelperContract} from "../../HelperContract.sol"; import {Ownable} from "OZ/access/Ownable.sol"; import {RuleSpenderWhitelistOwnable2Step} from "src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol"; - -contract RuleSpenderWhitelistOwnable2StepHarness is RuleSpenderWhitelistOwnable2Step { - constructor(address owner, address forwarderIrrevocable) RuleSpenderWhitelistOwnable2Step(owner, forwarderIrrevocable) {} - - function exposedMsgSender() external view returns (address) { - return _msgSender(); - } - - function exposedMsgData() external view returns (bytes memory) { - return _msgData(); - } - - function exposedContextSuffixLength() external view returns (uint256) { - return _contextSuffixLength(); - } -} +import {RuleSpenderWhitelistOwnable2StepHarness} from "src/mocks/harness/RuleSpenderWhitelistHarnesses.sol"; contract RuleSpenderWhitelistOwnable2StepTest is Test, HelperContract { RuleSpenderWhitelistOwnable2StepHarness private rule; diff --git a/test/RuleSpenderWhitelist/RuleSpenderWhitelist.t.sol b/test/RuleSpenderWhitelist/RuleSpenderWhitelist.t.sol index 27a20f6..1cdc766 100644 --- a/test/RuleSpenderWhitelist/RuleSpenderWhitelist.t.sol +++ b/test/RuleSpenderWhitelist/RuleSpenderWhitelist.t.sol @@ -7,22 +7,7 @@ import {RuleSpenderWhitelist} from "src/rules/validation/deployment/RuleSpenderW import {AccessControlModuleStandalone} from "src/modules/AccessControlModuleStandalone.sol"; import {IAccessControl} from "OZ/access/IAccessControl.sol"; import {IRule} from "RuleEngine/interfaces/IRule.sol"; - -contract RuleSpenderWhitelistHarness is RuleSpenderWhitelist { - constructor(address admin, address forwarderIrrevocable) RuleSpenderWhitelist(admin, forwarderIrrevocable) {} - - function exposedMsgSender() external view returns (address) { - return _msgSender(); - } - - function exposedMsgData() external view returns (bytes memory) { - return _msgData(); - } - - function exposedContextSuffixLength() external view returns (uint256) { - return _contextSuffixLength(); - } -} +import {RuleSpenderWhitelistHarness} from "src/mocks/harness/RuleSpenderWhitelistHarnesses.sol"; contract RuleSpenderWhitelistTest is Test, HelperContract { uint8 internal constant CODE_SPENDER_NOT_WHITELISTED = 66; diff --git a/test/RuleWhitelist/WhitelistWrapper.t.sol b/test/RuleWhitelist/WhitelistWrapper.t.sol index cfc1f4a..aea018d 100644 --- a/test/RuleWhitelist/WhitelistWrapper.t.sol +++ b/test/RuleWhitelist/WhitelistWrapper.t.sol @@ -6,20 +6,11 @@ import {HelperContract} from "../HelperContract.sol"; import {AccessControlModuleStandalone} from "../../src/modules/AccessControlModuleStandalone.sol"; import {RuleWhitelist} from "src/rules/validation/deployment/RuleWhitelist.sol"; import {RuleWhitelistWrapper} from "src/rules/validation/deployment/RuleWhitelistWrapper.sol"; +import {RuleWhitelistWrapperHarnessInternal} from "src/mocks/harness/RuleWhitelistWrapperHarnessInternal.sol"; /** * @title Integration test with the CMTAT */ -contract RuleWhitelistWrapperHarnessInternal is RuleWhitelistWrapper { - constructor(address admin, address forwarderIrrevocable, bool checkSpender_) - RuleWhitelistWrapper(admin, forwarderIrrevocable, checkSpender_) - {} - - function exposedTransferredSpenderInternal(address spender, address from, address to, uint256 value) external view { - _transferred(spender, from, to, value); - } -} - contract CMTATIntegrationWhitelistWrapper is Test, HelperContract { uint256 constant ADDRESS1_BALANCE_INIT = 31; uint256 constant ADDRESS2_BALANCE_INIT = 32; diff --git a/test/TransferContext/TransferContext.t.sol b/test/TransferContext/TransferContext.t.sol index e05510b..203eb4e 100644 --- a/test/TransferContext/TransferContext.t.sol +++ b/test/TransferContext/TransferContext.t.sol @@ -5,7 +5,7 @@ import {Test} from "forge-std/Test.sol"; import {HelperContract} from "../HelperContract.sol"; import {RuleWhitelist} from "src/rules/validation/deployment/RuleWhitelist.sol"; import {RuleConditionalTransferLight} from "src/rules/operation/RuleConditionalTransferLight.sol"; -import {MockERC20WithTransferContext} from "../utils/MockERC20WithTransferContext.sol"; +import {MockERC20WithTransferContext} from "src/mocks/MockERC20WithTransferContext.sol"; contract TransferContextTest is Test, HelperContract { MockERC20WithTransferContext private token; diff --git a/test/TransferContext/TransferContextMocks.t.sol b/test/TransferContext/TransferContextMocks.t.sol new file mode 100644 index 0000000..93ea7d2 --- /dev/null +++ b/test/TransferContext/TransferContextMocks.t.sol @@ -0,0 +1,127 @@ +// SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +import {Test} from "forge-std/Test.sol"; +import {HelperContract} from "../HelperContract.sol"; +import {MockERC20WithTransferContext} from "src/mocks/MockERC20WithTransferContext.sol"; +import {MockERC721WithTransferContext} from "src/mocks/MockERC721WithTransferContext.sol"; +import {RuleWhitelist} from "src/rules/validation/deployment/RuleWhitelist.sol"; +import {RuleSpenderWhitelist} from "src/rules/validation/deployment/RuleSpenderWhitelist.sol"; + +contract TransferContextMocksTest is Test, HelperContract { + MockERC20WithTransferContext private erc20; + MockERC721WithTransferContext private erc721; + + function setUp() public { + erc20 = new MockERC20WithTransferContext("Mock20", "M20"); + erc721 = new MockERC721WithTransferContext("Mock721", "M721"); + } + + function _deployWhitelistRule() internal returns (RuleWhitelist) { + vm.prank(DEFAULT_ADMIN_ADDRESS); + RuleWhitelist rule = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, false); + vm.startPrank(DEFAULT_ADMIN_ADDRESS); + rule.addAddress(ADDRESS1); + rule.addAddress(ADDRESS2); + vm.stopPrank(); + return rule; + } + + function _deploySpenderWhitelistRule() internal returns (RuleSpenderWhitelist) { + vm.prank(DEFAULT_ADMIN_ADDRESS); + return new RuleSpenderWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS); + } + + function testERC20TransferWithContextWhitelist() public { + RuleWhitelist rule = _deployWhitelistRule(); + erc20.setRule(address(rule)); + erc20.mint(ADDRESS1, 100); + + vm.prank(ADDRESS1); + assertTrue(erc20.transfer(ADDRESS2, 10)); + + assertEq(erc20.balanceOf(ADDRESS1), 90); + assertEq(erc20.balanceOf(ADDRESS2), 10); + } + + function testERC20TransferFromOwnerPathNotTreatedAsSpender() public { + RuleSpenderWhitelist rule = _deploySpenderWhitelistRule(); + erc20.setRule(address(rule)); + erc20.mint(ADDRESS1, 100); + + vm.prank(ADDRESS1); + erc20.approve(ADDRESS1, 10); + + vm.prank(ADDRESS1); + assertTrue(erc20.transferFrom(ADDRESS1, ADDRESS2, 10)); + + assertEq(erc20.balanceOf(ADDRESS1), 90); + assertEq(erc20.balanceOf(ADDRESS2), 10); + } + + function testERC20TransferFromRequiresSpenderWhitelist() public { + RuleSpenderWhitelist rule = _deploySpenderWhitelistRule(); + erc20.setRule(address(rule)); + erc20.mint(ADDRESS1, 100); + + vm.prank(ADDRESS1); + erc20.approve(ADDRESS3, 20); + + vm.expectRevert(); + vm.prank(ADDRESS3); + erc20.transferFrom(ADDRESS1, ADDRESS2, 10); + + vm.prank(DEFAULT_ADMIN_ADDRESS); + rule.addAddress(ADDRESS3); + + vm.prank(ADDRESS3); + assertTrue(erc20.transferFrom(ADDRESS1, ADDRESS2, 10)); + + assertEq(erc20.balanceOf(ADDRESS1), 90); + assertEq(erc20.balanceOf(ADDRESS2), 10); + } + + function testERC721TransferWithContextWhitelist() public { + RuleWhitelist rule = _deployWhitelistRule(); + erc721.setRule(address(rule)); + erc721.mint(ADDRESS1, 1); + + vm.prank(ADDRESS1); + erc721.transferFrom(ADDRESS1, ADDRESS2, 1); + + assertEq(erc721.ownerOf(1), ADDRESS2); + assertEq(erc721.balanceOf(ADDRESS1), 0); + assertEq(erc721.balanceOf(ADDRESS2), 1); + } + + function testERC721TransferFromOwnerPathNotTreatedAsSpender() public { + RuleSpenderWhitelist rule = _deploySpenderWhitelistRule(); + erc721.setRule(address(rule)); + erc721.mint(ADDRESS1, 1); + + vm.prank(ADDRESS1); + erc721.transferFrom(ADDRESS1, ADDRESS2, 1); + assertEq(erc721.ownerOf(1), ADDRESS2); + } + + function testERC721TransferFromRequiresSpenderWhitelist() public { + RuleSpenderWhitelist rule = _deploySpenderWhitelistRule(); + erc721.setRule(address(rule)); + erc721.mint(ADDRESS1, 1); + + vm.prank(ADDRESS1); + erc721.approve(ADDRESS3, 1); + + vm.expectRevert(); + vm.prank(ADDRESS3); + erc721.transferFrom(ADDRESS1, ADDRESS2, 1); + + vm.prank(DEFAULT_ADMIN_ADDRESS); + rule.addAddress(ADDRESS3); + + vm.prank(ADDRESS3); + erc721.transferFrom(ADDRESS1, ADDRESS2, 1); + + assertEq(erc721.ownerOf(1), ADDRESS2); + } +} diff --git a/test/utils/MockERC20WithTransferContext.sol b/test/utils/MockERC20WithTransferContext.sol deleted file mode 100644 index e14094f..0000000 --- a/test/utils/MockERC20WithTransferContext.sol +++ /dev/null @@ -1,127 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -import {ITransferContext} from "src/rules/interfaces/ITransferContext.sol"; - -contract MockERC20WithTransferContext { - string public name; - string public symbol; - uint8 public immutable decimals; - - mapping(address => uint256) public balanceOf; - mapping(address => mapping(address => uint256)) public allowance; - - ITransferContext public rule; - - event Transfer(address indexed from, address indexed to, uint256 value); - event Approval(address indexed owner, address indexed spender, uint256 value); - - constructor(string memory name_, string memory symbol_) { - name = name_; - symbol = symbol_; - decimals = 18; - } - - function setRule(address rule_) external { - rule = ITransferContext(rule_); - } - - function mint(address to, uint256 value) external { - balanceOf[to] += value; - emit Transfer(address(0), to, value); - } - - function approve(address spender, uint256 value) external returns (bool) { - allowance[msg.sender][spender] = value; - emit Approval(msg.sender, spender, value); - return true; - } - - function transfer(address to, uint256 value) external returns (bool) { - _transfer(msg.sender, to, value); - _callRuleContext(msg.sender, to, value, address(0), true, 0); - return true; - } - - function transferFrom(address from, address to, uint256 value) external returns (bool) { - uint256 allowed = allowance[from][msg.sender]; - require(allowed >= value, "ALLOWANCE"); - allowance[from][msg.sender] = allowed - value; - _transfer(from, to, value); - _callRuleContext(from, to, value, msg.sender, true, 0); - return true; - } - - function transferWithContext(address to, uint256 value, bool useFungibleContext, uint256 tokenId) - external - returns (bool) - { - _transfer(msg.sender, to, value); - _callRuleContext(msg.sender, to, value, address(0), useFungibleContext, tokenId); - return true; - } - - function transferFromWithContext( - address from, - address to, - uint256 value, - bool useFungibleContext, - uint256 tokenId - ) external returns (bool) { - uint256 allowed = allowance[from][msg.sender]; - require(allowed >= value, "ALLOWANCE"); - allowance[from][msg.sender] = allowed - value; - _transfer(from, to, value); - _callRuleContext(from, to, value, msg.sender, useFungibleContext, tokenId); - return true; - } - - function _transfer(address from, address to, uint256 value) internal { - require(balanceOf[from] >= value, "BALANCE"); - balanceOf[from] -= value; - balanceOf[to] += value; - emit Transfer(from, to, value); - } - - function _callRuleContext( - address from, - address to, - uint256 value, - address sender, - bool useFungibleContext, - uint256 tokenId - ) internal { - if (address(rule) == address(0)) { - return; - } - - if (useFungibleContext) { - ITransferContext.FungibleTransferContext memory ctx = - ITransferContext.FungibleTransferContext({ - selector: sender == address(0) - ? bytes4(keccak256("transferred(address,address,uint256)")) - : bytes4(keccak256("transferred(address,address,address,uint256)")), - sender: sender, - from: from, - to: to, - value: value, - data: "" - }); - rule.transferred(ctx); - } else { - ITransferContext.MultiTokenTransferContext memory ctx = - ITransferContext.MultiTokenTransferContext({ - selector: sender == address(0) - ? bytes4(keccak256("transferred(address,address,uint256)")) - : bytes4(keccak256("transferred(address,address,address,uint256)")), - sender: sender, - from: from, - to: to, - value: value, - tokenId: tokenId, - data: "" - }); - rule.transferred(ctx); - } - } -} From 2063918ce55997f28ad26215ea41521ae67b03e0 Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Tue, 10 Mar 2026 14:49:56 +0100 Subject: [PATCH 3/8] Fix warning lint issues --- .../abstract/RuleConditionalTransferLightBase.sol | 9 ++++++++- src/rules/validation/abstract/base/RuleWhitelistBase.sol | 1 - .../abstract/base/RuleWhitelistWrapperBase.sol | 2 -- src/rules/validation/deployment/RuleSanctionsList.sol | 2 +- .../deployment/RuleSanctionsListOwnable2Step.sol | 2 +- test/Coverage/DeploymentOperationCoverage.t.sol | 9 --------- test/DeploymentScripts/DeployCMTATWithBlacklist.t.sol | 1 - .../DeployCMTATWithBlacklistAndSanctionsList.t.sol | 9 ++++----- test/DeploymentScripts/DeployCMTATWithWhitelist.t.sol | 1 - test/RuleBlacklist/CMTATIntegration.t.sol | 6 +++--- test/RuleBlacklist/CMTATIntegrationDirect.t.sol | 6 +++--- .../AccessControl/RuleERC2980AccessControl.t.sol | 2 -- .../Ownable/RuleERC2980OwnableAccessControl.t.sol | 2 -- test/RuleWhitelist/CMTATIntegration.t.sol | 6 +++--- .../RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol | 6 +++--- test/TransferContext/TransferContextMocks.t.sol | 2 +- 16 files changed, 27 insertions(+), 39 deletions(-) diff --git a/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol b/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol index 209356a..0dae62b 100644 --- a/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol +++ b/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol @@ -165,7 +165,14 @@ abstract contract RuleConditionalTransferLightBase is VersionModule, RuleConditi } function _transferHash(address from, address to, uint256 value) internal pure virtual returns (bytes32 hash) { - return keccak256(abi.encodePacked(from, to, value)); + // Linter suggestion (`asm-keccak256`): hash packed values in assembly to avoid abi.encodePacked overhead. + assembly ("memory-safe") { + let ptr := mload(0x40) + mstore(ptr, shl(96, from)) + mstore(add(ptr, 0x20), shl(96, to)) + mstore(add(ptr, 0x40), value) + hash := keccak256(ptr, 0x60) + } } /*////////////////////////////////////////////////////////////// diff --git a/src/rules/validation/abstract/base/RuleWhitelistBase.sol b/src/rules/validation/abstract/base/RuleWhitelistBase.sol index 7e19c4c..f23aef6 100644 --- a/src/rules/validation/abstract/base/RuleWhitelistBase.sol +++ b/src/rules/validation/abstract/base/RuleWhitelistBase.sol @@ -4,7 +4,6 @@ pragma solidity ^0.8.20; import {RuleAddressSet} from "../RuleAddressSet/RuleAddressSet.sol"; import {RuleWhitelistShared} from "../core/RuleWhitelistShared.sol"; import {RuleTransferValidation} from "../core/RuleTransferValidation.sol"; -import {IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol"; import {IIdentityRegistryVerified} from "../../../interfaces/IIdentityRegistry.sol"; /** diff --git a/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol b/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol index 852ca08..c288395 100644 --- a/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol +++ b/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol @@ -11,8 +11,6 @@ import {RuleWhitelistShared} from "../core/RuleWhitelistShared.sol"; import {RuleTransferValidation} from "../core/RuleTransferValidation.sol"; /* ==== RuleEngine === */ import {RulesManagementModule} from "RuleEngine/modules/RulesManagementModule.sol"; -/* ==== CMTAT === */ -import {IERC1404, IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol"; /* ==== Interfaces === */ import {IAddressList} from "../../../interfaces/IAddressList.sol"; import {IIdentityRegistryVerified} from "../../../interfaces/IIdentityRegistry.sol"; diff --git a/src/rules/validation/deployment/RuleSanctionsList.sol b/src/rules/validation/deployment/RuleSanctionsList.sol index bd00b0a..165600f 100644 --- a/src/rules/validation/deployment/RuleSanctionsList.sol +++ b/src/rules/validation/deployment/RuleSanctionsList.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.20; import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol"; import {Context} from "OZ/utils/Context.sol"; import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol"; -import {MetaTxModuleStandalone, ERC2771Context} from "../../../modules/MetaTxModuleStandalone.sol"; +import {ERC2771Context} from "../../../modules/MetaTxModuleStandalone.sol"; import {RuleSanctionsListBase} from "../abstract/base/RuleSanctionsListBase.sol"; import {RuleTransferValidation} from "../abstract/core/RuleTransferValidation.sol"; import {ISanctionsList} from "../../interfaces/ISanctionsList.sol"; diff --git a/src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol b/src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol index 23cd213..2f8018d 100644 --- a/src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol +++ b/src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.20; import {Ownable} from "OZ/access/Ownable.sol"; import {Ownable2Step} from "OZ/access/Ownable2Step.sol"; import {Context} from "OZ/utils/Context.sol"; -import {MetaTxModuleStandalone, ERC2771Context} from "../../../modules/MetaTxModuleStandalone.sol"; +import {ERC2771Context} from "../../../modules/MetaTxModuleStandalone.sol"; import {RuleSanctionsListBase} from "../abstract/base/RuleSanctionsListBase.sol"; import {ISanctionsList} from "../../interfaces/ISanctionsList.sol"; diff --git a/test/Coverage/DeploymentOperationCoverage.t.sol b/test/Coverage/DeploymentOperationCoverage.t.sol index 5dc650f..f4e9a70 100644 --- a/test/Coverage/DeploymentOperationCoverage.t.sol +++ b/test/Coverage/DeploymentOperationCoverage.t.sol @@ -9,15 +9,6 @@ import {RuleInterfaceId} from "RuleEngine/modules/library/RuleInterfaceId.sol"; import {ISanctionsList} from "src/rules/interfaces/ISanctionsList.sol"; import {RuleConditionalTransferLight} from "src/rules/operation/RuleConditionalTransferLight.sol"; import {RuleConditionalTransferLightOwnable2Step} from "src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol"; -import {RuleBlacklist} from "src/rules/validation/deployment/RuleBlacklist.sol"; -import {RuleWhitelist} from "src/rules/validation/deployment/RuleWhitelist.sol"; -import {RuleWhitelistWrapper} from "src/rules/validation/deployment/RuleWhitelistWrapper.sol"; -import {RuleERC2980} from "src/rules/validation/deployment/RuleERC2980.sol"; -import {RuleSanctionsList} from "src/rules/validation/deployment/RuleSanctionsList.sol"; -import {RuleBlacklistOwnable2Step} from "src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol"; -import {RuleWhitelistOwnable2Step} from "src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol"; -import {RuleWhitelistWrapperOwnable2Step} from "src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol"; -import {RuleERC2980Ownable2Step} from "src/rules/validation/deployment/RuleERC2980Ownable2Step.sol"; import { RuleBlacklistHarness, RuleWhitelistHarness, diff --git a/test/DeploymentScripts/DeployCMTATWithBlacklist.t.sol b/test/DeploymentScripts/DeployCMTATWithBlacklist.t.sol index a907765..d50b534 100644 --- a/test/DeploymentScripts/DeployCMTATWithBlacklist.t.sol +++ b/test/DeploymentScripts/DeployCMTATWithBlacklist.t.sol @@ -2,7 +2,6 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; -import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol"; import {CMTATStandalone} from "CMTAT/deployment/CMTATStandalone.sol"; import {RuleBlacklist} from "src/rules/validation/deployment/RuleBlacklist.sol"; import {DeployCMTATWithBlacklist} from "script/DeployCMTATWithBlacklist.s.sol"; diff --git a/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol b/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol index ffc51e4..67d351d 100644 --- a/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol +++ b/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol @@ -2,7 +2,6 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; -import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol"; import {CMTATStandalone} from "CMTAT/deployment/CMTATStandalone.sol"; import {RuleEngine} from "RuleEngine/RuleEngine.sol"; import {RuleBlacklist} from "src/rules/validation/deployment/RuleBlacklist.sol"; @@ -117,7 +116,7 @@ contract DeployCMTATWithBlacklistAndSanctionsListTest is CODE_ADDRESS_FROM_IS_BLACKLISTED ) ); - token.transfer(ADDRESS2, amount); + assertTrue(token.transfer(ADDRESS2, amount)); } function testDetectTransferRestrictionWhenSenderBlacklisted() public { @@ -148,7 +147,7 @@ contract DeployCMTATWithBlacklistAndSanctionsListTest is CODE_ADDRESS_TO_IS_BLACKLISTED ) ); - token.transfer(ADDRESS2, amount); + assertTrue(token.transfer(ADDRESS2, amount)); } function testDetectTransferRestrictionWhenRecipientBlacklisted() public { @@ -178,7 +177,7 @@ contract DeployCMTATWithBlacklistAndSanctionsListTest is CODE_ADDRESS_FROM_IS_SANCTIONED ) ); - token.transfer(ADDRESS2, amount); + assertTrue(token.transfer(ADDRESS2, amount)); } function testDetectTransferRestrictionWhenSenderSanctioned() public { @@ -207,7 +206,7 @@ contract DeployCMTATWithBlacklistAndSanctionsListTest is CODE_ADDRESS_TO_IS_SANCTIONED ) ); - token.transfer(ADDRESS2, amount); + assertTrue(token.transfer(ADDRESS2, amount)); } function testDetectTransferRestrictionWhenRecipientSanctioned() public { diff --git a/test/DeploymentScripts/DeployCMTATWithWhitelist.t.sol b/test/DeploymentScripts/DeployCMTATWithWhitelist.t.sol index 944707a..1b9ab5a 100644 --- a/test/DeploymentScripts/DeployCMTATWithWhitelist.t.sol +++ b/test/DeploymentScripts/DeployCMTATWithWhitelist.t.sol @@ -2,7 +2,6 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; -import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol"; import {CMTATStandalone} from "CMTAT/deployment/CMTATStandalone.sol"; import {RuleWhitelist} from "src/rules/validation/deployment/RuleWhitelist.sol"; import {DeployCMTATWithWhitelist} from "script/DeployCMTATWithWhitelist.s.sol"; diff --git a/test/RuleBlacklist/CMTATIntegration.t.sol b/test/RuleBlacklist/CMTATIntegration.t.sol index 7b1d79b..ae5b63b 100644 --- a/test/RuleBlacklist/CMTATIntegration.t.sol +++ b/test/RuleBlacklist/CMTATIntegration.t.sol @@ -66,7 +66,7 @@ contract CMTATIntegration is Test, HelperContract { ) ); // Act - cmtatContract.transfer(ADDRESS2, amount); + assertTrue(cmtatContract.transfer(ADDRESS2, amount)); } function testCannotTransferIfAddressFronIsBlacklisted() public { @@ -87,7 +87,7 @@ contract CMTATIntegration is Test, HelperContract { ) ); // Act - cmtatContract.transfer(ADDRESS2, amount); + assertTrue(cmtatContract.transfer(ADDRESS2, amount)); } function testCannotTransferIfBothAddressesAreBlacklisted() public { @@ -112,7 +112,7 @@ contract CMTATIntegration is Test, HelperContract { CODE_ADDRESS_FROM_IS_BLACKLISTED ) ); - cmtatContract.transfer(ADDRESS2, amount); + assertTrue(cmtatContract.transfer(ADDRESS2, amount)); } /** diff --git a/test/RuleBlacklist/CMTATIntegrationDirect.t.sol b/test/RuleBlacklist/CMTATIntegrationDirect.t.sol index f01a078..1a2843c 100644 --- a/test/RuleBlacklist/CMTATIntegrationDirect.t.sol +++ b/test/RuleBlacklist/CMTATIntegrationDirect.t.sol @@ -61,7 +61,7 @@ contract CMTATIntegrationDirectBlacklist is Test, HelperContract { CODE_ADDRESS_TO_IS_BLACKLISTED ) ); - cmtatContract.transfer(ADDRESS2, amount); + assertTrue(cmtatContract.transfer(ADDRESS2, amount)); } function testCannotTransferIfAddressFromIsBlacklisted() public { @@ -80,7 +80,7 @@ contract CMTATIntegrationDirectBlacklist is Test, HelperContract { CODE_ADDRESS_FROM_IS_BLACKLISTED ) ); - cmtatContract.transfer(ADDRESS2, amount); + assertTrue(cmtatContract.transfer(ADDRESS2, amount)); } function testCannotTransferIfBothAddressesAreBlacklisted() public { @@ -103,7 +103,7 @@ contract CMTATIntegrationDirectBlacklist is Test, HelperContract { CODE_ADDRESS_FROM_IS_BLACKLISTED ) ); - cmtatContract.transfer(ADDRESS2, amount); + assertTrue(cmtatContract.transfer(ADDRESS2, amount)); } /* ---------------- Detect & Message Tests ---------------- */ diff --git a/test/RuleERC2980/AccessControl/RuleERC2980AccessControl.t.sol b/test/RuleERC2980/AccessControl/RuleERC2980AccessControl.t.sol index d0ad22a..5bc5bff 100644 --- a/test/RuleERC2980/AccessControl/RuleERC2980AccessControl.t.sol +++ b/test/RuleERC2980/AccessControl/RuleERC2980AccessControl.t.sol @@ -5,8 +5,6 @@ import {Test} from "forge-std/Test.sol"; import {IAccessControl} from "OZ/access/IAccessControl.sol"; import {HelperContract} from "../../HelperContract.sol"; import {RuleERC2980} from "src/rules/validation/deployment/RuleERC2980.sol"; -import {RuleERC2980InvariantStorage} from - "src/rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol"; contract RuleERC2980AccessControlTest is Test, HelperContract { RuleERC2980 public ruleERC2980; diff --git a/test/RuleERC2980/Ownable/RuleERC2980OwnableAccessControl.t.sol b/test/RuleERC2980/Ownable/RuleERC2980OwnableAccessControl.t.sol index 1c77b48..c465705 100644 --- a/test/RuleERC2980/Ownable/RuleERC2980OwnableAccessControl.t.sol +++ b/test/RuleERC2980/Ownable/RuleERC2980OwnableAccessControl.t.sol @@ -4,8 +4,6 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; import {HelperContract} from "../../HelperContract.sol"; import {RuleERC2980Ownable2Step} from "src/rules/validation/deployment/RuleERC2980Ownable2Step.sol"; -import {RuleERC2980InvariantStorage} from - "src/rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol"; contract RuleERC2980OwnableAccessControl is Test, HelperContract { error OwnableUnauthorizedAccount(address account); diff --git a/test/RuleWhitelist/CMTATIntegration.t.sol b/test/RuleWhitelist/CMTATIntegration.t.sol index b65bb0b..933304a 100644 --- a/test/RuleWhitelist/CMTATIntegration.t.sol +++ b/test/RuleWhitelist/CMTATIntegration.t.sol @@ -56,7 +56,7 @@ contract CMTATIntegration is Test, HelperContract { ) ); // Act - cmtatContract.transfer(ADDRESS2, 21); + assertTrue(cmtatContract.transfer(ADDRESS2, 21)); } function testCannotTransferWithoutFromAddressWhitelisted() public { @@ -77,7 +77,7 @@ contract CMTATIntegration is Test, HelperContract { ) ); // Act - cmtatContract.transfer(ADDRESS2, amount); + assertTrue(cmtatContract.transfer(ADDRESS2, amount)); } function testCannotTransferWithoutToAddressWhitelisted() public { @@ -98,7 +98,7 @@ contract CMTATIntegration is Test, HelperContract { ) ); // Act - cmtatContract.transfer(ADDRESS2, amount); + assertTrue(cmtatContract.transfer(ADDRESS2, amount)); } function testCanMakeATransfer() public { diff --git a/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol b/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol index 33226ae..7b2f817 100644 --- a/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol +++ b/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol @@ -79,7 +79,7 @@ contract CMTATIntegrationWhitelistWrapper is Test, HelperContract { ) ); // Act - cmtatContract.transfer(ADDRESS2, 21); + assertTrue(cmtatContract.transfer(ADDRESS2, 21)); } function testCannotTransferWithoutFromAddressWhitelisted() public { @@ -100,7 +100,7 @@ contract CMTATIntegrationWhitelistWrapper is Test, HelperContract { ) ); // Act - cmtatContract.transfer(ADDRESS2, amount); + assertTrue(cmtatContract.transfer(ADDRESS2, amount)); } function testCannotTransferWithoutToAddressWhitelisted() public { @@ -121,7 +121,7 @@ contract CMTATIntegrationWhitelistWrapper is Test, HelperContract { ) ); // Act - cmtatContract.transfer(ADDRESS2, amount); + assertTrue(cmtatContract.transfer(ADDRESS2, amount)); } function testCanMakeATransferIfWhitelistedInSeveralDifferentList() public { diff --git a/test/TransferContext/TransferContextMocks.t.sol b/test/TransferContext/TransferContextMocks.t.sol index 93ea7d2..dfc0bc1 100644 --- a/test/TransferContext/TransferContextMocks.t.sol +++ b/test/TransferContext/TransferContextMocks.t.sol @@ -69,7 +69,7 @@ contract TransferContextMocksTest is Test, HelperContract { vm.expectRevert(); vm.prank(ADDRESS3); - erc20.transferFrom(ADDRESS1, ADDRESS2, 10); + assertTrue(erc20.transferFrom(ADDRESS1, ADDRESS2, 10)); vm.prank(DEFAULT_ADMIN_ADDRESS); rule.addAddress(ADDRESS3); From 87a141853f44170d41eb2e39ad5990ab124978c8 Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Tue, 10 Mar 2026 14:50:50 +0100 Subject: [PATCH 4/8] Run forge fmt --- script/DeployCMTATWithBlacklist.s.sol | 5 +- src/mocks/MockERC20WithTransferContext.sol | 16 +++--- .../harness/RuleSpenderWhitelistHarnesses.sol | 4 +- src/rules/interfaces/IAddressList.sol | 2 - .../IERC7943NonFungibleCompliance.sol | 5 +- .../RuleConditionalTransferLight.sol | 5 +- ...leConditionalTransferLightOwnable2Step.sol | 5 +- .../RuleConditionalTransferLightBase.sol | 31 +++++++---- ...nditionalTransferLightInvariantStorage.sol | 4 +- .../RuleAddressSet/RuleAddressSet.sol | 1 + .../RuleAddressSet/RuleAddressSetInternal.sol | 5 +- .../RuleBlacklistInvariantStorage.sol | 4 +- .../RuleWhitelistInvariantStorage.sol | 6 +-- .../abstract/base/RuleBlacklistBase.sol | 13 +++-- .../abstract/base/RuleERC2980Base.sol | 24 +++------ .../base/RuleIdentityRegistryBase.sol | 25 +++------ .../abstract/base/RuleMaxTotalSupplyBase.sol | 19 +++---- .../abstract/base/RuleSanctionsListBase.sol | 25 +++------ .../base/RuleSpenderWhitelistBase.sol | 21 ++------ .../abstract/base/RuleWhitelistBase.sol | 7 ++- .../base/RuleWhitelistWrapperBase.sol | 18 +++---- .../abstract/core/RuleNFTAdapter.sol | 52 +++++++++++++++---- .../abstract/core/RuleTransferValidation.sol | 8 ++- .../abstract/core/RuleWhitelistShared.sol | 12 ++--- .../RuleIdentityRegistryInvariantStorage.sol | 7 +-- .../RuleMaxTotalSupplyInvariantStorage.sol | 7 +-- .../RuleSanctionsListInvariantStorage.sol | 4 +- .../RuleSpenderWhitelistInvariantStorage.sol | 7 +-- .../validation/deployment/RuleBlacklist.sol | 3 +- .../deployment/RuleBlacklistOwnable2Step.sol | 5 +- .../deployment/RuleERC2980Ownable2Step.sol | 5 +- .../validation/deployment/RuleWhitelist.sol | 4 +- .../deployment/RuleWhitelistWrapper.sol | 13 +++-- .../RuleWhitelistWrapperOwnable2Step.sol | 9 +++- .../DeploymentOperationCoverage.t.sol | 12 +++-- .../DeployCMTATWithBlacklist.t.sol | 5 +- ...oyCMTATWithBlacklistAndSanctionsList.t.sol | 13 ++--- .../DeployCMTATWithWhitelist.t.sol | 5 +- test/HelperContract.sol | 29 +++++++---- ...uleBlacklistAccessControlRoleMembers.t.sol | 5 +- test/RuleBlacklist/CMTATIntegration.t.sol | 1 + .../CMTATIntegrationDirect.t.sol | 1 - .../Ownable/RuleBlacklistOwnable2Step.t.sol | 5 +- test/RuleBlacklist/RuleBlacklist.t.sol | 4 +- .../RuleBlacklist/RuleEngineIntegration.t.sol | 1 - ...ansferLightOwnable2StepAccessControl.t.sol | 5 +- ...ransferLightAccessControlRoleMembers.t.sol | 5 +- ...alTransferLightRuleEngineIntegration.t.sol | 7 +-- .../Ownable/RuleERC2980Ownable2Step.t.sol | 5 +- test/RuleERC2980/RuleERC2980.t.sol | 23 +++----- .../RuleIdentityRegistryOwnable2Step.t.sol | 3 +- ...tityRegistryAccessControlRoleMembers.t.sol | 5 +- ...xTotalSupplyAccessControlRoleMembers.t.sol | 5 +- .../RuleSanctionListDeploymentTest.t.sol | 8 +-- .../RuleSanctionListTest.t.sol | 4 +- ...anctionsListAccessControlRoleMembers.t.sol | 5 +- .../RuleSpenderWhitelist.t.sol | 15 ++---- ...uleWhitelistAccessControlRoleMembers.t.sol | 5 +- ...elistWrapperAccessControlRoleMembers.t.sol | 5 +- .../CMTATIntegrationWhitelistWrapper.t.sol | 2 +- .../Ownable/RuleWhitelistOwnable2Step.t.sol | 5 +- .../RuleWhitelist/RuleEngineIntegration.t.sol | 4 +- test/RuleWhitelist/RuleWhitelist.t.sol | 2 - test/RuleWhitelist/WhitelistWrapper.t.sol | 9 +--- test/Version.t.sol | 3 +- 65 files changed, 284 insertions(+), 303 deletions(-) diff --git a/script/DeployCMTATWithBlacklist.s.sol b/script/DeployCMTATWithBlacklist.s.sol index 0e9a517..67b819a 100644 --- a/script/DeployCMTATWithBlacklist.s.sol +++ b/script/DeployCMTATWithBlacklist.s.sol @@ -8,10 +8,7 @@ import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol"; import {RuleBlacklist} from "src/rules/validation/deployment/RuleBlacklist.sol"; contract DeployCMTATWithBlacklist is Script { - function deploy(address admin, address forwarder) - public - returns (CMTATStandalone token, RuleBlacklist rule) - { + function deploy(address admin, address forwarder) public returns (CMTATStandalone token, RuleBlacklist rule) { ICMTATConstructor.ERC20Attributes memory erc20Attributes = ICMTATConstructor.ERC20Attributes("CMTA Token", "CMTAT", 0); ICMTATConstructor.ExtraInformationAttributes memory extraInformationAttributes = diff --git a/src/mocks/MockERC20WithTransferContext.sol b/src/mocks/MockERC20WithTransferContext.sol index 83e0912..aac490d 100644 --- a/src/mocks/MockERC20WithTransferContext.sol +++ b/src/mocks/MockERC20WithTransferContext.sol @@ -30,7 +30,10 @@ contract MockERC20WithTransferContext is ERC20 { return success; } - function transferWithContext(address to, uint256 value, bool useFungibleContext, uint256 tokenId) external returns (bool) { + function transferWithContext(address to, uint256 value, bool useFungibleContext, uint256 tokenId) + external + returns (bool) + { _transfer(_msgSender(), to, value); if (useFungibleContext) { _notifyFungible(_msgSender(), _msgSender(), to, value); @@ -40,13 +43,10 @@ contract MockERC20WithTransferContext is ERC20 { return true; } - function transferFromWithContext( - address from, - address to, - uint256 value, - bool useFungibleContext, - uint256 tokenId - ) external returns (bool) { + function transferFromWithContext(address from, address to, uint256 value, bool useFungibleContext, uint256 tokenId) + external + returns (bool) + { address sender = _msgSender(); _spendAllowance(from, sender, value); _transfer(from, to, value); diff --git a/src/mocks/harness/RuleSpenderWhitelistHarnesses.sol b/src/mocks/harness/RuleSpenderWhitelistHarnesses.sol index 7d0982e..a6095d9 100644 --- a/src/mocks/harness/RuleSpenderWhitelistHarnesses.sol +++ b/src/mocks/harness/RuleSpenderWhitelistHarnesses.sol @@ -21,7 +21,9 @@ contract RuleSpenderWhitelistHarness is RuleSpenderWhitelist { } contract RuleSpenderWhitelistOwnable2StepHarness is RuleSpenderWhitelistOwnable2Step { - constructor(address owner, address forwarderIrrevocable) RuleSpenderWhitelistOwnable2Step(owner, forwarderIrrevocable) {} + constructor(address owner, address forwarderIrrevocable) + RuleSpenderWhitelistOwnable2Step(owner, forwarderIrrevocable) + {} function exposedMsgSender() external view returns (address) { return _msgSender(); diff --git a/src/rules/interfaces/IAddressList.sol b/src/rules/interfaces/IAddressList.sol index 135c468..a2e7173 100644 --- a/src/rules/interfaces/IAddressList.sol +++ b/src/rules/interfaces/IAddressList.sol @@ -9,12 +9,10 @@ interface IAddressList is IIdentityRegistryContains { /// @param targetAddresses The array of added addresses. event AddAddresses(address[] targetAddresses); - /// @notice Emitted when multiple addresses are removed. /// @param targetAddresses The array of removed addresses. event RemoveAddresses(address[] targetAddresses); - /// @notice Emitted when a single address is added. /// @param targetAddress The added address. event AddAddress(address indexed targetAddress); diff --git a/src/rules/interfaces/IERC7943NonFungibleCompliance.sol b/src/rules/interfaces/IERC7943NonFungibleCompliance.sol index 5807cb7..05cd3f9 100644 --- a/src/rules/interfaces/IERC7943NonFungibleCompliance.sol +++ b/src/rules/interfaces/IERC7943NonFungibleCompliance.sol @@ -28,10 +28,7 @@ interface IERC7943NonFungibleCompliance { * @param amount The amount being transferred (always `1` for ERC-721). * @return allowed `true` if the transfer is permitted, otherwise `false`. */ - function canTransfer(address from, address to, uint256 tokenId, uint256 amount) - external - view - returns (bool allowed); + function canTransfer(address from, address to, uint256 tokenId, uint256 amount) external view returns (bool allowed); } /** diff --git a/src/rules/operation/RuleConditionalTransferLight.sol b/src/rules/operation/RuleConditionalTransferLight.sol index e58a736..1d16d00 100644 --- a/src/rules/operation/RuleConditionalTransferLight.sol +++ b/src/rules/operation/RuleConditionalTransferLight.sol @@ -46,10 +46,7 @@ contract RuleConditionalTransferLight is function _authorizeTransferApproval() internal view virtual override onlyRole(OPERATOR_ROLE) {} function _authorizeTransferExecution() internal view virtual override { - require( - isTokenBound(_msgSender()), - RuleConditionalTransferLight_TransferExecutorUnauthorized(_msgSender()) - ); + require(isTokenBound(_msgSender()), RuleConditionalTransferLight_TransferExecutorUnauthorized(_msgSender())); } function _onlyComplianceManager() internal virtual override onlyRole(COMPLIANCE_MANAGER_ROLE) {} diff --git a/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol b/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol index 926d660..6fcf88f 100644 --- a/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol +++ b/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol @@ -12,10 +12,7 @@ import {RuleConditionalTransferLightBase} from "./abstract/RuleConditionalTransf * @title RuleConditionalTransferLightOwnable2Step * @notice Ownable2Step variant of RuleConditionalTransferLight. */ -contract RuleConditionalTransferLightOwnable2Step is - RuleConditionalTransferLightBase, - Ownable2Step -{ +contract RuleConditionalTransferLightOwnable2Step is RuleConditionalTransferLightBase, Ownable2Step { constructor(address owner) Ownable(owner) {} function supportsInterface(bytes4 interfaceId) public view override returns (bool) { diff --git a/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol b/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol index 0dae62b..3b0a9cb 100644 --- a/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol +++ b/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol @@ -8,9 +8,7 @@ import {IERC7551Compliance} from "CMTAT/interfaces/tokenization/draft-IERC7551.s import {IRule} from "RuleEngine/interfaces/IRule.sol"; import {ITransferContext} from "../../interfaces/ITransferContext.sol"; import {IERC20} from "OZ/token/ERC20/IERC20.sol"; -import { - RuleConditionalTransferLightInvariantStorage -} from "./RuleConditionalTransferLightInvariantStorage.sol"; +import {RuleConditionalTransferLightInvariantStorage} from "./RuleConditionalTransferLightInvariantStorage.sol"; import {VersionModule} from "../../../modules/VersionModule.sol"; /** @@ -18,7 +16,11 @@ import {VersionModule} from "../../../modules/VersionModule.sol"; * @dev Requires operator approval for each transfer. Same transfer (from, to, value) * can be approved multiple times to allow repeated transfers. */ -abstract contract RuleConditionalTransferLightBase is VersionModule, RuleConditionalTransferLightInvariantStorage, IRule { +abstract contract RuleConditionalTransferLightBase is + VersionModule, + RuleConditionalTransferLightInvariantStorage, + IRule +{ // Mapping from transfer hash to approval count mapping(bytes32 => uint256) public approvalCounts; @@ -52,10 +54,7 @@ abstract contract RuleConditionalTransferLightBase is VersionModule, RuleConditi approveTransfer(from, to, value); uint256 allowed = IERC20(token).allowance(from, address(this)); - require( - allowed >= value, - RuleConditionalTransferLight_InsufficientAllowance(token, from, allowed, value) - ); + require(allowed >= value, RuleConditionalTransferLight_InsufficientAllowance(token, from, allowed, value)); bool success = IERC20(token).transferFrom(from, to, value); require(success, RuleConditionalTransferLight_TransferFailed()); @@ -75,7 +74,13 @@ abstract contract RuleConditionalTransferLightBase is VersionModule, RuleConditi _transferred(from, to, value); } - function transferred(address /* spender */, address from, address to, uint256 value) + function transferred( + address, + /* spender */ + address from, + address to, + uint256 value + ) public override(IRuleEngine) onlyTransferExecutor @@ -99,7 +104,13 @@ abstract contract RuleConditionalTransferLightBase is VersionModule, RuleConditi return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); } - function detectTransferRestrictionFrom(address /* spender */, address from, address to, uint256 value) + function detectTransferRestrictionFrom( + address, + /* spender */ + address from, + address to, + uint256 value + ) public view override(IERC1404Extend) diff --git a/src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol b/src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol index 98eda28..5ac58c4 100644 --- a/src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol +++ b/src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol @@ -16,7 +16,9 @@ abstract contract RuleConditionalTransferLightInvariantStorage is RuleCommonInva error RuleConditionalTransferLight_AdminAddressZeroNotAllowed(); error RuleConditionalTransferLight_TransferExecutorUnauthorized(address account); error RuleConditionalTransferLight_TokenAddressZeroNotAllowed(); - error RuleConditionalTransferLight_InsufficientAllowance(address token, address owner, uint256 allowance, uint256 required); + error RuleConditionalTransferLight_InsufficientAllowance( + address token, address owner, uint256 allowance, uint256 required + ); error RuleConditionalTransferLight_TransferFailed(); error TransferNotApproved(); error TransferApprovalNotFound(); diff --git a/src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol b/src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol index 2dd5b70..40e6e71 100644 --- a/src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol +++ b/src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol @@ -146,6 +146,7 @@ abstract contract RuleAddressSet is results[i] = _isAddressListed(targetAddresses[i]); } } + /*////////////////////////////////////////////////////////////// ERC-2771 META TX //////////////////////////////////////////////////////////////*/ diff --git a/src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol b/src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol index 92f600b..7ff5ae9 100644 --- a/src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol +++ b/src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol @@ -35,10 +35,7 @@ abstract contract RuleAddressSetInternal { * @return added The number of newly added addresses. * @return skipped The number of addresses that were already listed. */ - function _addAddresses(address[] calldata addressesToAdd) - internal - returns (uint256 added, uint256 skipped) - { + function _addAddresses(address[] calldata addressesToAdd) internal returns (uint256 added, uint256 skipped) { for (uint256 i = 0; i < addressesToAdd.length; ++i) { if (_listedAddresses.add(addressesToAdd[i])) { added += 1; diff --git a/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol b/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol index ff04735..247470a 100644 --- a/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol +++ b/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol @@ -6,7 +6,9 @@ import {RuleCommonInvariantStorage} from "../../invariant/RuleCommonInvariantSto abstract contract RuleBlacklistInvariantStorage is RuleCommonInvariantStorage { error RuleBlacklist_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code); - error RuleBlacklist_InvalidTransferFrom(address rule, address spender, address from, address to, uint256 value, uint8 code); + error RuleBlacklist_InvalidTransferFrom( + address rule, address spender, address from, address to, uint256 value, uint8 code + ); /* ============ String message ============ */ string constant TEXT_ADDRESS_FROM_IS_BLACKLISTED = "The sender is blacklisted"; diff --git a/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol b/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol index be08159..637dd4c 100644 --- a/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol +++ b/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol @@ -6,7 +6,9 @@ import {RuleCommonInvariantStorage} from "../../invariant/RuleCommonInvariantSto abstract contract RuleWhitelistInvariantStorage is RuleCommonInvariantStorage { error RuleWhitelist_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code); - error RuleWhitelist_InvalidTransferFrom(address rule, address spender, address from, address to, uint256 value, uint8 code); + error RuleWhitelist_InvalidTransferFrom( + address rule, address spender, address from, address to, uint256 value, uint8 code + ); /* ============ String message ============ */ string constant TEXT_ADDRESS_FROM_NOT_WHITELISTED = "The sender is not in the whitelist"; @@ -19,9 +21,7 @@ abstract contract RuleWhitelistInvariantStorage is RuleCommonInvariantStorage { uint8 public constant CODE_ADDRESS_TO_NOT_WHITELISTED = 22; uint8 public constant CODE_ADDRESS_SPENDER_NOT_WHITELISTED = 23; - /* ============ Events ============ */ /// @dev Emitted when the `checkSpender` flag is updated. event CheckSpenderUpdated(bool newValue); - } diff --git a/src/rules/validation/abstract/base/RuleBlacklistBase.sol b/src/rules/validation/abstract/base/RuleBlacklistBase.sol index 9b4dfca..9e6d32c 100644 --- a/src/rules/validation/abstract/base/RuleBlacklistBase.sol +++ b/src/rules/validation/abstract/base/RuleBlacklistBase.sol @@ -17,7 +17,11 @@ import {IRule} from "RuleEngine/interfaces/IRule.sol"; abstract contract RuleBlacklistBase is RuleAddressSet, RuleNFTAdapter, RuleBlacklistInvariantStorage { constructor(address forwarderIrrevocable) RuleAddressSet(forwarderIrrevocable) {} - function _detectTransferRestriction(address from, address to, uint256 /* value */ ) + function _detectTransferRestriction( + address from, + address to, + uint256 /* value */ + ) internal view override @@ -110,12 +114,7 @@ abstract contract RuleBlacklistBase is RuleAddressSet, RuleNFTAdapter, RuleBlack ); } - function _transferredFrom(address spender, address from, address to, uint256 value) - internal - view - virtual - override - { + function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override { uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); require( code == uint8(REJECTED_CODE_BASE.TRANSFER_OK), diff --git a/src/rules/validation/abstract/base/RuleERC2980Base.sol b/src/rules/validation/abstract/base/RuleERC2980Base.sol index 3fe975f..247e64f 100644 --- a/src/rules/validation/abstract/base/RuleERC2980Base.sol +++ b/src/rules/validation/abstract/base/RuleERC2980Base.sol @@ -44,7 +44,11 @@ abstract contract RuleERC2980Base is TRANSFER RESTRICTION LOGIC //////////////////////////////////////////////////////////////*/ - function _detectTransferRestriction(address from, address to, uint256 /* value */ ) + function _detectTransferRestriction( + address from, + address to, + uint256 /* value */ + ) internal view virtual @@ -107,12 +111,7 @@ abstract contract RuleERC2980Base is ); } - function _transferredFrom(address spender, address from, address to, uint256 value) - internal - view - virtual - override - { + function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override { uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); require( code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), @@ -132,8 +131,7 @@ abstract contract RuleERC2980Base is returns (bool) { return restrictionCode == CODE_ADDRESS_FROM_IS_FROZEN || restrictionCode == CODE_ADDRESS_TO_IS_FROZEN - || restrictionCode == CODE_ADDRESS_SPENDER_IS_FROZEN - || restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED; + || restrictionCode == CODE_ADDRESS_SPENDER_IS_FROZEN || restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED; } function messageForTransferRestriction(uint8 restrictionCode) @@ -232,13 +230,7 @@ abstract contract RuleERC2980Base is * @dev Reflects whitelist membership only. Frozen status is intentionally excluded: * freezing is a temporary enforcement action and does not revoke identity verification. */ - function isVerified(address targetAddress) - public - view - virtual - override(IIdentityRegistryVerified) - returns (bool) - { + function isVerified(address targetAddress) public view virtual override(IIdentityRegistryVerified) returns (bool) { return _isWhitelisted(targetAddress); } diff --git a/src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol b/src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol index e99b776..31d400d 100644 --- a/src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol +++ b/src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol @@ -33,7 +33,11 @@ abstract contract RuleIdentityRegistryBase is RuleNFTAdapter, RuleIdentityRegist emit IdentityRegistryUpdated(address(0)); } - function _detectTransferRestriction(address from, address to, uint256 /* value */) + function _detectTransferRestriction( + address from, + address to, + uint256 /* value */ + ) internal view override @@ -73,19 +77,11 @@ abstract contract RuleIdentityRegistryBase is RuleNFTAdapter, RuleIdentityRegist return _detectTransferRestriction(from, to, value); } - function transferred(address from, address to, uint256 value) - public - view - override(IERC3643IComplianceContract) - { + function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) { _transferred(from, to, value); } - function transferred(address spender, address from, address to, uint256 value) - public - view - override(IRuleEngine) - { + function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) { _transferredFrom(spender, from, to, value); } @@ -97,12 +93,7 @@ abstract contract RuleIdentityRegistryBase is RuleNFTAdapter, RuleIdentityRegist ); } - function _transferredFrom(address spender, address from, address to, uint256 value) - internal - view - virtual - override - { + function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override { uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); require( code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), diff --git a/src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol b/src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol index 5ac6b80..55e07cd 100644 --- a/src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol +++ b/src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol @@ -34,7 +34,12 @@ abstract contract RuleMaxTotalSupplyBase is RuleTransferValidation, RuleMaxTotal emit TokenContractUpdated(newTokenContract); } - function _detectTransferRestriction(address from, address /* to */, uint256 value) + function _detectTransferRestriction( + address from, + address, + /* to */ + uint256 value + ) internal view override @@ -58,19 +63,11 @@ abstract contract RuleMaxTotalSupplyBase is RuleTransferValidation, RuleMaxTotal return _detectTransferRestriction(from, to, value); } - function transferred(address from, address to, uint256 value) - public - view - override(IERC3643IComplianceContract) - { + function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) { _transferred(from, to, value); } - function transferred(address spender, address from, address to, uint256 value) - public - view - override(IRuleEngine) - { + function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) { _transferredFrom(spender, from, to, value); } diff --git a/src/rules/validation/abstract/base/RuleSanctionsListBase.sol b/src/rules/validation/abstract/base/RuleSanctionsListBase.sol index 5685b7b..66ddb78 100644 --- a/src/rules/validation/abstract/base/RuleSanctionsListBase.sol +++ b/src/rules/validation/abstract/base/RuleSanctionsListBase.sol @@ -25,7 +25,11 @@ abstract contract RuleSanctionsListBase is MetaTxModuleStandalone, RuleNFTAdapte } } - function _detectTransferRestriction(address from, address to, uint256 /* value */) + function _detectTransferRestriction( + address from, + address to, + uint256 /* value */ + ) internal view override @@ -87,19 +91,11 @@ abstract contract RuleSanctionsListBase is MetaTxModuleStandalone, RuleNFTAdapte _setSanctionListOracle(ISanctionsList(address(0))); } - function transferred(address from, address to, uint256 value) - public - view - override(IERC3643IComplianceContract) - { + function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) { _transferred(from, to, value); } - function transferred(address spender, address from, address to, uint256 value) - public - view - override(IRuleEngine) - { + function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) { _transferredFrom(spender, from, to, value); } @@ -111,12 +107,7 @@ abstract contract RuleSanctionsListBase is MetaTxModuleStandalone, RuleNFTAdapte ); } - function _transferredFrom(address spender, address from, address to, uint256 value) - internal - view - virtual - override - { + function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override { uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); require( code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), diff --git a/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol b/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol index 4728ad0..578e946 100644 --- a/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol +++ b/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol @@ -16,13 +16,7 @@ import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol"; abstract contract RuleSpenderWhitelistBase is RuleAddressSet, RuleNFTAdapter, RuleSpenderWhitelistInvariantStorage { constructor(address forwarderIrrevocable) RuleAddressSet(forwarderIrrevocable) {} - function _detectTransferRestriction(address, address, uint256) - internal - pure - virtual - override - returns (uint8) - { + function _detectTransferRestriction(address, address, uint256) internal pure virtual override returns (uint8) { return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); } @@ -60,11 +54,7 @@ abstract contract RuleSpenderWhitelistBase is RuleAddressSet, RuleNFTAdapter, Ru */ function transferred(address, address, uint256) public view override(IERC3643IComplianceContract) {} - function transferred(address spender, address from, address to, uint256 value) - public - view - override(IRuleEngine) - { + function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) { _transferredFrom(spender, from, to, value); } @@ -72,12 +62,7 @@ abstract contract RuleSpenderWhitelistBase is RuleAddressSet, RuleNFTAdapter, Ru // no-op: regular transfers are intentionally ignored by this rule } - function _transferredFrom(address spender, address from, address to, uint256 value) - internal - view - virtual - override - { + function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override { uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); require( code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), diff --git a/src/rules/validation/abstract/base/RuleWhitelistBase.sol b/src/rules/validation/abstract/base/RuleWhitelistBase.sol index f23aef6..570f6a9 100644 --- a/src/rules/validation/abstract/base/RuleWhitelistBase.sol +++ b/src/rules/validation/abstract/base/RuleWhitelistBase.sol @@ -15,7 +15,11 @@ abstract contract RuleWhitelistBase is RuleAddressSet, RuleWhitelistShared, IIde checkSpender = checkSpender_; } - function _detectTransferRestriction(address from, address to, uint256 /* value */ ) + function _detectTransferRestriction( + address from, + address to, + uint256 /* value */ + ) internal view virtual @@ -43,7 +47,6 @@ abstract contract RuleWhitelistBase is RuleAddressSet, RuleWhitelistShared, IIde return _detectTransferRestriction(from, to, value); } - function isVerified(address targetAddress) public view diff --git a/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol b/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol index c288395..f522e3a 100644 --- a/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol +++ b/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol @@ -31,9 +31,7 @@ abstract contract RuleWhitelistWrapperBase is /** * @param forwarderIrrevocable Address of the forwarder, required for the gasless support */ - constructor(address forwarderIrrevocable, bool checkSpender_) - MetaTxModuleStandalone(forwarderIrrevocable) - { + constructor(address forwarderIrrevocable, bool checkSpender_) MetaTxModuleStandalone(forwarderIrrevocable) { checkSpender = checkSpender_; } @@ -45,7 +43,11 @@ abstract contract RuleWhitelistWrapperBase is * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK * */ - function _detectTransferRestriction(address from, address to, uint256 /* value */) + function _detectTransferRestriction( + address from, + address to, + uint256 /* value */ + ) internal view virtual @@ -111,13 +113,7 @@ abstract contract RuleWhitelistWrapperBase is * @notice Returns true if the address is listed in at least one child whitelist rule. * @dev Delegates to the same child-rule scan used by transfer restriction checks. */ - function isVerified(address targetAddress) - public - view - virtual - override(IIdentityRegistryVerified) - returns (bool) - { + function isVerified(address targetAddress) public view virtual override(IIdentityRegistryVerified) returns (bool) { address[] memory targets = new address[](1); targets[0] = targetAddress; bool[] memory result = _detectTransferRestrictionForTargets(targets); diff --git a/src/rules/validation/abstract/core/RuleNFTAdapter.sol b/src/rules/validation/abstract/core/RuleNFTAdapter.sol index 85e0538..c9f50a8 100644 --- a/src/rules/validation/abstract/core/RuleNFTAdapter.sol +++ b/src/rules/validation/abstract/core/RuleNFTAdapter.sol @@ -17,10 +17,8 @@ import {ITransferContext} from "../../../interfaces/ITransferContext.sol"; * @dev Delegates tokenId overloads to RuleTransferValidation's internal hooks. */ abstract contract RuleNFTAdapter is RuleTransferValidation, IERC7943NonFungibleComplianceExtend, ITransferContext { - bytes4 internal constant TRANSFERRED_SELECTOR_ERC3643 = - IERC3643IComplianceContract.transferred.selector; - bytes4 internal constant TRANSFERRED_SELECTOR_RULE_ENGINE = - IRuleEngine.transferred.selector; + bytes4 internal constant TRANSFERRED_SELECTOR_ERC3643 = IERC3643IComplianceContract.transferred.selector; + bytes4 internal constant TRANSFERRED_SELECTOR_RULE_ENGINE = IRuleEngine.transferred.selector; bytes4 internal constant TRANSFERRED_SELECTOR_ERC7943 = bytes4(keccak256("transferred(address,address,uint256,uint256)")); bytes4 internal constant TRANSFERRED_SELECTOR_ERC7943_FROM = @@ -34,10 +32,17 @@ abstract contract RuleNFTAdapter is RuleTransferValidation, IERC7943NonFungibleC * @notice Internal hook for post-transfer validation or state updates (spender-aware). */ function _transferredFrom(address spender, address from, address to, uint256 value) internal virtual; + /** * @inheritdoc IERC7943NonFungibleComplianceExtend */ - function detectTransferRestriction(address from, address to, uint256 /* tokenId */, uint256 value) + function detectTransferRestriction( + address from, + address to, + uint256, + /* tokenId */ + uint256 value + ) public view virtual @@ -54,7 +59,8 @@ abstract contract RuleNFTAdapter is RuleTransferValidation, IERC7943NonFungibleC address spender, address from, address to, - uint256 /* tokenId */, + uint256, + /* tokenId */ uint256 value ) public view virtual override(IERC7943NonFungibleComplianceExtend) returns (uint8) { return _detectTransferRestrictionFrom(spender, from, to, value); @@ -63,7 +69,13 @@ abstract contract RuleNFTAdapter is RuleTransferValidation, IERC7943NonFungibleC /** * @inheritdoc IERC7943NonFungibleCompliance */ - function canTransfer(address from, address to, uint256 /* tokenId */, uint256 amount) + function canTransfer( + address from, + address to, + uint256, + /* tokenId */ + uint256 amount + ) public view override(IERC7943NonFungibleCompliance) @@ -75,7 +87,14 @@ abstract contract RuleNFTAdapter is RuleTransferValidation, IERC7943NonFungibleC /** * @inheritdoc IERC7943NonFungibleComplianceExtend */ - function canTransferFrom(address spender, address from, address to, uint256 /* tokenId */, uint256 value) + function canTransferFrom( + address spender, + address from, + address to, + uint256, + /* tokenId */ + uint256 value + ) public view virtual @@ -89,7 +108,13 @@ abstract contract RuleNFTAdapter is RuleTransferValidation, IERC7943NonFungibleC /** * @inheritdoc IERC7943NonFungibleComplianceExtend */ - function transferred(address from, address to, uint256 /* tokenId */, uint256 value) + function transferred( + address from, + address to, + uint256, + /* tokenId */ + uint256 value + ) public virtual override(IERC7943NonFungibleComplianceExtend) @@ -100,7 +125,14 @@ abstract contract RuleNFTAdapter is RuleTransferValidation, IERC7943NonFungibleC /** * @inheritdoc IERC7943NonFungibleComplianceExtend */ - function transferred(address spender, address from, address to, uint256 /* tokenId */, uint256 value) + function transferred( + address spender, + address from, + address to, + uint256, + /* tokenId */ + uint256 value + ) public virtual override(IERC7943NonFungibleComplianceExtend) diff --git a/src/rules/validation/abstract/core/RuleTransferValidation.sol b/src/rules/validation/abstract/core/RuleTransferValidation.sol index 4472231..d120135 100644 --- a/src/rules/validation/abstract/core/RuleTransferValidation.sol +++ b/src/rules/validation/abstract/core/RuleTransferValidation.sol @@ -12,7 +12,13 @@ import {RuleInterfaceId} from "RuleEngine/modules/library/RuleInterfaceId.sol"; /* ==== Modules === */ import {VersionModule} from "../../../../modules/VersionModule.sol"; -abstract contract RuleTransferValidation is VersionModule, IERC1404Extend, IERC3643ComplianceRead, IERC7551Compliance, IRule { +abstract contract RuleTransferValidation is + VersionModule, + IERC1404Extend, + IERC3643ComplianceRead, + IERC7551Compliance, + IRule +{ /** * @notice Internal transfer restriction check. * @param from the origin address diff --git a/src/rules/validation/abstract/core/RuleWhitelistShared.sol b/src/rules/validation/abstract/core/RuleWhitelistShared.sol index e38440a..73d819a 100644 --- a/src/rules/validation/abstract/core/RuleWhitelistShared.sol +++ b/src/rules/validation/abstract/core/RuleWhitelistShared.sol @@ -32,7 +32,8 @@ abstract contract RuleWhitelistShared is RuleNFTAdapter, RuleWhitelistInvariantS */ function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool isKnown) { return restrictionCode == CODE_ADDRESS_FROM_NOT_WHITELISTED - || restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED || restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED; + || restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED + || restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED; } /** @@ -99,18 +100,11 @@ abstract contract RuleWhitelistShared is RuleNFTAdapter, RuleWhitelistInvariantS ); } - function _transferredFrom(address spender, address from, address to, uint256 value) - internal - view - virtual - override - { + function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override { uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); require( code == uint8(REJECTED_CODE_BASE.TRANSFER_OK), RuleWhitelist_InvalidTransferFrom(address(this), spender, from, to, value, code) ); } - - } diff --git a/src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol b/src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol index eef8251..3a35f19 100644 --- a/src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol +++ b/src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol @@ -6,12 +6,7 @@ import {RuleCommonInvariantStorage} from "./RuleCommonInvariantStorage.sol"; abstract contract RuleIdentityRegistryInvariantStorage is RuleCommonInvariantStorage { error RuleIdentityRegistry_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code); error RuleIdentityRegistry_InvalidTransferFrom( - address rule, - address spender, - address from, - address to, - uint256 value, - uint8 code + address rule, address spender, address from, address to, uint256 value, uint8 code ); error RuleIdentityRegistry_RegistryAddressZeroNotAllowed(); diff --git a/src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol b/src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol index 84e911c..0c6f8a3 100644 --- a/src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol +++ b/src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol @@ -6,12 +6,7 @@ import {RuleCommonInvariantStorage} from "./RuleCommonInvariantStorage.sol"; abstract contract RuleMaxTotalSupplyInvariantStorage is RuleCommonInvariantStorage { error RuleMaxTotalSupply_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code); error RuleMaxTotalSupply_InvalidTransferFrom( - address rule, - address spender, - address from, - address to, - uint256 value, - uint8 code + address rule, address spender, address from, address to, uint256 value, uint8 code ); error RuleMaxTotalSupply_TokenAddressZeroNotAllowed(); diff --git a/src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol b/src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol index 5d48263..31ae3f0 100644 --- a/src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol +++ b/src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol @@ -11,7 +11,9 @@ abstract contract RuleSanctionsListInvariantStorage is RuleCommonInvariantStorag /* ============ Custom errors ============ */ error RuleSanctionsList_OracleAddressZeroNotAllowed(); error RuleSanctionsList_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code); - error RuleSanctionsList_InvalidTransferFrom(address rule, address spender, address from, address to, uint256 value, uint8 code); + error RuleSanctionsList_InvalidTransferFrom( + address rule, address spender, address from, address to, uint256 value, uint8 code + ); /* ============ Role ============ */ bytes32 public constant SANCTIONLIST_ROLE = keccak256("SANCTIONLIST_ROLE"); diff --git a/src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol b/src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol index c35a85b..97f77b1 100644 --- a/src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol +++ b/src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol @@ -9,11 +9,6 @@ abstract contract RuleSpenderWhitelistInvariantStorage is RuleCommonInvariantSto string constant TEXT_ADDRESS_SPENDER_NOT_WHITELISTED = "SpenderWhitelist: Spender is not whitelisted"; error RuleSpenderWhitelist_InvalidTransferFrom( - address ruleEngine, - address spender, - address from, - address to, - uint256 value, - uint8 restrictionCode + address ruleEngine, address spender, address from, address to, uint256 value, uint8 restrictionCode ); } diff --git a/src/rules/validation/deployment/RuleBlacklist.sol b/src/rules/validation/deployment/RuleBlacklist.sol index 4f1b9d5..6c4d20d 100644 --- a/src/rules/validation/deployment/RuleBlacklist.sol +++ b/src/rules/validation/deployment/RuleBlacklist.sol @@ -32,7 +32,8 @@ contract RuleBlacklist is RuleBlacklistBase, AccessControlModuleStandalone { override(AccessControlEnumerable, RuleBlacklistBase) returns (bool) { - return AccessControlEnumerable.supportsInterface(interfaceId) || RuleBlacklistBase.supportsInterface(interfaceId); + return AccessControlEnumerable.supportsInterface(interfaceId) + || RuleBlacklistBase.supportsInterface(interfaceId); } function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {} diff --git a/src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol b/src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol index 742339e..ac2cea9 100644 --- a/src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol +++ b/src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol @@ -12,10 +12,7 @@ import {RuleAddressSet} from "../abstract/RuleAddressSet/RuleAddressSet.sol"; * @notice Ownable2Step variant of RuleBlacklist with owner-based authorization hooks. */ contract RuleBlacklistOwnable2Step is RuleBlacklistBase, Ownable2Step { - constructor(address owner, address forwarderIrrevocable) - RuleBlacklistBase(forwarderIrrevocable) - Ownable(owner) - {} + constructor(address owner, address forwarderIrrevocable) RuleBlacklistBase(forwarderIrrevocable) Ownable(owner) {} function _authorizeAddressListAdd() internal view virtual override onlyOwner {} diff --git a/src/rules/validation/deployment/RuleERC2980Ownable2Step.sol b/src/rules/validation/deployment/RuleERC2980Ownable2Step.sol index 493f2f0..0764662 100644 --- a/src/rules/validation/deployment/RuleERC2980Ownable2Step.sol +++ b/src/rules/validation/deployment/RuleERC2980Ownable2Step.sol @@ -12,10 +12,7 @@ import {RuleERC2980Base} from "../abstract/base/RuleERC2980Base.sol"; * @dev All whitelist and frozenlist management functions are restricted to the contract owner. */ contract RuleERC2980Ownable2Step is RuleERC2980Base, Ownable2Step { - constructor(address owner, address forwarderIrrevocable) - RuleERC2980Base(forwarderIrrevocable) - Ownable(owner) - {} + constructor(address owner, address forwarderIrrevocable) RuleERC2980Base(forwarderIrrevocable) Ownable(owner) {} function _authorizeWhitelistAdd() internal view virtual override onlyOwner {} diff --git a/src/rules/validation/deployment/RuleWhitelist.sol b/src/rules/validation/deployment/RuleWhitelist.sol index d154ef0..dc4c75e 100644 --- a/src/rules/validation/deployment/RuleWhitelist.sol +++ b/src/rules/validation/deployment/RuleWhitelist.sol @@ -7,6 +7,7 @@ import {Context} from "OZ/utils/Context.sol"; import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol"; import {RuleWhitelistBase} from "../abstract/base/RuleWhitelistBase.sol"; import {RuleAddressSet} from "../abstract/RuleAddressSet/RuleAddressSet.sol"; + /* ==== CMTAT === */ /** @@ -46,7 +47,8 @@ contract RuleWhitelist is RuleWhitelistBase, AccessControlModuleStandalone { override(AccessControlEnumerable, RuleWhitelistBase) returns (bool) { - return AccessControlEnumerable.supportsInterface(interfaceId) || RuleWhitelistBase.supportsInterface(interfaceId); + return AccessControlEnumerable.supportsInterface(interfaceId) + || RuleWhitelistBase.supportsInterface(interfaceId); } /*////////////////////////////////////////////////////////////// diff --git a/src/rules/validation/deployment/RuleWhitelistWrapper.sol b/src/rules/validation/deployment/RuleWhitelistWrapper.sol index 079d343..7c4b750 100644 --- a/src/rules/validation/deployment/RuleWhitelistWrapper.sol +++ b/src/rules/validation/deployment/RuleWhitelistWrapper.sol @@ -13,10 +13,7 @@ import {RuleWhitelistWrapperBase} from "../abstract/base/RuleWhitelistWrapperBas /** * @title Wrapper to call several different whitelist rules */ -contract RuleWhitelistWrapper is - RuleWhitelistWrapperBase, - AccessControlModuleStandalone -{ +contract RuleWhitelistWrapper is RuleWhitelistWrapperBase, AccessControlModuleStandalone { /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ @@ -63,7 +60,13 @@ contract RuleWhitelistWrapper is return RuleWhitelistWrapperBase._msgData(); } - function _contextSuffixLength() internal view virtual override(RuleWhitelistWrapperBase, Context) returns (uint256) { + function _contextSuffixLength() + internal + view + virtual + override(RuleWhitelistWrapperBase, Context) + returns (uint256) + { return RuleWhitelistWrapperBase._contextSuffixLength(); } diff --git a/src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol b/src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol index b8156b4..9db5af3 100644 --- a/src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol +++ b/src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol @@ -44,8 +44,13 @@ contract RuleWhitelistWrapperOwnable2Step is RuleWhitelistWrapperBase, Ownable2S return RuleWhitelistWrapperBase._msgData(); } - function _contextSuffixLength() internal view virtual override(RuleWhitelistWrapperBase, Context) returns (uint256) { + function _contextSuffixLength() + internal + view + virtual + override(RuleWhitelistWrapperBase, Context) + returns (uint256) + { return RuleWhitelistWrapperBase._contextSuffixLength(); } - } diff --git a/test/Coverage/DeploymentOperationCoverage.t.sol b/test/Coverage/DeploymentOperationCoverage.t.sol index f4e9a70..b4e692d 100644 --- a/test/Coverage/DeploymentOperationCoverage.t.sol +++ b/test/Coverage/DeploymentOperationCoverage.t.sol @@ -8,7 +8,9 @@ import {IRule} from "RuleEngine/interfaces/IRule.sol"; import {RuleInterfaceId} from "RuleEngine/modules/library/RuleInterfaceId.sol"; import {ISanctionsList} from "src/rules/interfaces/ISanctionsList.sol"; import {RuleConditionalTransferLight} from "src/rules/operation/RuleConditionalTransferLight.sol"; -import {RuleConditionalTransferLightOwnable2Step} from "src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol"; +import { + RuleConditionalTransferLightOwnable2Step +} from "src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol"; import { RuleBlacklistHarness, RuleWhitelistHarness, @@ -100,11 +102,15 @@ contract OperationCoverageExtraTest is Test, HelperContract { rule.transferred(ADDRESS3, ADDRESS1, ADDRESS2, 77); assertEq(rule.approvedCount(ADDRESS1, ADDRESS2, 77), 0); - assertEq(rule.detectTransferRestrictionFrom(ADDRESS3, ADDRESS1, ADDRESS2, 77), CODE_TRANSFER_REQUEST_NOT_APPROVED); + assertEq( + rule.detectTransferRestrictionFrom(ADDRESS3, ADDRESS1, ADDRESS2, 77), CODE_TRANSFER_REQUEST_NOT_APPROVED + ); assertFalse(rule.canTransfer(ADDRESS1, ADDRESS2, 77)); assertFalse(rule.canTransferFrom(ADDRESS3, ADDRESS1, ADDRESS2, 77)); assertTrue(rule.canReturnTransferRestrictionCode(CODE_TRANSFER_REQUEST_NOT_APPROVED)); - assertEq(rule.messageForTransferRestriction(CODE_TRANSFER_REQUEST_NOT_APPROVED), TEXT_TRANSFER_REQUEST_NOT_APPROVED); + assertEq( + rule.messageForTransferRestriction(CODE_TRANSFER_REQUEST_NOT_APPROVED), TEXT_TRANSFER_REQUEST_NOT_APPROVED + ); assertEq(rule.messageForTransferRestriction(CODE_NONEXISTENT), TEXT_CODE_NOT_FOUND); assertTrue(rule.supportsInterface(type(IERC165).interfaceId)); diff --git a/test/DeploymentScripts/DeployCMTATWithBlacklist.t.sol b/test/DeploymentScripts/DeployCMTATWithBlacklist.t.sol index d50b534..30a0cb5 100644 --- a/test/DeploymentScripts/DeployCMTATWithBlacklist.t.sol +++ b/test/DeploymentScripts/DeployCMTATWithBlacklist.t.sol @@ -14,10 +14,7 @@ contract DeployCMTATWithBlacklistTest is Test { assertEq(address(token.ruleEngine()), address(rule)); } - function _deploy(DeployCMTATWithBlacklist script) - internal - returns (CMTATStandalone token, RuleBlacklist rule) - { + function _deploy(DeployCMTATWithBlacklist script) internal returns (CMTATStandalone token, RuleBlacklist rule) { (token, rule) = script.deploy(address(1), address(0)); } } diff --git a/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol b/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol index 67d351d..24d8ea3 100644 --- a/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol +++ b/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol @@ -7,13 +7,14 @@ import {RuleEngine} from "RuleEngine/RuleEngine.sol"; import {RuleBlacklist} from "src/rules/validation/deployment/RuleBlacklist.sol"; import {RuleSanctionsList} from "src/rules/validation/deployment/RuleSanctionsList.sol"; import {ISanctionsList} from "src/rules/interfaces/ISanctionsList.sol"; -import {RuleBlacklistInvariantStorage} from - "src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol"; -import {RuleSanctionsListInvariantStorage} from - "src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol"; +import { + RuleBlacklistInvariantStorage +} from "src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol"; +import { + RuleSanctionsListInvariantStorage +} from "src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol"; import {SanctionListOracle} from "src/mocks/SanctionListOracle.sol"; -import {DeployCMTATWithBlacklistAndSanctionsList} from - "script/DeployCMTATWithBlacklistAndSanctionsList.s.sol"; +import {DeployCMTATWithBlacklistAndSanctionsList} from "script/DeployCMTATWithBlacklistAndSanctionsList.s.sol"; /** * @title DeployCMTATWithBlacklistAndSanctionsListTest diff --git a/test/DeploymentScripts/DeployCMTATWithWhitelist.t.sol b/test/DeploymentScripts/DeployCMTATWithWhitelist.t.sol index 1b9ab5a..ded0513 100644 --- a/test/DeploymentScripts/DeployCMTATWithWhitelist.t.sol +++ b/test/DeploymentScripts/DeployCMTATWithWhitelist.t.sol @@ -13,10 +13,7 @@ contract DeployCMTATWithWhitelistTest is Test { assertEq(address(token.ruleEngine()), address(rule)); } - function _deploy(DeployCMTATWithWhitelist script) - internal - returns (CMTATStandalone token, RuleWhitelist rule) - { + function _deploy(DeployCMTATWithWhitelist script) internal returns (CMTATStandalone token, RuleWhitelist rule) { (token, rule) = script.deploy(address(1), address(0), false); } } diff --git a/test/HelperContract.sol b/test/HelperContract.sol index e89eb8d..21cc0d7 100644 --- a/test/HelperContract.sol +++ b/test/HelperContract.sol @@ -9,8 +9,9 @@ import {RuleEngine} from "RuleEngine/RuleEngine.sol"; // RUleBlackList import {RuleBlacklist} from "src/rules/validation/deployment/RuleBlacklist.sol"; -import {RuleBlacklistInvariantStorage} from - "src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol"; +import { + RuleBlacklistInvariantStorage +} from "src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol"; // RuleWhitelist import {RuleWhitelist} from "src/rules/validation/deployment/RuleWhitelist.sol"; import {RuleMaxTotalSupply} from "src/rules/validation/deployment/RuleMaxTotalSupply.sol"; @@ -20,16 +21,22 @@ import {RuleConditionalTransferLight} from "src/rules/operation/RuleConditionalT import { RuleConditionalTransferLightInvariantStorage } from "src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol"; -import {RuleWhitelistInvariantStorage} from - "src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol"; -import {RuleAddressSetInvariantStorage} from - "src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleAddressSetInvariantStorage.sol"; -import {RuleMaxTotalSupplyInvariantStorage} from - "src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol"; -import {RuleIdentityRegistryInvariantStorage} from - "src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol"; +import { + RuleWhitelistInvariantStorage +} from "src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol"; +import { + RuleAddressSetInvariantStorage +} from "src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleAddressSetInvariantStorage.sol"; +import { + RuleMaxTotalSupplyInvariantStorage +} from "src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol"; +import { + RuleIdentityRegistryInvariantStorage +} from "src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol"; -import {RuleSanctionsListInvariantStorage} from "src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol"; +import { + RuleSanctionsListInvariantStorage +} from "src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol"; // utils import {CMTATDeployment} from "RuleEngine/../test/utils/CMTATDeployment.sol"; diff --git a/test/RuleBlacklist/AccessControl/RuleBlacklistAccessControlRoleMembers.t.sol b/test/RuleBlacklist/AccessControl/RuleBlacklistAccessControlRoleMembers.t.sol index c2357ec..97ed68e 100644 --- a/test/RuleBlacklist/AccessControl/RuleBlacklistAccessControlRoleMembers.t.sol +++ b/test/RuleBlacklist/AccessControl/RuleBlacklistAccessControlRoleMembers.t.sol @@ -1,7 +1,10 @@ // SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; -import {AccessControlEnumerableTestBase, IAccessControlEnumerableLike} from "../../utils/AccessControlEnumerableTestBase.sol"; +import { + AccessControlEnumerableTestBase, + IAccessControlEnumerableLike +} from "../../utils/AccessControlEnumerableTestBase.sol"; import {RuleBlacklist} from "src/rules/validation/deployment/RuleBlacklist.sol"; contract RuleBlacklistAccessControlRoleMembers is AccessControlEnumerableTestBase { diff --git a/test/RuleBlacklist/CMTATIntegration.t.sol b/test/RuleBlacklist/CMTATIntegration.t.sol index ae5b63b..97bfe5a 100644 --- a/test/RuleBlacklist/CMTATIntegration.t.sol +++ b/test/RuleBlacklist/CMTATIntegration.t.sol @@ -14,6 +14,7 @@ contract CMTATIntegration is Test, HelperContract { uint256 constant ADDRESS1_BALANCE_INIT = 31; uint256 constant ADDRESS2_BALANCE_INIT = 32; uint256 constant ADDRESS3_BALANCE_INIT = 33; + // Arrange function setUp() public { // CMTAT diff --git a/test/RuleBlacklist/CMTATIntegrationDirect.t.sol b/test/RuleBlacklist/CMTATIntegrationDirect.t.sol index 1a2843c..c5e1769 100644 --- a/test/RuleBlacklist/CMTATIntegrationDirect.t.sol +++ b/test/RuleBlacklist/CMTATIntegrationDirect.t.sol @@ -7,7 +7,6 @@ import {CMTATDeployment} from "RuleEngine/../test/utils/CMTATDeployment.sol"; import {RuleBlacklist} from "src/rules/validation/deployment/RuleBlacklist.sol"; import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol"; - /** * @title Integration test with the CMTAT using direct RuleBlacklist */ diff --git a/test/RuleBlacklist/Ownable/RuleBlacklistOwnable2Step.t.sol b/test/RuleBlacklist/Ownable/RuleBlacklistOwnable2Step.t.sol index 7ca9561..3145cdb 100644 --- a/test/RuleBlacklist/Ownable/RuleBlacklistOwnable2Step.t.sol +++ b/test/RuleBlacklist/Ownable/RuleBlacklistOwnable2Step.t.sol @@ -2,8 +2,9 @@ pragma solidity ^0.8.20; import {Ownable2StepTestBase, IOwnable2StepLike} from "../../utils/Ownable2StepTestBase.sol"; -import {RuleBlacklistOwnable2Step as RuleBlacklistOwnable2StepContract} from - "src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol"; +import { + RuleBlacklistOwnable2Step as RuleBlacklistOwnable2StepContract +} from "src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol"; contract RuleBlacklistOwnable2StepTest is Ownable2StepTestBase { function _deployOwnable2Step() internal override returns (IOwnable2StepLike, address) { diff --git a/test/RuleBlacklist/RuleBlacklist.t.sol b/test/RuleBlacklist/RuleBlacklist.t.sol index 1cb711d..30a1cbc 100644 --- a/test/RuleBlacklist/RuleBlacklist.t.sol +++ b/test/RuleBlacklist/RuleBlacklist.t.sol @@ -20,7 +20,7 @@ contract RuleBlacklistTest is Test, HelperContract { resString = ruleBlacklist.messageForTransferRestriction(CODE_ADDRESS_FROM_IS_BLACKLISTED); // Assert assertEq(resString, TEXT_ADDRESS_FROM_IS_BLACKLISTED); - + // Act resString = ruleBlacklist.messageForTransferRestriction(CODE_ADDRESS_TO_IS_BLACKLISTED); // Assert @@ -202,7 +202,6 @@ contract RuleBlacklistTest is Test, HelperContract { // Assert assertFalse(resBool); - vm.prank(ADDRESS1); vm.expectRevert( abi.encodeWithSelector( @@ -304,5 +303,4 @@ contract RuleBlacklistTest is Test, HelperContract { ruleBlacklist.transferred(ADDRESS3, ADDRESS1, ADDRESS2, 20); ruleBlacklist.transferred(ADDRESS3, ADDRESS1, ADDRESS2, 0, 20); } - } diff --git a/test/RuleBlacklist/RuleEngineIntegration.t.sol b/test/RuleBlacklist/RuleEngineIntegration.t.sol index 68c0c0b..d876e59 100644 --- a/test/RuleBlacklist/RuleEngineIntegration.t.sol +++ b/test/RuleBlacklist/RuleEngineIntegration.t.sol @@ -10,7 +10,6 @@ import {RuleEngine} from "RuleEngine/RuleEngine.sol"; * @title Integration test between RuleEngine and RuleBlacklist */ contract RuleBlacklistRuleEngineIntegration is Test, HelperContract { - function setUp() public { vm.prank(DEFAULT_ADMIN_ADDRESS); ruleBlacklist = new RuleBlacklist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS); diff --git a/test/RuleConditionalTransferLight/Ownable/RuleConditionalTransferLightOwnable2StepAccessControl.t.sol b/test/RuleConditionalTransferLight/Ownable/RuleConditionalTransferLightOwnable2StepAccessControl.t.sol index ec6463f..f44cd09 100644 --- a/test/RuleConditionalTransferLight/Ownable/RuleConditionalTransferLightOwnable2StepAccessControl.t.sol +++ b/test/RuleConditionalTransferLight/Ownable/RuleConditionalTransferLightOwnable2StepAccessControl.t.sol @@ -3,8 +3,9 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; import {HelperContract} from "../../HelperContract.sol"; -import {RuleConditionalTransferLightOwnable2Step} from - "src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol"; +import { + RuleConditionalTransferLightOwnable2Step +} from "src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol"; contract RuleConditionalTransferLightOwnable2StepAccessControl is Test, HelperContract { // OpenZeppelin Ownable error diff --git a/test/RuleConditionalTransferLight/RuleConditionalTransferLightAccessControlRoleMembers.t.sol b/test/RuleConditionalTransferLight/RuleConditionalTransferLightAccessControlRoleMembers.t.sol index 626245f..31a7e55 100644 --- a/test/RuleConditionalTransferLight/RuleConditionalTransferLightAccessControlRoleMembers.t.sol +++ b/test/RuleConditionalTransferLight/RuleConditionalTransferLightAccessControlRoleMembers.t.sol @@ -1,7 +1,10 @@ // SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; -import {AccessControlEnumerableTestBase, IAccessControlEnumerableLike} from "../utils/AccessControlEnumerableTestBase.sol"; +import { + AccessControlEnumerableTestBase, + IAccessControlEnumerableLike +} from "../utils/AccessControlEnumerableTestBase.sol"; import {RuleConditionalTransferLight} from "src/rules/operation/RuleConditionalTransferLight.sol"; contract RuleConditionalTransferLightAccessControlRoleMembers is AccessControlEnumerableTestBase { diff --git a/test/RuleConditionalTransferLight/RuleConditionalTransferLightRuleEngineIntegration.t.sol b/test/RuleConditionalTransferLight/RuleConditionalTransferLightRuleEngineIntegration.t.sol index b93b76c..c7f96bc 100644 --- a/test/RuleConditionalTransferLight/RuleConditionalTransferLightRuleEngineIntegration.t.sol +++ b/test/RuleConditionalTransferLight/RuleConditionalTransferLightRuleEngineIntegration.t.sol @@ -15,8 +15,7 @@ contract RuleConditionalTransferLightRuleEngineIntegration is Test, HelperContra ruleEngineMock = new RuleEngine(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS); vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleConditionalTransferLight = - new RuleConditionalTransferLight(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); + ruleConditionalTransferLight = new RuleConditionalTransferLight(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); ruleConditionalTransferLight.bindToken(address(ruleEngineMock)); @@ -87,7 +86,9 @@ contract RuleConditionalTransferLightRuleEngineIntegration is Test, HelperContra ruleConditionalTransferLight.cancelTransferApproval(ADDRESS1, ADDRESS2, amount); } - function testFuzz_ApproveAndConsume(address from, address to, uint96 value, uint8 approvals, uint8 consumes) public { + function testFuzz_ApproveAndConsume(address from, address to, uint96 value, uint8 approvals, uint8 consumes) + public + { approvals = uint8(bound(approvals, 0, 20)); consumes = uint8(bound(consumes, 0, approvals)); bool isMintOrBurnPath = from == address(0) || to == address(0); diff --git a/test/RuleERC2980/Ownable/RuleERC2980Ownable2Step.t.sol b/test/RuleERC2980/Ownable/RuleERC2980Ownable2Step.t.sol index 919b37e..2e5b677 100644 --- a/test/RuleERC2980/Ownable/RuleERC2980Ownable2Step.t.sol +++ b/test/RuleERC2980/Ownable/RuleERC2980Ownable2Step.t.sol @@ -2,8 +2,9 @@ pragma solidity ^0.8.20; import {Ownable2StepTestBase, IOwnable2StepLike} from "../../utils/Ownable2StepTestBase.sol"; -import {RuleERC2980Ownable2Step as RuleERC2980Ownable2StepContract} from - "src/rules/validation/deployment/RuleERC2980Ownable2Step.sol"; +import { + RuleERC2980Ownable2Step as RuleERC2980Ownable2StepContract +} from "src/rules/validation/deployment/RuleERC2980Ownable2Step.sol"; contract RuleERC2980Ownable2StepTest is Ownable2StepTestBase { function _deployOwnable2Step() internal override returns (IOwnable2StepLike, address) { diff --git a/test/RuleERC2980/RuleERC2980.t.sol b/test/RuleERC2980/RuleERC2980.t.sol index bfebdfb..f189de2 100644 --- a/test/RuleERC2980/RuleERC2980.t.sol +++ b/test/RuleERC2980/RuleERC2980.t.sol @@ -4,8 +4,9 @@ pragma solidity ^0.8.20; import {Test} from "forge-std/Test.sol"; import {HelperContract} from "../HelperContract.sol"; import {RuleERC2980} from "src/rules/validation/deployment/RuleERC2980.sol"; -import {RuleERC2980InvariantStorage} from - "src/rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol"; +import { + RuleERC2980InvariantStorage +} from "src/rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol"; contract RuleERC2980Test is Test, HelperContract { RuleERC2980 public ruleERC2980; @@ -30,21 +31,11 @@ contract RuleERC2980Test is Test, HelperContract { //////////////////////////////////////////////////////////////*/ function testReturnTheRightMessageForAGivenCode() public view { + assertEq(ruleERC2980.messageForTransferRestriction(CODE_FROM_FROZEN), "The sender address is frozen"); + assertEq(ruleERC2980.messageForTransferRestriction(CODE_TO_FROZEN), "The recipient address is frozen"); + assertEq(ruleERC2980.messageForTransferRestriction(CODE_SPENDER_FROZEN), "The spender address is frozen"); assertEq( - ruleERC2980.messageForTransferRestriction(CODE_FROM_FROZEN), - "The sender address is frozen" - ); - assertEq( - ruleERC2980.messageForTransferRestriction(CODE_TO_FROZEN), - "The recipient address is frozen" - ); - assertEq( - ruleERC2980.messageForTransferRestriction(CODE_SPENDER_FROZEN), - "The spender address is frozen" - ); - assertEq( - ruleERC2980.messageForTransferRestriction(CODE_TO_NOT_WHITELISTED), - "The recipient is not in the whitelist" + ruleERC2980.messageForTransferRestriction(CODE_TO_NOT_WHITELISTED), "The recipient is not in the whitelist" ); assertEq(ruleERC2980.messageForTransferRestriction(CODE_NONEXISTENT), TEXT_CODE_NOT_FOUND); } diff --git a/test/RuleIdentityRegistry/Ownable/RuleIdentityRegistryOwnable2Step.t.sol b/test/RuleIdentityRegistry/Ownable/RuleIdentityRegistryOwnable2Step.t.sol index 056fb0d..8c347ce 100644 --- a/test/RuleIdentityRegistry/Ownable/RuleIdentityRegistryOwnable2Step.t.sol +++ b/test/RuleIdentityRegistry/Ownable/RuleIdentityRegistryOwnable2Step.t.sol @@ -5,8 +5,7 @@ import {Test} from "forge-std/Test.sol"; import {HelperContract} from "../../HelperContract.sol"; import {Ownable2StepTestBase, IOwnable2StepLike} from "../../utils/Ownable2StepTestBase.sol"; import {IdentityRegistryMock} from "src/mocks/IdentityRegistryMock.sol"; -import {RuleIdentityRegistryOwnable2Step} from - "src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol"; +import {RuleIdentityRegistryOwnable2Step} from "src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol"; contract RuleIdentityRegistryOwnable2StepTest is Ownable2StepTestBase { function _deployOwnable2Step() internal override returns (IOwnable2StepLike, address) { diff --git a/test/RuleIdentityRegistry/RuleIdentityRegistryAccessControlRoleMembers.t.sol b/test/RuleIdentityRegistry/RuleIdentityRegistryAccessControlRoleMembers.t.sol index aa33faf..1792bd1 100644 --- a/test/RuleIdentityRegistry/RuleIdentityRegistryAccessControlRoleMembers.t.sol +++ b/test/RuleIdentityRegistry/RuleIdentityRegistryAccessControlRoleMembers.t.sol @@ -1,7 +1,10 @@ // SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; -import {AccessControlEnumerableTestBase, IAccessControlEnumerableLike} from "../utils/AccessControlEnumerableTestBase.sol"; +import { + AccessControlEnumerableTestBase, + IAccessControlEnumerableLike +} from "../utils/AccessControlEnumerableTestBase.sol"; import {RuleIdentityRegistry} from "src/rules/validation/deployment/RuleIdentityRegistry.sol"; contract RuleIdentityRegistryAccessControlRoleMembers is AccessControlEnumerableTestBase { diff --git a/test/RuleMaxTotalSupply/RuleMaxTotalSupplyAccessControlRoleMembers.t.sol b/test/RuleMaxTotalSupply/RuleMaxTotalSupplyAccessControlRoleMembers.t.sol index 0020dab..0be1891 100644 --- a/test/RuleMaxTotalSupply/RuleMaxTotalSupplyAccessControlRoleMembers.t.sol +++ b/test/RuleMaxTotalSupply/RuleMaxTotalSupplyAccessControlRoleMembers.t.sol @@ -1,7 +1,10 @@ // SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; -import {AccessControlEnumerableTestBase, IAccessControlEnumerableLike} from "../utils/AccessControlEnumerableTestBase.sol"; +import { + AccessControlEnumerableTestBase, + IAccessControlEnumerableLike +} from "../utils/AccessControlEnumerableTestBase.sol"; import {RuleMaxTotalSupply} from "src/rules/validation/deployment/RuleMaxTotalSupply.sol"; contract RuleMaxTotalSupplyAccessControlRoleMembers is AccessControlEnumerableTestBase { diff --git a/test/RuleSanctionList/RuleSanctionListDeploymentTest.t.sol b/test/RuleSanctionList/RuleSanctionListDeploymentTest.t.sol index 2779b69..133d653 100644 --- a/test/RuleSanctionList/RuleSanctionListDeploymentTest.t.sol +++ b/test/RuleSanctionList/RuleSanctionListDeploymentTest.t.sol @@ -57,20 +57,20 @@ contract RuleSanctionListDeploymentTest is Test, HelperContract { } function testcanTransferIfNoOracleSet() public { - ruleSanctionList = + ruleSanctionList = new RuleSanctionsList(SANCTIONLIST_OPERATOR_ADDRESS, address(ZERO_ADDRESS), ISanctionsList(ZERO_ADDRESS)); // Act // ADDRESS1 -> ADDRESS2 resBool = ruleSanctionList.canTransfer(ADDRESS1, ADDRESS2, 20); assertEq(resBool, true); - + resBool = ruleSanctionList.canTransfer(ADDRESS1, ADDRESS2, 0, 20); assertEq(resBool, true); - + // ADDRESS2 -> ADDRESS1 resBool = ruleSanctionList.canTransfer(ADDRESS2, ADDRESS1, 20); assertEq(resBool, true); - + resBool = ruleSanctionList.canTransfer(ADDRESS2, ADDRESS1, 0, 20); assertEq(resBool, true); diff --git a/test/RuleSanctionList/RuleSanctionListTest.t.sol b/test/RuleSanctionList/RuleSanctionListTest.t.sol index 6727ee1..aeacda7 100644 --- a/test/RuleSanctionList/RuleSanctionListTest.t.sol +++ b/test/RuleSanctionList/RuleSanctionListTest.t.sol @@ -44,7 +44,7 @@ contract RuleSanctionlistTest is Test, HelperContract { resString = ruleSanctionList.messageForTransferRestriction(CODE_ADDRESS_FROM_IS_SANCTIONED); // Assert assertEq(resString, TEXT_ADDRESS_FROM_IS_SANCTIONED); - + // Act resString = ruleSanctionList.messageForTransferRestriction(CODE_ADDRESS_TO_IS_SANCTIONED); // Assert @@ -75,7 +75,6 @@ contract RuleSanctionlistTest is Test, HelperContract { assertEq(resBool, true); } - function testTransferFromDetectedAsInvalid() public { // Act resBool = ruleSanctionList.canTransfer(ATTACKER, ADDRESS2, 20); @@ -205,7 +204,6 @@ contract RuleSanctionlistTest is Test, HelperContract { // Assert assertEq(resUint8, NO_ERROR); - resBool = ruleSanctionList.canTransferFrom(ADDRESS3, ADDRESS1, ADDRESS2, 20); assertEq(resBool, true); diff --git a/test/RuleSanctionList/RuleSanctionsListAccessControlRoleMembers.t.sol b/test/RuleSanctionList/RuleSanctionsListAccessControlRoleMembers.t.sol index d893961..ee0ac94 100644 --- a/test/RuleSanctionList/RuleSanctionsListAccessControlRoleMembers.t.sol +++ b/test/RuleSanctionList/RuleSanctionsListAccessControlRoleMembers.t.sol @@ -1,7 +1,10 @@ // SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; -import {AccessControlEnumerableTestBase, IAccessControlEnumerableLike} from "../utils/AccessControlEnumerableTestBase.sol"; +import { + AccessControlEnumerableTestBase, + IAccessControlEnumerableLike +} from "../utils/AccessControlEnumerableTestBase.sol"; import {RuleSanctionsList} from "src/rules/validation/deployment/RuleSanctionsList.sol"; import {ISanctionsList} from "src/rules/interfaces/ISanctionsList.sol"; diff --git a/test/RuleSpenderWhitelist/RuleSpenderWhitelist.t.sol b/test/RuleSpenderWhitelist/RuleSpenderWhitelist.t.sol index 1cdc766..5bd1f2c 100644 --- a/test/RuleSpenderWhitelist/RuleSpenderWhitelist.t.sol +++ b/test/RuleSpenderWhitelist/RuleSpenderWhitelist.t.sol @@ -31,10 +31,7 @@ contract RuleSpenderWhitelistTest is Test, HelperContract { } function testTransferFromRejectedWhenSpenderNotWhitelisted() public { - assertEq( - rule.detectTransferRestrictionFrom(ADDRESS3, ADDRESS1, ADDRESS2, 10), - CODE_SPENDER_NOT_WHITELISTED - ); + assertEq(rule.detectTransferRestrictionFrom(ADDRESS3, ADDRESS1, ADDRESS2, 10), CODE_SPENDER_NOT_WHITELISTED); assertFalse(rule.canTransferFrom(ADDRESS3, ADDRESS1, ADDRESS2, 10)); vm.expectRevert(); @@ -56,10 +53,7 @@ contract RuleSpenderWhitelistTest is Test, HelperContract { rule.addAddress(ADDRESS3); assertEq(rule.detectTransferRestriction(ADDRESS1, ADDRESS2, 1, 10), TRANSFER_OK); - assertEq( - rule.detectTransferRestrictionFrom(ADDRESS3, ADDRESS1, ADDRESS2, 1, 10), - TRANSFER_OK - ); + assertEq(rule.detectTransferRestrictionFrom(ADDRESS3, ADDRESS1, ADDRESS2, 1, 10), TRANSFER_OK); assertTrue(rule.canTransfer(ADDRESS1, ADDRESS2, 1, 10)); assertTrue(rule.canTransferFrom(ADDRESS3, ADDRESS1, ADDRESS2, 1, 10)); rule.transferred(ADDRESS1, ADDRESS2, 1, 10); @@ -70,10 +64,7 @@ contract RuleSpenderWhitelistTest is Test, HelperContract { assertTrue(rule.canReturnTransferRestrictionCode(CODE_SPENDER_NOT_WHITELISTED)); assertFalse(rule.canReturnTransferRestrictionCode(CODE_NONEXISTENT)); - assertEq( - rule.messageForTransferRestriction(CODE_SPENDER_NOT_WHITELISTED), - TEXT_SPENDER_NOT_WHITELISTED - ); + assertEq(rule.messageForTransferRestriction(CODE_SPENDER_NOT_WHITELISTED), TEXT_SPENDER_NOT_WHITELISTED); assertEq(rule.messageForTransferRestriction(CODE_NONEXISTENT), TEXT_CODE_NOT_FOUND); } diff --git a/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControlRoleMembers.t.sol b/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControlRoleMembers.t.sol index df656c6..0a7e4a8 100644 --- a/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControlRoleMembers.t.sol +++ b/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControlRoleMembers.t.sol @@ -1,7 +1,10 @@ // SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; -import {AccessControlEnumerableTestBase, IAccessControlEnumerableLike} from "../../utils/AccessControlEnumerableTestBase.sol"; +import { + AccessControlEnumerableTestBase, + IAccessControlEnumerableLike +} from "../../utils/AccessControlEnumerableTestBase.sol"; import {RuleWhitelist} from "src/rules/validation/deployment/RuleWhitelist.sol"; contract RuleWhitelistAccessControlRoleMembers is AccessControlEnumerableTestBase { diff --git a/test/RuleWhitelist/AccessControl/RuleWhitelistWrapperAccessControlRoleMembers.t.sol b/test/RuleWhitelist/AccessControl/RuleWhitelistWrapperAccessControlRoleMembers.t.sol index 9aa07cc..7103698 100644 --- a/test/RuleWhitelist/AccessControl/RuleWhitelistWrapperAccessControlRoleMembers.t.sol +++ b/test/RuleWhitelist/AccessControl/RuleWhitelistWrapperAccessControlRoleMembers.t.sol @@ -1,7 +1,10 @@ // SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; -import {AccessControlEnumerableTestBase, IAccessControlEnumerableLike} from "../../utils/AccessControlEnumerableTestBase.sol"; +import { + AccessControlEnumerableTestBase, + IAccessControlEnumerableLike +} from "../../utils/AccessControlEnumerableTestBase.sol"; import {RuleWhitelistWrapper} from "src/rules/validation/deployment/RuleWhitelistWrapper.sol"; contract RuleWhitelistWrapperAccessControlRoleMembers is AccessControlEnumerableTestBase { diff --git a/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol b/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol index 7b2f817..6f036c4 100644 --- a/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol +++ b/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol @@ -16,7 +16,7 @@ contract CMTATIntegrationWhitelistWrapper is Test, HelperContract { uint256 constant ADDRESS1_BALANCE_INIT = 31; uint256 constant ADDRESS2_BALANCE_INIT = 32; uint256 constant ADDRESS3_BALANCE_INIT = 33; - + RuleWhitelist ruleWhitelist2; RuleWhitelist ruleWhitelist3; RuleWhitelistWrapper ruleWhitelistWrapper; diff --git a/test/RuleWhitelist/Ownable/RuleWhitelistOwnable2Step.t.sol b/test/RuleWhitelist/Ownable/RuleWhitelistOwnable2Step.t.sol index 117d8d8..713e3e6 100644 --- a/test/RuleWhitelist/Ownable/RuleWhitelistOwnable2Step.t.sol +++ b/test/RuleWhitelist/Ownable/RuleWhitelistOwnable2Step.t.sol @@ -2,8 +2,9 @@ pragma solidity ^0.8.20; import {Ownable2StepTestBase, IOwnable2StepLike} from "../../utils/Ownable2StepTestBase.sol"; -import {RuleWhitelistOwnable2Step as RuleWhitelistOwnable2StepContract} from - "src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol"; +import { + RuleWhitelistOwnable2Step as RuleWhitelistOwnable2StepContract +} from "src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol"; contract RuleWhitelistOwnable2StepTest is Ownable2StepTestBase { function _deployOwnable2Step() internal override returns (IOwnable2StepLike, address) { diff --git a/test/RuleWhitelist/RuleEngineIntegration.t.sol b/test/RuleWhitelist/RuleEngineIntegration.t.sol index b9a5445..b88bd76 100644 --- a/test/RuleWhitelist/RuleEngineIntegration.t.sol +++ b/test/RuleWhitelist/RuleEngineIntegration.t.sol @@ -24,9 +24,7 @@ contract RuleEngineIntegration is Test, HelperContract { bytes32 rulesManagerRole = ruleEngineMock.RULES_MANAGEMENT_ROLE(); // Non-authorized account cannot add a rule. - vm.expectRevert( - abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, ATTACKER, rulesManagerRole) - ); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, ATTACKER, rulesManagerRole)); vm.prank(ATTACKER); ruleEngineMock.addRule(ruleWhitelist); diff --git a/test/RuleWhitelist/RuleWhitelist.t.sol b/test/RuleWhitelist/RuleWhitelist.t.sol index 7ac30a0..a33f457 100644 --- a/test/RuleWhitelist/RuleWhitelist.t.sol +++ b/test/RuleWhitelist/RuleWhitelist.t.sol @@ -132,7 +132,6 @@ contract RuleWhitelistTest is Test, HelperContract { // Assert assertEq(resString, TEXT_ADDRESS_SPENDER_NOT_WHITELISTED); - // Act resString = ruleWhitelist.messageForTransferRestriction(CODE_NONEXISTENT); // Assert @@ -309,7 +308,6 @@ contract RuleWhitelistTest is Test, HelperContract { // Assert assertEq(resBool, false); - vm.prank(ADDRESS1); vm.expectRevert( abi.encodeWithSelector( diff --git a/test/RuleWhitelist/WhitelistWrapper.t.sol b/test/RuleWhitelist/WhitelistWrapper.t.sol index aea018d..430b649 100644 --- a/test/RuleWhitelist/WhitelistWrapper.t.sol +++ b/test/RuleWhitelist/WhitelistWrapper.t.sol @@ -67,8 +67,7 @@ contract CMTATIntegrationWhitelistWrapper is Test, HelperContract { } function testWrapperWithZeroRulesRejectsTransfers() public { - RuleWhitelistWrapper emptyWrapper = - new RuleWhitelistWrapper(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true); + RuleWhitelistWrapper emptyWrapper = new RuleWhitelistWrapper(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true); resUint8 = emptyWrapper.detectTransferRestriction(ADDRESS1, ADDRESS2, 20); assertEq(resUint8, CODE_ADDRESS_FROM_NOT_WHITELISTED); @@ -92,7 +91,6 @@ contract CMTATIntegrationWhitelistWrapper is Test, HelperContract { // Assert assertEq(resBool, false); - vm.prank(ADDRESS1); vm.expectRevert( abi.encodeWithSelector( @@ -135,7 +133,6 @@ contract CMTATIntegrationWhitelistWrapper is Test, HelperContract { // Assert assertEq(resUint8, CODE_ADDRESS_TO_NOT_WHITELISTED); - vm.prank(ADDRESS1); vm.expectRevert( abi.encodeWithSelector( @@ -162,7 +159,6 @@ contract CMTATIntegrationWhitelistWrapper is Test, HelperContract { ) ); ruleWhitelistWrapper.transferred(ADDRESS1, ADDRESS2, 0, 20); - } function testDetectTransferRestrictionWithSpender() public { @@ -339,8 +335,7 @@ contract CMTATIntegrationWhitelistWrapper is Test, HelperContract { } function testIsVerifiedWithNoChildRules() public { - RuleWhitelistWrapper emptyWrapper = - new RuleWhitelistWrapper(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true); + RuleWhitelistWrapper emptyWrapper = new RuleWhitelistWrapper(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true); assertFalse(emptyWrapper.isVerified(ADDRESS1)); } diff --git a/test/Version.t.sol b/test/Version.t.sol index a34fd92..10e5b0e 100644 --- a/test/Version.t.sol +++ b/test/Version.t.sol @@ -26,7 +26,8 @@ contract VersionTest is Test, HelperContract { } function testVersionRuleSanctionsList() public { - RuleSanctionsList rule = new RuleSanctionsList(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, ISanctionsList(ZERO_ADDRESS)); + RuleSanctionsList rule = + new RuleSanctionsList(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, ISanctionsList(ZERO_ADDRESS)); assertEq(rule.version(), EXPECTED_VERSION); } From 19d79069fa3e784446e1629fda3c3c8062137bca Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Tue, 10 Mar 2026 15:17:04 +0100 Subject: [PATCH 5/8] fix(tests/lint): restore expectRevert transfer semantics, clean unused imports, and apply optimized hash path with lint-safe guards --- AGENTS.md | 2 +- CLAUDE.md | 3 +- doc/TOOLCHAIN.md | 2 +- .../audits/tools/v0.2.0/aderyn-report.md | 331 +++++++++++++----- ...nditionalTransferLightInvariantStorage.sol | 4 +- .../RuleBlacklistInvariantStorage.sol | 4 +- .../RuleWhitelistInvariantStorage.sol | 4 +- .../RuleERC2980InvariantStorage.sol | 4 +- .../RuleIdentityRegistryInvariantStorage.sol | 4 +- .../RuleMaxTotalSupplyInvariantStorage.sol | 4 +- .../RuleSanctionsListInvariantStorage.sol | 4 +- ...age.sol => RuleSharedInvariantStorage.sol} | 2 +- .../RuleSpenderWhitelistInvariantStorage.sol | 4 +- ...oyCMTATWithBlacklistAndSanctionsList.t.sol | 12 +- test/RuleBlacklist/CMTATIntegration.t.sol | 9 +- .../CMTATIntegrationDirect.t.sol | 9 +- test/RuleWhitelist/CMTATIntegration.t.sol | 9 +- .../CMTATIntegrationWhitelistWrapper.t.sol | 9 +- .../TransferContextMocks.t.sol | 3 +- 19 files changed, 289 insertions(+), 134 deletions(-) rename src/rules/validation/abstract/invariant/{RuleCommonInvariantStorage.sol => RuleSharedInvariantStorage.sol} (79%) diff --git a/AGENTS.md b/AGENTS.md index a3de691..a4f9878 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -69,7 +69,7 @@ Foundry config: `foundry.toml` (solc 0.8.34, EVM prague, optimizer 200 runs). - Batch add/remove operations are non-reverting (skip duplicates); single-item operations revert on invalid input. - All `internal` functions should be marked `virtual`. - Do not create git commits; provide commit messages only when requested. -- Always run tests after modifying contracts. +- Always run full tests (`forge test`) after any code modification, including lint-driven or mechanical refactors, before reporting completion. - Use `require(condition, CustomError(...))` for custom errors; avoid direct `revert CustomError(...)`. - `AGENTS.md` and `CLAUDE.md` are identical — always update both together. - Always update README.md with the latest change diff --git a/CLAUDE.md b/CLAUDE.md index 2694617..a4f9878 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -64,11 +64,12 @@ Foundry config: `foundry.toml` (solc 0.8.34, EVM prague, optimizer 200 runs). - Each rule has an `InvariantStorage` abstract contract holding its constants, custom errors, and events. - Access control is implemented via an abstract `_authorize*()` method overridden by concrete subclasses (template method pattern). - AccessControl variants must use `onlyRole(ROLE)` in `_authorize*()` methods (avoid direct `_checkRole`). +- AccessControl variants treat the default admin as having all roles via `hasRole`, but the admin may not appear in role member enumerations unless explicitly granted. - All rules implement `IERC3643Version` via `VersionModule`; the current version string is `"0.2.0"`. - Batch add/remove operations are non-reverting (skip duplicates); single-item operations revert on invalid input. - All `internal` functions should be marked `virtual`. - Do not create git commits; provide commit messages only when requested. -- Always run tests after modifying contracts. +- Always run full tests (`forge test`) after any code modification, including lint-driven or mechanical refactors, before reporting completion. - Use `require(condition, CustomError(...))` for custom errors; avoid direct `revert CustomError(...)`. - `AGENTS.md` and `CLAUDE.md` are identical — always update both together. - Always update README.md with the latest change diff --git a/doc/TOOLCHAIN.md b/doc/TOOLCHAIN.md index fb8aec0..740ae57 100644 --- a/doc/TOOLCHAIN.md +++ b/doc/TOOLCHAIN.md @@ -116,7 +116,7 @@ npm run-script surya:report >Slither is a Solidity static analysis framework written in Python3 ```bash -slither . --checklist --filter-paths "openzeppelin-contracts|test|CMTAT|forge-std" > slither-report.md +slither . --checklist --filter-paths "openzeppelin-contracts|test|mocksCMTAT|forge-std" > slither-report.md ``` diff --git a/doc/security/audits/tools/v0.2.0/aderyn-report.md b/doc/security/audits/tools/v0.2.0/aderyn-report.md index af68938..4a39ef3 100644 --- a/doc/security/audits/tools/v0.2.0/aderyn-report.md +++ b/doc/security/audits/tools/v0.2.0/aderyn-report.md @@ -15,8 +15,9 @@ This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a stati - [L-5: PUSH0 Opcode](#l-5-push0-opcode) - [L-6: Modifier Invoked Only Once](#l-6-modifier-invoked-only-once) - [L-7: Empty Block](#l-7-empty-block) - - [L-8: Costly operations inside loop](#l-8-costly-operations-inside-loop) - - [L-9: Unchecked Return](#l-9-unchecked-return) + - [L-8: Unused Error](#l-8-unused-error) + - [L-9: Costly operations inside loop](#l-9-costly-operations-inside-loop) + - [L-10: Unchecked Return](#l-10-unchecked-return) # Summary @@ -25,8 +26,8 @@ This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a stati | Key | Value | | --- | --- | -| .sol Files | 48 | -| Total nSLOC | 2064 | +| .sol Files | 53 | +| Total nSLOC | 2198 | ## Files Details @@ -35,53 +36,58 @@ This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a stati | --- | --- | | src/modules/AccessControlModuleStandalone.sol | 24 | | src/modules/MetaTxModuleStandalone.sol | 6 | +| src/modules/VersionModule.sol | 8 | | src/rules/interfaces/IAddressList.sol | 15 | | src/rules/interfaces/IERC2980.sol | 5 | -| src/rules/interfaces/IERC7943NonFungibleCompliance.sol | 22 | +| src/rules/interfaces/IERC7943NonFungibleCompliance.sol | 19 | | src/rules/interfaces/IIdentityRegistry.sol | 7 | | src/rules/interfaces/ISanctionsList.sol | 4 | | src/rules/interfaces/ITotalSupply.sol | 4 | -| src/rules/interfaces/ITransferContext.sol | 23 | -| src/rules/operation/RuleConditionalTransferLight.sol | 37 | -| src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol | 19 | -| src/rules/operation/abstract/RuleConditionalTransferLightBase.sol | 137 | -| src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol | 18 | +| src/rules/interfaces/ITransferContext.sol | 22 | +| src/rules/operation/RuleConditionalTransferLight.sol | 36 | +| src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol | 16 | +| src/rules/operation/abstract/RuleConditionalTransferLightBase.sol | 159 | +| src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol | 19 | | src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol | 66 | -| src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol | 42 | +| src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol | 39 | | src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleAddressSetInvariantStorage.sol | 7 | -| src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol | 12 | -| src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol | 13 | +| src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol | 14 | +| src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol | 15 | | src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol | 79 | | src/rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol | 30 | -| src/rules/validation/abstract/base/RuleBlacklistBase.sol | 101 | -| src/rules/validation/abstract/base/RuleERC2980Base.sol | 223 | -| src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol | 118 | -| src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol | 94 | -| src/rules/validation/abstract/base/RuleSanctionsListBase.sol | 117 | -| src/rules/validation/abstract/base/RuleWhitelistBase.sol | 61 | -| src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol | 152 | -| src/rules/validation/abstract/core/RuleNFTAdapter.sol | 86 | -| src/rules/validation/abstract/core/RuleTransferValidation.sol | 57 | -| src/rules/validation/abstract/core/RuleWhitelistShared.sol | 53 | +| src/rules/validation/abstract/base/RuleBlacklistBase.sol | 100 | +| src/rules/validation/abstract/base/RuleERC2980Base.sol | 215 | +| src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol | 109 | +| src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol | 90 | +| src/rules/validation/abstract/base/RuleSanctionsListBase.sol | 108 | +| src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol | 52 | +| src/rules/validation/abstract/base/RuleWhitelistBase.sol | 64 | +| src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol | 147 | +| src/rules/validation/abstract/core/RuleNFTAdapter.sol | 111 | +| src/rules/validation/abstract/core/RuleTransferValidation.sol | 64 | +| src/rules/validation/abstract/core/RuleWhitelistShared.sol | 49 | | src/rules/validation/abstract/invariant/RuleCommonInvariantStorage.sol | 4 | -| src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol | 21 | -| src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol | 18 | -| src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol | 16 | -| src/rules/validation/deployment/RuleBlacklist.sol | 32 | -| src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol | 23 | +| src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol | 16 | +| src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol | 13 | +| src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol | 18 | +| src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol | 9 | +| src/rules/validation/deployment/RuleBlacklist.sol | 33 | +| src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol | 20 | | src/rules/validation/deployment/RuleERC2980.sol | 33 | -| src/rules/validation/deployment/RuleERC2980Ownable2Step.sol | 24 | +| src/rules/validation/deployment/RuleERC2980Ownable2Step.sol | 21 | | src/rules/validation/deployment/RuleIdentityRegistry.sol | 22 | | src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol | 8 | | src/rules/validation/deployment/RuleMaxTotalSupply.sol | 22 | | src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol | 11 | | src/rules/validation/deployment/RuleSanctionsList.sol | 34 | | src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol | 23 | -| src/rules/validation/deployment/RuleWhitelist.sol | 34 | +| src/rules/validation/deployment/RuleSpenderWhitelist.sol | 34 | +| src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol | 23 | +| src/rules/validation/deployment/RuleWhitelist.sol | 35 | | src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol | 24 | -| src/rules/validation/deployment/RuleWhitelistWrapper.sol | 61 | -| src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol | 22 | -| **Total** | **2064** | +| src/rules/validation/deployment/RuleWhitelistWrapper.sol | 64 | +| src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol | 28 | +| **Total** | **2198** | ## Issue Summary @@ -89,7 +95,7 @@ This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a stati | Category | No. of Issues | | --- | --- | | High | 0 | -| Low | 9 | +| Low | 10 | # Low Issues @@ -98,7 +104,7 @@ This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a stati Contracts have owners with privileged rights to perform admin tasks and need to be trusted to not perform malicious updates or drain funds. -
41 Found Instances +
46 Found Instances - Found in src/modules/AccessControlModuleStandalone.sol [Line: 10](src/modules/AccessControlModuleStandalone.sol#L10) @@ -107,43 +113,43 @@ Contracts have owners with privileged rights to perform admin tasks and need to abstract contract AccessControlModuleStandalone is AccessControlEnumerable { ``` -- Found in src/rules/operation/RuleConditionalTransferLight.sol [Line: 45](src/rules/operation/RuleConditionalTransferLight.sol#L45) +- Found in src/rules/operation/RuleConditionalTransferLight.sol [Line: 46](src/rules/operation/RuleConditionalTransferLight.sol#L46) ```solidity function _authorizeTransferApproval() internal view virtual override onlyRole(OPERATOR_ROLE) {} ``` -- Found in src/rules/operation/RuleConditionalTransferLight.sol [Line: 54](src/rules/operation/RuleConditionalTransferLight.sol#L54) +- Found in src/rules/operation/RuleConditionalTransferLight.sol [Line: 52](src/rules/operation/RuleConditionalTransferLight.sol#L52) ```solidity function _onlyComplianceManager() internal virtual override onlyRole(COMPLIANCE_MANAGER_ROLE) {} ``` -- Found in src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol [Line: 17](src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol#L17) +- Found in src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol [Line: 15](src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol#L15) ```solidity - Ownable2Step + contract RuleConditionalTransferLightOwnable2Step is RuleConditionalTransferLightBase, Ownable2Step { ``` -- Found in src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol [Line: 26](src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol#L26) +- Found in src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol [Line: 23](src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol#L23) ```solidity function _authorizeTransferApproval() internal view virtual override onlyOwner {} ``` -- Found in src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol [Line: 28](src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol#L28) +- Found in src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol [Line: 25](src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol#L25) ```solidity function _authorizeTransferExecution() internal view virtual override onlyOwner {} ``` -- Found in src/rules/validation/deployment/RuleBlacklist.sol [Line: 38](src/rules/validation/deployment/RuleBlacklist.sol#L38) +- Found in src/rules/validation/deployment/RuleBlacklist.sol [Line: 39](src/rules/validation/deployment/RuleBlacklist.sol#L39) ```solidity function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {} ``` -- Found in src/rules/validation/deployment/RuleBlacklist.sol [Line: 40](src/rules/validation/deployment/RuleBlacklist.sol#L40) +- Found in src/rules/validation/deployment/RuleBlacklist.sol [Line: 41](src/rules/validation/deployment/RuleBlacklist.sol#L41) ```solidity function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {} @@ -155,13 +161,13 @@ Contracts have owners with privileged rights to perform admin tasks and need to contract RuleBlacklistOwnable2Step is RuleBlacklistBase, Ownable2Step { ``` -- Found in src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol [Line: 20](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L20) +- Found in src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol [Line: 17](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L17) ```solidity function _authorizeAddressListAdd() internal view virtual override onlyOwner {} ``` -- Found in src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol [Line: 22](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L22) +- Found in src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol [Line: 19](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L19) ```solidity function _authorizeAddressListRemove() internal view virtual override onlyOwner {} @@ -197,25 +203,25 @@ Contracts have owners with privileged rights to perform admin tasks and need to contract RuleERC2980Ownable2Step is RuleERC2980Base, Ownable2Step { ``` -- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 20](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L20) +- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 17](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L17) ```solidity function _authorizeWhitelistAdd() internal view virtual override onlyOwner {} ``` -- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 22](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L22) +- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 19](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L19) ```solidity function _authorizeWhitelistRemove() internal view virtual override onlyOwner {} ``` -- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 24](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L24) +- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 21](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L21) ```solidity function _authorizeFrozenlistAdd() internal view virtual override onlyOwner {} ``` -- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 26](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L26) +- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 23](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L23) ```solidity function _authorizeFrozenlistRemove() internal view virtual override onlyOwner {} @@ -275,20 +281,50 @@ Contracts have owners with privileged rights to perform admin tasks and need to function _authorizeSanctionListManager() internal view virtual override onlyOwner {} ``` -- Found in src/rules/validation/deployment/RuleWhitelist.sol [Line: 56](src/rules/validation/deployment/RuleWhitelist.sol#L56) +- Found in src/rules/validation/deployment/RuleSpenderWhitelist.sol [Line: 32](src/rules/validation/deployment/RuleSpenderWhitelist.sol#L32) ```solidity - function _authorizeCheckSpenderManager() internal view virtual override onlyRole(DEFAULT_ADMIN_ROLE) {} + function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {} + ``` + +- Found in src/rules/validation/deployment/RuleSpenderWhitelist.sol [Line: 34](src/rules/validation/deployment/RuleSpenderWhitelist.sol#L34) + + ```solidity + function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {} + ``` + +- Found in src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol [Line: 14](src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol#L14) + + ```solidity + contract RuleSpenderWhitelistOwnable2Step is RuleSpenderWhitelistBase, Ownable2Step { + ``` + +- Found in src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol [Line: 20](src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol#L20) + + ```solidity + function _authorizeAddressListAdd() internal view virtual override onlyOwner {} + ``` + +- Found in src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol [Line: 22](src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol#L22) + + ```solidity + function _authorizeAddressListRemove() internal view virtual override onlyOwner {} ``` - Found in src/rules/validation/deployment/RuleWhitelist.sol [Line: 58](src/rules/validation/deployment/RuleWhitelist.sol#L58) ```solidity - function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {} + function _authorizeCheckSpenderManager() internal view virtual override onlyRole(DEFAULT_ADMIN_ROLE) {} ``` - Found in src/rules/validation/deployment/RuleWhitelist.sol [Line: 60](src/rules/validation/deployment/RuleWhitelist.sol#L60) + ```solidity + function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {} + ``` + +- Found in src/rules/validation/deployment/RuleWhitelist.sol [Line: 62](src/rules/validation/deployment/RuleWhitelist.sol#L62) + ```solidity function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {} ``` @@ -317,13 +353,13 @@ Contracts have owners with privileged rights to perform admin tasks and need to function _authorizeCheckSpenderManager() internal view virtual override onlyOwner {} ``` -- Found in src/rules/validation/deployment/RuleWhitelistWrapper.sol [Line: 47](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L47) +- Found in src/rules/validation/deployment/RuleWhitelistWrapper.sol [Line: 44](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L44) ```solidity function _authorizeCheckSpenderManager() internal virtual override onlyRole(DEFAULT_ADMIN_ROLE) {} ``` -- Found in src/rules/validation/deployment/RuleWhitelistWrapper.sol [Line: 52](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L52) +- Found in src/rules/validation/deployment/RuleWhitelistWrapper.sol [Line: 49](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L49) ```solidity function _onlyRulesManager() internal virtual override onlyRole(RULES_MANAGEMENT_ROLE) {} @@ -372,7 +408,7 @@ ERC20 functions may not behave as expected. For example: return values are not a Consider using a specific version of Solidity in your contracts instead of a wide version. For example, instead of `pragma solidity ^0.8.0;`, use `pragma solidity 0.8.0;` -
48 Found Instances +
53 Found Instances - Found in src/modules/AccessControlModuleStandalone.sol [Line: 3](src/modules/AccessControlModuleStandalone.sol#L3) @@ -387,10 +423,16 @@ Consider using a specific version of Solidity in your contracts instead of a wid pragma solidity ^0.8.20; ``` +- Found in src/modules/VersionModule.sol [Line: 2](src/modules/VersionModule.sol#L2) + + ```solidity + pragma solidity ^0.8.20; + ``` + - Found in src/rules/interfaces/IAddressList.sol [Line: 2](src/rules/interfaces/IAddressList.sol#L2) ```solidity - pragma solidity ^0.8.0; + pragma solidity ^0.8.20; ``` - Found in src/rules/interfaces/IERC2980.sol [Line: 2](src/rules/interfaces/IERC2980.sol#L2) @@ -525,6 +567,12 @@ Consider using a specific version of Solidity in your contracts instead of a wid pragma solidity ^0.8.20; ``` +- Found in src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol [Line: 2](src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol#L2) + + ```solidity + pragma solidity ^0.8.20; + ``` + - Found in src/rules/validation/abstract/base/RuleWhitelistBase.sol [Line: 2](src/rules/validation/abstract/base/RuleWhitelistBase.sol#L2) ```solidity @@ -579,6 +627,12 @@ Consider using a specific version of Solidity in your contracts instead of a wid pragma solidity ^0.8.20; ``` +- Found in src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol#L2) + + ```solidity + pragma solidity ^0.8.20; + ``` + - Found in src/rules/validation/deployment/RuleBlacklist.sol [Line: 3](src/rules/validation/deployment/RuleBlacklist.sol#L3) ```solidity @@ -639,6 +693,18 @@ Consider using a specific version of Solidity in your contracts instead of a wid pragma solidity ^0.8.20; ``` +- Found in src/rules/validation/deployment/RuleSpenderWhitelist.sol [Line: 2](src/rules/validation/deployment/RuleSpenderWhitelist.sol#L2) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol [Line: 2](src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol#L2) + + ```solidity + pragma solidity ^0.8.20; + ``` + - Found in src/rules/validation/deployment/RuleWhitelist.sol [Line: 2](src/rules/validation/deployment/RuleWhitelist.sol#L2) ```solidity @@ -674,7 +740,7 @@ Check for `address(0)` when assigning values to address state variables.
1 Found Instances -- Found in src/rules/validation/abstract/base/RuleSanctionsListBase.sol [Line: 128](src/rules/validation/abstract/base/RuleSanctionsListBase.sol#L128) +- Found in src/rules/validation/abstract/base/RuleSanctionsListBase.sol [Line: 119](src/rules/validation/abstract/base/RuleSanctionsListBase.sol#L119) ```solidity sanctionsList = sanctionContractOracle_; @@ -688,7 +754,7 @@ Check for `address(0)` when assigning values to address state variables. Solc compiler version 0.8.20 switches the default target EVM version to Shanghai, which means that the generated bytecode will include PUSH0 opcodes. Be sure to select the appropriate EVM version in case you intend to deploy on a chain other than mainnet like L2 chains that may not support PUSH0, otherwise deployment of your contracts will fail. -
48 Found Instances +
53 Found Instances - Found in src/modules/AccessControlModuleStandalone.sol [Line: 3](src/modules/AccessControlModuleStandalone.sol#L3) @@ -703,10 +769,16 @@ Solc compiler version 0.8.20 switches the default target EVM version to Shanghai pragma solidity ^0.8.20; ``` +- Found in src/modules/VersionModule.sol [Line: 2](src/modules/VersionModule.sol#L2) + + ```solidity + pragma solidity ^0.8.20; + ``` + - Found in src/rules/interfaces/IAddressList.sol [Line: 2](src/rules/interfaces/IAddressList.sol#L2) ```solidity - pragma solidity ^0.8.0; + pragma solidity ^0.8.20; ``` - Found in src/rules/interfaces/IERC2980.sol [Line: 2](src/rules/interfaces/IERC2980.sol#L2) @@ -841,6 +913,12 @@ Solc compiler version 0.8.20 switches the default target EVM version to Shanghai pragma solidity ^0.8.20; ``` +- Found in src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol [Line: 2](src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol#L2) + + ```solidity + pragma solidity ^0.8.20; + ``` + - Found in src/rules/validation/abstract/base/RuleWhitelistBase.sol [Line: 2](src/rules/validation/abstract/base/RuleWhitelistBase.sol#L2) ```solidity @@ -895,6 +973,12 @@ Solc compiler version 0.8.20 switches the default target EVM version to Shanghai pragma solidity ^0.8.20; ``` +- Found in src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol#L2) + + ```solidity + pragma solidity ^0.8.20; + ``` + - Found in src/rules/validation/deployment/RuleBlacklist.sol [Line: 3](src/rules/validation/deployment/RuleBlacklist.sol#L3) ```solidity @@ -955,6 +1039,18 @@ Solc compiler version 0.8.20 switches the default target EVM version to Shanghai pragma solidity ^0.8.20; ``` +- Found in src/rules/validation/deployment/RuleSpenderWhitelist.sol [Line: 2](src/rules/validation/deployment/RuleSpenderWhitelist.sol#L2) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol [Line: 2](src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol#L2) + + ```solidity + pragma solidity ^0.8.20; + ``` + - Found in src/rules/validation/deployment/RuleWhitelist.sol [Line: 2](src/rules/validation/deployment/RuleWhitelist.sol#L2) ```solidity @@ -990,13 +1086,13 @@ Consider removing the modifier or inlining the logic into the calling function.
2 Found Instances -- Found in src/rules/validation/abstract/base/RuleWhitelistBase.sol [Line: 75](src/rules/validation/abstract/base/RuleWhitelistBase.sol#L75) +- Found in src/rules/validation/abstract/base/RuleWhitelistBase.sol [Line: 77](src/rules/validation/abstract/base/RuleWhitelistBase.sol#L77) ```solidity modifier onlyCheckSpenderManager() { ``` -- Found in src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol [Line: 216](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L216) +- Found in src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol [Line: 210](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L210) ```solidity modifier onlyCheckSpenderManager() { @@ -1010,64 +1106,64 @@ Consider removing the modifier or inlining the logic into the calling function. Consider removing empty blocks. -
34 Found Instances +
38 Found Instances -- Found in src/rules/operation/RuleConditionalTransferLight.sol [Line: 41](src/rules/operation/RuleConditionalTransferLight.sol#L41) +- Found in src/rules/operation/RuleConditionalTransferLight.sol [Line: 46](src/rules/operation/RuleConditionalTransferLight.sol#L46) ```solidity - function created(address /* to */, uint256 /* value */) external onlyBoundToken {} + function _authorizeTransferApproval() internal view virtual override onlyRole(OPERATOR_ROLE) {} ``` -- Found in src/rules/operation/RuleConditionalTransferLight.sol [Line: 43](src/rules/operation/RuleConditionalTransferLight.sol#L43) +- Found in src/rules/operation/RuleConditionalTransferLight.sol [Line: 52](src/rules/operation/RuleConditionalTransferLight.sol#L52) ```solidity - function destroyed(address /* from */, uint256 /* value */) external onlyBoundToken {} + function _onlyComplianceManager() internal virtual override onlyRole(COMPLIANCE_MANAGER_ROLE) {} ``` -- Found in src/rules/operation/RuleConditionalTransferLight.sol [Line: 45](src/rules/operation/RuleConditionalTransferLight.sol#L45) +- Found in src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol [Line: 23](src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol#L23) ```solidity - function _authorizeTransferApproval() internal view virtual override onlyRole(OPERATOR_ROLE) {} + function _authorizeTransferApproval() internal view virtual override onlyOwner {} ``` -- Found in src/rules/operation/RuleConditionalTransferLight.sol [Line: 54](src/rules/operation/RuleConditionalTransferLight.sol#L54) +- Found in src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol [Line: 25](src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol#L25) ```solidity - function _onlyComplianceManager() internal virtual override onlyRole(COMPLIANCE_MANAGER_ROLE) {} + function _authorizeTransferExecution() internal view virtual override onlyOwner {} ``` -- Found in src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol [Line: 26](src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol#L26) +- Found in src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol [Line: 55](src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol#L55) ```solidity - function _authorizeTransferApproval() internal view virtual override onlyOwner {} + function transferred(address, address, uint256) public view override(IERC3643IComplianceContract) {} ``` -- Found in src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol [Line: 28](src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol#L28) +- Found in src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol [Line: 61](src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol#L61) ```solidity - function _authorizeTransferExecution() internal view virtual override onlyOwner {} + function _transferred(address, address, uint256) internal view virtual override { ``` -- Found in src/rules/validation/deployment/RuleBlacklist.sol [Line: 38](src/rules/validation/deployment/RuleBlacklist.sol#L38) +- Found in src/rules/validation/deployment/RuleBlacklist.sol [Line: 39](src/rules/validation/deployment/RuleBlacklist.sol#L39) ```solidity function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {} ``` -- Found in src/rules/validation/deployment/RuleBlacklist.sol [Line: 40](src/rules/validation/deployment/RuleBlacklist.sol#L40) +- Found in src/rules/validation/deployment/RuleBlacklist.sol [Line: 41](src/rules/validation/deployment/RuleBlacklist.sol#L41) ```solidity function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {} ``` -- Found in src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol [Line: 20](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L20) +- Found in src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol [Line: 17](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L17) ```solidity function _authorizeAddressListAdd() internal view virtual override onlyOwner {} ``` -- Found in src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol [Line: 22](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L22) +- Found in src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol [Line: 19](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L19) ```solidity function _authorizeAddressListRemove() internal view virtual override onlyOwner {} @@ -1097,25 +1193,25 @@ Consider removing empty blocks. function _authorizeFrozenlistRemove() internal view virtual override onlyRole(FROZENLIST_REMOVE_ROLE) {} ``` -- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 20](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L20) +- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 17](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L17) ```solidity function _authorizeWhitelistAdd() internal view virtual override onlyOwner {} ``` -- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 22](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L22) +- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 19](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L19) ```solidity function _authorizeWhitelistRemove() internal view virtual override onlyOwner {} ``` -- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 24](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L24) +- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 21](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L21) ```solidity function _authorizeFrozenlistAdd() internal view virtual override onlyOwner {} ``` -- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 26](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L26) +- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 23](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L23) ```solidity function _authorizeFrozenlistRemove() internal view virtual override onlyOwner {} @@ -1157,20 +1253,44 @@ Consider removing empty blocks. function _authorizeSanctionListManager() internal view virtual override onlyOwner {} ``` -- Found in src/rules/validation/deployment/RuleWhitelist.sol [Line: 56](src/rules/validation/deployment/RuleWhitelist.sol#L56) +- Found in src/rules/validation/deployment/RuleSpenderWhitelist.sol [Line: 32](src/rules/validation/deployment/RuleSpenderWhitelist.sol#L32) ```solidity - function _authorizeCheckSpenderManager() internal view virtual override onlyRole(DEFAULT_ADMIN_ROLE) {} + function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {} + ``` + +- Found in src/rules/validation/deployment/RuleSpenderWhitelist.sol [Line: 34](src/rules/validation/deployment/RuleSpenderWhitelist.sol#L34) + + ```solidity + function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {} + ``` + +- Found in src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol [Line: 20](src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol#L20) + + ```solidity + function _authorizeAddressListAdd() internal view virtual override onlyOwner {} + ``` + +- Found in src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol [Line: 22](src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol#L22) + + ```solidity + function _authorizeAddressListRemove() internal view virtual override onlyOwner {} ``` - Found in src/rules/validation/deployment/RuleWhitelist.sol [Line: 58](src/rules/validation/deployment/RuleWhitelist.sol#L58) ```solidity - function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {} + function _authorizeCheckSpenderManager() internal view virtual override onlyRole(DEFAULT_ADMIN_ROLE) {} ``` - Found in src/rules/validation/deployment/RuleWhitelist.sol [Line: 60](src/rules/validation/deployment/RuleWhitelist.sol#L60) + ```solidity + function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {} + ``` + +- Found in src/rules/validation/deployment/RuleWhitelist.sol [Line: 62](src/rules/validation/deployment/RuleWhitelist.sol#L62) + ```solidity function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {} ``` @@ -1193,13 +1313,13 @@ Consider removing empty blocks. function _authorizeCheckSpenderManager() internal view virtual override onlyOwner {} ``` -- Found in src/rules/validation/deployment/RuleWhitelistWrapper.sol [Line: 47](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L47) +- Found in src/rules/validation/deployment/RuleWhitelistWrapper.sol [Line: 44](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L44) ```solidity function _authorizeCheckSpenderManager() internal virtual override onlyRole(DEFAULT_ADMIN_ROLE) {} ``` -- Found in src/rules/validation/deployment/RuleWhitelistWrapper.sol [Line: 52](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L52) +- Found in src/rules/validation/deployment/RuleWhitelistWrapper.sol [Line: 49](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L49) ```solidity function _onlyRulesManager() internal virtual override onlyRole(RULES_MANAGEMENT_ROLE) {} @@ -1221,20 +1341,37 @@ Consider removing empty blocks. -## L-8: Costly operations inside loop +## L-8: Unused Error + +Consider using or removing the unused error. + +
1 Found Instances + + +- Found in src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol [Line: 16](src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol#L16) + + ```solidity + error RuleConditionalTransferLight_AdminAddressZeroNotAllowed(); + ``` + +
+ + + +## L-9: Costly operations inside loop Invoking `SSTORE` operations in loops may waste gas. Use a local variable to hold the loop computation result.
6 Found Instances -- Found in src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol [Line: 42](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L42) +- Found in src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol [Line: 39](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L39) ```solidity for (uint256 i = 0; i < addressesToAdd.length; ++i) { ``` -- Found in src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol [Line: 64](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L64) +- Found in src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol [Line: 61](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L61) ```solidity for (uint256 i = 0; i < addressesToRemove.length; ++i) { @@ -1268,7 +1405,7 @@ Invoking `SSTORE` operations in loops may waste gas. Use a local variable to hol -## L-9: Unchecked Return +## L-10: Unchecked Return Function returns a value but it is ignored. Consider checking the return value. @@ -1293,13 +1430,13 @@ Function returns a value but it is ignored. Consider checking the return value. _removeAddresses(targetAddresses); ``` -- Found in src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol [Line: 78](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L78) +- Found in src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol [Line: 75](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L75) ```solidity _listedAddresses.add(targetAddress); ``` -- Found in src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol [Line: 86](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L86) +- Found in src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol [Line: 83](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L83) ```solidity _listedAddresses.remove(targetAddress); @@ -1329,25 +1466,25 @@ Function returns a value but it is ignored. Consider checking the return value. _frozenlist.remove(targetAddress); ``` -- Found in src/rules/validation/abstract/base/RuleERC2980Base.sol [Line: 168](src/rules/validation/abstract/base/RuleERC2980Base.sol#L168) +- Found in src/rules/validation/abstract/base/RuleERC2980Base.sol [Line: 166](src/rules/validation/abstract/base/RuleERC2980Base.sol#L166) ```solidity _addWhitelistAddresses(targetAddresses); ``` -- Found in src/rules/validation/abstract/base/RuleERC2980Base.sol [Line: 177](src/rules/validation/abstract/base/RuleERC2980Base.sol#L177) +- Found in src/rules/validation/abstract/base/RuleERC2980Base.sol [Line: 175](src/rules/validation/abstract/base/RuleERC2980Base.sol#L175) ```solidity _removeWhitelistAddresses(targetAddresses); ``` -- Found in src/rules/validation/abstract/base/RuleERC2980Base.sol [Line: 264](src/rules/validation/abstract/base/RuleERC2980Base.sol#L264) +- Found in src/rules/validation/abstract/base/RuleERC2980Base.sol [Line: 256](src/rules/validation/abstract/base/RuleERC2980Base.sol#L256) ```solidity _addFrozenlistAddresses(targetAddresses); ``` -- Found in src/rules/validation/abstract/base/RuleERC2980Base.sol [Line: 273](src/rules/validation/abstract/base/RuleERC2980Base.sol#L273) +- Found in src/rules/validation/abstract/base/RuleERC2980Base.sol [Line: 265](src/rules/validation/abstract/base/RuleERC2980Base.sol#L265) ```solidity _removeFrozenlistAddresses(targetAddresses); diff --git a/src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol b/src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol index 5ac58c4..6c9cf92 100644 --- a/src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol +++ b/src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; -import {RuleCommonInvariantStorage} from "../../validation/abstract/invariant/RuleCommonInvariantStorage.sol"; +import {RuleSharedInvariantStorage} from "../../validation/abstract/invariant/RuleSharedInvariantStorage.sol"; -abstract contract RuleConditionalTransferLightInvariantStorage is RuleCommonInvariantStorage { +abstract contract RuleConditionalTransferLightInvariantStorage is RuleSharedInvariantStorage { /* ============ Role ============ */ bytes32 public constant OPERATOR_ROLE = keccak256("OPERATOR_ROLE"); diff --git a/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol b/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol index 247470a..02fa84a 100644 --- a/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol +++ b/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol @@ -2,9 +2,9 @@ pragma solidity ^0.8.20; -import {RuleCommonInvariantStorage} from "../../invariant/RuleCommonInvariantStorage.sol"; +import {RuleSharedInvariantStorage} from "../../invariant/RuleSharedInvariantStorage.sol"; -abstract contract RuleBlacklistInvariantStorage is RuleCommonInvariantStorage { +abstract contract RuleBlacklistInvariantStorage is RuleSharedInvariantStorage { error RuleBlacklist_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code); error RuleBlacklist_InvalidTransferFrom( address rule, address spender, address from, address to, uint256 value, uint8 code diff --git a/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol b/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol index 637dd4c..eed9da1 100644 --- a/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol +++ b/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol @@ -2,9 +2,9 @@ pragma solidity ^0.8.20; -import {RuleCommonInvariantStorage} from "../../invariant/RuleCommonInvariantStorage.sol"; +import {RuleSharedInvariantStorage} from "../../invariant/RuleSharedInvariantStorage.sol"; -abstract contract RuleWhitelistInvariantStorage is RuleCommonInvariantStorage { +abstract contract RuleWhitelistInvariantStorage is RuleSharedInvariantStorage { error RuleWhitelist_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code); error RuleWhitelist_InvalidTransferFrom( address rule, address spender, address from, address to, uint256 value, uint8 code diff --git a/src/rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol b/src/rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol index ce5c4de..8160ff8 100644 --- a/src/rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol +++ b/src/rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; -import {RuleCommonInvariantStorage} from "../../invariant/RuleCommonInvariantStorage.sol"; +import {RuleSharedInvariantStorage} from "../../invariant/RuleSharedInvariantStorage.sol"; -abstract contract RuleERC2980InvariantStorage is RuleCommonInvariantStorage { +abstract contract RuleERC2980InvariantStorage is RuleSharedInvariantStorage { /* ============ Custom errors ============ */ error RuleERC2980_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code); error RuleERC2980_InvalidTransferFrom( diff --git a/src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol b/src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol index 3a35f19..5b6833e 100644 --- a/src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol +++ b/src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; -import {RuleCommonInvariantStorage} from "./RuleCommonInvariantStorage.sol"; +import {RuleSharedInvariantStorage} from "./RuleSharedInvariantStorage.sol"; -abstract contract RuleIdentityRegistryInvariantStorage is RuleCommonInvariantStorage { +abstract contract RuleIdentityRegistryInvariantStorage is RuleSharedInvariantStorage { error RuleIdentityRegistry_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code); error RuleIdentityRegistry_InvalidTransferFrom( address rule, address spender, address from, address to, uint256 value, uint8 code diff --git a/src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol b/src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol index 0c6f8a3..ad3d3bd 100644 --- a/src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol +++ b/src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; -import {RuleCommonInvariantStorage} from "./RuleCommonInvariantStorage.sol"; +import {RuleSharedInvariantStorage} from "./RuleSharedInvariantStorage.sol"; -abstract contract RuleMaxTotalSupplyInvariantStorage is RuleCommonInvariantStorage { +abstract contract RuleMaxTotalSupplyInvariantStorage is RuleSharedInvariantStorage { error RuleMaxTotalSupply_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code); error RuleMaxTotalSupply_InvalidTransferFrom( address rule, address spender, address from, address to, uint256 value, uint8 code diff --git a/src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol b/src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol index 31ae3f0..27d3c95 100644 --- a/src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol +++ b/src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol @@ -2,10 +2,10 @@ pragma solidity ^0.8.20; -import {RuleCommonInvariantStorage} from "./RuleCommonInvariantStorage.sol"; +import {RuleSharedInvariantStorage} from "./RuleSharedInvariantStorage.sol"; import {ISanctionsList} from "../../../interfaces/ISanctionsList.sol"; -abstract contract RuleSanctionsListInvariantStorage is RuleCommonInvariantStorage { +abstract contract RuleSanctionsListInvariantStorage is RuleSharedInvariantStorage { /* ============ Event ============ */ event SetSanctionListOracle(ISanctionsList newOracle); /* ============ Custom errors ============ */ diff --git a/src/rules/validation/abstract/invariant/RuleCommonInvariantStorage.sol b/src/rules/validation/abstract/invariant/RuleSharedInvariantStorage.sol similarity index 79% rename from src/rules/validation/abstract/invariant/RuleCommonInvariantStorage.sol rename to src/rules/validation/abstract/invariant/RuleSharedInvariantStorage.sol index e4cd505..e04dabf 100644 --- a/src/rules/validation/abstract/invariant/RuleCommonInvariantStorage.sol +++ b/src/rules/validation/abstract/invariant/RuleSharedInvariantStorage.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; -abstract contract RuleCommonInvariantStorage { +abstract contract RuleSharedInvariantStorage { /* ============ String message ============ */ string constant TEXT_CODE_NOT_FOUND = "Unknown restriction code"; } diff --git a/src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol b/src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol index 97f77b1..dc8bd63 100644 --- a/src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol +++ b/src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; -import {RuleCommonInvariantStorage} from "./RuleCommonInvariantStorage.sol"; +import {RuleSharedInvariantStorage} from "./RuleSharedInvariantStorage.sol"; -abstract contract RuleSpenderWhitelistInvariantStorage is RuleCommonInvariantStorage { +abstract contract RuleSpenderWhitelistInvariantStorage is RuleSharedInvariantStorage { // It is very important that each rule uses an unique code uint8 public constant CODE_ADDRESS_SPENDER_NOT_WHITELISTED = 66; string constant TEXT_ADDRESS_SPENDER_NOT_WHITELISTED = "SpenderWhitelist: Spender is not whitelisted"; diff --git a/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol b/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol index 24d8ea3..911fe97 100644 --- a/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol +++ b/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol @@ -117,7 +117,8 @@ contract DeployCMTATWithBlacklistAndSanctionsListTest is CODE_ADDRESS_FROM_IS_BLACKLISTED ) ); - assertTrue(token.transfer(ADDRESS2, amount)); + // forge-lint: disable-next-line(erc20-unchecked-transfer) + token.transfer(ADDRESS2, amount); } function testDetectTransferRestrictionWhenSenderBlacklisted() public { @@ -148,7 +149,8 @@ contract DeployCMTATWithBlacklistAndSanctionsListTest is CODE_ADDRESS_TO_IS_BLACKLISTED ) ); - assertTrue(token.transfer(ADDRESS2, amount)); + // forge-lint: disable-next-line(erc20-unchecked-transfer) + token.transfer(ADDRESS2, amount); } function testDetectTransferRestrictionWhenRecipientBlacklisted() public { @@ -178,7 +180,8 @@ contract DeployCMTATWithBlacklistAndSanctionsListTest is CODE_ADDRESS_FROM_IS_SANCTIONED ) ); - assertTrue(token.transfer(ADDRESS2, amount)); + // forge-lint: disable-next-line(erc20-unchecked-transfer) + token.transfer(ADDRESS2, amount); } function testDetectTransferRestrictionWhenSenderSanctioned() public { @@ -207,7 +210,8 @@ contract DeployCMTATWithBlacklistAndSanctionsListTest is CODE_ADDRESS_TO_IS_SANCTIONED ) ); - assertTrue(token.transfer(ADDRESS2, amount)); + // forge-lint: disable-next-line(erc20-unchecked-transfer) + token.transfer(ADDRESS2, amount); } function testDetectTransferRestrictionWhenRecipientSanctioned() public { diff --git a/test/RuleBlacklist/CMTATIntegration.t.sol b/test/RuleBlacklist/CMTATIntegration.t.sol index 97bfe5a..0c0cdf6 100644 --- a/test/RuleBlacklist/CMTATIntegration.t.sol +++ b/test/RuleBlacklist/CMTATIntegration.t.sol @@ -67,7 +67,8 @@ contract CMTATIntegration is Test, HelperContract { ) ); // Act - assertTrue(cmtatContract.transfer(ADDRESS2, amount)); + // forge-lint: disable-next-line(erc20-unchecked-transfer) + cmtatContract.transfer(ADDRESS2, amount); } function testCannotTransferIfAddressFronIsBlacklisted() public { @@ -88,7 +89,8 @@ contract CMTATIntegration is Test, HelperContract { ) ); // Act - assertTrue(cmtatContract.transfer(ADDRESS2, amount)); + // forge-lint: disable-next-line(erc20-unchecked-transfer) + cmtatContract.transfer(ADDRESS2, amount); } function testCannotTransferIfBothAddressesAreBlacklisted() public { @@ -113,7 +115,8 @@ contract CMTATIntegration is Test, HelperContract { CODE_ADDRESS_FROM_IS_BLACKLISTED ) ); - assertTrue(cmtatContract.transfer(ADDRESS2, amount)); + // forge-lint: disable-next-line(erc20-unchecked-transfer) + cmtatContract.transfer(ADDRESS2, amount); } /** diff --git a/test/RuleBlacklist/CMTATIntegrationDirect.t.sol b/test/RuleBlacklist/CMTATIntegrationDirect.t.sol index c5e1769..9e47b29 100644 --- a/test/RuleBlacklist/CMTATIntegrationDirect.t.sol +++ b/test/RuleBlacklist/CMTATIntegrationDirect.t.sol @@ -60,7 +60,8 @@ contract CMTATIntegrationDirectBlacklist is Test, HelperContract { CODE_ADDRESS_TO_IS_BLACKLISTED ) ); - assertTrue(cmtatContract.transfer(ADDRESS2, amount)); + // forge-lint: disable-next-line(erc20-unchecked-transfer) + cmtatContract.transfer(ADDRESS2, amount); } function testCannotTransferIfAddressFromIsBlacklisted() public { @@ -79,7 +80,8 @@ contract CMTATIntegrationDirectBlacklist is Test, HelperContract { CODE_ADDRESS_FROM_IS_BLACKLISTED ) ); - assertTrue(cmtatContract.transfer(ADDRESS2, amount)); + // forge-lint: disable-next-line(erc20-unchecked-transfer) + cmtatContract.transfer(ADDRESS2, amount); } function testCannotTransferIfBothAddressesAreBlacklisted() public { @@ -102,7 +104,8 @@ contract CMTATIntegrationDirectBlacklist is Test, HelperContract { CODE_ADDRESS_FROM_IS_BLACKLISTED ) ); - assertTrue(cmtatContract.transfer(ADDRESS2, amount)); + // forge-lint: disable-next-line(erc20-unchecked-transfer) + cmtatContract.transfer(ADDRESS2, amount); } /* ---------------- Detect & Message Tests ---------------- */ diff --git a/test/RuleWhitelist/CMTATIntegration.t.sol b/test/RuleWhitelist/CMTATIntegration.t.sol index 933304a..facee60 100644 --- a/test/RuleWhitelist/CMTATIntegration.t.sol +++ b/test/RuleWhitelist/CMTATIntegration.t.sol @@ -56,7 +56,8 @@ contract CMTATIntegration is Test, HelperContract { ) ); // Act - assertTrue(cmtatContract.transfer(ADDRESS2, 21)); + // forge-lint: disable-next-line(erc20-unchecked-transfer) + cmtatContract.transfer(ADDRESS2, 21); } function testCannotTransferWithoutFromAddressWhitelisted() public { @@ -77,7 +78,8 @@ contract CMTATIntegration is Test, HelperContract { ) ); // Act - assertTrue(cmtatContract.transfer(ADDRESS2, amount)); + // forge-lint: disable-next-line(erc20-unchecked-transfer) + cmtatContract.transfer(ADDRESS2, amount); } function testCannotTransferWithoutToAddressWhitelisted() public { @@ -98,7 +100,8 @@ contract CMTATIntegration is Test, HelperContract { ) ); // Act - assertTrue(cmtatContract.transfer(ADDRESS2, amount)); + // forge-lint: disable-next-line(erc20-unchecked-transfer) + cmtatContract.transfer(ADDRESS2, amount); } function testCanMakeATransfer() public { diff --git a/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol b/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol index 6f036c4..cfd27a1 100644 --- a/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol +++ b/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol @@ -79,7 +79,8 @@ contract CMTATIntegrationWhitelistWrapper is Test, HelperContract { ) ); // Act - assertTrue(cmtatContract.transfer(ADDRESS2, 21)); + // forge-lint: disable-next-line(erc20-unchecked-transfer) + cmtatContract.transfer(ADDRESS2, 21); } function testCannotTransferWithoutFromAddressWhitelisted() public { @@ -100,7 +101,8 @@ contract CMTATIntegrationWhitelistWrapper is Test, HelperContract { ) ); // Act - assertTrue(cmtatContract.transfer(ADDRESS2, amount)); + // forge-lint: disable-next-line(erc20-unchecked-transfer) + cmtatContract.transfer(ADDRESS2, amount); } function testCannotTransferWithoutToAddressWhitelisted() public { @@ -121,7 +123,8 @@ contract CMTATIntegrationWhitelistWrapper is Test, HelperContract { ) ); // Act - assertTrue(cmtatContract.transfer(ADDRESS2, amount)); + // forge-lint: disable-next-line(erc20-unchecked-transfer) + cmtatContract.transfer(ADDRESS2, amount); } function testCanMakeATransferIfWhitelistedInSeveralDifferentList() public { diff --git a/test/TransferContext/TransferContextMocks.t.sol b/test/TransferContext/TransferContextMocks.t.sol index dfc0bc1..7a6ba96 100644 --- a/test/TransferContext/TransferContextMocks.t.sol +++ b/test/TransferContext/TransferContextMocks.t.sol @@ -69,7 +69,8 @@ contract TransferContextMocksTest is Test, HelperContract { vm.expectRevert(); vm.prank(ADDRESS3); - assertTrue(erc20.transferFrom(ADDRESS1, ADDRESS2, 10)); + // forge-lint: disable-next-line(erc20-unchecked-transfer) + erc20.transferFrom(ADDRESS1, ADDRESS2, 10); vm.prank(DEFAULT_ADMIN_ADDRESS); rule.addAddress(ADDRESS3); From 8caf02e768a01783a43db6dd7825caf697947899 Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Tue, 10 Mar 2026 16:13:24 +0100 Subject: [PATCH 6/8] Update audit report with Aderyn and Slither --- README.md | 9 +- doc/TOOLCHAIN.md | 15 +- .../tools/v0.2.0/aderyn-report-feedback.md | 5 +- .../audits/tools/v0.2.0/aderyn-report.md | 52 +-- .../tools/v0.2.0/slither-report-feedback.md | 45 +- .../audits/tools/v0.2.0/slither-report.md | 431 +++++++++--------- 6 files changed, 276 insertions(+), 281 deletions(-) diff --git a/README.md b/README.md index dd9bdb0..036f319 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Each rule can be used **standalone**, directly plugged into a CMTAT token, **or* **Status:** *Repository under active development* -Latest update: transfer-context token mocks now use OpenZeppelin ERC-20/ERC-721; test utilities and harness contracts were moved from `test/` to `src/mocks` and `src/mocks/harness`; context spender handling remains `sender == from` => direct transfer. +Latest update: transfer-context token mocks now use OpenZeppelin ERC-20/ERC-721; test utilities and harness contracts were moved from `test/` to `src/mocks` and `src/mocks/harness`; context spender handling remains `sender == from` => direct transfer; audit L-8 fixed by removing an unused conditional-transfer custom error. ## Schema @@ -1645,11 +1645,12 @@ Static analysis was performed with [Slither](https://github.com/crytic/slither). |---|---|---|---| | arbitrary-send-erc20 | High | 1 | False positive — `from` is guarded by `onlyTransferApprover`, ERC-20 allowance check, and a pre-recorded approval | | unused-return | Medium | 6 | False positive — existence pre-checked at public layer before calling internal helper | -| calls-loop | Low | 15 | Acknowledged — by design; wrapper must query each child rule; child rules are read-only | -| dead-code | Informational | 14 | False positive — `_msgData()` overrides required for ERC-2771 diamond resolution; `_transferred` override is reachable | +| calls-loop | Low | 16 | Acknowledged — by design; wrapper must query each child rule; child rules are read-only | +| assembly | Informational | 1 | Acknowledged — intentional gas optimisation in `_transferHash`; minimal and well-scoped | +| missing-inheritance | Informational | 1 | Acknowledged — `TotalSupplyMock` is a test-only mock; strict interface declaration unnecessary | | naming-convention | Informational | 2 | Acknowledged — parameter names match ERC-2980 spec | | unindexed-event-address | Informational | 2 | Out of scope (both in `lib/RuleEngine`); `IAddressList` events previously fixed | -| unused-state | Informational | 48 | False positive — `RuleNFTAdapter` constants used in base dispatch logic; Slither per-contract analysis limitation | +| unused-state | Informational | 60 | False positive — `RuleNFTAdapter` constants used in base dispatch logic; Slither per-contract analysis limitation | ## Intellectual property diff --git a/doc/TOOLCHAIN.md b/doc/TOOLCHAIN.md index 740ae57..507bdce 100644 --- a/doc/TOOLCHAIN.md +++ b/doc/TOOLCHAIN.md @@ -2,8 +2,6 @@ [TOC] - - ## Node.JS package This part describe the list of libraries present in the file `package.json`. @@ -16,23 +14,12 @@ This section concerns the packages installed in the section `devDependencies` of [Hardhat](https://hardhat.org/) plugin for integration with Foundry -**[Ethlint](https://github.com/duaraghav8/Ethlint)** -Solidity static analyzer. - -**[prettier-plugin-solidity](https://github.com/prettier-solidity/prettier-plugin-solidity)** - -A [Prettier plugin](https://prettier.io/docs/en/plugins.html) for automatically formatting your [Solidity](https://github.com/ethereum/solidity) code. - #### Documentation **[sol2uml](https://github.com/naddison36/sol2uml)** Generate UML for smart contracts -**[solidity-docgen](https://github.com/OpenZeppelin/solidity-docgen)** - -Program that extracts documentation for a Solidity project. - **[Surya](https://github.com/ConsenSys/surya)** Utility tool for smart contract systems. @@ -116,7 +103,7 @@ npm run-script surya:report >Slither is a Solidity static analysis framework written in Python3 ```bash -slither . --checklist --filter-paths "openzeppelin-contracts|test|mocksCMTAT|forge-std" > slither-report.md +slither . --checklist --filter-paths "openzeppelin-contracts|test|mocks|CMTAT|forge-std" > slither-report.md ``` diff --git a/doc/security/audits/tools/v0.2.0/aderyn-report-feedback.md b/doc/security/audits/tools/v0.2.0/aderyn-report-feedback.md index c6a6e41..7d7d7ae 100644 --- a/doc/security/audits/tools/v0.2.0/aderyn-report-feedback.md +++ b/doc/security/audits/tools/v0.2.0/aderyn-report-feedback.md @@ -2,7 +2,7 @@ Report version: `v0.2.0` Aderyn report: [aderyn-report.md](./aderyn-report.md) -Feedback date: 2026-03-09 +Feedback date: 2026-03-10 This document provides the project team's assessment of each finding reported by the Aderyn static analyser. For each issue the verdict is one of: @@ -10,6 +10,7 @@ This document provides the project team's assessment of each finding reported by |---|---| | **Acknowledged** | Known, accepted by design; no change planned. | | **Acknowledged — low impact** | Technically valid but the actual risk is negligible given context. | +| **Fixed** | Resolved in the codebase. | | **To fix** | Will be addressed in a future revision. | | **False positive** | Tool mis-identification; no real issue exists. | @@ -108,8 +109,6 @@ All flagged loops perform `EnumerableSet.add` / `EnumerableSet.remove` calls, ea | `_whitelist.add/remove` and `_frozenlist.add/remove` in `RuleERC2980Internal` (single-item helpers) | **False positive** — same pattern as above; return is checked by the surrounding `require`. | | `_addWhitelistAddresses` / `_removeWhitelistAddresses` / `_addFrozenlistAddresses` / `_removeFrozenlistAddresses` in `RuleERC2980Base` | **False positive** — batch helpers return `void`; nothing to check. | -No code changes are required for L-10. - --- ## Summary diff --git a/doc/security/audits/tools/v0.2.0/aderyn-report.md b/doc/security/audits/tools/v0.2.0/aderyn-report.md index 4a39ef3..5f2080a 100644 --- a/doc/security/audits/tools/v0.2.0/aderyn-report.md +++ b/doc/security/audits/tools/v0.2.0/aderyn-report.md @@ -15,9 +15,8 @@ This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a stati - [L-5: PUSH0 Opcode](#l-5-push0-opcode) - [L-6: Modifier Invoked Only Once](#l-6-modifier-invoked-only-once) - [L-7: Empty Block](#l-7-empty-block) - - [L-8: Unused Error](#l-8-unused-error) - - [L-9: Costly operations inside loop](#l-9-costly-operations-inside-loop) - - [L-10: Unchecked Return](#l-10-unchecked-return) + - [L-8: Costly operations inside loop](#l-8-costly-operations-inside-loop) + - [L-9: Unchecked Return](#l-9-unchecked-return) # Summary @@ -27,7 +26,7 @@ This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a stati | Key | Value | | --- | --- | | .sol Files | 53 | -| Total nSLOC | 2198 | +| Total nSLOC | 2197 | ## Files Details @@ -47,7 +46,7 @@ This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a stati | src/rules/operation/RuleConditionalTransferLight.sol | 36 | | src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol | 16 | | src/rules/operation/abstract/RuleConditionalTransferLightBase.sol | 159 | -| src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol | 19 | +| src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol | 18 | | src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol | 66 | | src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol | 39 | | src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleAddressSetInvariantStorage.sol | 7 | @@ -66,10 +65,10 @@ This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a stati | src/rules/validation/abstract/core/RuleNFTAdapter.sol | 111 | | src/rules/validation/abstract/core/RuleTransferValidation.sol | 64 | | src/rules/validation/abstract/core/RuleWhitelistShared.sol | 49 | -| src/rules/validation/abstract/invariant/RuleCommonInvariantStorage.sol | 4 | | src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol | 16 | | src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol | 13 | | src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol | 18 | +| src/rules/validation/abstract/invariant/RuleSharedInvariantStorage.sol | 4 | | src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol | 9 | | src/rules/validation/deployment/RuleBlacklist.sol | 33 | | src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol | 20 | @@ -87,7 +86,7 @@ This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a stati | src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol | 24 | | src/rules/validation/deployment/RuleWhitelistWrapper.sol | 64 | | src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol | 28 | -| **Total** | **2198** | +| **Total** | **2197** | ## Issue Summary @@ -95,7 +94,7 @@ This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a stati | Category | No. of Issues | | --- | --- | | High | 0 | -| Low | 10 | +| Low | 9 | # Low Issues @@ -603,25 +602,25 @@ Consider using a specific version of Solidity in your contracts instead of a wid pragma solidity ^0.8.20; ``` -- Found in src/rules/validation/abstract/invariant/RuleCommonInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleCommonInvariantStorage.sol#L2) +- Found in src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol#L2) ```solidity pragma solidity ^0.8.20; ``` -- Found in src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol#L2) +- Found in src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol#L2) ```solidity pragma solidity ^0.8.20; ``` -- Found in src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol#L2) +- Found in src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol [Line: 3](src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol#L3) ```solidity pragma solidity ^0.8.20; ``` -- Found in src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol [Line: 3](src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol#L3) +- Found in src/rules/validation/abstract/invariant/RuleSharedInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleSharedInvariantStorage.sol#L2) ```solidity pragma solidity ^0.8.20; @@ -949,25 +948,25 @@ Solc compiler version 0.8.20 switches the default target EVM version to Shanghai pragma solidity ^0.8.20; ``` -- Found in src/rules/validation/abstract/invariant/RuleCommonInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleCommonInvariantStorage.sol#L2) +- Found in src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol#L2) ```solidity pragma solidity ^0.8.20; ``` -- Found in src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol#L2) +- Found in src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol#L2) ```solidity pragma solidity ^0.8.20; ``` -- Found in src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol#L2) +- Found in src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol [Line: 3](src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol#L3) ```solidity pragma solidity ^0.8.20; ``` -- Found in src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol [Line: 3](src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol#L3) +- Found in src/rules/validation/abstract/invariant/RuleSharedInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleSharedInvariantStorage.sol#L2) ```solidity pragma solidity ^0.8.20; @@ -1341,24 +1340,7 @@ Consider removing empty blocks. -## L-8: Unused Error - -Consider using or removing the unused error. - -
1 Found Instances - - -- Found in src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol [Line: 16](src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol#L16) - - ```solidity - error RuleConditionalTransferLight_AdminAddressZeroNotAllowed(); - ``` - -
- - - -## L-9: Costly operations inside loop +## L-8: Costly operations inside loop Invoking `SSTORE` operations in loops may waste gas. Use a local variable to hold the loop computation result. @@ -1405,7 +1387,7 @@ Invoking `SSTORE` operations in loops may waste gas. Use a local variable to hol -## L-10: Unchecked Return +## L-9: Unchecked Return Function returns a value but it is ignored. Consider checking the return value. diff --git a/doc/security/audits/tools/v0.2.0/slither-report-feedback.md b/doc/security/audits/tools/v0.2.0/slither-report-feedback.md index adf094d..0b2fb8b 100644 --- a/doc/security/audits/tools/v0.2.0/slither-report-feedback.md +++ b/doc/security/audits/tools/v0.2.0/slither-report-feedback.md @@ -2,7 +2,7 @@ Report version: `v0.2.0` Slither report: [slither-report.md](./slither-report.md) -Feedback date: 2026-03-09 +Feedback date: 2026-03-10 Verdicts: @@ -53,11 +53,11 @@ The same pattern is used in `RuleERC2980Base` for whitelist and frozenlist singl --- -## calls-loop (Low) — ID-7 to ID-21 +## calls-loop (Low) — ID-7 to ID-22 **Verdict: Acknowledged — by design** -All 15 instances trace to the same root location: `RuleWhitelistWrapperBase._detectTransferRestrictionForTargets` iterates over child rules and calls `IAddressList(rule(i)).areAddressesListed(...)` for each. +All 16 instances trace to the same root location: `RuleWhitelistWrapperBase._detectTransferRestrictionForTargets` iterates over child rules and calls `IAddressList(rule(i)).areAddressesListed(...)` for each. This is the fundamental purpose of the wrapper: aggregate multiple whitelist rules with OR logic. There is no way to avoid external calls per child rule. Mitigations already in place: @@ -67,19 +67,27 @@ This is the fundamental purpose of the wrapper: aggregate multiple whitelist rul --- -## dead-code (Informational) — ID-22 to ID-35 +## assembly (Informational) — ID-23 -**Verdict: False positive** +**Verdict: Acknowledged — by design** + +Flagged location: `RuleConditionalTransferLightBase._transferHash(address,address,uint256)` uses inline assembly (lines 180–186). + +The assembly block computes a compact hash of the transfer parameters (`from`, `to`, `value`) using `mstore` and `keccak256`. This is an intentional micro-optimisation: it produces an `abi.encodePacked`-equivalent layout without allocating a new memory buffer, saving gas on every approval lookup. The assembly is minimal, well-scoped, and does not involve any control-flow or external calls. No safety concern. + +--- + +## missing-inheritance (Informational) — ID-24 + +**Verdict: Acknowledged — mock contract** -**ID-22 to ID-30, ID-32 to ID-35 — `_msgData()` overrides:** -These overrides are required to resolve Solidity's C3 linearisation diamond problem. Every contract that inherits both `Context` (transitively via `AccessControl` or `Ownable`) and `ERC2771Context` must override `_msgData()`, `_msgSender()`, and `_contextSuffixLength()` to disambiguate which parent's implementation to use. Without these overrides the contracts would not compile. Slither incorrectly classifies them as dead code because it does not detect the implicit Solidity MRO requirement. +Flagged location: `TotalSupplyMock` should inherit from `ITotalSupply`. -**ID-31 — `RuleWhitelistWrapperBase._transferred(address,address,address,uint256)`:** -This internal function overrides `RulesManagementModule._transferred(address,address,address,uint256)` and delegates to `RuleWhitelistShared._transferredFrom`. It is called whenever a `transferFrom`-style transfer is validated through the wrapper. Slither does not trace the call chain through the abstract base correctly. +`TotalSupplyMock` is a test-only mock located in `src/mocks/`. It implements the `totalSupply()` function to simulate a token for testing `RuleMaxTotalSupply` without deploying a full ERC-20. Declaring `ITotalSupply` inheritance would add no behaviour and is unnecessary for testing purposes. No change planned. --- -## naming-convention (Informational) — ID-36, ID-37 +## naming-convention (Informational) — ID-25, ID-26 **Verdict: Acknowledged** @@ -87,7 +95,7 @@ Parameters `_operator` in `RuleERC2980Base.frozenlist(address)` and `RuleERC2980 --- -## unindexed-event-address (Informational) — ID-38, ID-39 +## unindexed-event-address (Informational) — ID-27, ID-28 **Verdict: Out of scope** @@ -97,11 +105,11 @@ Note: the previously reported `IAddressList.AddAddress` and `IAddressList.Remove --- -## unused-state (Informational) — ID-40 to ID-87 +## unused-state (Informational) — ID-29 to ID-88 **Verdict: False positive** -All 48 instances report `RuleNFTAdapter` selector constants (`TRANSFERRED_SELECTOR_ERC3643`, `TRANSFERRED_SELECTOR_RULE_ENGINE`, `TRANSFERRED_SELECTOR_ERC7943`, `TRANSFERRED_SELECTOR_ERC7943_FROM`) as unused in specific concrete contracts. +All 60 instances report `RuleNFTAdapter` selector constants (`TRANSFERRED_SELECTOR_ERC3643`, `TRANSFERRED_SELECTOR_RULE_ENGINE`, `TRANSFERRED_SELECTOR_ERC7943`, `TRANSFERRED_SELECTOR_ERC7943_FROM`) as unused in specific concrete contracts. These constants are defined in `RuleNFTAdapter` and used by its internal dispatch logic. Slither performs a per-concrete-contract analysis and flags constants not directly referenced in a given contract's own bytecode, even though they are active in the inherited base. This is a known limitation of Slither's inheritance analysis for `constant` values defined in base contracts. @@ -113,8 +121,9 @@ These constants are defined in `RuleNFTAdapter` and used by its internal dispatc |---|---|---|---| | arbitrary-send-erc20 | High | ID-0 | False positive | | unused-return | Medium | ID-1 to ID-6 | False positive | -| calls-loop | Low | ID-7 to ID-21 | Acknowledged — by design | -| dead-code | Informational | ID-22 to ID-35 | False positive | -| naming-convention | Informational | ID-36 to ID-37 | Acknowledged | -| unindexed-event-address | Informational | ID-38 to ID-39 | Out of scope (lib/) | -| unused-state | Informational | ID-40 to ID-87 | False positive | +| calls-loop | Low | ID-7 to ID-22 | Acknowledged — by design | +| assembly | Informational | ID-23 | Acknowledged — by design | +| missing-inheritance | Informational | ID-24 | Acknowledged — mock contract | +| naming-convention | Informational | ID-25 to ID-26 | Acknowledged | +| unindexed-event-address | Informational | ID-27 to ID-28 | Out of scope (lib/) | +| unused-state | Informational | ID-29 to ID-88 | False positive | diff --git a/doc/security/audits/tools/v0.2.0/slither-report.md b/doc/security/audits/tools/v0.2.0/slither-report.md index 6a4a8f3..34fa48b 100644 --- a/doc/security/audits/tools/v0.2.0/slither-report.md +++ b/doc/security/audits/tools/v0.2.0/slither-report.md @@ -2,27 +2,28 @@ Summary - [arbitrary-send-erc20](#arbitrary-send-erc20) (1 results) (High) - [unused-return](#unused-return) (6 results) (Medium) - - [calls-loop](#calls-loop) (15 results) (Low) - - [dead-code](#dead-code) (14 results) (Informational) + - [calls-loop](#calls-loop) (16 results) (Low) + - [assembly](#assembly) (1 results) (Informational) + - [missing-inheritance](#missing-inheritance) (1 results) (Informational) - [naming-convention](#naming-convention) (2 results) (Informational) - [unindexed-event-address](#unindexed-event-address) (2 results) (Informational) - - [unused-state](#unused-state) (48 results) (Informational) + - [unused-state](#unused-state) (60 results) (Informational) ## arbitrary-send-erc20 Impact: High Confidence: High - [ ] ID-0 -[RuleConditionalTransferLightBase.approveAndTransferIfAllowed(address,address,address,uint256)](src/rules/operation/abstract/RuleConditionalTransferLightBase.sol#L44-L62) uses arbitrary from in transferFrom: [success = IERC20(token).transferFrom(from,to,value)](src/rules/operation/abstract/RuleConditionalTransferLightBase.sol#L59) +[RuleConditionalTransferLightBase.approveAndTransferIfAllowed(address,address,address,uint256)](src/rules/operation/abstract/RuleConditionalTransferLightBase.sol#L47-L62) uses arbitrary from in transferFrom: [success = IERC20(token).transferFrom(from,to,value)](src/rules/operation/abstract/RuleConditionalTransferLightBase.sol#L59) -src/rules/operation/abstract/RuleConditionalTransferLightBase.sol#L44-L62 +src/rules/operation/abstract/RuleConditionalTransferLightBase.sol#L47-L62 ## unused-return Impact: Medium Confidence: Medium - [ ] ID-1 -[RuleAddressSetInternal._removeAddress(address)](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L85-L87) ignores return value by [_listedAddresses.remove(targetAddress)](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L86) +[RuleAddressSetInternal._removeAddress(address)](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L82-L84) ignores return value by [_listedAddresses.remove(targetAddress)](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L83) -src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L85-L87 +src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L82-L84 - [ ] ID-2 @@ -32,586 +33,602 @@ src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L59-L61 - [ ] ID-3 -[RuleERC2980Internal._removeWhitelistAddress(address)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L63-L65) ignores return value by [_whitelist.remove(targetAddress)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L64) +[RuleAddressSetInternal._addAddress(address)](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L74-L76) ignores return value by [_listedAddresses.add(targetAddress)](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L75) -src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L63-L65 +src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L74-L76 - [ ] ID-4 -[RuleERC2980Internal._addFrozenlistAddress(address)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L105-L107) ignores return value by [_frozenlist.add(targetAddress)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L106) +[RuleERC2980Internal._removeWhitelistAddress(address)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L63-L65) ignores return value by [_whitelist.remove(targetAddress)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L64) -src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L105-L107 +src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L63-L65 - [ ] ID-5 -[RuleERC2980Internal._removeFrozenlistAddress(address)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L109-L111) ignores return value by [_frozenlist.remove(targetAddress)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L110) +[RuleERC2980Internal._addFrozenlistAddress(address)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L105-L107) ignores return value by [_frozenlist.add(targetAddress)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L106) -src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L109-L111 +src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L105-L107 - [ ] ID-6 -[RuleAddressSetInternal._addAddress(address)](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L77-L79) ignores return value by [_listedAddresses.add(targetAddress)](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L78) +[RuleERC2980Internal._removeFrozenlistAddress(address)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L109-L111) ignores return value by [_frozenlist.remove(targetAddress)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L110) -src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L77-L79 +src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L109-L111 ## calls-loop Impact: Low Confidence: Medium - [ ] ID-7 -[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L182) +[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L176) Calls stack containing the loop: - RuleNFTAdapter.transferred(ITransferContext.FungibleTransferContext) - RuleWhitelistShared._transferredFrom(address,address,address,uint256) - RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256) + RuleNFTAdapter.detectTransferRestriction(address,address,uint256,uint256) RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256) -src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202 +src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196 - [ ] ID-8 -[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L182) +[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L176) Calls stack containing the loop: RuleTransferValidation.detectTransferRestrictionFrom(address,address,address,uint256) RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256) RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256) -src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202 +src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196 - [ ] ID-9 -[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L182) +[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L176) Calls stack containing the loop: RuleWhitelistShared.transferred(address,address,uint256) RuleWhitelistWrapperBase._transferred(address,address,uint256) RuleWhitelistShared._transferred(address,address,uint256) RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256) -src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202 +src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196 - [ ] ID-10 -[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L182) +[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L176) Calls stack containing the loop: - RuleTransferValidation.canTransferFrom(address,address,address,uint256) - RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256) + RuleTransferValidation.canTransfer(address,address,uint256) RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256) -src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202 +src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196 - [ ] ID-11 -[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L182) +[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L176) Calls stack containing the loop: - RuleWhitelistShared.transferred(address,address,address,uint256) - RuleWhitelistShared._transferredFrom(address,address,address,uint256) - RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256) + RuleNFTAdapter.transferred(address,address,uint256,uint256) + RuleWhitelistWrapperBase._transferred(address,address,uint256) + RuleWhitelistShared._transferred(address,address,uint256) RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256) -src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202 +src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196 - [ ] ID-12 -[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L182) +[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L176) Calls stack containing the loop: RuleTransferValidation.detectTransferRestriction(address,address,uint256) RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256) -src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202 +src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196 - [ ] ID-13 -[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L182) +[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L176) Calls stack containing the loop: - RuleNFTAdapter.canTransferFrom(address,address,address,uint256,uint256) + RuleNFTAdapter.transferred(ITransferContext.MultiTokenTransferContext) + RuleWhitelistShared._transferredFrom(address,address,address,uint256) RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256) RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256) -src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202 +src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196 - [ ] ID-14 -[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L182) +[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L176) Calls stack containing the loop: - RuleNFTAdapter.transferred(ITransferContext.MultiTokenTransferContext) - RuleWhitelistShared._transferredFrom(address,address,address,uint256) - RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256) - RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256) + RuleWhitelistWrapperBase.isVerified(address) -src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202 +src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196 - [ ] ID-15 -[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L182) +[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L176) Calls stack containing the loop: - RuleTransferValidation.canTransfer(address,address,uint256) + RuleNFTAdapter.canTransfer(address,address,uint256,uint256) RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256) -src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202 +src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196 - [ ] ID-16 -[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L182) +[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L176) Calls stack containing the loop: - RuleWhitelistWrapperBase.isVerified(address) + RuleNFTAdapter.transferred(address,address,address,uint256,uint256) + RuleWhitelistShared._transferredFrom(address,address,address,uint256) + RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256) + RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256) -src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202 +src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196 - [ ] ID-17 -[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L182) +[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L176) Calls stack containing the loop: - RuleNFTAdapter.detectTransferRestriction(address,address,uint256,uint256) + RuleNFTAdapter.detectTransferRestrictionFrom(address,address,address,uint256,uint256) + RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256) RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256) -src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202 +src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196 - [ ] ID-18 -[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L182) +[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L176) Calls stack containing the loop: - RuleNFTAdapter.detectTransferRestrictionFrom(address,address,address,uint256,uint256) + RuleNFTAdapter.canTransferFrom(address,address,address,uint256,uint256) RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256) RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256) -src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202 +src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196 - [ ] ID-19 -[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L182) +[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L176) Calls stack containing the loop: - RuleNFTAdapter.canTransfer(address,address,uint256,uint256) + RuleNFTAdapter.transferred(ITransferContext.FungibleTransferContext) + RuleWhitelistShared._transferredFrom(address,address,address,uint256) + RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256) RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256) -src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202 +src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196 - [ ] ID-20 -[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L182) +[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L176) Calls stack containing the loop: - RuleNFTAdapter.transferred(address,address,address,uint256,uint256) + RuleWhitelistShared.transferred(address,address,address,uint256) RuleWhitelistShared._transferredFrom(address,address,address,uint256) RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256) RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256) -src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202 +src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196 - [ ] ID-21 -[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L182) +[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L176) Calls stack containing the loop: - RuleNFTAdapter.transferred(address,address,uint256,uint256) - RuleWhitelistWrapperBase._transferred(address,address,uint256) - RuleWhitelistShared._transferred(address,address,uint256) + RuleWhitelistWrapperHarnessInternal.exposedTransferredSpenderInternal(address,address,address,uint256) + RuleWhitelistWrapperBase._transferred(address,address,address,uint256) + RuleWhitelistShared._transferredFrom(address,address,address,uint256) + RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256) RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256) -src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L171-L202 +src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196 -## dead-code -Impact: Informational -Confidence: Medium - [ ] ID-22 -[RuleAddressSet._msgData()](src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol#L159-L161) is never used and should be removed +[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L176) + Calls stack containing the loop: + RuleTransferValidation.canTransferFrom(address,address,address,uint256) + RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256) + RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256) -src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol#L159-L161 +src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L165-L196 +## assembly +Impact: Informational +Confidence: High - [ ] ID-23 -[RuleBlacklistOwnable2Step._msgData()](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L28-L30) is never used and should be removed +[RuleConditionalTransferLightBase._transferHash(address,address,uint256)](src/rules/operation/abstract/RuleConditionalTransferLightBase.sol#L178-L187) uses assembly + - [INLINE ASM](src/rules/operation/abstract/RuleConditionalTransferLightBase.sol#L180-L186) -src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L28-L30 +src/rules/operation/abstract/RuleConditionalTransferLightBase.sol#L178-L187 +## missing-inheritance +Impact: Informational +Confidence: High - [ ] ID-24 -[RuleERC2980._msgData()](src/rules/validation/deployment/RuleERC2980.sol#L76-L78) is never used and should be removed +[TotalSupplyMock](src/mocks/TotalSupplyMock.sol#L4-L14) should inherit from [ITotalSupply](src/rules/interfaces/ITotalSupply.sol#L4-L6) -src/rules/validation/deployment/RuleERC2980.sol#L76-L78 +src/mocks/TotalSupplyMock.sol#L4-L14 +## naming-convention +Impact: Informational +Confidence: High - [ ] ID-25 -[RuleWhitelistWrapperBase._msgData()](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L237-L239) is never used and should be removed +Parameter [RuleERC2980Base.frozenlist(address)._operator](src/rules/validation/abstract/base/RuleERC2980Base.sol#L314) is not in mixedCase -src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L237-L239 +src/rules/validation/abstract/base/RuleERC2980Base.sol#L314 - [ ] ID-26 -[RuleERC2980Base._msgData()](src/rules/validation/abstract/base/RuleERC2980Base.sol#L381-L383) is never used and should be removed +Parameter [RuleERC2980Base.whitelist(address)._operator](src/rules/validation/abstract/base/RuleERC2980Base.sol#L224) is not in mixedCase -src/rules/validation/abstract/base/RuleERC2980Base.sol#L381-L383 +src/rules/validation/abstract/base/RuleERC2980Base.sol#L224 +## unindexed-event-address +Impact: Informational +Confidence: High - [ ] ID-27 -[RuleWhitelistWrapperOwnable2Step._msgData()](src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol#L43-L45) is never used and should be removed +Event [IERC3643Compliance.TokenBound(address)](lib/RuleEngine/src/interfaces/IERC3643Compliance.sol#L14) has address parameters but no indexed parameters -src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol#L43-L45 +lib/RuleEngine/src/interfaces/IERC3643Compliance.sol#L14 - [ ] ID-28 -[RuleSanctionsListOwnable2Step._msgData()](src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol#L27-L29) is never used and should be removed +Event [IERC3643Compliance.TokenUnbound(address)](lib/RuleEngine/src/interfaces/IERC3643Compliance.sol#L20) has address parameters but no indexed parameters -src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol#L27-L29 +lib/RuleEngine/src/interfaces/IERC3643Compliance.sol#L20 +## unused-state +Impact: Informational +Confidence: High - [ ] ID-29 -[RuleSanctionsList._msgData()](src/rules/validation/deployment/RuleSanctionsList.sol#L51-L53) is never used and should be removed +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleERC2980Ownable2StepHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L89-L95) -src/rules/validation/deployment/RuleSanctionsList.sol#L51-L53 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 - [ ] ID-30 -[RuleWhitelistWrapper._msgData()](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L62-L64) is never used and should be removed +[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21) is never used in [RuleWhitelistOwnable2StepHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L69-L77) -src/rules/validation/deployment/RuleWhitelistWrapper.sol#L62-L64 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21 - [ ] ID-31 -[RuleWhitelistWrapperBase._transferred(address,address,address,uint256)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L153-L160) is never used and should be removed +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleBlacklistHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L15-L21) -src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L153-L160 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 - [ ] ID-32 -[RuleBlacklist._msgData()](src/rules/validation/deployment/RuleBlacklist.sol#L46-L48) is never used and should be removed +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleERC2980Ownable2StepHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L89-L95) -src/rules/validation/deployment/RuleBlacklist.sol#L46-L48 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 - [ ] ID-33 -[RuleERC2980Ownable2Step._msgData()](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L32-L34) is never used and should be removed +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20) is never used in [RuleWhitelistWrapperHarnessInternal](src/mocks/harness/RuleWhitelistWrapperHarnessInternal.sol#L6-L14) -src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L32-L34 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20 - [ ] ID-34 -[RuleWhitelist._msgData()](src/rules/validation/deployment/RuleWhitelist.sol#L66-L68) is never used and should be removed +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleWhitelistHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L23-L31) -src/rules/validation/deployment/RuleWhitelist.sol#L66-L68 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 - [ ] ID-35 -[RuleWhitelistOwnable2Step._msgData()](src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol#L30-L32) is never used and should be removed +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20) is never used in [RuleSanctionsListHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L51-L59) -src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol#L30-L32 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20 -## naming-convention -Impact: Informational -Confidence: High - [ ] ID-36 -Parameter [RuleERC2980Base.frozenlist(address)._operator](src/rules/validation/abstract/base/RuleERC2980Base.sol#L322) is not in mixedCase +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleSanctionsListOwnable2StepHarness](src/mocks/harness/RuleSanctionsListOwnable2StepHarness.sol#L7-L23) -src/rules/validation/abstract/base/RuleERC2980Base.sol#L322 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 - [ ] ID-37 -Parameter [RuleERC2980Base.whitelist(address)._operator](src/rules/validation/abstract/base/RuleERC2980Base.sol#L226) is not in mixedCase +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20) is never used in [RuleERC2980Harness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L43-L49) -src/rules/validation/abstract/base/RuleERC2980Base.sol#L226 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20 -## unindexed-event-address -Impact: Informational -Confidence: High - [ ] ID-38 -Event [IERC3643Compliance.TokenBound(address)](lib/RuleEngine/src/interfaces/IERC3643Compliance.sol#L14) has address parameters but no indexed parameters +[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21) is never used in [RuleERC2980Harness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L43-L49) -lib/RuleEngine/src/interfaces/IERC3643Compliance.sol#L14 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21 - [ ] ID-39 -Event [IERC3643Compliance.TokenUnbound(address)](lib/RuleEngine/src/interfaces/IERC3643Compliance.sol#L20) has address parameters but no indexed parameters +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleWhitelistWrapperOwnable2StepHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L79-L87) -lib/RuleEngine/src/interfaces/IERC3643Compliance.sol#L20 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 -## unused-state -Impact: Informational -Confidence: High - [ ] ID-40 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27) is never used in [RuleERC2980Ownable2Step](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L14-L39) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21) is never used in [RuleWhitelistWrapperHarnessInternal](src/mocks/harness/RuleWhitelistWrapperHarnessInternal.sol#L6-L14) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21 - [ ] ID-41 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleWhitelistWrapper](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L16-L98) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21) is never used in [RuleBlacklistHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L15-L21) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21 - [ ] ID-42 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27) is never used in [RuleSanctionsList](src/rules/validation/deployment/RuleSanctionsList.sol#L16-L58) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleWhitelistWrapperHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L33-L41) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 - [ ] ID-43 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleSanctionsListOwnable2Step](src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol#L15-L34) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21) is never used in [RuleIdentityRegistryOwnable2Step](src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol#L12-L16) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21 - [ ] ID-44 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27) is never used in [RuleWhitelistWrapperOwnable2Step](src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol#L15-L51) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21) is never used in [RuleERC2980Ownable2StepHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L89-L95) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21 - [ ] ID-45 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleIdentityRegistryOwnable2Step](src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol#L12-L16) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21) is never used in [RuleBlacklistOwnable2StepHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L61-L67) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21 - [ ] ID-46 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21) is never used in [RuleBlacklistOwnable2Step](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L14-L35) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20) is never used in [RuleBlacklistOwnable2StepHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L61-L67) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20 - [ ] ID-47 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleWhitelistWrapper](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L16-L98) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20) is never used in [RuleWhitelistWrapperHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L33-L41) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20 - [ ] ID-48 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleSanctionsList](src/rules/validation/deployment/RuleSanctionsList.sol#L16-L58) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20) is never used in [RuleERC2980Ownable2StepHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L89-L95) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20 - [ ] ID-49 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27) is never used in [RuleWhitelist](src/rules/validation/deployment/RuleWhitelist.sol#L20-L73) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleERC2980Harness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L43-L49) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 - [ ] ID-50 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21) is never used in [RuleERC2980](src/rules/validation/deployment/RuleERC2980.sol#L32-L83) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleSpenderWhitelistHarness](src/mocks/harness/RuleSpenderWhitelistHarnesses.sol#L7-L21) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 - [ ] ID-51 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27) is never used in [RuleSanctionsListOwnable2Step](src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol#L15-L34) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21) is never used in [RuleWhitelistWrapperOwnable2StepHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L79-L87) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21 - [ ] ID-52 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleIdentityRegistryOwnable2Step](src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol#L12-L16) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleIdentityRegistryOwnable2Step](src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol#L12-L16) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 - [ ] ID-53 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27) is never used in [RuleWhitelistWrapper](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L16-L98) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20) is never used in [RuleSpenderWhitelistOwnable2StepHarness](src/mocks/harness/RuleSpenderWhitelistHarnesses.sol#L23-L39) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20 - [ ] ID-54 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27) is never used in [RuleERC2980](src/rules/validation/deployment/RuleERC2980.sol#L32-L83) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleWhitelistWrapperHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L33-L41) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 - [ ] ID-55 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27) is never used in [RuleIdentityRegistryOwnable2Step](src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol#L12-L16) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleIdentityRegistryOwnable2Step](src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol#L12-L16) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 - [ ] ID-56 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21) is never used in [RuleIdentityRegistryOwnable2Step](src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol#L12-L16) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20) is never used in [RuleWhitelistOwnable2StepHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L69-L77) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20 - [ ] ID-57 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleIdentityRegistry](src/rules/validation/deployment/RuleIdentityRegistry.sol#L14-L36) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20) is never used in [RuleIdentityRegistryOwnable2Step](src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol#L12-L16) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20 - [ ] ID-58 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27) is never used in [RuleBlacklistOwnable2Step](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L14-L35) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleIdentityRegistry](src/rules/validation/deployment/RuleIdentityRegistry.sol#L14-L36) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 - [ ] ID-59 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleWhitelistWrapperOwnable2Step](src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol#L15-L51) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21) is never used in [RuleWhitelistWrapperHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L33-L41) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21 - [ ] ID-60 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleWhitelist](src/rules/validation/deployment/RuleWhitelist.sol#L20-L73) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleERC2980Harness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L43-L49) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 - [ ] ID-61 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleSanctionsList](src/rules/validation/deployment/RuleSanctionsList.sol#L16-L58) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20) is never used in [RuleBlacklistHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L15-L21) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20 - [ ] ID-62 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleERC2980Ownable2Step](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L14-L39) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleWhitelistWrapperHarnessInternal](src/mocks/harness/RuleWhitelistWrapperHarnessInternal.sol#L6-L14) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 - [ ] ID-63 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21) is never used in [RuleERC2980Ownable2Step](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L14-L39) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleBlacklistHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L15-L21) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 - [ ] ID-64 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleBlacklistOwnable2Step](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L14-L35) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleWhitelistWrapperOwnable2StepHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L79-L87) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 - [ ] ID-65 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21) is never used in [RuleSanctionsList](src/rules/validation/deployment/RuleSanctionsList.sol#L16-L58) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleWhitelistHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L23-L31) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 - [ ] ID-66 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleSanctionsListOwnable2Step](src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol#L15-L34) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleSpenderWhitelistHarness](src/mocks/harness/RuleSpenderWhitelistHarnesses.sol#L7-L21) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 - [ ] ID-67 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleERC2980](src/rules/validation/deployment/RuleERC2980.sol#L32-L83) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20) is never used in [RuleWhitelistHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L23-L31) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20 - [ ] ID-68 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleWhitelist](src/rules/validation/deployment/RuleWhitelist.sol#L20-L73) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20) is never used in [RuleSpenderWhitelistHarness](src/mocks/harness/RuleSpenderWhitelistHarnesses.sol#L7-L21) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20 - [ ] ID-69 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleIdentityRegistry](src/rules/validation/deployment/RuleIdentityRegistry.sol#L14-L36) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21) is never used in [RuleIdentityRegistry](src/rules/validation/deployment/RuleIdentityRegistry.sol#L14-L36) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21 - [ ] ID-70 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21) is never used in [RuleWhitelist](src/rules/validation/deployment/RuleWhitelist.sol#L20-L73) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleBlacklistOwnable2StepHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L61-L67) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 - [ ] ID-71 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21) is never used in [RuleSanctionsListOwnable2Step](src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol#L15-L34) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20) is never used in [RuleWhitelistWrapperOwnable2StepHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L79-L87) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20 - [ ] ID-72 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleBlacklist](src/rules/validation/deployment/RuleBlacklist.sol#L15-L53) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleWhitelistWrapperHarnessInternal](src/mocks/harness/RuleWhitelistWrapperHarnessInternal.sol#L6-L14) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 - [ ] ID-73 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleWhitelistOwnable2Step](src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol#L14-L37) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleIdentityRegistry](src/rules/validation/deployment/RuleIdentityRegistry.sol#L14-L36) src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 - [ ] ID-74 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27) is never used in [RuleIdentityRegistry](src/rules/validation/deployment/RuleIdentityRegistry.sol#L14-L36) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21) is never used in [RuleSpenderWhitelistOwnable2StepHarness](src/mocks/harness/RuleSpenderWhitelistHarnesses.sol#L23-L39) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21 - [ ] ID-75 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleWhitelistOwnable2Step](src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol#L14-L37) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleSanctionsListHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L51-L59) src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 - [ ] ID-76 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27) is never used in [RuleWhitelistOwnable2Step](src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol#L14-L37) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21) is never used in [RuleWhitelistHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L23-L31) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21 - [ ] ID-77 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21) is never used in [RuleWhitelistOwnable2Step](src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol#L14-L37) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleWhitelistOwnable2StepHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L69-L77) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 - [ ] ID-78 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleBlacklistOwnable2Step](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L14-L35) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20) is never used in [RuleSanctionsListOwnable2StepHarness](src/mocks/harness/RuleSanctionsListOwnable2StepHarness.sol#L7-L23) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20 - [ ] ID-79 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27) is never used in [RuleBlacklist](src/rules/validation/deployment/RuleBlacklist.sol#L15-L53) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleSpenderWhitelistOwnable2StepHarness](src/mocks/harness/RuleSpenderWhitelistHarnesses.sol#L23-L39) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L26-L27 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 - [ ] ID-80 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleERC2980](src/rules/validation/deployment/RuleERC2980.sol#L32-L83) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleSanctionsListOwnable2StepHarness](src/mocks/harness/RuleSanctionsListOwnable2StepHarness.sol#L7-L23) src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 - [ ] ID-81 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21) is never used in [RuleBlacklist](src/rules/validation/deployment/RuleBlacklist.sol#L15-L53) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleSpenderWhitelistOwnable2StepHarness](src/mocks/harness/RuleSpenderWhitelistHarnesses.sol#L23-L39) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 - [ ] ID-82 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21) is never used in [RuleWhitelistWrapperOwnable2Step](src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol#L15-L51) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleSanctionsListHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L51-L59) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 - [ ] ID-83 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21) is never used in [RuleIdentityRegistry](src/rules/validation/deployment/RuleIdentityRegistry.sol#L14-L36) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21) is never used in [RuleSpenderWhitelistHarness](src/mocks/harness/RuleSpenderWhitelistHarnesses.sol#L7-L21) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21 - [ ] ID-84 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21) is never used in [RuleWhitelistWrapper](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L16-L98) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21) is never used in [RuleSanctionsListOwnable2StepHarness](src/mocks/harness/RuleSanctionsListOwnable2StepHarness.sol#L7-L23) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20-L21 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21 - [ ] ID-85 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleBlacklist](src/rules/validation/deployment/RuleBlacklist.sol#L15-L53) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20) is never used in [RuleIdentityRegistry](src/rules/validation/deployment/RuleIdentityRegistry.sol#L14-L36) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20 - [ ] ID-86 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleERC2980Ownable2Step](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L14-L39) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleBlacklistOwnable2StepHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L61-L67) -src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25 - [ ] ID-87 -[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleWhitelistWrapperOwnable2Step](src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol#L15-L51) +[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21) is never used in [RuleSanctionsListHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L51-L59) + +src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21 + + + - [ ] ID-88 +[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleWhitelistOwnable2StepHarness](src/mocks/harness/DeploymentCoverageHarnesses.sol#L69-L77) src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23 From 11d238570dd97a6131aaaf4d34753b35c48a6a0d Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Tue, 10 Mar 2026 16:16:53 +0100 Subject: [PATCH 7/8] Update code coverage --- .../RuleAddressSet.sol.func-sort-c.html | 28 +- .../RuleAddressSet.sol.func.html | 22 +- .../RuleAddressSet.sol.gcov.html | 65 +- ...uleAddressSetInternal.sol.func-sort-c.html | 18 +- .../RuleAddressSetInternal.sol.func.html | 18 +- .../RuleAddressSetInternal.sol.gcov.html | 135 +- .../abstract/RuleAddressSet/index-sort-b.html | 2 +- .../abstract/RuleAddressSet/index-sort-f.html | 2 +- .../abstract/RuleAddressSet/index-sort-l.html | 2 +- .../abstract/RuleAddressSet/index.html | 2 +- .../RuleERC2980Internal.sol.func-sort-c.html | 2 +- .../RuleERC2980Internal.sol.func.html | 2 +- .../RuleERC2980Internal.sol.gcov.html | 2 +- .../abstract/RuleERC2980/index-sort-b.html | 2 +- .../abstract/RuleERC2980/index-sort-f.html | 2 +- .../abstract/RuleERC2980/index-sort-l.html | 2 +- .../coverage/abstract/RuleERC2980/index.html | 2 +- .../RuleBlacklistBase.sol.func-sort-c.html | 18 +- .../base/RuleBlacklistBase.sol.func.html | 18 +- .../base/RuleBlacklistBase.sol.gcov.html | 209 +- .../base/RuleERC2980Base.sol.func-sort-c.html | 70 +- .../base/RuleERC2980Base.sol.func.html | 70 +- .../base/RuleERC2980Base.sol.gcov.html | 662 +++-- ...eIdentityRegistryBase.sol.func-sort-c.html | 16 +- .../RuleIdentityRegistryBase.sol.func.html | 16 +- .../RuleIdentityRegistryBase.sol.gcov.html | 199 +- ...uleMaxTotalSupplyBase.sol.func-sort-c.html | 18 +- .../base/RuleMaxTotalSupplyBase.sol.func.html | 18 +- .../base/RuleMaxTotalSupplyBase.sol.gcov.html | 165 +- ...RuleSanctionsListBase.sol.func-sort-c.html | 22 +- .../base/RuleSanctionsListBase.sol.func.html | 22 +- .../base/RuleSanctionsListBase.sol.gcov.html | 207 +- ...eSpenderWhitelistBase.sol.func-sort-c.html | 113 + .../RuleSpenderWhitelistBase.sol.func.html | 113 + .../RuleSpenderWhitelistBase.sol.gcov.html | 157 ++ .../RuleWhitelistBase.sol.func-sort-c.html | 22 +- .../base/RuleWhitelistBase.sol.func.html | 22 +- .../base/RuleWhitelistBase.sol.gcov.html | 154 +- ...eWhitelistWrapperBase.sol.func-sort-c.html | 24 +- .../RuleWhitelistWrapperBase.sol.func.html | 24 +- .../RuleWhitelistWrapperBase.sol.gcov.html | 332 ++- .../coverage/abstract/base/index-sort-b.html | 28 +- .../coverage/abstract/base/index-sort-f.html | 40 +- .../coverage/abstract/base/index-sort-l.html | 28 +- .../coverage/abstract/base/index.html | 28 +- .../core/RuleNFTAdapter.sol.func-sort-c.html | 34 +- .../core/RuleNFTAdapter.sol.func.html | 34 +- .../core/RuleNFTAdapter.sol.gcov.html | 256 +- ...uleTransferValidation.sol.func-sort-c.html | 22 +- .../core/RuleTransferValidation.sol.func.html | 22 +- .../core/RuleTransferValidation.sol.gcov.html | 186 +- .../RuleWhitelistShared.sol.func-sort-c.html | 18 +- .../core/RuleWhitelistShared.sol.func.html | 18 +- .../core/RuleWhitelistShared.sol.gcov.html | 164 +- .../coverage/abstract/core/index-sort-b.html | 8 +- .../coverage/abstract/core/index-sort-f.html | 8 +- .../coverage/abstract/core/index-sort-l.html | 8 +- .../coverage/abstract/core/index.html | 8 +- .../RuleBlacklist.sol.func-sort-c.html | 16 +- .../deployment/RuleBlacklist.sol.func.html | 16 +- .../deployment/RuleBlacklist.sol.gcov.html | 45 +- ...BlacklistOwnable2Step.sol.func-sort-c.html | 12 +- .../RuleBlacklistOwnable2Step.sol.func.html | 12 +- .../RuleBlacklistOwnable2Step.sol.gcov.html | 41 +- .../RuleERC2980.sol.func-sort-c.html | 2 +- .../deployment/RuleERC2980.sol.func.html | 2 +- .../deployment/RuleERC2980.sol.gcov.html | 2 +- ...leERC2980Ownable2Step.sol.func-sort-c.html | 16 +- .../RuleERC2980Ownable2Step.sol.func.html | 16 +- .../RuleERC2980Ownable2Step.sol.gcov.html | 49 +- .../RuleIdentityRegistry.sol.func-sort-c.html | 2 +- .../RuleIdentityRegistry.sol.func.html | 2 +- .../RuleIdentityRegistry.sol.gcov.html | 2 +- ...yRegistryOwnable2Step.sol.func-sort-c.html | 2 +- ...IdentityRegistryOwnable2Step.sol.func.html | 2 +- ...IdentityRegistryOwnable2Step.sol.gcov.html | 2 +- .../RuleMaxTotalSupply.sol.func-sort-c.html | 2 +- .../RuleMaxTotalSupply.sol.func.html | 2 +- .../RuleMaxTotalSupply.sol.gcov.html | 2 +- ...talSupplyOwnable2Step.sol.func-sort-c.html | 2 +- ...leMaxTotalSupplyOwnable2Step.sol.func.html | 2 +- ...leMaxTotalSupplyOwnable2Step.sol.gcov.html | 2 +- .../RuleSanctionsList.sol.func-sort-c.html | 2 +- .../RuleSanctionsList.sol.func.html | 2 +- .../RuleSanctionsList.sol.gcov.html | 4 +- ...tionsListOwnable2Step.sol.func-sort-c.html | 2 +- ...uleSanctionsListOwnable2Step.sol.func.html | 2 +- ...uleSanctionsListOwnable2Step.sol.gcov.html | 4 +- .../RuleSpenderWhitelist.sol.func-sort-c.html | 105 + .../RuleSpenderWhitelist.sol.func.html | 105 + .../RuleSpenderWhitelist.sol.gcov.html | 132 + ...WhitelistOwnable2Step.sol.func-sort-c.html | 101 + ...SpenderWhitelistOwnable2Step.sol.func.html | 101 + ...SpenderWhitelistOwnable2Step.sol.gcov.html | 120 + .../RuleWhitelist.sol.func-sort-c.html | 26 +- .../deployment/RuleWhitelist.sol.func.html | 26 +- .../deployment/RuleWhitelist.sol.gcov.html | 130 +- ...WhitelistOwnable2Step.sol.func-sort-c.html | 2 +- .../RuleWhitelistOwnable2Step.sol.func.html | 2 +- .../RuleWhitelistOwnable2Step.sol.gcov.html | 2 +- .../RuleWhitelistWrapper.sol.func-sort-c.html | 20 +- .../RuleWhitelistWrapper.sol.func.html | 20 +- .../RuleWhitelistWrapper.sol.gcov.html | 171 +- ...stWrapperOwnable2Step.sol.func-sort-c.html | 2 +- ...WhitelistWrapperOwnable2Step.sol.func.html | 2 +- ...WhitelistWrapperOwnable2Step.sol.gcov.html | 17 +- .../coverage/deployment/index-sort-b.html | 108 +- .../coverage/deployment/index-sort-f.html | 50 +- .../coverage/deployment/index-sort-l.html | 56 +- doc/coverage/coverage/deployment/index.html | 38 +- ...ntrolModuleStandalone.sol.func-sort-c.html | 6 +- ...ccessControlModuleStandalone.sol.func.html | 6 +- ...ccessControlModuleStandalone.sol.gcov.html | 16 +- .../VersionModule.sol.func-sort-c.html | 2 +- .../src/modules/VersionModule.sol.func.html | 2 +- .../src/modules/VersionModule.sol.gcov.html | 2 +- .../dev/Rules/src/modules/index-sort-b.html | 2 +- .../dev/Rules/src/modules/index-sort-f.html | 2 +- .../dev/Rules/src/modules/index-sort-l.html | 2 +- .../Pictures/dev/Rules/src/modules/index.html | 2 +- ...ditionalTransferLight.sol.func-sort-c.html | 8 +- ...RuleConditionalTransferLight.sol.func.html | 8 +- ...RuleConditionalTransferLight.sol.gcov.html | 19 +- ...sferLightOwnable2Step.sol.func-sort-c.html | 8 +- ...nalTransferLightOwnable2Step.sol.func.html | 8 +- ...nalTransferLightOwnable2Step.sol.gcov.html | 29 +- ...onalTransferLightBase.sol.func-sort-c.html | 52 +- ...ConditionalTransferLightBase.sol.func.html | 52 +- ...ConditionalTransferLightBase.sol.gcov.html | 376 +-- .../operation/abstract/index-sort-b.html | 8 +- .../operation/abstract/index-sort-f.html | 8 +- .../operation/abstract/index-sort-l.html | 8 +- .../src/rules/operation/abstract/index.html | 8 +- .../src/rules/operation/index-sort-b.html | 2 +- .../src/rules/operation/index-sort-f.html | 2 +- .../src/rules/operation/index-sort-l.html | 2 +- .../dev/Rules/src/rules/operation/index.html | 2 +- doc/coverage/coverage/index-sort-b.html | 28 +- doc/coverage/coverage/index-sort-f.html | 28 +- doc/coverage/coverage/index-sort-l.html | 28 +- doc/coverage/coverage/index.html | 28 +- doc/coverage/lcov.info | 2229 +++++++---------- 142 files changed, 4594 insertions(+), 3903 deletions(-) create mode 100644 doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.func-sort-c.html create mode 100644 doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.func.html create mode 100644 doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.gcov.html create mode 100644 doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.func-sort-c.html create mode 100644 doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.func.html create mode 100644 doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.gcov.html create mode 100644 doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.func-sort-c.html create mode 100644 doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.func.html create mode 100644 doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.gcov.html diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.func-sort-c.html b/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.func-sort-c.html index 65bc64a..42a7372 100644 --- a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.func-sort-c.html +++ b/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 13 @@ -73,29 +73,29 @@ 2 - RuleAddressSet._msgData - 4 + RuleAddressSet._msgData + 6 RuleAddressSet.onlyAddressListRemove - 8 + 12 RuleAddressSet.removeAddress - 8 + 12 RuleAddressSet.isAddressListed - 67 - - - RuleAddressSet.addAddress - 105 + 71 RuleAddressSet.areAddressesListed 108 + + RuleAddressSet.addAddress + 117 + RuleAddressSet.removeAddresses 260 @@ -113,12 +113,12 @@ 536 - RuleAddressSet._msgSender - 882 + RuleAddressSet._msgSender + 929 - RuleAddressSet._contextSuffixLength - 886 + RuleAddressSet._contextSuffixLength + 937
diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.func.html b/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.func.html index 5984b78..1d8147e 100644 --- a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.func.html +++ b/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 13 @@ -69,20 +69,20 @@ Hit count Sort by hit count - RuleAddressSet._contextSuffixLength - 886 + RuleAddressSet._contextSuffixLength + 937 - RuleAddressSet._msgData - 4 + RuleAddressSet._msgData + 6 - RuleAddressSet._msgSender - 882 + RuleAddressSet._msgSender + 929 RuleAddressSet.addAddress - 105 + 117 RuleAddressSet.addAddresses @@ -98,7 +98,7 @@ RuleAddressSet.isAddressListed - 67 + 71 RuleAddressSet.listedAddressCount @@ -110,11 +110,11 @@ RuleAddressSet.onlyAddressListRemove - 8 + 12 RuleAddressSet.removeAddress - 8 + 12 RuleAddressSet.removeAddresses diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.gcov.html b/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.gcov.html index cef3ac8..dbff4e5 100644 --- a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.gcov.html +++ b/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 13 @@ -143,10 +143,10 @@ 72 : : * - Accessible only by accounts with the `ADDRESS_LIST_ADD_ROLE`. 73 : : * @param targetAddress The address to be added. 74 : : */ - 75 : 105 : function addAddress(address targetAddress) public onlyAddressListAdd { - 76 [ + + ]: 102 : require(!_isAddressListed(targetAddress), RuleAddressSet_AddressAlreadyListed()); - 77 : 101 : _addAddress(targetAddress); - 78 : 101 : emit AddAddress(targetAddress); + 75 : 117 : function addAddress(address targetAddress) public onlyAddressListAdd { + 76 [ + + ]: 112 : require(!_isAddressListed(targetAddress), RuleAddressSet_AddressAlreadyListed()); + 77 : 111 : _addAddress(targetAddress); + 78 : 111 : emit AddAddress(targetAddress); 79 : : } 80 : : 81 : : /** @@ -156,10 +156,10 @@ 85 : : * - Accessible only by accounts with the `ADDRESS_LIST_REMOVE_ROLE`. 86 : : * @param targetAddress The address to be removed. 87 : : */ - 88 : 8 : function removeAddress(address targetAddress) public onlyAddressListRemove { - 89 [ + + ]: 5 : require(_isAddressListed(targetAddress), RuleAddressSet_AddressNotFound()); - 90 : 4 : _removeAddress(targetAddress); - 91 : 4 : emit RemoveAddress(targetAddress); + 88 : 12 : function removeAddress(address targetAddress) public onlyAddressListRemove { + 89 [ + + ]: 7 : require(_isAddressListed(targetAddress), RuleAddressSet_AddressNotFound()); + 90 : 6 : _removeAddress(targetAddress); + 91 : 6 : emit RemoveAddress(targetAddress); 92 : : } 93 : : 94 : : /*////////////////////////////////////////////////////////////// @@ -171,8 +171,8 @@ 100 : : _; 101 : : } 102 : : - 103 : 8 : modifier onlyAddressListRemove() { - 104 : 8 : _authorizeAddressListRemove(); + 103 : 12 : modifier onlyAddressListRemove() { + 104 : 12 : _authorizeAddressListRemove(); 105 : : _; 106 : : } 107 : : @@ -202,8 +202,8 @@ 131 : : * @param targetAddress The address to check. 132 : : * @return isListed True if listed, false otherwise. 133 : : */ - 134 : 67 : function isAddressListed(address targetAddress) public view returns (bool isListed) { - 135 : 383 : isListed = _isAddressListed(targetAddress); + 134 : 71 : function isAddressListed(address targetAddress) public view returns (bool isListed) { + 135 : 391 : isListed = _isAddressListed(targetAddress); 136 : : } 137 : : 138 : : /** @@ -217,25 +217,26 @@ 146 : 244 : results[i] = _isAddressListed(targetAddresses[i]); 147 : : } 148 : : } - 149 : : /*////////////////////////////////////////////////////////////// - 150 : : ERC-2771 META TX - 151 : : //////////////////////////////////////////////////////////////*/ - 152 : : - 153 : : /// @inheritdoc ERC2771Context - 154 : 882 : function _msgSender() internal view virtual override(ERC2771Context) returns (address sender) { - 155 : 882 : return ERC2771Context._msgSender(); - 156 : : } - 157 : : - 158 : : /// @inheritdoc ERC2771Context - 159 : 4 : function _msgData() internal view virtual override(ERC2771Context) returns (bytes calldata) { - 160 : 4 : return ERC2771Context._msgData(); - 161 : : } - 162 : : - 163 : : /// @inheritdoc ERC2771Context - 164 : 886 : function _contextSuffixLength() internal view virtual override(ERC2771Context) returns (uint256) { - 165 : 886 : return ERC2771Context._contextSuffixLength(); - 166 : : } - 167 : : } + 149 : : + 150 : : /*////////////////////////////////////////////////////////////// + 151 : : ERC-2771 META TX + 152 : : //////////////////////////////////////////////////////////////*/ + 153 : : + 154 : : /// @inheritdoc ERC2771Context + 155 : 929 : function _msgSender() internal view virtual override(ERC2771Context) returns (address sender) { + 156 : 929 : return ERC2771Context._msgSender(); + 157 : : } + 158 : : + 159 : : /// @inheritdoc ERC2771Context + 160 : 6 : function _msgData() internal view virtual override(ERC2771Context) returns (bytes calldata) { + 161 : 6 : return ERC2771Context._msgData(); + 162 : : } + 163 : : + 164 : : /// @inheritdoc ERC2771Context + 165 : 937 : function _contextSuffixLength() internal view virtual override(ERC2771Context) returns (uint256) { + 166 : 937 : return ERC2771Context._contextSuffixLength(); + 167 : : } + 168 : : } diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func-sort-c.html b/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func-sort-c.html index a58da58..01dc2e5 100644 --- a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func-sort-c.html +++ b/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 6 @@ -69,15 +69,15 @@ Hit count Sort by hit count - RuleAddressSetInternal._removeAddress - 4 + RuleAddressSetInternal._removeAddress + 6 - RuleAddressSetInternal._addAddress - 101 + RuleAddressSetInternal._addAddress + 111 - RuleAddressSetInternal._removeAddresses + RuleAddressSetInternal._removeAddresses 259 @@ -85,12 +85,12 @@ 274 - RuleAddressSetInternal._listedAddressCount + RuleAddressSetInternal._listedAddressCount 536 - RuleAddressSetInternal._isAddressListed - 738 + RuleAddressSetInternal._isAddressListed + 771
diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func.html b/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func.html index c1510d8..b7986b8 100644 --- a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func.html +++ b/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 6 @@ -69,27 +69,27 @@ Hit count Sort by hit count - RuleAddressSetInternal._addAddress - 101 + RuleAddressSetInternal._addAddress + 111 RuleAddressSetInternal._addAddresses 274 - RuleAddressSetInternal._isAddressListed - 738 + RuleAddressSetInternal._isAddressListed + 771 - RuleAddressSetInternal._listedAddressCount + RuleAddressSetInternal._listedAddressCount 536 - RuleAddressSetInternal._removeAddress - 4 + RuleAddressSetInternal._removeAddress + 6 - RuleAddressSetInternal._removeAddresses + RuleAddressSetInternal._removeAddresses 259 diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.gcov.html b/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.gcov.html index 9518c01..463505a 100644 --- a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.gcov.html +++ b/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 6 @@ -106,74 +106,71 @@ 35 : : * @return added The number of newly added addresses. 36 : : * @return skipped The number of addresses that were already listed. 37 : : */ - 38 : 274 : function _addAddresses(address[] calldata addressesToAdd) - 39 : : internal - 40 : : returns (uint256 added, uint256 skipped) - 41 : : { - 42 : 274 : for (uint256 i = 0; i < addressesToAdd.length; ++i) { - 43 [ + + ]: 806 : if (_listedAddresses.add(addressesToAdd[i])) { - 44 : 548 : added += 1; - 45 : : } else { - 46 : 258 : skipped += 1; - 47 : : } - 48 : : } - 49 : : } - 50 : : - 51 : : /** - 52 : : * @notice Removes multiple addresses from the set. - 53 : : * @dev - 54 : : * - Does not revert if an address is not found. - 55 : : * - Skips non-existing entries silently. - 56 : : * @param addressesToRemove The array of addresses to remove. - 57 : : * @return removed The number of addresses removed. - 58 : : * @return skipped The number of addresses that were not listed. - 59 : : */ - 60 : 259 : function _removeAddresses(address[] calldata addressesToRemove) - 61 : : internal - 62 : : returns (uint256 removed, uint256 skipped) - 63 : : { - 64 : 259 : for (uint256 i = 0; i < addressesToRemove.length; ++i) { - 65 [ + + ]: 775 : if (_listedAddresses.remove(addressesToRemove[i])) { - 66 : 518 : removed += 1; - 67 : : } else { - 68 : 257 : skipped += 1; - 69 : : } - 70 : : } - 71 : : } - 72 : : - 73 : : /** - 74 : : * @notice Adds a single address to the set. - 75 : : * @param targetAddress The address to add. - 76 : : */ - 77 : 101 : function _addAddress(address targetAddress) internal virtual { - 78 : 101 : _listedAddresses.add(targetAddress); - 79 : : } - 80 : : - 81 : : /** - 82 : : * @notice Removes a single address from the set. - 83 : : * @param targetAddress The address to remove. - 84 : : */ - 85 : 4 : function _removeAddress(address targetAddress) internal virtual { - 86 : 4 : _listedAddresses.remove(targetAddress); - 87 : : } - 88 : : - 89 : : /** - 90 : : * @notice Returns the total number of listed addresses. - 91 : : * @return count The number of listed addresses. - 92 : : */ - 93 : 536 : function _listedAddressCount() internal view virtual returns (uint256 count) { - 94 : 536 : count = _listedAddresses.length(); - 95 : : } - 96 : : - 97 : : /** - 98 : : * @notice Checks if an address is listed. - 99 : : * @param targetAddress The address to check. - 100 : : * @return isListed True if the address is listed, false otherwise. - 101 : : */ - 102 : 738 : function _isAddressListed(address targetAddress) internal view virtual returns (bool isListed) { - 103 : 738 : isListed = _listedAddresses.contains(targetAddress); - 104 : : } - 105 : : } + 38 : 274 : function _addAddresses(address[] calldata addressesToAdd) internal returns (uint256 added, uint256 skipped) { + 39 : 274 : for (uint256 i = 0; i < addressesToAdd.length; ++i) { + 40 [ + + ]: 806 : if (_listedAddresses.add(addressesToAdd[i])) { + 41 : 548 : added += 1; + 42 : : } else { + 43 : 258 : skipped += 1; + 44 : : } + 45 : : } + 46 : : } + 47 : : + 48 : : /** + 49 : : * @notice Removes multiple addresses from the set. + 50 : : * @dev + 51 : : * - Does not revert if an address is not found. + 52 : : * - Skips non-existing entries silently. + 53 : : * @param addressesToRemove The array of addresses to remove. + 54 : : * @return removed The number of addresses removed. + 55 : : * @return skipped The number of addresses that were not listed. + 56 : : */ + 57 : 259 : function _removeAddresses(address[] calldata addressesToRemove) + 58 : : internal + 59 : : returns (uint256 removed, uint256 skipped) + 60 : : { + 61 : 259 : for (uint256 i = 0; i < addressesToRemove.length; ++i) { + 62 [ + + ]: 775 : if (_listedAddresses.remove(addressesToRemove[i])) { + 63 : 518 : removed += 1; + 64 : : } else { + 65 : 257 : skipped += 1; + 66 : : } + 67 : : } + 68 : : } + 69 : : + 70 : : /** + 71 : : * @notice Adds a single address to the set. + 72 : : * @param targetAddress The address to add. + 73 : : */ + 74 : 111 : function _addAddress(address targetAddress) internal virtual { + 75 : 111 : _listedAddresses.add(targetAddress); + 76 : : } + 77 : : + 78 : : /** + 79 : : * @notice Removes a single address from the set. + 80 : : * @param targetAddress The address to remove. + 81 : : */ + 82 : 6 : function _removeAddress(address targetAddress) internal virtual { + 83 : 6 : _listedAddresses.remove(targetAddress); + 84 : : } + 85 : : + 86 : : /** + 87 : : * @notice Returns the total number of listed addresses. + 88 : : * @return count The number of listed addresses. + 89 : : */ + 90 : 536 : function _listedAddressCount() internal view virtual returns (uint256 count) { + 91 : 536 : count = _listedAddresses.length(); + 92 : : } + 93 : : + 94 : : /** + 95 : : * @notice Checks if an address is listed. + 96 : : * @param targetAddress The address to check. + 97 : : * @return isListed True if the address is listed, false otherwise. + 98 : : */ + 99 : 771 : function _isAddressListed(address targetAddress) internal view virtual returns (bool isListed) { + 100 : 771 : isListed = _listedAddresses.contains(targetAddress); + 101 : : } + 102 : : } diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/index-sort-b.html b/doc/coverage/coverage/abstract/RuleAddressSet/index-sort-b.html index f299290..bb7e3fe 100644 --- a/doc/coverage/coverage/abstract/RuleAddressSet/index-sort-b.html +++ b/doc/coverage/coverage/abstract/RuleAddressSet/index-sort-b.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 19 diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/index-sort-f.html b/doc/coverage/coverage/abstract/RuleAddressSet/index-sort-f.html index 3713f5e..a7bd900 100644 --- a/doc/coverage/coverage/abstract/RuleAddressSet/index-sort-f.html +++ b/doc/coverage/coverage/abstract/RuleAddressSet/index-sort-f.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 19 diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/index-sort-l.html b/doc/coverage/coverage/abstract/RuleAddressSet/index-sort-l.html index 2a0de5c..5a6b041 100644 --- a/doc/coverage/coverage/abstract/RuleAddressSet/index-sort-l.html +++ b/doc/coverage/coverage/abstract/RuleAddressSet/index-sort-l.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 19 diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/index.html b/doc/coverage/coverage/abstract/RuleAddressSet/index.html index 9eb35f0..c9aa742 100644 --- a/doc/coverage/coverage/abstract/RuleAddressSet/index.html +++ b/doc/coverage/coverage/abstract/RuleAddressSet/index.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 19 diff --git a/doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.func-sort-c.html b/doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.func-sort-c.html index d226506..51af6ae 100644 --- a/doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.func-sort-c.html +++ b/doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 12 diff --git a/doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.func.html b/doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.func.html index 446e1ca..eb4b210 100644 --- a/doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.func.html +++ b/doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 12 diff --git a/doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.gcov.html b/doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.gcov.html index 324d892..753927f 100644 --- a/doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.gcov.html +++ b/doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 12 diff --git a/doc/coverage/coverage/abstract/RuleERC2980/index-sort-b.html b/doc/coverage/coverage/abstract/RuleERC2980/index-sort-b.html index 446dbb6..3a5069c 100644 --- a/doc/coverage/coverage/abstract/RuleERC2980/index-sort-b.html +++ b/doc/coverage/coverage/abstract/RuleERC2980/index-sort-b.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 12 diff --git a/doc/coverage/coverage/abstract/RuleERC2980/index-sort-f.html b/doc/coverage/coverage/abstract/RuleERC2980/index-sort-f.html index 774722e..cc487f0 100644 --- a/doc/coverage/coverage/abstract/RuleERC2980/index-sort-f.html +++ b/doc/coverage/coverage/abstract/RuleERC2980/index-sort-f.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 12 diff --git a/doc/coverage/coverage/abstract/RuleERC2980/index-sort-l.html b/doc/coverage/coverage/abstract/RuleERC2980/index-sort-l.html index c94493f..fa2906b 100644 --- a/doc/coverage/coverage/abstract/RuleERC2980/index-sort-l.html +++ b/doc/coverage/coverage/abstract/RuleERC2980/index-sort-l.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 12 diff --git a/doc/coverage/coverage/abstract/RuleERC2980/index.html b/doc/coverage/coverage/abstract/RuleERC2980/index.html index 07b52e2..b9213df 100644 --- a/doc/coverage/coverage/abstract/RuleERC2980/index.html +++ b/doc/coverage/coverage/abstract/RuleERC2980/index.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 12 diff --git a/doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.func-sort-c.html b/doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.func-sort-c.html index 72252b1..dbf2453 100644 --- a/doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.func-sort-c.html +++ b/doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 9 @@ -69,35 +69,35 @@ Hit count Sort by hit count - RuleBlacklistBase.transferred.1 + RuleBlacklistBase.transferred.1 2 - RuleBlacklistBase._transferredFrom + RuleBlacklistBase._transferredFrom 4 - RuleBlacklistBase.canReturnTransferRestrictionCode + RuleBlacklistBase.canReturnTransferRestrictionCode 4 - RuleBlacklistBase.messageForTransferRestriction + RuleBlacklistBase.messageForTransferRestriction 12 - RuleBlacklistBase._detectTransferRestrictionFrom + RuleBlacklistBase._detectTransferRestrictionFrom 22 - RuleBlacklistBase.transferred.0 + RuleBlacklistBase.transferred.0 58 - RuleBlacklistBase._transferred + RuleBlacklistBase._transferred 61 - RuleBlacklistBase.supportsInterface + RuleBlacklistBase.supportsInterface 61 diff --git a/doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.func.html b/doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.func.html index 44a9b55..bae16a3 100644 --- a/doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.func.html +++ b/doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 9 @@ -73,35 +73,35 @@ 106 - RuleBlacklistBase._detectTransferRestrictionFrom + RuleBlacklistBase._detectTransferRestrictionFrom 22 - RuleBlacklistBase._transferred + RuleBlacklistBase._transferred 61 - RuleBlacklistBase._transferredFrom + RuleBlacklistBase._transferredFrom 4 - RuleBlacklistBase.canReturnTransferRestrictionCode + RuleBlacklistBase.canReturnTransferRestrictionCode 4 - RuleBlacklistBase.messageForTransferRestriction + RuleBlacklistBase.messageForTransferRestriction 12 - RuleBlacklistBase.supportsInterface + RuleBlacklistBase.supportsInterface 61 - RuleBlacklistBase.transferred.0 + RuleBlacklistBase.transferred.0 58 - RuleBlacklistBase.transferred.1 + RuleBlacklistBase.transferred.1 2 diff --git a/doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.gcov.html b/doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.gcov.html index a3fe955..1bc30a8 100644 --- a/doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.gcov.html +++ b/doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 9 @@ -88,112 +88,111 @@ 17 : : abstract contract RuleBlacklistBase is RuleAddressSet, RuleNFTAdapter, RuleBlacklistInvariantStorage { 18 : : constructor(address forwarderIrrevocable) RuleAddressSet(forwarderIrrevocable) {} 19 : : - 20 : 106 : function _detectTransferRestriction(address from, address to, uint256 /* value */ ) - 21 : : internal - 22 : : view - 23 : : override - 24 : : returns (uint8) - 25 : : { - 26 [ + + ]: 106 : if (isAddressListed(from)) { - 27 : 23 : return CODE_ADDRESS_FROM_IS_BLACKLISTED; - 28 [ + ]: 83 : } else if (isAddressListed(to)) { - 29 : 19 : return CODE_ADDRESS_TO_IS_BLACKLISTED; - 30 : : } - 31 : 64 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - 32 : : } - 33 : : - 34 : 22 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value) - 35 : : internal - 36 : : view - 37 : : override - 38 : : returns (uint8) - 39 : : { - 40 [ + ]: 22 : if (isAddressListed(spender)) { - 41 : 8 : return CODE_ADDRESS_SPENDER_IS_BLACKLISTED; - 42 : : } - 43 : 14 : return _detectTransferRestriction(from, to, value); - 44 : : } - 45 : : - 46 : 4 : function canReturnTransferRestrictionCode(uint8 restrictionCode) - 47 : : public - 48 : : pure - 49 : : virtual - 50 : : override(IRule) - 51 : : returns (bool) - 52 : : { - 53 : 4 : return restrictionCode == CODE_ADDRESS_FROM_IS_BLACKLISTED || restrictionCode == CODE_ADDRESS_TO_IS_BLACKLISTED - 54 : 1 : || restrictionCode == CODE_ADDRESS_SPENDER_IS_BLACKLISTED; - 55 : : } - 56 : : - 57 : 12 : function messageForTransferRestriction(uint8 restrictionCode) - 58 : : public - 59 : : pure - 60 : : virtual - 61 : : override(IERC1404) - 62 : : returns (string memory) - 63 : : { - 64 [ + + ]: 12 : if (restrictionCode == CODE_ADDRESS_FROM_IS_BLACKLISTED) { - 65 : 5 : return TEXT_ADDRESS_FROM_IS_BLACKLISTED; - 66 [ + + ]: 7 : } else if (restrictionCode == CODE_ADDRESS_TO_IS_BLACKLISTED) { - 67 : 3 : return TEXT_ADDRESS_TO_IS_BLACKLISTED; - 68 [ + + ]: 4 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_IS_BLACKLISTED) { - 69 : 1 : return TEXT_ADDRESS_SPENDER_IS_BLACKLISTED; - 70 : : } else { - 71 : 3 : return TEXT_CODE_NOT_FOUND; - 72 : : } - 73 : : } - 74 : : - 75 : 61 : function supportsInterface(bytes4 interfaceId) public view virtual override(RuleTransferValidation) returns (bool) { - 76 : 61 : return RuleTransferValidation.supportsInterface(interfaceId); + 20 : 106 : function _detectTransferRestriction( + 21 : : address from, + 22 : : address to, + 23 : : uint256 /* value */ + 24 : : ) + 25 : : internal + 26 : : view + 27 : : override + 28 : : returns (uint8) + 29 : : { + 30 [ + + ]: 106 : if (isAddressListed(from)) { + 31 : 23 : return CODE_ADDRESS_FROM_IS_BLACKLISTED; + 32 [ + ]: 83 : } else if (isAddressListed(to)) { + 33 : 19 : return CODE_ADDRESS_TO_IS_BLACKLISTED; + 34 : : } + 35 : 64 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 36 : : } + 37 : : + 38 : 22 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value) + 39 : : internal + 40 : : view + 41 : : override + 42 : : returns (uint8) + 43 : : { + 44 [ + ]: 22 : if (isAddressListed(spender)) { + 45 : 8 : return CODE_ADDRESS_SPENDER_IS_BLACKLISTED; + 46 : : } + 47 : 14 : return _detectTransferRestriction(from, to, value); + 48 : : } + 49 : : + 50 : 4 : function canReturnTransferRestrictionCode(uint8 restrictionCode) + 51 : : public + 52 : : pure + 53 : : virtual + 54 : : override(IRule) + 55 : : returns (bool) + 56 : : { + 57 : 4 : return restrictionCode == CODE_ADDRESS_FROM_IS_BLACKLISTED || restrictionCode == CODE_ADDRESS_TO_IS_BLACKLISTED + 58 : 1 : || restrictionCode == CODE_ADDRESS_SPENDER_IS_BLACKLISTED; + 59 : : } + 60 : : + 61 : 12 : function messageForTransferRestriction(uint8 restrictionCode) + 62 : : public + 63 : : pure + 64 : : virtual + 65 : : override(IERC1404) + 66 : : returns (string memory) + 67 : : { + 68 [ + + ]: 12 : if (restrictionCode == CODE_ADDRESS_FROM_IS_BLACKLISTED) { + 69 : 5 : return TEXT_ADDRESS_FROM_IS_BLACKLISTED; + 70 [ + + ]: 7 : } else if (restrictionCode == CODE_ADDRESS_TO_IS_BLACKLISTED) { + 71 : 3 : return TEXT_ADDRESS_TO_IS_BLACKLISTED; + 72 [ + + ]: 4 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_IS_BLACKLISTED) { + 73 : 1 : return TEXT_ADDRESS_SPENDER_IS_BLACKLISTED; + 74 : : } else { + 75 : 3 : return TEXT_CODE_NOT_FOUND; + 76 : : } 77 : : } 78 : : - 79 : : /** - 80 : : * @inheritdoc IERC3643IComplianceContract - 81 : : * @dev Validation only; does not modify state. - 82 : : */ - 83 : 58 : function transferred(address from, address to, uint256 value) - 84 : : public - 85 : : view - 86 : : virtual - 87 : : override(IERC3643IComplianceContract) - 88 : : { - 89 : 58 : _transferred(from, to, value); - 90 : : } - 91 : : - 92 : : /** - 93 : : * @inheritdoc IRuleEngine - 94 : : * @dev Validation only; does not modify state. - 95 : : */ - 96 : 2 : function transferred(address spender, address from, address to, uint256 value) - 97 : : public - 98 : : view - 99 : : virtual - 100 : : override(IRuleEngine) - 101 : : { - 102 : 2 : _transferredFrom(spender, from, to, value); - 103 : : } - 104 : : - 105 : 61 : function _transferred(address from, address to, uint256 value) internal view virtual override { - 106 : 61 : uint8 code = _detectTransferRestriction(from, to, value); - 107 [ + + ]: 61 : require( - 108 : : code == uint8(REJECTED_CODE_BASE.TRANSFER_OK), - 109 : : RuleBlacklist_InvalidTransfer(address(this), from, to, value, code) - 110 : : ); - 111 : : } - 112 : : - 113 : 4 : function _transferredFrom(address spender, address from, address to, uint256 value) - 114 : : internal - 115 : : view - 116 : : virtual - 117 : : override - 118 : : { - 119 : 4 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); - 120 [ + + ]: 4 : require( - 121 : : code == uint8(REJECTED_CODE_BASE.TRANSFER_OK), - 122 : : RuleBlacklist_InvalidTransferFrom(address(this), spender, from, to, value, code) - 123 : : ); - 124 : : } - 125 : : } + 79 : 61 : function supportsInterface(bytes4 interfaceId) public view virtual override(RuleTransferValidation) returns (bool) { + 80 : 61 : return RuleTransferValidation.supportsInterface(interfaceId); + 81 : : } + 82 : : + 83 : : /** + 84 : : * @inheritdoc IERC3643IComplianceContract + 85 : : * @dev Validation only; does not modify state. + 86 : : */ + 87 : 58 : function transferred(address from, address to, uint256 value) + 88 : : public + 89 : : view + 90 : : virtual + 91 : : override(IERC3643IComplianceContract) + 92 : : { + 93 : 58 : _transferred(from, to, value); + 94 : : } + 95 : : + 96 : : /** + 97 : : * @inheritdoc IRuleEngine + 98 : : * @dev Validation only; does not modify state. + 99 : : */ + 100 : 2 : function transferred(address spender, address from, address to, uint256 value) + 101 : : public + 102 : : view + 103 : : virtual + 104 : : override(IRuleEngine) + 105 : : { + 106 : 2 : _transferredFrom(spender, from, to, value); + 107 : : } + 108 : : + 109 : 61 : function _transferred(address from, address to, uint256 value) internal view virtual override { + 110 : 61 : uint8 code = _detectTransferRestriction(from, to, value); + 111 [ + + ]: 61 : require( + 112 : : code == uint8(REJECTED_CODE_BASE.TRANSFER_OK), + 113 : : RuleBlacklist_InvalidTransfer(address(this), from, to, value, code) + 114 : : ); + 115 : : } + 116 : : + 117 : 4 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override { + 118 : 4 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); + 119 [ + + ]: 4 : require( + 120 : : code == uint8(REJECTED_CODE_BASE.TRANSFER_OK), + 121 : : RuleBlacklist_InvalidTransferFrom(address(this), spender, from, to, value, code) + 122 : : ); + 123 : : } + 124 : : } diff --git a/doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.func-sort-c.html b/doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.func-sort-c.html index b58d1b5..8da2363 100644 --- a/doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.func-sort-c.html +++ b/doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.func-sort-c.html @@ -31,13 +31,13 @@ lcov.info Lines: - 102 - 102 + 101 + 101 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 33 @@ -69,115 +69,115 @@ Hit count Sort by hit count - RuleERC2980Base.areFrozen + RuleERC2980Base.areFrozen 1 - RuleERC2980Base.areWhitelisted + RuleERC2980Base.areWhitelisted 1 - RuleERC2980Base.supportsInterface + RuleERC2980Base.supportsInterface 1 - RuleERC2980Base._msgData + RuleERC2980Base._msgData 2 - RuleERC2980Base.onlyFrozenlistRemove + RuleERC2980Base.onlyFrozenlistRemove 2 - RuleERC2980Base.removeFrozenlistAddresses + RuleERC2980Base.removeFrozenlistAddresses 2 - RuleERC2980Base.transferred.1 + RuleERC2980Base.transferred.1 2 - RuleERC2980Base._transferredFrom + RuleERC2980Base._transferredFrom 3 - RuleERC2980Base.isVerified + RuleERC2980Base.isVerified 3 - RuleERC2980Base.frozenlist + RuleERC2980Base.frozenlist 4 - RuleERC2980Base.frozenlistAddressCount + RuleERC2980Base.frozenlistAddressCount 4 - RuleERC2980Base.removeWhitelistAddresses + RuleERC2980Base.removeWhitelistAddresses 4 - RuleERC2980Base.transferred.0 + RuleERC2980Base.transferred.0 4 - RuleERC2980Base._transferred + RuleERC2980Base._transferred 5 - RuleERC2980Base.canReturnTransferRestrictionCode + RuleERC2980Base.canReturnTransferRestrictionCode 5 - RuleERC2980Base.messageForTransferRestriction + RuleERC2980Base.messageForTransferRestriction 5 - RuleERC2980Base.whitelist + RuleERC2980Base.whitelist 5 - RuleERC2980Base.whitelistAddressCount + RuleERC2980Base.whitelistAddressCount 5 - RuleERC2980Base.addFrozenlistAddresses + RuleERC2980Base.addFrozenlistAddresses 6 - RuleERC2980Base.addWhitelistAddresses + RuleERC2980Base.addWhitelistAddresses 6 - RuleERC2980Base.onlyFrozenlistAdd + RuleERC2980Base.onlyFrozenlistAdd 6 - RuleERC2980Base.onlyWhitelistAdd + RuleERC2980Base.onlyWhitelistAdd 6 - RuleERC2980Base.onlyWhitelistRemove + RuleERC2980Base.onlyWhitelistRemove 7 - RuleERC2980Base.removeFrozenlistAddress + RuleERC2980Base.removeFrozenlistAddress 7 - RuleERC2980Base.removeWhitelistAddress + RuleERC2980Base.removeWhitelistAddress 7 - RuleERC2980Base._detectTransferRestrictionFrom + RuleERC2980Base._detectTransferRestrictionFrom 8 - RuleERC2980Base.isFrozen + RuleERC2980Base.isFrozen 12 - RuleERC2980Base.isWhitelisted + RuleERC2980Base.isWhitelisted 13 @@ -185,19 +185,19 @@ 22 - RuleERC2980Base.addFrozenlistAddress + RuleERC2980Base.addFrozenlistAddress 22 - RuleERC2980Base.addWhitelistAddress + RuleERC2980Base.addWhitelistAddress 43 - RuleERC2980Base._msgSender + RuleERC2980Base._msgSender 267 - RuleERC2980Base._contextSuffixLength + RuleERC2980Base._contextSuffixLength 269 diff --git a/doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.func.html b/doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.func.html index fa4bcca..0d085a0 100644 --- a/doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.func.html +++ b/doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.func.html @@ -31,13 +31,13 @@ lcov.info Lines: - 102 - 102 + 101 + 101 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 33 @@ -69,7 +69,7 @@ Hit count Sort by hit count - RuleERC2980Base._contextSuffixLength + RuleERC2980Base._contextSuffixLength 269 @@ -77,127 +77,127 @@ 22 - RuleERC2980Base._detectTransferRestrictionFrom + RuleERC2980Base._detectTransferRestrictionFrom 8 - RuleERC2980Base._msgData + RuleERC2980Base._msgData 2 - RuleERC2980Base._msgSender + RuleERC2980Base._msgSender 267 - RuleERC2980Base._transferred + RuleERC2980Base._transferred 5 - RuleERC2980Base._transferredFrom + RuleERC2980Base._transferredFrom 3 - RuleERC2980Base.addFrozenlistAddress + RuleERC2980Base.addFrozenlistAddress 22 - RuleERC2980Base.addFrozenlistAddresses + RuleERC2980Base.addFrozenlistAddresses 6 - RuleERC2980Base.addWhitelistAddress + RuleERC2980Base.addWhitelistAddress 43 - RuleERC2980Base.addWhitelistAddresses + RuleERC2980Base.addWhitelistAddresses 6 - RuleERC2980Base.areFrozen + RuleERC2980Base.areFrozen 1 - RuleERC2980Base.areWhitelisted + RuleERC2980Base.areWhitelisted 1 - RuleERC2980Base.canReturnTransferRestrictionCode + RuleERC2980Base.canReturnTransferRestrictionCode 5 - RuleERC2980Base.frozenlist + RuleERC2980Base.frozenlist 4 - RuleERC2980Base.frozenlistAddressCount + RuleERC2980Base.frozenlistAddressCount 4 - RuleERC2980Base.isFrozen + RuleERC2980Base.isFrozen 12 - RuleERC2980Base.isVerified + RuleERC2980Base.isVerified 3 - RuleERC2980Base.isWhitelisted + RuleERC2980Base.isWhitelisted 13 - RuleERC2980Base.messageForTransferRestriction + RuleERC2980Base.messageForTransferRestriction 5 - RuleERC2980Base.onlyFrozenlistAdd + RuleERC2980Base.onlyFrozenlistAdd 6 - RuleERC2980Base.onlyFrozenlistRemove + RuleERC2980Base.onlyFrozenlistRemove 2 - RuleERC2980Base.onlyWhitelistAdd + RuleERC2980Base.onlyWhitelistAdd 6 - RuleERC2980Base.onlyWhitelistRemove + RuleERC2980Base.onlyWhitelistRemove 7 - RuleERC2980Base.removeFrozenlistAddress + RuleERC2980Base.removeFrozenlistAddress 7 - RuleERC2980Base.removeFrozenlistAddresses + RuleERC2980Base.removeFrozenlistAddresses 2 - RuleERC2980Base.removeWhitelistAddress + RuleERC2980Base.removeWhitelistAddress 7 - RuleERC2980Base.removeWhitelistAddresses + RuleERC2980Base.removeWhitelistAddresses 4 - RuleERC2980Base.supportsInterface + RuleERC2980Base.supportsInterface 1 - RuleERC2980Base.transferred.0 + RuleERC2980Base.transferred.0 4 - RuleERC2980Base.transferred.1 + RuleERC2980Base.transferred.1 2 - RuleERC2980Base.whitelist + RuleERC2980Base.whitelist 5 - RuleERC2980Base.whitelistAddressCount + RuleERC2980Base.whitelistAddressCount 5 diff --git a/doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.gcov.html b/doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.gcov.html index 89784e8..62c8d68 100644 --- a/doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.gcov.html +++ b/doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.gcov.html @@ -31,13 +31,13 @@ lcov.info Lines: - 102 - 102 + 101 + 101 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 33 @@ -115,348 +115,340 @@ 44 : : TRANSFER RESTRICTION LOGIC 45 : : //////////////////////////////////////////////////////////////*/ 46 : : - 47 : 22 : function _detectTransferRestriction(address from, address to, uint256 /* value */ ) - 48 : : internal - 49 : : view - 50 : : virtual - 51 : : override - 52 : : returns (uint8) - 53 : : { - 54 : : // Frozenlist check has priority - 55 [ + + ]: 22 : if (_isFrozen(from)) { - 56 : 4 : return CODE_ADDRESS_FROM_IS_FROZEN; - 57 [ + ]: 18 : } else if (_isFrozen(to)) { - 58 : 4 : return CODE_ADDRESS_TO_IS_FROZEN; - 59 : : } - 60 : : // Whitelist check: only the recipient must be whitelisted - 61 [ + ]: 14 : if (!_isWhitelisted(to)) { - 62 : 4 : return CODE_ADDRESS_TO_NOT_WHITELISTED; + 47 : 22 : function _detectTransferRestriction( + 48 : : address from, + 49 : : address to, + 50 : : uint256 /* value */ + 51 : : ) + 52 : : internal + 53 : : view + 54 : : virtual + 55 : : override + 56 : : returns (uint8) + 57 : : { + 58 : : // Frozenlist check has priority + 59 [ + + ]: 22 : if (_isFrozen(from)) { + 60 : 4 : return CODE_ADDRESS_FROM_IS_FROZEN; + 61 [ + ]: 18 : } else if (_isFrozen(to)) { + 62 : 4 : return CODE_ADDRESS_TO_IS_FROZEN; 63 : : } - 64 : 10 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - 65 : : } - 66 : : - 67 : 8 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value) - 68 : : internal - 69 : : view - 70 : : virtual - 71 : : override - 72 : : returns (uint8) - 73 : : { - 74 [ + ]: 8 : if (_isFrozen(spender)) { - 75 : 4 : return CODE_ADDRESS_SPENDER_IS_FROZEN; - 76 : : } - 77 : 4 : return _detectTransferRestriction(from, to, value); - 78 : : } - 79 : : - 80 : : /*////////////////////////////////////////////////////////////// - 81 : : ERC-3643 / IRuleEngine HOOKS - 82 : : //////////////////////////////////////////////////////////////*/ + 64 : : // Whitelist check: only the recipient must be whitelisted + 65 [ + ]: 14 : if (!_isWhitelisted(to)) { + 66 : 4 : return CODE_ADDRESS_TO_NOT_WHITELISTED; + 67 : : } + 68 : 10 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 69 : : } + 70 : : + 71 : 8 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value) + 72 : : internal + 73 : : view + 74 : : virtual + 75 : : override + 76 : : returns (uint8) + 77 : : { + 78 [ + ]: 8 : if (_isFrozen(spender)) { + 79 : 4 : return CODE_ADDRESS_SPENDER_IS_FROZEN; + 80 : : } + 81 : 4 : return _detectTransferRestriction(from, to, value); + 82 : : } 83 : : - 84 : 4 : function transferred(address from, address to, uint256 value) - 85 : : public - 86 : : view - 87 : : virtual - 88 : : override(IERC3643IComplianceContract) - 89 : : { - 90 : 4 : _transferred(from, to, value); - 91 : : } - 92 : : - 93 : 2 : function transferred(address spender, address from, address to, uint256 value) - 94 : : public - 95 : : view - 96 : : virtual - 97 : : override(IRuleEngine) - 98 : : { - 99 : 2 : _transferredFrom(spender, from, to, value); - 100 : : } - 101 : : - 102 : 5 : function _transferred(address from, address to, uint256 value) internal view virtual override { - 103 : 5 : uint8 code = _detectTransferRestriction(from, to, value); - 104 [ + + ]: 5 : require( - 105 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), - 106 : : RuleERC2980_InvalidTransfer(address(this), from, to, value, code) - 107 : : ); - 108 : : } - 109 : : - 110 : 3 : function _transferredFrom(address spender, address from, address to, uint256 value) - 111 : : internal - 112 : : view - 113 : : virtual - 114 : : override - 115 : : { - 116 : 3 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); - 117 [ + + ]: 3 : require( - 118 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), - 119 : : RuleERC2980_InvalidTransferFrom(address(this), spender, from, to, value, code) - 120 : : ); - 121 : : } - 122 : : - 123 : : /*////////////////////////////////////////////////////////////// - 124 : : RESTRICTION CODE HELPERS - 125 : : //////////////////////////////////////////////////////////////*/ - 126 : : - 127 : 5 : function canReturnTransferRestrictionCode(uint8 restrictionCode) - 128 : : public - 129 : : pure - 130 : : virtual - 131 : : override(IRule) - 132 : : returns (bool) - 133 : : { - 134 : 5 : return restrictionCode == CODE_ADDRESS_FROM_IS_FROZEN || restrictionCode == CODE_ADDRESS_TO_IS_FROZEN - 135 : 3 : || restrictionCode == CODE_ADDRESS_SPENDER_IS_FROZEN - 136 : 2 : || restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED; - 137 : : } - 138 : : - 139 : 5 : function messageForTransferRestriction(uint8 restrictionCode) - 140 : : public - 141 : : pure - 142 : : virtual - 143 : : override(IERC1404) - 144 : : returns (string memory) - 145 : : { - 146 [ + + ]: 5 : if (restrictionCode == CODE_ADDRESS_FROM_IS_FROZEN) { - 147 : 1 : return TEXT_ADDRESS_FROM_IS_FROZEN; - 148 [ + + ]: 4 : } else if (restrictionCode == CODE_ADDRESS_TO_IS_FROZEN) { - 149 : 1 : return TEXT_ADDRESS_TO_IS_FROZEN; - 150 [ + + ]: 3 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_IS_FROZEN) { - 151 : 1 : return TEXT_ADDRESS_SPENDER_IS_FROZEN; - 152 [ + + ]: 2 : } else if (restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED) { - 153 : 1 : return TEXT_ADDRESS_TO_NOT_WHITELISTED; - 154 : : } else { - 155 : 1 : return TEXT_CODE_NOT_FOUND; - 156 : : } - 157 : : } - 158 : : - 159 : : /*////////////////////////////////////////////////////////////// - 160 : : WHITELIST MANAGEMENT - 161 : : //////////////////////////////////////////////////////////////*/ - 162 : : - 163 : : /** - 164 : : * @notice Adds multiple addresses to the whitelist. - 165 : : * @dev Does not revert if an address is already listed. - 166 : : */ - 167 : 6 : function addWhitelistAddresses(address[] calldata targetAddresses) public onlyWhitelistAdd { - 168 : 4 : _addWhitelistAddresses(targetAddresses); - 169 : 4 : emit AddWhitelistAddresses(targetAddresses); - 170 : : } - 171 : : - 172 : : /** - 173 : : * @notice Removes multiple addresses from the whitelist. - 174 : : * @dev Does not revert if an address is not listed. - 175 : : */ - 176 : 4 : function removeWhitelistAddresses(address[] calldata targetAddresses) public onlyWhitelistRemove { - 177 : 3 : _removeWhitelistAddresses(targetAddresses); - 178 : 3 : emit RemoveWhitelistAddresses(targetAddresses); - 179 : : } - 180 : : - 181 : : /** - 182 : : * @notice Adds a single address to the whitelist. - 183 : : * @dev - 184 : : * Reverts if the address is already listed. - 185 : : * Deviation from ERC-2980 `Whitelistable` example interface: the spec's `addAddressToWhitelist` - 186 : : * returns `false` on duplicates instead of reverting. This implementation follows the codebase - 187 : : * convention of reverting on invalid single-item operations. - 188 : : */ - 189 : 43 : function addWhitelistAddress(address targetAddress) public onlyWhitelistAdd { - 190 [ + + ]: 40 : require(!_isWhitelisted(targetAddress), RuleERC2980_AddressAlreadyListed()); - 191 : 39 : _addWhitelistAddress(targetAddress); - 192 : 39 : emit AddWhitelistAddress(targetAddress); - 193 : : } - 194 : : - 195 : : /** - 196 : : * @notice Removes a single address from the whitelist. - 197 : : * @dev - 198 : : * Reverts if the address is not listed. - 199 : : * Deviation from ERC-2980 `Whitelistable` example interface: the spec's `removeAddressFromWhitelist` - 200 : : * returns `false` when not found instead of reverting. This implementation follows the codebase - 201 : : * convention of reverting on invalid single-item operations. - 202 : : */ - 203 : 7 : function removeWhitelistAddress(address targetAddress) public onlyWhitelistRemove { - 204 [ + + ]: 5 : require(_isWhitelisted(targetAddress), RuleERC2980_AddressNotFound()); - 205 : 4 : _removeWhitelistAddress(targetAddress); - 206 : 4 : emit RemoveWhitelistAddress(targetAddress); - 207 : : } - 208 : : - 209 : : /** - 210 : : * @notice Returns the number of whitelisted addresses. - 211 : : */ - 212 : 5 : function whitelistAddressCount() public view returns (uint256) { - 213 : 5 : return _whitelistCount(); - 214 : : } - 215 : : - 216 : : /** - 217 : : * @notice Returns true if the address is in the whitelist. - 218 : : */ - 219 : 13 : function isWhitelisted(address targetAddress) public view returns (bool) { - 220 : 13 : return _isWhitelisted(targetAddress); - 221 : : } - 222 : : - 223 : : /** - 224 : : * @notice ERC-2980 getter: returns true if the address is whitelisted. - 225 : : */ - 226 : 5 : function whitelist(address _operator) public view virtual override(IERC2980) returns (bool) { - 227 : 5 : return _isWhitelisted(_operator); - 228 : : } - 229 : : - 230 : : /** - 231 : : * @notice Returns true if the address is whitelisted (identity-verified). - 232 : : * @dev Reflects whitelist membership only. Frozen status is intentionally excluded: - 233 : : * freezing is a temporary enforcement action and does not revoke identity verification. - 234 : : */ - 235 : 3 : function isVerified(address targetAddress) - 236 : : public - 237 : : view - 238 : : virtual - 239 : : override(IIdentityRegistryVerified) - 240 : : returns (bool) - 241 : : { - 242 : 3 : return _isWhitelisted(targetAddress); - 243 : : } - 244 : : - 245 : : /** - 246 : : * @notice Checks multiple addresses for whitelist membership. - 247 : : */ - 248 : 1 : function areWhitelisted(address[] memory targetAddresses) public view returns (bool[] memory results) { - 249 : 1 : results = new bool[](targetAddresses.length); - 250 : 1 : for (uint256 i = 0; i < targetAddresses.length; ++i) { - 251 : 2 : results[i] = _isWhitelisted(targetAddresses[i]); - 252 : : } - 253 : : } - 254 : : - 255 : : /*////////////////////////////////////////////////////////////// - 256 : : FROZENLIST MANAGEMENT - 257 : : //////////////////////////////////////////////////////////////*/ - 258 : : - 259 : : /** - 260 : : * @notice Adds multiple addresses to the frozenlist. - 261 : : * @dev Does not revert if an address is already listed. - 262 : : */ - 263 : 6 : function addFrozenlistAddresses(address[] calldata targetAddresses) public onlyFrozenlistAdd { - 264 : 4 : _addFrozenlistAddresses(targetAddresses); - 265 : 4 : emit AddFrozenlistAddresses(targetAddresses); - 266 : : } - 267 : : - 268 : : /** - 269 : : * @notice Removes multiple addresses from the frozenlist. - 270 : : * @dev Does not revert if an address is not listed. - 271 : : */ - 272 : 2 : function removeFrozenlistAddresses(address[] calldata targetAddresses) public onlyFrozenlistRemove { - 273 : 2 : _removeFrozenlistAddresses(targetAddresses); - 274 : 2 : emit RemoveFrozenlistAddresses(targetAddresses); - 275 : : } - 276 : : - 277 : : /** - 278 : : * @notice Adds a single address to the frozenlist. - 279 : : * @dev - 280 : : * Reverts if the address is already listed. - 281 : : * Deviation from ERC-2980 `Freezable` example interface: the spec's `addAddressToFrozenlist` - 282 : : * returns `false` on duplicates instead of reverting. This implementation follows the codebase - 283 : : * convention of reverting on invalid single-item operations. - 284 : : */ - 285 : 22 : function addFrozenlistAddress(address targetAddress) public onlyFrozenlistAdd { - 286 [ + + ]: 19 : require(!_isFrozen(targetAddress), RuleERC2980_AddressAlreadyListed()); - 287 : 18 : _addFrozenlistAddress(targetAddress); - 288 : 18 : emit AddFrozenlistAddress(targetAddress); - 289 : : } - 290 : : - 291 : : /** - 292 : : * @notice Removes a single address from the frozenlist. - 293 : : * @dev - 294 : : * Reverts if the address is not listed. - 295 : : * Deviation from ERC-2980 `Freezable` example interface: the spec's `removeAddressFromFrozenlist` - 296 : : * returns `false` when not found instead of reverting. This implementation follows the codebase - 297 : : * convention of reverting on invalid single-item operations. - 298 : : */ - 299 : 7 : function removeFrozenlistAddress(address targetAddress) public onlyFrozenlistRemove { - 300 [ + + ]: 5 : require(_isFrozen(targetAddress), RuleERC2980_AddressNotFound()); - 301 : 4 : _removeFrozenlistAddress(targetAddress); - 302 : 4 : emit RemoveFrozenlistAddress(targetAddress); - 303 : : } - 304 : : - 305 : : /** - 306 : : * @notice Returns the number of frozen addresses. - 307 : : */ - 308 : 4 : function frozenlistAddressCount() public view returns (uint256) { - 309 : 4 : return _frozenlistCount(); - 310 : : } - 311 : : - 312 : : /** - 313 : : * @notice Returns true if the address is in the frozenlist. - 314 : : */ - 315 : 12 : function isFrozen(address targetAddress) public view returns (bool) { - 316 : 12 : return _isFrozen(targetAddress); - 317 : : } - 318 : : - 319 : : /** - 320 : : * @notice ERC-2980 getter: returns true if the address is frozen. - 321 : : */ - 322 : 4 : function frozenlist(address _operator) public view virtual override(IERC2980) returns (bool) { - 323 : 4 : return _isFrozen(_operator); - 324 : : } - 325 : : - 326 : : /** - 327 : : * @notice Checks multiple addresses for frozenlist membership. - 328 : : */ - 329 : 1 : function areFrozen(address[] memory targetAddresses) public view returns (bool[] memory results) { - 330 : 1 : results = new bool[](targetAddresses.length); - 331 : 1 : for (uint256 i = 0; i < targetAddresses.length; ++i) { - 332 : 2 : results[i] = _isFrozen(targetAddresses[i]); - 333 : : } + 84 : : /*////////////////////////////////////////////////////////////// + 85 : : ERC-3643 / IRuleEngine HOOKS + 86 : : //////////////////////////////////////////////////////////////*/ + 87 : : + 88 : 4 : function transferred(address from, address to, uint256 value) + 89 : : public + 90 : : view + 91 : : virtual + 92 : : override(IERC3643IComplianceContract) + 93 : : { + 94 : 4 : _transferred(from, to, value); + 95 : : } + 96 : : + 97 : 2 : function transferred(address spender, address from, address to, uint256 value) + 98 : : public + 99 : : view + 100 : : virtual + 101 : : override(IRuleEngine) + 102 : : { + 103 : 2 : _transferredFrom(spender, from, to, value); + 104 : : } + 105 : : + 106 : 5 : function _transferred(address from, address to, uint256 value) internal view virtual override { + 107 : 5 : uint8 code = _detectTransferRestriction(from, to, value); + 108 [ + + ]: 5 : require( + 109 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), + 110 : : RuleERC2980_InvalidTransfer(address(this), from, to, value, code) + 111 : : ); + 112 : : } + 113 : : + 114 : 3 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override { + 115 : 3 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); + 116 [ + + ]: 3 : require( + 117 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), + 118 : : RuleERC2980_InvalidTransferFrom(address(this), spender, from, to, value, code) + 119 : : ); + 120 : : } + 121 : : + 122 : : /*////////////////////////////////////////////////////////////// + 123 : : RESTRICTION CODE HELPERS + 124 : : //////////////////////////////////////////////////////////////*/ + 125 : : + 126 : 5 : function canReturnTransferRestrictionCode(uint8 restrictionCode) + 127 : : public + 128 : : pure + 129 : : virtual + 130 : : override(IRule) + 131 : : returns (bool) + 132 : : { + 133 : 5 : return restrictionCode == CODE_ADDRESS_FROM_IS_FROZEN || restrictionCode == CODE_ADDRESS_TO_IS_FROZEN + 134 : 3 : || restrictionCode == CODE_ADDRESS_SPENDER_IS_FROZEN || restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED; + 135 : : } + 136 : : + 137 : 5 : function messageForTransferRestriction(uint8 restrictionCode) + 138 : : public + 139 : : pure + 140 : : virtual + 141 : : override(IERC1404) + 142 : : returns (string memory) + 143 : : { + 144 [ + + ]: 5 : if (restrictionCode == CODE_ADDRESS_FROM_IS_FROZEN) { + 145 : 1 : return TEXT_ADDRESS_FROM_IS_FROZEN; + 146 [ + + ]: 4 : } else if (restrictionCode == CODE_ADDRESS_TO_IS_FROZEN) { + 147 : 1 : return TEXT_ADDRESS_TO_IS_FROZEN; + 148 [ + + ]: 3 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_IS_FROZEN) { + 149 : 1 : return TEXT_ADDRESS_SPENDER_IS_FROZEN; + 150 [ + + ]: 2 : } else if (restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED) { + 151 : 1 : return TEXT_ADDRESS_TO_NOT_WHITELISTED; + 152 : : } else { + 153 : 1 : return TEXT_CODE_NOT_FOUND; + 154 : : } + 155 : : } + 156 : : + 157 : : /*////////////////////////////////////////////////////////////// + 158 : : WHITELIST MANAGEMENT + 159 : : //////////////////////////////////////////////////////////////*/ + 160 : : + 161 : : /** + 162 : : * @notice Adds multiple addresses to the whitelist. + 163 : : * @dev Does not revert if an address is already listed. + 164 : : */ + 165 : 6 : function addWhitelistAddresses(address[] calldata targetAddresses) public onlyWhitelistAdd { + 166 : 4 : _addWhitelistAddresses(targetAddresses); + 167 : 4 : emit AddWhitelistAddresses(targetAddresses); + 168 : : } + 169 : : + 170 : : /** + 171 : : * @notice Removes multiple addresses from the whitelist. + 172 : : * @dev Does not revert if an address is not listed. + 173 : : */ + 174 : 4 : function removeWhitelistAddresses(address[] calldata targetAddresses) public onlyWhitelistRemove { + 175 : 3 : _removeWhitelistAddresses(targetAddresses); + 176 : 3 : emit RemoveWhitelistAddresses(targetAddresses); + 177 : : } + 178 : : + 179 : : /** + 180 : : * @notice Adds a single address to the whitelist. + 181 : : * @dev + 182 : : * Reverts if the address is already listed. + 183 : : * Deviation from ERC-2980 `Whitelistable` example interface: the spec's `addAddressToWhitelist` + 184 : : * returns `false` on duplicates instead of reverting. This implementation follows the codebase + 185 : : * convention of reverting on invalid single-item operations. + 186 : : */ + 187 : 43 : function addWhitelistAddress(address targetAddress) public onlyWhitelistAdd { + 188 [ + + ]: 40 : require(!_isWhitelisted(targetAddress), RuleERC2980_AddressAlreadyListed()); + 189 : 39 : _addWhitelistAddress(targetAddress); + 190 : 39 : emit AddWhitelistAddress(targetAddress); + 191 : : } + 192 : : + 193 : : /** + 194 : : * @notice Removes a single address from the whitelist. + 195 : : * @dev + 196 : : * Reverts if the address is not listed. + 197 : : * Deviation from ERC-2980 `Whitelistable` example interface: the spec's `removeAddressFromWhitelist` + 198 : : * returns `false` when not found instead of reverting. This implementation follows the codebase + 199 : : * convention of reverting on invalid single-item operations. + 200 : : */ + 201 : 7 : function removeWhitelistAddress(address targetAddress) public onlyWhitelistRemove { + 202 [ + + ]: 5 : require(_isWhitelisted(targetAddress), RuleERC2980_AddressNotFound()); + 203 : 4 : _removeWhitelistAddress(targetAddress); + 204 : 4 : emit RemoveWhitelistAddress(targetAddress); + 205 : : } + 206 : : + 207 : : /** + 208 : : * @notice Returns the number of whitelisted addresses. + 209 : : */ + 210 : 5 : function whitelistAddressCount() public view returns (uint256) { + 211 : 5 : return _whitelistCount(); + 212 : : } + 213 : : + 214 : : /** + 215 : : * @notice Returns true if the address is in the whitelist. + 216 : : */ + 217 : 13 : function isWhitelisted(address targetAddress) public view returns (bool) { + 218 : 13 : return _isWhitelisted(targetAddress); + 219 : : } + 220 : : + 221 : : /** + 222 : : * @notice ERC-2980 getter: returns true if the address is whitelisted. + 223 : : */ + 224 : 5 : function whitelist(address _operator) public view virtual override(IERC2980) returns (bool) { + 225 : 5 : return _isWhitelisted(_operator); + 226 : : } + 227 : : + 228 : : /** + 229 : : * @notice Returns true if the address is whitelisted (identity-verified). + 230 : : * @dev Reflects whitelist membership only. Frozen status is intentionally excluded: + 231 : : * freezing is a temporary enforcement action and does not revoke identity verification. + 232 : : */ + 233 : 3 : function isVerified(address targetAddress) public view virtual override(IIdentityRegistryVerified) returns (bool) { + 234 : 3 : return _isWhitelisted(targetAddress); + 235 : : } + 236 : : + 237 : : /** + 238 : : * @notice Checks multiple addresses for whitelist membership. + 239 : : */ + 240 : 1 : function areWhitelisted(address[] memory targetAddresses) public view returns (bool[] memory results) { + 241 : 1 : results = new bool[](targetAddresses.length); + 242 : 1 : for (uint256 i = 0; i < targetAddresses.length; ++i) { + 243 : 2 : results[i] = _isWhitelisted(targetAddresses[i]); + 244 : : } + 245 : : } + 246 : : + 247 : : /*////////////////////////////////////////////////////////////// + 248 : : FROZENLIST MANAGEMENT + 249 : : //////////////////////////////////////////////////////////////*/ + 250 : : + 251 : : /** + 252 : : * @notice Adds multiple addresses to the frozenlist. + 253 : : * @dev Does not revert if an address is already listed. + 254 : : */ + 255 : 6 : function addFrozenlistAddresses(address[] calldata targetAddresses) public onlyFrozenlistAdd { + 256 : 4 : _addFrozenlistAddresses(targetAddresses); + 257 : 4 : emit AddFrozenlistAddresses(targetAddresses); + 258 : : } + 259 : : + 260 : : /** + 261 : : * @notice Removes multiple addresses from the frozenlist. + 262 : : * @dev Does not revert if an address is not listed. + 263 : : */ + 264 : 2 : function removeFrozenlistAddresses(address[] calldata targetAddresses) public onlyFrozenlistRemove { + 265 : 2 : _removeFrozenlistAddresses(targetAddresses); + 266 : 2 : emit RemoveFrozenlistAddresses(targetAddresses); + 267 : : } + 268 : : + 269 : : /** + 270 : : * @notice Adds a single address to the frozenlist. + 271 : : * @dev + 272 : : * Reverts if the address is already listed. + 273 : : * Deviation from ERC-2980 `Freezable` example interface: the spec's `addAddressToFrozenlist` + 274 : : * returns `false` on duplicates instead of reverting. This implementation follows the codebase + 275 : : * convention of reverting on invalid single-item operations. + 276 : : */ + 277 : 22 : function addFrozenlistAddress(address targetAddress) public onlyFrozenlistAdd { + 278 [ + + ]: 19 : require(!_isFrozen(targetAddress), RuleERC2980_AddressAlreadyListed()); + 279 : 18 : _addFrozenlistAddress(targetAddress); + 280 : 18 : emit AddFrozenlistAddress(targetAddress); + 281 : : } + 282 : : + 283 : : /** + 284 : : * @notice Removes a single address from the frozenlist. + 285 : : * @dev + 286 : : * Reverts if the address is not listed. + 287 : : * Deviation from ERC-2980 `Freezable` example interface: the spec's `removeAddressFromFrozenlist` + 288 : : * returns `false` when not found instead of reverting. This implementation follows the codebase + 289 : : * convention of reverting on invalid single-item operations. + 290 : : */ + 291 : 7 : function removeFrozenlistAddress(address targetAddress) public onlyFrozenlistRemove { + 292 [ + + ]: 5 : require(_isFrozen(targetAddress), RuleERC2980_AddressNotFound()); + 293 : 4 : _removeFrozenlistAddress(targetAddress); + 294 : 4 : emit RemoveFrozenlistAddress(targetAddress); + 295 : : } + 296 : : + 297 : : /** + 298 : : * @notice Returns the number of frozen addresses. + 299 : : */ + 300 : 4 : function frozenlistAddressCount() public view returns (uint256) { + 301 : 4 : return _frozenlistCount(); + 302 : : } + 303 : : + 304 : : /** + 305 : : * @notice Returns true if the address is in the frozenlist. + 306 : : */ + 307 : 12 : function isFrozen(address targetAddress) public view returns (bool) { + 308 : 12 : return _isFrozen(targetAddress); + 309 : : } + 310 : : + 311 : : /** + 312 : : * @notice ERC-2980 getter: returns true if the address is frozen. + 313 : : */ + 314 : 4 : function frozenlist(address _operator) public view virtual override(IERC2980) returns (bool) { + 315 : 4 : return _isFrozen(_operator); + 316 : : } + 317 : : + 318 : : /** + 319 : : * @notice Checks multiple addresses for frozenlist membership. + 320 : : */ + 321 : 1 : function areFrozen(address[] memory targetAddresses) public view returns (bool[] memory results) { + 322 : 1 : results = new bool[](targetAddresses.length); + 323 : 1 : for (uint256 i = 0; i < targetAddresses.length; ++i) { + 324 : 2 : results[i] = _isFrozen(targetAddresses[i]); + 325 : : } + 326 : : } + 327 : : + 328 : : /*////////////////////////////////////////////////////////////// + 329 : : INTERFACE SUPPORT + 330 : : //////////////////////////////////////////////////////////////*/ + 331 : : + 332 : 1 : function supportsInterface(bytes4 interfaceId) public view virtual override(RuleTransferValidation) returns (bool) { + 333 : 1 : return RuleTransferValidation.supportsInterface(interfaceId); 334 : : } 335 : : 336 : : /*////////////////////////////////////////////////////////////// - 337 : : INTERFACE SUPPORT + 337 : : ACCESS CONTROL 338 : : //////////////////////////////////////////////////////////////*/ 339 : : - 340 : 1 : function supportsInterface(bytes4 interfaceId) public view virtual override(RuleTransferValidation) returns (bool) { - 341 : 1 : return RuleTransferValidation.supportsInterface(interfaceId); - 342 : : } - 343 : : - 344 : : /*////////////////////////////////////////////////////////////// - 345 : : ACCESS CONTROL - 346 : : //////////////////////////////////////////////////////////////*/ - 347 : : - 348 : 6 : modifier onlyWhitelistAdd() { - 349 : 6 : _authorizeWhitelistAdd(); - 350 : : _; - 351 : : } - 352 : : - 353 : 7 : modifier onlyWhitelistRemove() { - 354 : 7 : _authorizeWhitelistRemove(); - 355 : : _; - 356 : : } - 357 : : - 358 : 6 : modifier onlyFrozenlistAdd() { - 359 : 6 : _authorizeFrozenlistAdd(); - 360 : : _; - 361 : : } - 362 : : - 363 : 2 : modifier onlyFrozenlistRemove() { - 364 : 2 : _authorizeFrozenlistRemove(); - 365 : : _; - 366 : : } - 367 : : - 368 : : function _authorizeWhitelistAdd() internal view virtual; - 369 : : function _authorizeWhitelistRemove() internal view virtual; - 370 : : function _authorizeFrozenlistAdd() internal view virtual; - 371 : : function _authorizeFrozenlistRemove() internal view virtual; + 340 : 6 : modifier onlyWhitelistAdd() { + 341 : 6 : _authorizeWhitelistAdd(); + 342 : : _; + 343 : : } + 344 : : + 345 : 7 : modifier onlyWhitelistRemove() { + 346 : 7 : _authorizeWhitelistRemove(); + 347 : : _; + 348 : : } + 349 : : + 350 : 6 : modifier onlyFrozenlistAdd() { + 351 : 6 : _authorizeFrozenlistAdd(); + 352 : : _; + 353 : : } + 354 : : + 355 : 2 : modifier onlyFrozenlistRemove() { + 356 : 2 : _authorizeFrozenlistRemove(); + 357 : : _; + 358 : : } + 359 : : + 360 : : function _authorizeWhitelistAdd() internal view virtual; + 361 : : function _authorizeWhitelistRemove() internal view virtual; + 362 : : function _authorizeFrozenlistAdd() internal view virtual; + 363 : : function _authorizeFrozenlistRemove() internal view virtual; + 364 : : + 365 : : /*////////////////////////////////////////////////////////////// + 366 : : ERC-2771 META TX + 367 : : //////////////////////////////////////////////////////////////*/ + 368 : : + 369 : 267 : function _msgSender() internal view virtual override(ERC2771Context) returns (address sender) { + 370 : 267 : return ERC2771Context._msgSender(); + 371 : : } 372 : : - 373 : : /*////////////////////////////////////////////////////////////// - 374 : : ERC-2771 META TX - 375 : : //////////////////////////////////////////////////////////////*/ + 373 : 2 : function _msgData() internal view virtual override(ERC2771Context) returns (bytes calldata) { + 374 : 2 : return ERC2771Context._msgData(); + 375 : : } 376 : : - 377 : 267 : function _msgSender() internal view virtual override(ERC2771Context) returns (address sender) { - 378 : 267 : return ERC2771Context._msgSender(); + 377 : 269 : function _contextSuffixLength() internal view virtual override(ERC2771Context) returns (uint256) { + 378 : 269 : return ERC2771Context._contextSuffixLength(); 379 : : } - 380 : : - 381 : 2 : function _msgData() internal view virtual override(ERC2771Context) returns (bytes calldata) { - 382 : 2 : return ERC2771Context._msgData(); - 383 : : } - 384 : : - 385 : 269 : function _contextSuffixLength() internal view virtual override(ERC2771Context) returns (uint256) { - 386 : 269 : return ERC2771Context._contextSuffixLength(); - 387 : : } - 388 : : } + 380 : : } diff --git a/doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.func-sort-c.html b/doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.func-sort-c.html index 2aa4d9c..09d303a 100644 --- a/doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.func-sort-c.html +++ b/doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 12 @@ -69,15 +69,15 @@ Hit count Sort by hit count - RuleIdentityRegistryBase._transferred + RuleIdentityRegistryBase._transferred 2 - RuleIdentityRegistryBase._transferredFrom + RuleIdentityRegistryBase._transferredFrom 2 - RuleIdentityRegistryBase.transferred.0 + RuleIdentityRegistryBase.transferred.0 2 @@ -85,11 +85,11 @@ 2 - RuleIdentityRegistryBase.canReturnTransferRestrictionCode + RuleIdentityRegistryBase.canReturnTransferRestrictionCode 4 - RuleIdentityRegistryBase.messageForTransferRestriction + RuleIdentityRegistryBase.messageForTransferRestriction 4 @@ -101,11 +101,11 @@ 5 - RuleIdentityRegistryBase.onlyIdentityRegistryManager + RuleIdentityRegistryBase.onlyIdentityRegistryManager 5 - RuleIdentityRegistryBase._detectTransferRestrictionFrom + RuleIdentityRegistryBase._detectTransferRestrictionFrom 9 diff --git a/doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.func.html b/doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.func.html index 9fdf83a..39a7d2d 100644 --- a/doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.func.html +++ b/doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 12 @@ -73,19 +73,19 @@ 16 - RuleIdentityRegistryBase._detectTransferRestrictionFrom + RuleIdentityRegistryBase._detectTransferRestrictionFrom 9 - RuleIdentityRegistryBase._transferred + RuleIdentityRegistryBase._transferred 2 - RuleIdentityRegistryBase._transferredFrom + RuleIdentityRegistryBase._transferredFrom 2 - RuleIdentityRegistryBase.canReturnTransferRestrictionCode + RuleIdentityRegistryBase.canReturnTransferRestrictionCode 4 @@ -97,11 +97,11 @@ 26 - RuleIdentityRegistryBase.messageForTransferRestriction + RuleIdentityRegistryBase.messageForTransferRestriction 4 - RuleIdentityRegistryBase.onlyIdentityRegistryManager + RuleIdentityRegistryBase.onlyIdentityRegistryManager 5 @@ -109,7 +109,7 @@ 4 - RuleIdentityRegistryBase.transferred.0 + RuleIdentityRegistryBase.transferred.0 2 diff --git a/doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.gcov.html b/doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.gcov.html index a9ee475..6e8d3ac 100644 --- a/doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.gcov.html +++ b/doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 12 @@ -104,115 +104,106 @@ 33 : 3 : emit IdentityRegistryUpdated(address(0)); 34 : : } 35 : : - 36 : 16 : function _detectTransferRestriction(address from, address to, uint256 /* value */) - 37 : : internal - 38 : : view - 39 : : override - 40 : : returns (uint8) - 41 : : { - 42 [ + ]: 16 : if (address(identityRegistry) == address(0)) { - 43 : 3 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - 44 : : } - 45 [ + ]: 13 : if (to == address(0)) { - 46 : 2 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - 47 : : } - 48 : : - 49 [ + ]: 11 : if (from != address(0) && !identityRegistry.isVerified(from)) { - 50 : 4 : return CODE_ADDRESS_FROM_NOT_VERIFIED; + 36 : 16 : function _detectTransferRestriction( + 37 : : address from, + 38 : : address to, + 39 : : uint256 /* value */ + 40 : : ) + 41 : : internal + 42 : : view + 43 : : override + 44 : : returns (uint8) + 45 : : { + 46 [ + ]: 16 : if (address(identityRegistry) == address(0)) { + 47 : 3 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 48 : : } + 49 [ + ]: 13 : if (to == address(0)) { + 50 : 2 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); 51 : : } - 52 [ + ]: 7 : if (to != address(0) && !identityRegistry.isVerified(to)) { - 53 : 1 : return CODE_ADDRESS_TO_NOT_VERIFIED; - 54 : : } - 55 : 6 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - 56 : : } - 57 : : - 58 : 9 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value) - 59 : : internal - 60 : : view - 61 : : override - 62 : : returns (uint8) - 63 : : { - 64 [ + ]: 9 : if (address(identityRegistry) == address(0)) { - 65 : 1 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - 66 : : } - 67 [ + ]: 8 : if (to == address(0)) { - 68 : 1 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - 69 : : } - 70 [ + ]: 7 : if (spender != address(0) && !identityRegistry.isVerified(spender)) { - 71 : 4 : return CODE_ADDRESS_SPENDER_NOT_VERIFIED; - 72 : : } - 73 : 3 : return _detectTransferRestriction(from, to, value); - 74 : : } - 75 : : - 76 : 2 : function transferred(address from, address to, uint256 value) - 77 : : public - 78 : : view - 79 : : override(IERC3643IComplianceContract) - 80 : : { + 52 : : + 53 [ + ]: 11 : if (from != address(0) && !identityRegistry.isVerified(from)) { + 54 : 4 : return CODE_ADDRESS_FROM_NOT_VERIFIED; + 55 : : } + 56 [ + ]: 7 : if (to != address(0) && !identityRegistry.isVerified(to)) { + 57 : 1 : return CODE_ADDRESS_TO_NOT_VERIFIED; + 58 : : } + 59 : 6 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 60 : : } + 61 : : + 62 : 9 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value) + 63 : : internal + 64 : : view + 65 : : override + 66 : : returns (uint8) + 67 : : { + 68 [ + ]: 9 : if (address(identityRegistry) == address(0)) { + 69 : 1 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 70 : : } + 71 [ + ]: 8 : if (to == address(0)) { + 72 : 1 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 73 : : } + 74 [ + ]: 7 : if (spender != address(0) && !identityRegistry.isVerified(spender)) { + 75 : 4 : return CODE_ADDRESS_SPENDER_NOT_VERIFIED; + 76 : : } + 77 : 3 : return _detectTransferRestriction(from, to, value); + 78 : : } + 79 : : + 80 : 2 : function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) { 81 : 2 : _transferred(from, to, value); 82 : : } 83 : : - 84 : 2 : function transferred(address spender, address from, address to, uint256 value) - 85 : : public - 86 : : view - 87 : : override(IRuleEngine) - 88 : : { - 89 : 2 : _transferredFrom(spender, from, to, value); - 90 : : } - 91 : : - 92 : 2 : function _transferred(address from, address to, uint256 value) internal view virtual override { - 93 : 2 : uint8 code = _detectTransferRestriction(from, to, value); - 94 [ + + ]: 2 : require( - 95 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), - 96 : : RuleIdentityRegistry_InvalidTransfer(address(this), from, to, value, code) - 97 : : ); - 98 : : } - 99 : : - 100 : 2 : function _transferredFrom(address spender, address from, address to, uint256 value) - 101 : : internal - 102 : : view - 103 : : virtual - 104 : : override - 105 : : { - 106 : 2 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); - 107 [ + + ]: 2 : require( - 108 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), - 109 : : RuleIdentityRegistry_InvalidTransferFrom(address(this), spender, from, to, value, code) - 110 : : ); - 111 : : } - 112 : : - 113 : 4 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool) { - 114 : 4 : return restrictionCode == CODE_ADDRESS_FROM_NOT_VERIFIED || restrictionCode == CODE_ADDRESS_TO_NOT_VERIFIED - 115 : 2 : || restrictionCode == CODE_ADDRESS_SPENDER_NOT_VERIFIED; - 116 : : } - 117 : : - 118 : 4 : function messageForTransferRestriction(uint8 restrictionCode) - 119 : : public - 120 : : pure - 121 : : override(IERC1404) - 122 : : returns (string memory) - 123 : : { - 124 [ + + ]: 4 : if (restrictionCode == CODE_ADDRESS_FROM_NOT_VERIFIED) { - 125 : 1 : return TEXT_ADDRESS_FROM_NOT_VERIFIED; - 126 [ + + ]: 3 : } else if (restrictionCode == CODE_ADDRESS_TO_NOT_VERIFIED) { - 127 : 1 : return TEXT_ADDRESS_TO_NOT_VERIFIED; - 128 [ + ]: 2 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_NOT_VERIFIED) { - 129 : 1 : return TEXT_ADDRESS_SPENDER_NOT_VERIFIED; - 130 : : } - 131 : 1 : return TEXT_CODE_NOT_FOUND; + 84 : 2 : function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) { + 85 : 2 : _transferredFrom(spender, from, to, value); + 86 : : } + 87 : : + 88 : 2 : function _transferred(address from, address to, uint256 value) internal view virtual override { + 89 : 2 : uint8 code = _detectTransferRestriction(from, to, value); + 90 [ + + ]: 2 : require( + 91 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), + 92 : : RuleIdentityRegistry_InvalidTransfer(address(this), from, to, value, code) + 93 : : ); + 94 : : } + 95 : : + 96 : 2 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override { + 97 : 2 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); + 98 [ + + ]: 2 : require( + 99 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), + 100 : : RuleIdentityRegistry_InvalidTransferFrom(address(this), spender, from, to, value, code) + 101 : : ); + 102 : : } + 103 : : + 104 : 4 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool) { + 105 : 4 : return restrictionCode == CODE_ADDRESS_FROM_NOT_VERIFIED || restrictionCode == CODE_ADDRESS_TO_NOT_VERIFIED + 106 : 2 : || restrictionCode == CODE_ADDRESS_SPENDER_NOT_VERIFIED; + 107 : : } + 108 : : + 109 : 4 : function messageForTransferRestriction(uint8 restrictionCode) + 110 : : public + 111 : : pure + 112 : : override(IERC1404) + 113 : : returns (string memory) + 114 : : { + 115 [ + + ]: 4 : if (restrictionCode == CODE_ADDRESS_FROM_NOT_VERIFIED) { + 116 : 1 : return TEXT_ADDRESS_FROM_NOT_VERIFIED; + 117 [ + + ]: 3 : } else if (restrictionCode == CODE_ADDRESS_TO_NOT_VERIFIED) { + 118 : 1 : return TEXT_ADDRESS_TO_NOT_VERIFIED; + 119 [ + ]: 2 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_NOT_VERIFIED) { + 120 : 1 : return TEXT_ADDRESS_SPENDER_NOT_VERIFIED; + 121 : : } + 122 : 1 : return TEXT_CODE_NOT_FOUND; + 123 : : } + 124 : : + 125 : : /*////////////////////////////////////////////////////////////// + 126 : : ACCESS CONTROL + 127 : : //////////////////////////////////////////////////////////////*/ + 128 : : + 129 : 5 : modifier onlyIdentityRegistryManager() { + 130 : 5 : _authorizeIdentityRegistryManager(); + 131 : : _; 132 : : } 133 : : - 134 : : /*////////////////////////////////////////////////////////////// - 135 : : ACCESS CONTROL - 136 : : //////////////////////////////////////////////////////////////*/ - 137 : : - 138 : 5 : modifier onlyIdentityRegistryManager() { - 139 : 5 : _authorizeIdentityRegistryManager(); - 140 : : _; - 141 : : } - 142 : : - 143 : : function _authorizeIdentityRegistryManager() internal view virtual; - 144 : : } + 134 : : function _authorizeIdentityRegistryManager() internal view virtual; + 135 : : } diff --git a/doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.func-sort-c.html b/doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.func-sort-c.html index b09fc06..f2efd55 100644 --- a/doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.func-sort-c.html +++ b/doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 12 @@ -69,31 +69,31 @@ Hit count Sort by hit count - RuleMaxTotalSupplyBase._detectTransferRestrictionFrom + RuleMaxTotalSupplyBase._detectTransferRestrictionFrom 2 - RuleMaxTotalSupplyBase._transferred + RuleMaxTotalSupplyBase._transferred 2 - RuleMaxTotalSupplyBase._transferredFrom + RuleMaxTotalSupplyBase._transferredFrom 2 - RuleMaxTotalSupplyBase.canReturnTransferRestrictionCode + RuleMaxTotalSupplyBase.canReturnTransferRestrictionCode 2 - RuleMaxTotalSupplyBase.messageForTransferRestriction + RuleMaxTotalSupplyBase.messageForTransferRestriction 2 - RuleMaxTotalSupplyBase.transferred.0 + RuleMaxTotalSupplyBase.transferred.0 2 - RuleMaxTotalSupplyBase.transferred.1 + RuleMaxTotalSupplyBase.transferred.1 2 @@ -105,7 +105,7 @@ 25 - RuleMaxTotalSupplyBase.onlyMaxTotalSupplyManager + RuleMaxTotalSupplyBase.onlyMaxTotalSupplyManager 260 diff --git a/doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.func.html b/doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.func.html index d697da8..3ca3e52 100644 --- a/doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.func.html +++ b/doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 12 @@ -73,19 +73,19 @@ 271 - RuleMaxTotalSupplyBase._detectTransferRestrictionFrom + RuleMaxTotalSupplyBase._detectTransferRestrictionFrom 2 - RuleMaxTotalSupplyBase._transferred + RuleMaxTotalSupplyBase._transferred 2 - RuleMaxTotalSupplyBase._transferredFrom + RuleMaxTotalSupplyBase._transferredFrom 2 - RuleMaxTotalSupplyBase.canReturnTransferRestrictionCode + RuleMaxTotalSupplyBase.canReturnTransferRestrictionCode 2 @@ -93,11 +93,11 @@ 25 - RuleMaxTotalSupplyBase.messageForTransferRestriction + RuleMaxTotalSupplyBase.messageForTransferRestriction 2 - RuleMaxTotalSupplyBase.onlyMaxTotalSupplyManager + RuleMaxTotalSupplyBase.onlyMaxTotalSupplyManager 260 @@ -109,11 +109,11 @@ 4 - RuleMaxTotalSupplyBase.transferred.0 + RuleMaxTotalSupplyBase.transferred.0 2 - RuleMaxTotalSupplyBase.transferred.1 + RuleMaxTotalSupplyBase.transferred.1 2 diff --git a/doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.gcov.html b/doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.gcov.html index d9659ad..4654187 100644 --- a/doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.gcov.html +++ b/doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 12 @@ -105,89 +105,86 @@ 34 : 1 : emit TokenContractUpdated(newTokenContract); 35 : : } 36 : : - 37 : 271 : function _detectTransferRestriction(address from, address /* to */, uint256 value) - 38 : : internal - 39 : : view - 40 : : override - 41 : : returns (uint8) - 42 : : { - 43 [ + ]: 271 : if (from == address(0)) { - 44 : 268 : uint256 currentSupply = tokenContract.totalSupply(); - 45 [ + ]: 268 : if (currentSupply + value > maxTotalSupply) { - 46 : 179 : return CODE_MAX_TOTAL_SUPPLY_EXCEEDED; - 47 : : } - 48 : : } - 49 : 92 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - 50 : : } - 51 : : - 52 : 2 : function _detectTransferRestrictionFrom(address, address from, address to, uint256 value) - 53 : : internal - 54 : : view - 55 : : override - 56 : : returns (uint8) - 57 : : { - 58 : 2 : return _detectTransferRestriction(from, to, value); - 59 : : } - 60 : : - 61 : 2 : function transferred(address from, address to, uint256 value) - 62 : : public - 63 : : view - 64 : : override(IERC3643IComplianceContract) - 65 : : { - 66 : 2 : _transferred(from, to, value); - 67 : : } - 68 : : - 69 : 2 : function transferred(address spender, address from, address to, uint256 value) - 70 : : public - 71 : : view - 72 : : override(IRuleEngine) - 73 : : { - 74 : 2 : _transferredFrom(spender, from, to, value); - 75 : : } - 76 : : - 77 : 2 : function _transferred(address from, address to, uint256 value) internal view virtual { - 78 : 2 : uint8 code = _detectTransferRestriction(from, to, value); - 79 [ + + ]: 2 : require( - 80 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), - 81 : : RuleMaxTotalSupply_InvalidTransfer(address(this), from, to, value, code) - 82 : : ); - 83 : : } - 84 : : - 85 : 2 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual { - 86 : 2 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); - 87 [ + + ]: 2 : require( - 88 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), - 89 : : RuleMaxTotalSupply_InvalidTransferFrom(address(this), spender, from, to, value, code) - 90 : : ); - 91 : : } - 92 : : - 93 : 2 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool) { - 94 : 2 : return restrictionCode == CODE_MAX_TOTAL_SUPPLY_EXCEEDED; - 95 : : } - 96 : : - 97 : 2 : function messageForTransferRestriction(uint8 restrictionCode) - 98 : : public - 99 : : pure - 100 : : override(IERC1404) - 101 : : returns (string memory) - 102 : : { - 103 [ + ]: 2 : if (restrictionCode == CODE_MAX_TOTAL_SUPPLY_EXCEEDED) { - 104 : 1 : return TEXT_MAX_TOTAL_SUPPLY_EXCEEDED; - 105 : : } - 106 : 1 : return TEXT_CODE_NOT_FOUND; - 107 : : } - 108 : : - 109 : : /*////////////////////////////////////////////////////////////// - 110 : : ACCESS CONTROL - 111 : : //////////////////////////////////////////////////////////////*/ - 112 : : - 113 : 260 : modifier onlyMaxTotalSupplyManager() { - 114 : 260 : _authorizeMaxTotalSupplyManager(); - 115 : : _; - 116 : : } - 117 : : - 118 : : function _authorizeMaxTotalSupplyManager() internal view virtual; - 119 : : } + 37 : 271 : function _detectTransferRestriction( + 38 : : address from, + 39 : : address, + 40 : : /* to */ + 41 : : uint256 value + 42 : : ) + 43 : : internal + 44 : : view + 45 : : override + 46 : : returns (uint8) + 47 : : { + 48 [ + ]: 271 : if (from == address(0)) { + 49 : 268 : uint256 currentSupply = tokenContract.totalSupply(); + 50 [ + ]: 268 : if (currentSupply + value > maxTotalSupply) { + 51 : 176 : return CODE_MAX_TOTAL_SUPPLY_EXCEEDED; + 52 : : } + 53 : : } + 54 : 95 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 55 : : } + 56 : : + 57 : 2 : function _detectTransferRestrictionFrom(address, address from, address to, uint256 value) + 58 : : internal + 59 : : view + 60 : : override + 61 : : returns (uint8) + 62 : : { + 63 : 2 : return _detectTransferRestriction(from, to, value); + 64 : : } + 65 : : + 66 : 2 : function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) { + 67 : 2 : _transferred(from, to, value); + 68 : : } + 69 : : + 70 : 2 : function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) { + 71 : 2 : _transferredFrom(spender, from, to, value); + 72 : : } + 73 : : + 74 : 2 : function _transferred(address from, address to, uint256 value) internal view virtual { + 75 : 2 : uint8 code = _detectTransferRestriction(from, to, value); + 76 [ + + ]: 2 : require( + 77 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), + 78 : : RuleMaxTotalSupply_InvalidTransfer(address(this), from, to, value, code) + 79 : : ); + 80 : : } + 81 : : + 82 : 2 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual { + 83 : 2 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); + 84 [ + + ]: 2 : require( + 85 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), + 86 : : RuleMaxTotalSupply_InvalidTransferFrom(address(this), spender, from, to, value, code) + 87 : : ); + 88 : : } + 89 : : + 90 : 2 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool) { + 91 : 2 : return restrictionCode == CODE_MAX_TOTAL_SUPPLY_EXCEEDED; + 92 : : } + 93 : : + 94 : 2 : function messageForTransferRestriction(uint8 restrictionCode) + 95 : : public + 96 : : pure + 97 : : override(IERC1404) + 98 : : returns (string memory) + 99 : : { + 100 [ + ]: 2 : if (restrictionCode == CODE_MAX_TOTAL_SUPPLY_EXCEEDED) { + 101 : 1 : return TEXT_MAX_TOTAL_SUPPLY_EXCEEDED; + 102 : : } + 103 : 1 : return TEXT_CODE_NOT_FOUND; + 104 : : } + 105 : : + 106 : : /*////////////////////////////////////////////////////////////// + 107 : : ACCESS CONTROL + 108 : : //////////////////////////////////////////////////////////////*/ + 109 : : + 110 : 260 : modifier onlyMaxTotalSupplyManager() { + 111 : 260 : _authorizeMaxTotalSupplyManager(); + 112 : : _; + 113 : : } + 114 : : + 115 : : function _authorizeMaxTotalSupplyManager() internal view virtual; + 116 : : } diff --git a/doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.func-sort-c.html b/doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.func-sort-c.html index 9280236..fa20f29 100644 --- a/doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.func-sort-c.html +++ b/doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 13 @@ -73,39 +73,39 @@ 2 - RuleSanctionsListBase._transferredFrom + RuleSanctionsListBase._transferredFrom 3 - RuleSanctionsListBase.canReturnTransferRestrictionCode + RuleSanctionsListBase.canReturnTransferRestrictionCode 3 - RuleSanctionsListBase.clearSanctionListOracle + RuleSanctionsListBase.clearSanctionListOracle 3 - RuleSanctionsListBase.onlySanctionListManager + RuleSanctionsListBase.onlySanctionListManager 3 - RuleSanctionsListBase.messageForTransferRestriction + RuleSanctionsListBase.messageForTransferRestriction 4 - RuleSanctionsListBase._detectTransferRestrictionFrom + RuleSanctionsListBase._detectTransferRestrictionFrom 16 - RuleSanctionsListBase.setSanctionListOracle + RuleSanctionsListBase.setSanctionListOracle 17 - RuleSanctionsListBase._setSanctionListOracle + RuleSanctionsListBase._setSanctionListOracle 37 - RuleSanctionsListBase.transferred.0 + RuleSanctionsListBase.transferred.0 43 @@ -113,7 +113,7 @@ 46 - RuleSanctionsListBase._transferred + RuleSanctionsListBase._transferred 47 diff --git a/doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.func.html b/doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.func.html index 7fac67d..142069e 100644 --- a/doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.func.html +++ b/doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 13 @@ -73,27 +73,27 @@ 84 - RuleSanctionsListBase._detectTransferRestrictionFrom + RuleSanctionsListBase._detectTransferRestrictionFrom 16 - RuleSanctionsListBase._setSanctionListOracle + RuleSanctionsListBase._setSanctionListOracle 37 - RuleSanctionsListBase._transferred + RuleSanctionsListBase._transferred 47 - RuleSanctionsListBase._transferredFrom + RuleSanctionsListBase._transferredFrom 3 - RuleSanctionsListBase.canReturnTransferRestrictionCode + RuleSanctionsListBase.canReturnTransferRestrictionCode 3 - RuleSanctionsListBase.clearSanctionListOracle + RuleSanctionsListBase.clearSanctionListOracle 3 @@ -101,19 +101,19 @@ 46 - RuleSanctionsListBase.messageForTransferRestriction + RuleSanctionsListBase.messageForTransferRestriction 4 - RuleSanctionsListBase.onlySanctionListManager + RuleSanctionsListBase.onlySanctionListManager 3 - RuleSanctionsListBase.setSanctionListOracle + RuleSanctionsListBase.setSanctionListOracle 17 - RuleSanctionsListBase.transferred.0 + RuleSanctionsListBase.transferred.0 43 diff --git a/doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.gcov.html b/doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.gcov.html index aa0ff72..7ddbdd5 100644 --- a/doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.gcov.html +++ b/doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 13 @@ -96,121 +96,112 @@ 25 : : } 26 : : } 27 : : - 28 : 84 : function _detectTransferRestriction(address from, address to, uint256 /* value */) - 29 : : internal - 30 : : view - 31 : : override - 32 : : returns (uint8) - 33 : : { - 34 [ + ]: 84 : if (address(sanctionsList) != address(0)) { - 35 [ + + ]: 77 : if (sanctionsList.isSanctioned(from)) { - 36 : 10 : return CODE_ADDRESS_FROM_IS_SANCTIONED; - 37 [ + ]: 67 : } else if (sanctionsList.isSanctioned(to)) { - 38 : 12 : return CODE_ADDRESS_TO_IS_SANCTIONED; - 39 : : } - 40 : : } - 41 : 62 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - 42 : : } - 43 : : - 44 : 16 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value) - 45 : : internal - 46 : : view - 47 : : virtual - 48 : : override - 49 : : returns (uint8) - 50 : : { - 51 [ + ]: 16 : if (address(sanctionsList) != address(0)) { - 52 [ + ]: 15 : if (sanctionsList.isSanctioned(spender)) { - 53 : 6 : return CODE_ADDRESS_SPENDER_IS_SANCTIONED; - 54 : : } - 55 : 9 : return _detectTransferRestriction(from, to, value); - 56 : : } - 57 : 1 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - 58 : : } - 59 : : - 60 : 3 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override(IRule) returns (bool) { - 61 : 3 : return restrictionCode == CODE_ADDRESS_FROM_IS_SANCTIONED || restrictionCode == CODE_ADDRESS_TO_IS_SANCTIONED - 62 : 1 : || restrictionCode == CODE_ADDRESS_SPENDER_IS_SANCTIONED; - 63 : : } - 64 : : - 65 : 4 : function messageForTransferRestriction(uint8 restrictionCode) - 66 : : public - 67 : : pure - 68 : : override(IERC1404) - 69 : : returns (string memory) - 70 : : { - 71 [ + + ]: 4 : if (restrictionCode == CODE_ADDRESS_FROM_IS_SANCTIONED) { - 72 : 1 : return TEXT_ADDRESS_FROM_IS_SANCTIONED; - 73 [ + + ]: 3 : } else if (restrictionCode == CODE_ADDRESS_TO_IS_SANCTIONED) { - 74 : 1 : return TEXT_ADDRESS_TO_IS_SANCTIONED; - 75 [ + ]: 2 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_IS_SANCTIONED) { - 76 : 1 : return TEXT_ADDRESS_SPENDER_IS_SANCTIONED; - 77 : : } - 78 : 1 : return TEXT_CODE_NOT_FOUND; - 79 : : } - 80 : : - 81 : 17 : function setSanctionListOracle(ISanctionsList sanctionContractOracle_) public virtual onlySanctionListManager { - 82 [ + + ]: 15 : require(address(sanctionContractOracle_) != address(0), RuleSanctionsList_OracleAddressZeroNotAllowed()); - 83 : 14 : _setSanctionListOracle(sanctionContractOracle_); - 84 : : } - 85 : : - 86 : 3 : function clearSanctionListOracle() public virtual onlySanctionListManager { - 87 : 3 : _setSanctionListOracle(ISanctionsList(address(0))); + 28 : 84 : function _detectTransferRestriction( + 29 : : address from, + 30 : : address to, + 31 : : uint256 /* value */ + 32 : : ) + 33 : : internal + 34 : : view + 35 : : override + 36 : : returns (uint8) + 37 : : { + 38 [ + ]: 84 : if (address(sanctionsList) != address(0)) { + 39 [ + + ]: 77 : if (sanctionsList.isSanctioned(from)) { + 40 : 10 : return CODE_ADDRESS_FROM_IS_SANCTIONED; + 41 [ + ]: 67 : } else if (sanctionsList.isSanctioned(to)) { + 42 : 12 : return CODE_ADDRESS_TO_IS_SANCTIONED; + 43 : : } + 44 : : } + 45 : 62 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + 46 : : } + 47 : : + 48 : 16 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value) + 49 : : internal + 50 : : view + 51 : : virtual + 52 : : override + 53 : : returns (uint8) + 54 : : { + 55 [ + ]: 16 : if (address(sanctionsList) != address(0)) { + 56 [ + ]: 15 : if (sanctionsList.isSanctioned(spender)) { + 57 : 6 : return CODE_ADDRESS_SPENDER_IS_SANCTIONED; + 58 : : } + 59 : 9 : return _detectTransferRestriction(from, to, value); + 60 : : } + 61 : 1 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + 62 : : } + 63 : : + 64 : 3 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override(IRule) returns (bool) { + 65 : 3 : return restrictionCode == CODE_ADDRESS_FROM_IS_SANCTIONED || restrictionCode == CODE_ADDRESS_TO_IS_SANCTIONED + 66 : 1 : || restrictionCode == CODE_ADDRESS_SPENDER_IS_SANCTIONED; + 67 : : } + 68 : : + 69 : 4 : function messageForTransferRestriction(uint8 restrictionCode) + 70 : : public + 71 : : pure + 72 : : override(IERC1404) + 73 : : returns (string memory) + 74 : : { + 75 [ + + ]: 4 : if (restrictionCode == CODE_ADDRESS_FROM_IS_SANCTIONED) { + 76 : 1 : return TEXT_ADDRESS_FROM_IS_SANCTIONED; + 77 [ + + ]: 3 : } else if (restrictionCode == CODE_ADDRESS_TO_IS_SANCTIONED) { + 78 : 1 : return TEXT_ADDRESS_TO_IS_SANCTIONED; + 79 [ + ]: 2 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_IS_SANCTIONED) { + 80 : 1 : return TEXT_ADDRESS_SPENDER_IS_SANCTIONED; + 81 : : } + 82 : 1 : return TEXT_CODE_NOT_FOUND; + 83 : : } + 84 : : + 85 : 17 : function setSanctionListOracle(ISanctionsList sanctionContractOracle_) public virtual onlySanctionListManager { + 86 [ + + ]: 15 : require(address(sanctionContractOracle_) != address(0), RuleSanctionsList_OracleAddressZeroNotAllowed()); + 87 : 14 : _setSanctionListOracle(sanctionContractOracle_); 88 : : } 89 : : - 90 : 43 : function transferred(address from, address to, uint256 value) - 91 : : public - 92 : : view - 93 : : override(IERC3643IComplianceContract) - 94 : : { + 90 : 3 : function clearSanctionListOracle() public virtual onlySanctionListManager { + 91 : 3 : _setSanctionListOracle(ISanctionsList(address(0))); + 92 : : } + 93 : : + 94 : 43 : function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) { 95 : 43 : _transferred(from, to, value); 96 : : } 97 : : - 98 : 2 : function transferred(address spender, address from, address to, uint256 value) - 99 : : public - 100 : : view - 101 : : override(IRuleEngine) - 102 : : { - 103 : 2 : _transferredFrom(spender, from, to, value); - 104 : : } - 105 : : - 106 : 47 : function _transferred(address from, address to, uint256 value) internal view virtual override { - 107 : 47 : uint8 code = _detectTransferRestriction(from, to, value); - 108 [ + + ]: 47 : require( - 109 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), - 110 : : RuleSanctionsList_InvalidTransfer(address(this), from, to, value, code) - 111 : : ); - 112 : : } - 113 : : - 114 : 3 : function _transferredFrom(address spender, address from, address to, uint256 value) - 115 : : internal - 116 : : view - 117 : : virtual - 118 : : override - 119 : : { - 120 : 3 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); - 121 [ + + ]: 3 : require( - 122 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), - 123 : : RuleSanctionsList_InvalidTransferFrom(address(this), spender, from, to, value, code) - 124 : : ); - 125 : : } + 98 : 2 : function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) { + 99 : 2 : _transferredFrom(spender, from, to, value); + 100 : : } + 101 : : + 102 : 47 : function _transferred(address from, address to, uint256 value) internal view virtual override { + 103 : 47 : uint8 code = _detectTransferRestriction(from, to, value); + 104 [ + + ]: 47 : require( + 105 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), + 106 : : RuleSanctionsList_InvalidTransfer(address(this), from, to, value, code) + 107 : : ); + 108 : : } + 109 : : + 110 : 3 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override { + 111 : 3 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); + 112 [ + + ]: 3 : require( + 113 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK), + 114 : : RuleSanctionsList_InvalidTransferFrom(address(this), spender, from, to, value, code) + 115 : : ); + 116 : : } + 117 : : + 118 : 37 : function _setSanctionListOracle(ISanctionsList sanctionContractOracle_) internal virtual { + 119 : 37 : sanctionsList = sanctionContractOracle_; + 120 : 37 : emit SetSanctionListOracle(sanctionContractOracle_); + 121 : : } + 122 : : + 123 : : /*////////////////////////////////////////////////////////////// + 124 : : ACCESS CONTROL + 125 : : //////////////////////////////////////////////////////////////*/ 126 : : - 127 : 37 : function _setSanctionListOracle(ISanctionsList sanctionContractOracle_) internal virtual { - 128 : 37 : sanctionsList = sanctionContractOracle_; - 129 : 37 : emit SetSanctionListOracle(sanctionContractOracle_); + 127 : 3 : modifier onlySanctionListManager() { + 128 : 3 : _authorizeSanctionListManager(); + 129 : : _; 130 : : } 131 : : - 132 : : /*////////////////////////////////////////////////////////////// - 133 : : ACCESS CONTROL - 134 : : //////////////////////////////////////////////////////////////*/ - 135 : : - 136 : 3 : modifier onlySanctionListManager() { - 137 : 3 : _authorizeSanctionListManager(); - 138 : : _; - 139 : : } - 140 : : - 141 : : function _authorizeSanctionListManager() internal view virtual; - 142 : : } + 132 : : function _authorizeSanctionListManager() internal view virtual; + 133 : : } diff --git a/doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.func-sort-c.html b/doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.func-sort-c.html new file mode 100644 index 0000000..314e705 --- /dev/null +++ b/doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.func-sort-c.html @@ -0,0 +1,113 @@ + + + + + + + LCOV - lcov.info - abstract/base/RuleSpenderWhitelistBase.sol - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - abstract/base - RuleSpenderWhitelistBase.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:1919100.0 %
Date:2026-03-10 16:16:27Functions:88100.0 %
Branches:44100.0 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
RuleSpenderWhitelistBase.transferred.01
RuleSpenderWhitelistBase.canReturnTransferRestrictionCode2
RuleSpenderWhitelistBase.messageForTransferRestriction2
RuleSpenderWhitelistBase.transferred.12
RuleSpenderWhitelistBase._transferred3
RuleSpenderWhitelistBase._detectTransferRestriction4
RuleSpenderWhitelistBase._transferredFrom7
RuleSpenderWhitelistBase._detectTransferRestrictionFrom13
+
+
+ + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.func.html b/doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.func.html new file mode 100644 index 0000000..e20e522 --- /dev/null +++ b/doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.func.html @@ -0,0 +1,113 @@ + + + + + + + LCOV - lcov.info - abstract/base/RuleSpenderWhitelistBase.sol - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - abstract/base - RuleSpenderWhitelistBase.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:1919100.0 %
Date:2026-03-10 16:16:27Functions:88100.0 %
Branches:44100.0 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
RuleSpenderWhitelistBase._detectTransferRestriction4
RuleSpenderWhitelistBase._detectTransferRestrictionFrom13
RuleSpenderWhitelistBase._transferred3
RuleSpenderWhitelistBase._transferredFrom7
RuleSpenderWhitelistBase.canReturnTransferRestrictionCode2
RuleSpenderWhitelistBase.messageForTransferRestriction2
RuleSpenderWhitelistBase.transferred.01
RuleSpenderWhitelistBase.transferred.12
+
+
+ + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.gcov.html b/doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.gcov.html new file mode 100644 index 0000000..6f88cfd --- /dev/null +++ b/doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.gcov.html @@ -0,0 +1,157 @@ + + + + + + + LCOV - lcov.info - abstract/base/RuleSpenderWhitelistBase.sol + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - abstract/base - RuleSpenderWhitelistBase.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:1919100.0 %
Date:2026-03-10 16:16:27Functions:88100.0 %
Branches:44100.0 %
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : // SPDX-License-Identifier: MPL-2.0
+       2                 :            : pragma solidity ^0.8.20;
+       3                 :            : 
+       4                 :            : import {RuleAddressSet} from "../RuleAddressSet/RuleAddressSet.sol";
+       5                 :            : import {RuleNFTAdapter} from "../core/RuleNFTAdapter.sol";
+       6                 :            : import {RuleSpenderWhitelistInvariantStorage} from "../invariant/RuleSpenderWhitelistInvariantStorage.sol";
+       7                 :            : import {IERC1404, IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol";
+       8                 :            : import {IERC3643IComplianceContract} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol";
+       9                 :            : import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol";
+      10                 :            : 
+      11                 :            : /**
+      12                 :            :  * @title RuleSpenderWhitelistBase
+      13                 :            :  * @notice Restricts `transferFrom`-style flows to whitelisted spenders only.
+      14                 :            :  * @dev Direct transfers (`transferred(from,to,value)`) are intentionally no-op.
+      15                 :            :  */
+      16                 :            : abstract contract RuleSpenderWhitelistBase is RuleAddressSet, RuleNFTAdapter, RuleSpenderWhitelistInvariantStorage {
+      17                 :            :     constructor(address forwarderIrrevocable) RuleAddressSet(forwarderIrrevocable) {}
+      18                 :            : 
+      19                 :          4 :     function _detectTransferRestriction(address, address, uint256) internal pure virtual override returns (uint8) {
+      20                 :          4 :         return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+      21                 :            :     }
+      22                 :            : 
+      23                 :         13 :     function _detectTransferRestrictionFrom(address spender, address, address, uint256)
+      24                 :            :         internal
+      25                 :            :         view
+      26                 :            :         virtual
+      27                 :            :         override
+      28                 :            :         returns (uint8)
+      29                 :            :     {
+      30            [ + ]:         13 :         if (spender != address(0) && !_isAddressListed(spender)) {
+      31                 :          5 :             return CODE_ADDRESS_SPENDER_NOT_WHITELISTED;
+      32                 :            :         }
+      33                 :          8 :         return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+      34                 :            :     }
+      35                 :            : 
+      36                 :          2 :     function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool) {
+      37                 :          2 :         return restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED;
+      38                 :            :     }
+      39                 :            : 
+      40                 :          2 :     function messageForTransferRestriction(uint8 restrictionCode)
+      41                 :            :         public
+      42                 :            :         pure
+      43                 :            :         override(IERC1404)
+      44                 :            :         returns (string memory)
+      45                 :            :     {
+      46            [ + ]:          2 :         if (restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED) {
+      47                 :          1 :             return TEXT_ADDRESS_SPENDER_NOT_WHITELISTED;
+      48                 :            :         }
+      49                 :          1 :         return TEXT_CODE_NOT_FOUND;
+      50                 :            :     }
+      51                 :            : 
+      52                 :            :     /**
+      53                 :            :      * @dev Regular transfers are always accepted by this rule.
+      54                 :            :      */
+      55                 :          1 :     function transferred(address, address, uint256) public view override(IERC3643IComplianceContract) {}
+      56                 :            : 
+      57                 :          2 :     function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
+      58                 :          2 :         _transferredFrom(spender, from, to, value);
+      59                 :            :     }
+      60                 :            : 
+      61                 :          3 :     function _transferred(address, address, uint256) internal view virtual override {
+      62                 :            :         // no-op: regular transfers are intentionally ignored by this rule
+      63                 :            :     }
+      64                 :            : 
+      65                 :          7 :     function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override {
+      66                 :          7 :         uint8 code = _detectTransferRestrictionFrom(spender, from, to, value);
+      67         [ +  + ]:          7 :         require(
+      68                 :            :             code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
+      69                 :            :             RuleSpenderWhitelist_InvalidTransferFrom(address(this), spender, from, to, value, code)
+      70                 :            :         );
+      71                 :            :     }
+      72                 :            : }
+
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.func-sort-c.html b/doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.func-sort-c.html index 33acb11..7c9168d 100644 --- a/doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.func-sort-c.html +++ b/doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 8 @@ -69,36 +69,36 @@ Hit count Sort by hit count - RuleWhitelistBase._setCheckSpender + RuleWhitelistBase._setCheckSpender 2 - RuleWhitelistBase.isVerified + RuleWhitelistBase.isVerified 2 - RuleWhitelistBase.onlyCheckSpenderManager + RuleWhitelistBase.onlyCheckSpenderManager 3 - RuleWhitelistBase.setCheckSpender + RuleWhitelistBase.setCheckSpender 3 - RuleWhitelistBase._detectTransferRestrictionFrom + RuleWhitelistBase._detectTransferRestrictionFrom 18 - RuleWhitelistBase.supportsInterface + RuleWhitelistBase.supportsInterface 27 - RuleWhitelistBase._detectTransferRestriction - 51 + RuleWhitelistBase._detectTransferRestriction + 53 - RuleWhitelistBase.constructor - 157 + RuleWhitelistBase.constructor + 159
diff --git a/doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.func.html b/doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.func.html index d99a4bf..635f9f5 100644 --- a/doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.func.html +++ b/doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 8 @@ -69,35 +69,35 @@ Hit count Sort by hit count - RuleWhitelistBase._detectTransferRestriction - 51 + RuleWhitelistBase._detectTransferRestriction + 53 - RuleWhitelistBase._detectTransferRestrictionFrom + RuleWhitelistBase._detectTransferRestrictionFrom 18 - RuleWhitelistBase._setCheckSpender + RuleWhitelistBase._setCheckSpender 2 - RuleWhitelistBase.constructor - 157 + RuleWhitelistBase.constructor + 159 - RuleWhitelistBase.isVerified + RuleWhitelistBase.isVerified 2 - RuleWhitelistBase.onlyCheckSpenderManager + RuleWhitelistBase.onlyCheckSpenderManager 3 - RuleWhitelistBase.setCheckSpender + RuleWhitelistBase.setCheckSpender 3 - RuleWhitelistBase.supportsInterface + RuleWhitelistBase.supportsInterface 27 diff --git a/doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.gcov.html b/doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.gcov.html index cb753c6..d2383c6 100644 --- a/doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.gcov.html +++ b/doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 8 @@ -75,81 +75,83 @@ 4 : : import {RuleAddressSet} from "../RuleAddressSet/RuleAddressSet.sol"; 5 : : import {RuleWhitelistShared} from "../core/RuleWhitelistShared.sol"; 6 : : import {RuleTransferValidation} from "../core/RuleTransferValidation.sol"; - 7 : : import {IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol"; - 8 : : import {IIdentityRegistryVerified} from "../../../interfaces/IIdentityRegistry.sol"; - 9 : : - 10 : : /** - 11 : : * @title RuleWhitelistBase - 12 : : * @notice Core whitelist logic without access-control policy. - 13 : : */ - 14 : : abstract contract RuleWhitelistBase is RuleAddressSet, RuleWhitelistShared, IIdentityRegistryVerified { - 15 : 157 : constructor(address forwarderIrrevocable, bool checkSpender_) RuleAddressSet(forwarderIrrevocable) { - 16 : 157 : checkSpender = checkSpender_; - 17 : : } - 18 : : - 19 : 51 : function _detectTransferRestriction(address from, address to, uint256 /* value */ ) - 20 : : internal - 21 : : view - 22 : : virtual - 23 : : override - 24 : : returns (uint8) - 25 : : { - 26 [ + + ]: 51 : if (!isAddressListed(from)) { - 27 : 13 : return CODE_ADDRESS_FROM_NOT_WHITELISTED; - 28 [ + ]: 38 : } else if (!isAddressListed(to)) { - 29 : 10 : return CODE_ADDRESS_TO_NOT_WHITELISTED; - 30 : : } - 31 : 28 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - 32 : : } - 33 : : - 34 : 18 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value) - 35 : : internal - 36 : : view - 37 : : virtual - 38 : : override - 39 : : returns (uint8) - 40 : : { - 41 [ + ]: 18 : if (checkSpender && !isAddressListed(spender)) { - 42 : 8 : return CODE_ADDRESS_SPENDER_NOT_WHITELISTED; - 43 : : } - 44 : 10 : return _detectTransferRestriction(from, to, value); - 45 : : } - 46 : : - 47 : : - 48 : 2 : function isVerified(address targetAddress) - 49 : : public - 50 : : view - 51 : : virtual - 52 : : override(IIdentityRegistryVerified) - 53 : : returns (bool isListed) - 54 : : { - 55 : 2 : isListed = _isAddressListed(targetAddress); - 56 : : } - 57 : : - 58 : 3 : function setCheckSpender(bool value) public virtual onlyCheckSpenderManager { - 59 : 2 : _setCheckSpender(value); - 60 : 2 : emit CheckSpenderUpdated(value); - 61 : : } - 62 : : - 63 : 2 : function _setCheckSpender(bool value) internal virtual { - 64 : 2 : checkSpender = value; - 65 : : } - 66 : : - 67 : 27 : function supportsInterface(bytes4 interfaceId) public view virtual override(RuleTransferValidation) returns (bool) { - 68 : 27 : return RuleTransferValidation.supportsInterface(interfaceId); - 69 : : } - 70 : : - 71 : : /*////////////////////////////////////////////////////////////// - 72 : : ACCESS CONTROL - 73 : : //////////////////////////////////////////////////////////////*/ - 74 : : - 75 : 3 : modifier onlyCheckSpenderManager() { - 76 : 3 : _authorizeCheckSpenderManager(); - 77 : : _; - 78 : : } - 79 : : - 80 : : function _authorizeCheckSpenderManager() internal view virtual; - 81 : : } + 7 : : import {IIdentityRegistryVerified} from "../../../interfaces/IIdentityRegistry.sol"; + 8 : : + 9 : : /** + 10 : : * @title RuleWhitelistBase + 11 : : * @notice Core whitelist logic without access-control policy. + 12 : : */ + 13 : : abstract contract RuleWhitelistBase is RuleAddressSet, RuleWhitelistShared, IIdentityRegistryVerified { + 14 : 159 : constructor(address forwarderIrrevocable, bool checkSpender_) RuleAddressSet(forwarderIrrevocable) { + 15 : 159 : checkSpender = checkSpender_; + 16 : : } + 17 : : + 18 : 53 : function _detectTransferRestriction( + 19 : : address from, + 20 : : address to, + 21 : : uint256 /* value */ + 22 : : ) + 23 : : internal + 24 : : view + 25 : : virtual + 26 : : override + 27 : : returns (uint8) + 28 : : { + 29 [ + + ]: 53 : if (!isAddressListed(from)) { + 30 : 13 : return CODE_ADDRESS_FROM_NOT_WHITELISTED; + 31 [ + ]: 40 : } else if (!isAddressListed(to)) { + 32 : 10 : return CODE_ADDRESS_TO_NOT_WHITELISTED; + 33 : : } + 34 : 30 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + 35 : : } + 36 : : + 37 : 18 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value) + 38 : : internal + 39 : : view + 40 : : virtual + 41 : : override + 42 : : returns (uint8) + 43 : : { + 44 [ + ]: 18 : if (checkSpender && !isAddressListed(spender)) { + 45 : 8 : return CODE_ADDRESS_SPENDER_NOT_WHITELISTED; + 46 : : } + 47 : 10 : return _detectTransferRestriction(from, to, value); + 48 : : } + 49 : : + 50 : 2 : function isVerified(address targetAddress) + 51 : : public + 52 : : view + 53 : : virtual + 54 : : override(IIdentityRegistryVerified) + 55 : : returns (bool isListed) + 56 : : { + 57 : 2 : isListed = _isAddressListed(targetAddress); + 58 : : } + 59 : : + 60 : 3 : function setCheckSpender(bool value) public virtual onlyCheckSpenderManager { + 61 : 2 : _setCheckSpender(value); + 62 : 2 : emit CheckSpenderUpdated(value); + 63 : : } + 64 : : + 65 : 2 : function _setCheckSpender(bool value) internal virtual { + 66 : 2 : checkSpender = value; + 67 : : } + 68 : : + 69 : 27 : function supportsInterface(bytes4 interfaceId) public view virtual override(RuleTransferValidation) returns (bool) { + 70 : 27 : return RuleTransferValidation.supportsInterface(interfaceId); + 71 : : } + 72 : : + 73 : : /*////////////////////////////////////////////////////////////// + 74 : : ACCESS CONTROL + 75 : : //////////////////////////////////////////////////////////////*/ + 76 : : + 77 : 3 : modifier onlyCheckSpenderManager() { + 78 : 3 : _authorizeCheckSpenderManager(); + 79 : : _; + 80 : : } + 81 : : + 82 : : function _authorizeCheckSpenderManager() internal view virtual; + 83 : : } diff --git a/doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.func-sort-c.html b/doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.func-sort-c.html index 62a206a..d3a41dc 100644 --- a/doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.func-sort-c.html +++ b/doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 14 @@ -69,15 +69,15 @@ Hit count Sort by hit count - RuleWhitelistWrapperBase._transferred.1 + RuleWhitelistWrapperBase._transferred.1 1 - RuleWhitelistWrapperBase._msgData + RuleWhitelistWrapperBase._msgData 2 - RuleWhitelistWrapperBase._setCheckSpender + RuleWhitelistWrapperBase._setCheckSpender 3 @@ -85,15 +85,15 @@ 4 - RuleWhitelistWrapperBase.onlyCheckSpenderManager + RuleWhitelistWrapperBase.onlyCheckSpenderManager 4 - RuleWhitelistWrapperBase.setCheckSpender + RuleWhitelistWrapperBase.setCheckSpender 4 - RuleWhitelistWrapperBase._transferred.0 + RuleWhitelistWrapperBase._transferred.0 13 @@ -101,15 +101,15 @@ 20 - RuleWhitelistWrapperBase._detectTransferRestriction + RuleWhitelistWrapperBase._detectTransferRestriction 34 - RuleWhitelistWrapperBase.constructor + RuleWhitelistWrapperBase.constructor 44 - RuleWhitelistWrapperBase._detectTransferRestrictionForTargets + RuleWhitelistWrapperBase._detectTransferRestrictionForTargets 57 @@ -117,11 +117,11 @@ 62 - RuleWhitelistWrapperBase._msgSender + RuleWhitelistWrapperBase._msgSender 145 - RuleWhitelistWrapperBase._contextSuffixLength + RuleWhitelistWrapperBase._contextSuffixLength 147 diff --git a/doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.func.html b/doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.func.html index 643e123..31a047e 100644 --- a/doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.func.html +++ b/doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 14 @@ -69,15 +69,15 @@ Hit count Sort by hit count - RuleWhitelistWrapperBase._contextSuffixLength + RuleWhitelistWrapperBase._contextSuffixLength 147 - RuleWhitelistWrapperBase._detectTransferRestriction + RuleWhitelistWrapperBase._detectTransferRestriction 34 - RuleWhitelistWrapperBase._detectTransferRestrictionForTargets + RuleWhitelistWrapperBase._detectTransferRestrictionForTargets 57 @@ -85,27 +85,27 @@ 20 - RuleWhitelistWrapperBase._msgData + RuleWhitelistWrapperBase._msgData 2 - RuleWhitelistWrapperBase._msgSender + RuleWhitelistWrapperBase._msgSender 145 - RuleWhitelistWrapperBase._setCheckSpender + RuleWhitelistWrapperBase._setCheckSpender 3 - RuleWhitelistWrapperBase._transferred.0 + RuleWhitelistWrapperBase._transferred.0 13 - RuleWhitelistWrapperBase._transferred.1 + RuleWhitelistWrapperBase._transferred.1 1 - RuleWhitelistWrapperBase.constructor + RuleWhitelistWrapperBase.constructor 44 @@ -113,11 +113,11 @@ 4 - RuleWhitelistWrapperBase.onlyCheckSpenderManager + RuleWhitelistWrapperBase.onlyCheckSpenderManager 4 - RuleWhitelistWrapperBase.setCheckSpender + RuleWhitelistWrapperBase.setCheckSpender 4 diff --git a/doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.gcov.html b/doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.gcov.html index 2a4e421..25e8229 100644 --- a/doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.gcov.html +++ b/doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 14 @@ -82,43 +82,43 @@ 11 : : import {RuleTransferValidation} from "../core/RuleTransferValidation.sol"; 12 : : /* ==== RuleEngine === */ 13 : : import {RulesManagementModule} from "RuleEngine/modules/RulesManagementModule.sol"; - 14 : : /* ==== CMTAT === */ - 15 : : import {IERC1404, IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol"; - 16 : : /* ==== Interfaces === */ - 17 : : import {IAddressList} from "../../../interfaces/IAddressList.sol"; - 18 : : import {IIdentityRegistryVerified} from "../../../interfaces/IIdentityRegistry.sol"; - 19 : : - 20 : : /** - 21 : : * @title Wrapper to call several different whitelist rules (base) - 22 : : * @dev Child rules must implement {IAddressList}. - 23 : : */ - 24 : : abstract contract RuleWhitelistWrapperBase is - 25 : : RulesManagementModule, - 26 : : MetaTxModuleStandalone, - 27 : : RuleWhitelistShared, - 28 : : IIdentityRegistryVerified - 29 : : { - 30 : : /*////////////////////////////////////////////////////////////// - 31 : : CONSTRUCTOR - 32 : : //////////////////////////////////////////////////////////////*/ - 33 : : /** - 34 : : * @param forwarderIrrevocable Address of the forwarder, required for the gasless support - 35 : : */ - 36 : 44 : constructor(address forwarderIrrevocable, bool checkSpender_) - 37 : : MetaTxModuleStandalone(forwarderIrrevocable) - 38 : : { - 39 : 44 : checkSpender = checkSpender_; - 40 : : } - 41 : : - 42 : : /* ============ View Functions ============ */ - 43 : : /** - 44 : : * @notice Go through all the whitelist rules to know if a restriction exists on the transfer - 45 : : * @param from the origin address - 46 : : * @param to the destination address - 47 : : * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK - 48 : : * - 49 : : */ - 50 : 34 : function _detectTransferRestriction(address from, address to, uint256 /* value */) + 14 : : /* ==== Interfaces === */ + 15 : : import {IAddressList} from "../../../interfaces/IAddressList.sol"; + 16 : : import {IIdentityRegistryVerified} from "../../../interfaces/IIdentityRegistry.sol"; + 17 : : + 18 : : /** + 19 : : * @title Wrapper to call several different whitelist rules (base) + 20 : : * @dev Child rules must implement {IAddressList}. + 21 : : */ + 22 : : abstract contract RuleWhitelistWrapperBase is + 23 : : RulesManagementModule, + 24 : : MetaTxModuleStandalone, + 25 : : RuleWhitelistShared, + 26 : : IIdentityRegistryVerified + 27 : : { + 28 : : /*////////////////////////////////////////////////////////////// + 29 : : CONSTRUCTOR + 30 : : //////////////////////////////////////////////////////////////*/ + 31 : : /** + 32 : : * @param forwarderIrrevocable Address of the forwarder, required for the gasless support + 33 : : */ + 34 : 44 : constructor(address forwarderIrrevocable, bool checkSpender_) MetaTxModuleStandalone(forwarderIrrevocable) { + 35 : 44 : checkSpender = checkSpender_; + 36 : : } + 37 : : + 38 : : /* ============ View Functions ============ */ + 39 : : /** + 40 : : * @notice Go through all the whitelist rules to know if a restriction exists on the transfer + 41 : : * @param from the origin address + 42 : : * @param to the destination address + 43 : : * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK + 44 : : * + 45 : : */ + 46 : 34 : function _detectTransferRestriction( + 47 : : address from, + 48 : : address to, + 49 : : uint256 /* value */ + 50 : : ) 51 : : internal 52 : : view 53 : : virtual @@ -184,138 +184,132 @@ 113 : : * @notice Returns true if the address is listed in at least one child whitelist rule. 114 : : * @dev Delegates to the same child-rule scan used by transfer restriction checks. 115 : : */ - 116 : 4 : function isVerified(address targetAddress) - 117 : : public - 118 : : view - 119 : : virtual - 120 : : override(IIdentityRegistryVerified) - 121 : : returns (bool) - 122 : : { - 123 : 4 : address[] memory targets = new address[](1); - 124 : 4 : targets[0] = targetAddress; - 125 : 4 : bool[] memory result = _detectTransferRestrictionForTargets(targets); - 126 : 4 : return result[0]; - 127 : : } - 128 : : - 129 : : /* ============ Access control ============ */ - 130 : : - 131 : : /** - 132 : : * @notice Sets whether the rule should enforce spender-based checks. - 133 : : * @dev - 134 : : * - Restricted to holders of the manager role. - 135 : : * - Updates the internal `checkSpender` flag. - 136 : : * - Emits a {CheckSpenderUpdated} event. - 137 : : * @param value The new state of the `checkSpender` flag. - 138 : : */ - 139 : 4 : function setCheckSpender(bool value) public virtual onlyCheckSpenderManager { - 140 : 3 : _setCheckSpender(value); - 141 : 3 : emit CheckSpenderUpdated(value); - 142 : : } - 143 : : - 144 : 13 : function _transferred(address from, address to, uint256 value) - 145 : : internal - 146 : : view - 147 : : virtual - 148 : : override(RulesManagementModule, RuleWhitelistShared) - 149 : : { - 150 : 13 : RuleWhitelistShared._transferred(from, to, value); - 151 : : } - 152 : : - 153 : 1 : function _transferred(address spender, address from, address to, uint256 value) - 154 : : internal - 155 : : view - 156 : : virtual - 157 : : override(RulesManagementModule) - 158 : : { - 159 : 1 : RuleWhitelistShared._transferredFrom(spender, from, to, value); - 160 : : } - 161 : : - 162 : : /*////////////////////////////////////////////////////////////// - 163 : : INTERNAL/PRIVATE FUNCTIONS - 164 : : //////////////////////////////////////////////////////////////*/ - 165 : : - 166 : : /** - 167 : : * @notice Evaluates target addresses across all child rules. - 168 : : * @param targetAddress Addresses to validate (from/to[/spender]). - 169 : : * @return result Boolean array aligned with targetAddress indicating if each address is listed. - 170 : : */ - 171 : 57 : function _detectTransferRestrictionForTargets(address[] memory targetAddress) - 172 : : internal - 173 : : view - 174 : : virtual - 175 : : returns (bool[] memory) - 176 : : { - 177 : 57 : uint256 rulesLength = rulesCount(); - 178 : 57 : bool[] memory result = new bool[](targetAddress.length); - 179 : 57 : for (uint256 i = 0; i < rulesLength; ++i) { - 180 : : // Call the whitelist rules - 181 : : // Gas cost grows with the number of rules. Keep the wrapper list bounded. - 182 : 105 : bool[] memory isListed = IAddressList(rule(i)).areAddressesListed(targetAddress); - 183 : 105 : for (uint256 j = 0; j < targetAddress.length; ++j) { - 184 [ + ]: 85 : if (isListed[j]) { - 185 : 85 : result[j] = true; - 186 : : } - 187 : : } - 188 : : - 189 : : // Break early if all listed - 190 : 105 : bool allListed = true; - 191 : 105 : for (uint256 k = 0; k < result.length; ++k) { - 192 [ + ]: 201 : if (!result[k]) { - 193 : 81 : allListed = false; - 194 : 81 : break; - 195 : : } - 196 : : } - 197 [ + ]: 24 : if (allListed) { - 198 : 24 : break; - 199 : : } - 200 : : } - 201 : 57 : return result; - 202 : : } - 203 : : - 204 : : /** - 205 : : * @notice Internal helper to update the `checkSpender` flag. - 206 : : * @param value New flag value. - 207 : : */ - 208 : 3 : function _setCheckSpender(bool value) internal virtual { - 209 : 3 : checkSpender = value; - 210 : : } - 211 : : - 212 : : /*////////////////////////////////////////////////////////////// - 213 : : ACCESS CONTROL - 214 : : //////////////////////////////////////////////////////////////*/ - 215 : : - 216 : 4 : modifier onlyCheckSpenderManager() { - 217 : 4 : _authorizeCheckSpenderManager(); - 218 : : _; - 219 : : } + 116 : 4 : function isVerified(address targetAddress) public view virtual override(IIdentityRegistryVerified) returns (bool) { + 117 : 4 : address[] memory targets = new address[](1); + 118 : 4 : targets[0] = targetAddress; + 119 : 4 : bool[] memory result = _detectTransferRestrictionForTargets(targets); + 120 : 4 : return result[0]; + 121 : : } + 122 : : + 123 : : /* ============ Access control ============ */ + 124 : : + 125 : : /** + 126 : : * @notice Sets whether the rule should enforce spender-based checks. + 127 : : * @dev + 128 : : * - Restricted to holders of the manager role. + 129 : : * - Updates the internal `checkSpender` flag. + 130 : : * - Emits a {CheckSpenderUpdated} event. + 131 : : * @param value The new state of the `checkSpender` flag. + 132 : : */ + 133 : 4 : function setCheckSpender(bool value) public virtual onlyCheckSpenderManager { + 134 : 3 : _setCheckSpender(value); + 135 : 3 : emit CheckSpenderUpdated(value); + 136 : : } + 137 : : + 138 : 13 : function _transferred(address from, address to, uint256 value) + 139 : : internal + 140 : : view + 141 : : virtual + 142 : : override(RulesManagementModule, RuleWhitelistShared) + 143 : : { + 144 : 13 : RuleWhitelistShared._transferred(from, to, value); + 145 : : } + 146 : : + 147 : 1 : function _transferred(address spender, address from, address to, uint256 value) + 148 : : internal + 149 : : view + 150 : : virtual + 151 : : override(RulesManagementModule) + 152 : : { + 153 : 1 : RuleWhitelistShared._transferredFrom(spender, from, to, value); + 154 : : } + 155 : : + 156 : : /*////////////////////////////////////////////////////////////// + 157 : : INTERNAL/PRIVATE FUNCTIONS + 158 : : //////////////////////////////////////////////////////////////*/ + 159 : : + 160 : : /** + 161 : : * @notice Evaluates target addresses across all child rules. + 162 : : * @param targetAddress Addresses to validate (from/to[/spender]). + 163 : : * @return result Boolean array aligned with targetAddress indicating if each address is listed. + 164 : : */ + 165 : 57 : function _detectTransferRestrictionForTargets(address[] memory targetAddress) + 166 : : internal + 167 : : view + 168 : : virtual + 169 : : returns (bool[] memory) + 170 : : { + 171 : 57 : uint256 rulesLength = rulesCount(); + 172 : 57 : bool[] memory result = new bool[](targetAddress.length); + 173 : 57 : for (uint256 i = 0; i < rulesLength; ++i) { + 174 : : // Call the whitelist rules + 175 : : // Gas cost grows with the number of rules. Keep the wrapper list bounded. + 176 : 105 : bool[] memory isListed = IAddressList(rule(i)).areAddressesListed(targetAddress); + 177 : 105 : for (uint256 j = 0; j < targetAddress.length; ++j) { + 178 [ + ]: 85 : if (isListed[j]) { + 179 : 85 : result[j] = true; + 180 : : } + 181 : : } + 182 : : + 183 : : // Break early if all listed + 184 : 105 : bool allListed = true; + 185 : 105 : for (uint256 k = 0; k < result.length; ++k) { + 186 [ + ]: 201 : if (!result[k]) { + 187 : 81 : allListed = false; + 188 : 81 : break; + 189 : : } + 190 : : } + 191 [ + ]: 24 : if (allListed) { + 192 : 24 : break; + 193 : : } + 194 : : } + 195 : 57 : return result; + 196 : : } + 197 : : + 198 : : /** + 199 : : * @notice Internal helper to update the `checkSpender` flag. + 200 : : * @param value New flag value. + 201 : : */ + 202 : 3 : function _setCheckSpender(bool value) internal virtual { + 203 : 3 : checkSpender = value; + 204 : : } + 205 : : + 206 : : /*////////////////////////////////////////////////////////////// + 207 : : ACCESS CONTROL + 208 : : //////////////////////////////////////////////////////////////*/ + 209 : : + 210 : 4 : modifier onlyCheckSpenderManager() { + 211 : 4 : _authorizeCheckSpenderManager(); + 212 : : _; + 213 : : } + 214 : : + 215 : : function _authorizeCheckSpenderManager() internal virtual; + 216 : : + 217 : : /*////////////////////////////////////////////////////////////// + 218 : : ERC-2771 + 219 : : //////////////////////////////////////////////////////////////*/ 220 : : - 221 : : function _authorizeCheckSpenderManager() internal virtual; - 222 : : - 223 : : /*////////////////////////////////////////////////////////////// - 224 : : ERC-2771 - 225 : : //////////////////////////////////////////////////////////////*/ - 226 : : - 227 : : /** - 228 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule - 229 : : */ - 230 : 145 : function _msgSender() internal view virtual override(ERC2771Context, Context) returns (address sender) { - 231 : 145 : return ERC2771Context._msgSender(); - 232 : : } - 233 : : - 234 : : /** - 235 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule - 236 : : */ - 237 : 2 : function _msgData() internal view virtual override(ERC2771Context, Context) returns (bytes calldata) { - 238 : 2 : return ERC2771Context._msgData(); - 239 : : } - 240 : : - 241 : : /** - 242 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule - 243 : : */ - 244 : 147 : function _contextSuffixLength() internal view virtual override(ERC2771Context, Context) returns (uint256) { - 245 : 147 : return ERC2771Context._contextSuffixLength(); - 246 : : } - 247 : : } + 221 : : /** + 222 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule + 223 : : */ + 224 : 145 : function _msgSender() internal view virtual override(ERC2771Context, Context) returns (address sender) { + 225 : 145 : return ERC2771Context._msgSender(); + 226 : : } + 227 : : + 228 : : /** + 229 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule + 230 : : */ + 231 : 2 : function _msgData() internal view virtual override(ERC2771Context, Context) returns (bytes calldata) { + 232 : 2 : return ERC2771Context._msgData(); + 233 : : } + 234 : : + 235 : : /** + 236 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule + 237 : : */ + 238 : 147 : function _contextSuffixLength() internal view virtual override(ERC2771Context, Context) returns (uint256) { + 239 : 147 : return ERC2771Context._contextSuffixLength(); + 240 : : } + 241 : : } diff --git a/doc/coverage/coverage/abstract/base/index-sort-b.html b/doc/coverage/coverage/abstract/base/index-sort-b.html index c0dd6a1..52ef854 100644 --- a/doc/coverage/coverage/abstract/base/index-sort-b.html +++ b/doc/coverage/coverage/abstract/base/index-sort-b.html @@ -31,17 +31,17 @@ lcov.info Lines: - 360 - 360 + 378 + 378 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: - 101 - 101 + 109 + 109 100.0 % @@ -49,8 +49,8 @@ Branches: - 105 - 105 + 109 + 109 100.0 % @@ -81,6 +81,18 @@ Functions Sort by function coverage Branches Sort by branch coverage + + RuleSpenderWhitelistBase.sol + +
100.0%
+ + 100.0 % + 19 / 19 + 100.0 % + 8 / 8 + 100.0 % + 4 / 4 + RuleWhitelistBase.sol @@ -159,7 +171,7 @@
100.0%
100.0 % - 102 / 102 + 101 / 101 100.0 % 33 / 33 100.0 % diff --git a/doc/coverage/coverage/abstract/base/index-sort-f.html b/doc/coverage/coverage/abstract/base/index-sort-f.html index fd1f168..8838841 100644 --- a/doc/coverage/coverage/abstract/base/index-sort-f.html +++ b/doc/coverage/coverage/abstract/base/index-sort-f.html @@ -31,17 +31,17 @@ lcov.info Lines: - 360 - 360 + 378 + 378 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: - 101 - 101 + 109 + 109 100.0 % @@ -49,8 +49,8 @@ Branches: - 105 - 105 + 109 + 109 100.0 % @@ -81,6 +81,18 @@ Functions Sort by function coverage Branches Sort by branch coverage + + RuleSpenderWhitelistBase.sol + +
100.0%
+ + 100.0 % + 19 / 19 + 100.0 % + 8 / 8 + 100.0 % + 4 / 4 + RuleWhitelistBase.sol @@ -106,28 +118,28 @@ 14 / 14 - RuleIdentityRegistryBase.sol + RuleMaxTotalSupplyBase.sol
100.0%
100.0 % - 51 / 51 + 37 / 37 100.0 % 12 / 12 100.0 % - 19 / 19 + 11 / 11 - RuleMaxTotalSupplyBase.sol + RuleIdentityRegistryBase.sol
100.0%
100.0 % - 37 / 37 + 51 / 51 100.0 % 12 / 12 100.0 % - 11 / 11 + 19 / 19 RuleSanctionsListBase.sol @@ -159,7 +171,7 @@
100.0%
100.0 % - 102 / 102 + 101 / 101 100.0 % 33 / 33 100.0 % diff --git a/doc/coverage/coverage/abstract/base/index-sort-l.html b/doc/coverage/coverage/abstract/base/index-sort-l.html index 10250aa..30c4f5a 100644 --- a/doc/coverage/coverage/abstract/base/index-sort-l.html +++ b/doc/coverage/coverage/abstract/base/index-sort-l.html @@ -31,17 +31,17 @@ lcov.info Lines: - 360 - 360 + 378 + 378 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: - 101 - 101 + 109 + 109 100.0 % @@ -49,8 +49,8 @@ Branches: - 105 - 105 + 109 + 109 100.0 % @@ -81,6 +81,18 @@ Functions Sort by function coverage Branches Sort by branch coverage + + RuleSpenderWhitelistBase.sol + +
100.0%
+ + 100.0 % + 19 / 19 + 100.0 % + 8 / 8 + 100.0 % + 4 / 4 + RuleWhitelistBase.sol @@ -159,7 +171,7 @@
100.0%
100.0 % - 102 / 102 + 101 / 101 100.0 % 33 / 33 100.0 % diff --git a/doc/coverage/coverage/abstract/base/index.html b/doc/coverage/coverage/abstract/base/index.html index a56fb4a..85dc2b0 100644 --- a/doc/coverage/coverage/abstract/base/index.html +++ b/doc/coverage/coverage/abstract/base/index.html @@ -31,17 +31,17 @@ lcov.info Lines: - 360 - 360 + 378 + 378 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: - 101 - 101 + 109 + 109 100.0 % @@ -49,8 +49,8 @@ Branches: - 105 - 105 + 109 + 109 100.0 % @@ -99,7 +99,7 @@
100.0%
100.0 % - 102 / 102 + 101 / 101 100.0 % 33 / 33 100.0 % @@ -141,6 +141,18 @@ 100.0 % 18 / 18 + + RuleSpenderWhitelistBase.sol + +
100.0%
+ + 100.0 % + 19 / 19 + 100.0 % + 8 / 8 + 100.0 % + 4 / 4 + RuleWhitelistBase.sol diff --git a/doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.func-sort-c.html b/doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.func-sort-c.html index 2a2a676..261668b 100644 --- a/doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.func-sort-c.html +++ b/doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 8 @@ -69,36 +69,36 @@ Hit count Sort by hit count - RuleNFTAdapter.transferred.2 - 2 + RuleNFTAdapter.transferred.2 + 6 - RuleNFTAdapter.transferred.3 - 2 + RuleNFTAdapter.transferred.3 + 6 - RuleNFTAdapter.transferred.1 - 8 + RuleNFTAdapter.transferred.1 + 9 - RuleNFTAdapter.canTransferFrom - 10 + RuleNFTAdapter.canTransferFrom + 11 - RuleNFTAdapter.detectTransferRestrictionFrom - 12 - - - RuleNFTAdapter.transferred.0 + RuleNFTAdapter.detectTransferRestrictionFrom 13 - RuleNFTAdapter.canTransfer + RuleNFTAdapter.transferred.0 14 - RuleNFTAdapter.detectTransferRestriction - 16 + RuleNFTAdapter.canTransfer + 15 + + + RuleNFTAdapter.detectTransferRestriction + 17
diff --git a/doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.func.html b/doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.func.html index 0ee21a8..b4334cd 100644 --- a/doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.func.html +++ b/doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 8 @@ -69,36 +69,36 @@ Hit count Sort by hit count - RuleNFTAdapter.canTransfer - 14 + RuleNFTAdapter.canTransfer + 15 - RuleNFTAdapter.canTransferFrom - 10 + RuleNFTAdapter.canTransferFrom + 11 - RuleNFTAdapter.detectTransferRestriction - 16 + RuleNFTAdapter.detectTransferRestriction + 17 - RuleNFTAdapter.detectTransferRestrictionFrom - 12 + RuleNFTAdapter.detectTransferRestrictionFrom + 13 - RuleNFTAdapter.transferred.0 - 13 + RuleNFTAdapter.transferred.0 + 14 - RuleNFTAdapter.transferred.1 - 8 + RuleNFTAdapter.transferred.1 + 9 - RuleNFTAdapter.transferred.2 - 2 + RuleNFTAdapter.transferred.2 + 6 - RuleNFTAdapter.transferred.3 - 2 + RuleNFTAdapter.transferred.3 + 6
diff --git a/doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.gcov.html b/doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.gcov.html index ea62082..5934b99 100644 --- a/doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.gcov.html +++ b/doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 8 @@ -88,119 +88,151 @@ 17 : : * @dev Delegates tokenId overloads to RuleTransferValidation's internal hooks. 18 : : */ 19 : : abstract contract RuleNFTAdapter is RuleTransferValidation, IERC7943NonFungibleComplianceExtend, ITransferContext { - 20 : : bytes4 internal constant TRANSFERRED_SELECTOR_ERC3643 = - 21 : : IERC3643IComplianceContract.transferred.selector; - 22 : : bytes4 internal constant TRANSFERRED_SELECTOR_RULE_ENGINE = - 23 : : IRuleEngine.transferred.selector; - 24 : : bytes4 internal constant TRANSFERRED_SELECTOR_ERC7943 = - 25 : : bytes4(keccak256("transferred(address,address,uint256,uint256)")); - 26 : : bytes4 internal constant TRANSFERRED_SELECTOR_ERC7943_FROM = - 27 : : bytes4(keccak256("transferred(address,address,address,uint256,uint256)")); - 28 : : /** - 29 : : * @notice Internal hook for post-transfer validation or state updates. - 30 : : */ - 31 : : function _transferred(address from, address to, uint256 value) internal virtual; - 32 : : - 33 : : /** - 34 : : * @notice Internal hook for post-transfer validation or state updates (spender-aware). - 35 : : */ - 36 : : function _transferredFrom(address spender, address from, address to, uint256 value) internal virtual; - 37 : : /** - 38 : : * @inheritdoc IERC7943NonFungibleComplianceExtend - 39 : : */ - 40 : 16 : function detectTransferRestriction(address from, address to, uint256 /* tokenId */, uint256 value) - 41 : : public - 42 : : view - 43 : : virtual - 44 : : override(IERC7943NonFungibleComplianceExtend) - 45 : : returns (uint8) - 46 : : { - 47 : 16 : return _detectTransferRestriction(from, to, value); - 48 : : } - 49 : : - 50 : : /** - 51 : : * @inheritdoc IERC7943NonFungibleComplianceExtend - 52 : : */ - 53 : 12 : function detectTransferRestrictionFrom( - 54 : : address spender, - 55 : : address from, - 56 : : address to, - 57 : : uint256 /* tokenId */, - 58 : : uint256 value - 59 : : ) public view virtual override(IERC7943NonFungibleComplianceExtend) returns (uint8) { - 60 : 12 : return _detectTransferRestrictionFrom(spender, from, to, value); - 61 : : } - 62 : : - 63 : : /** - 64 : : * @inheritdoc IERC7943NonFungibleCompliance - 65 : : */ - 66 : 14 : function canTransfer(address from, address to, uint256 /* tokenId */, uint256 amount) - 67 : : public - 68 : : view - 69 : : override(IERC7943NonFungibleCompliance) - 70 : : returns (bool) - 71 : : { - 72 : 14 : return _detectTransferRestriction(from, to, amount) == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - 73 : : } - 74 : : - 75 : : /** - 76 : : * @inheritdoc IERC7943NonFungibleComplianceExtend - 77 : : */ - 78 : 10 : function canTransferFrom(address spender, address from, address to, uint256 /* tokenId */, uint256 value) + 20 : : bytes4 internal constant TRANSFERRED_SELECTOR_ERC3643 = IERC3643IComplianceContract.transferred.selector; + 21 : : bytes4 internal constant TRANSFERRED_SELECTOR_RULE_ENGINE = IRuleEngine.transferred.selector; + 22 : : bytes4 internal constant TRANSFERRED_SELECTOR_ERC7943 = + 23 : : bytes4(keccak256("transferred(address,address,uint256,uint256)")); + 24 : : bytes4 internal constant TRANSFERRED_SELECTOR_ERC7943_FROM = + 25 : : bytes4(keccak256("transferred(address,address,address,uint256,uint256)")); + 26 : : /** + 27 : : * @notice Internal hook for post-transfer validation or state updates. + 28 : : */ + 29 : : function _transferred(address from, address to, uint256 value) internal virtual; + 30 : : + 31 : : /** + 32 : : * @notice Internal hook for post-transfer validation or state updates (spender-aware). + 33 : : */ + 34 : : function _transferredFrom(address spender, address from, address to, uint256 value) internal virtual; + 35 : : + 36 : : /** + 37 : : * @inheritdoc IERC7943NonFungibleComplianceExtend + 38 : : */ + 39 : 17 : function detectTransferRestriction( + 40 : : address from, + 41 : : address to, + 42 : : uint256, + 43 : : /* tokenId */ + 44 : : uint256 value + 45 : : ) + 46 : : public + 47 : : view + 48 : : virtual + 49 : : override(IERC7943NonFungibleComplianceExtend) + 50 : : returns (uint8) + 51 : : { + 52 : 17 : return _detectTransferRestriction(from, to, value); + 53 : : } + 54 : : + 55 : : /** + 56 : : * @inheritdoc IERC7943NonFungibleComplianceExtend + 57 : : */ + 58 : 13 : function detectTransferRestrictionFrom( + 59 : : address spender, + 60 : : address from, + 61 : : address to, + 62 : : uint256, + 63 : : /* tokenId */ + 64 : : uint256 value + 65 : : ) public view virtual override(IERC7943NonFungibleComplianceExtend) returns (uint8) { + 66 : 13 : return _detectTransferRestrictionFrom(spender, from, to, value); + 67 : : } + 68 : : + 69 : : /** + 70 : : * @inheritdoc IERC7943NonFungibleCompliance + 71 : : */ + 72 : 15 : function canTransfer( + 73 : : address from, + 74 : : address to, + 75 : : uint256, + 76 : : /* tokenId */ + 77 : : uint256 amount + 78 : : ) 79 : : public 80 : : view - 81 : : virtual - 82 : : override(IERC7943NonFungibleComplianceExtend) - 83 : : returns (bool) - 84 : : { - 85 : 10 : return _detectTransferRestrictionFrom(spender, from, to, value) - 86 : : == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - 87 : : } - 88 : : - 89 : : /** - 90 : : * @inheritdoc IERC7943NonFungibleComplianceExtend - 91 : : */ - 92 : 13 : function transferred(address from, address to, uint256 /* tokenId */, uint256 value) - 93 : : public - 94 : : virtual - 95 : : override(IERC7943NonFungibleComplianceExtend) - 96 : : { - 97 : 13 : _transferred(from, to, value); - 98 : : } - 99 : : - 100 : : /** - 101 : : * @inheritdoc IERC7943NonFungibleComplianceExtend - 102 : : */ - 103 : 8 : function transferred(address spender, address from, address to, uint256 /* tokenId */, uint256 value) - 104 : : public - 105 : : virtual - 106 : : override(IERC7943NonFungibleComplianceExtend) - 107 : : { - 108 : 8 : _transferredFrom(spender, from, to, value); - 109 : : } - 110 : : - 111 : : /** - 112 : : * @inheritdoc ITransferContext - 113 : : */ - 114 : 2 : function transferred(MultiTokenTransferContext calldata ctx) external virtual override { - 115 [ + + ]: 2 : if (ctx.sender != address(0)) { - 116 : 1 : _transferredFrom(ctx.sender, ctx.from, ctx.to, ctx.value); - 117 : : } else { - 118 : 1 : _transferred(ctx.from, ctx.to, ctx.value); - 119 : : } - 120 : : } - 121 : : - 122 : : /** - 123 : : * @inheritdoc ITransferContext - 124 : : */ - 125 : 2 : function transferred(FungibleTransferContext calldata ctx) external virtual override { - 126 [ + + ]: 2 : if (ctx.sender != address(0)) { - 127 : 1 : _transferredFrom(ctx.sender, ctx.from, ctx.to, ctx.value); - 128 : : } else { - 129 : 1 : _transferred(ctx.from, ctx.to, ctx.value); - 130 : : } - 131 : : } - 132 : : } + 81 : : override(IERC7943NonFungibleCompliance) + 82 : : returns (bool) + 83 : : { + 84 : 15 : return _detectTransferRestriction(from, to, amount) == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 85 : : } + 86 : : + 87 : : /** + 88 : : * @inheritdoc IERC7943NonFungibleComplianceExtend + 89 : : */ + 90 : 11 : function canTransferFrom( + 91 : : address spender, + 92 : : address from, + 93 : : address to, + 94 : : uint256, + 95 : : /* tokenId */ + 96 : : uint256 value + 97 : : ) + 98 : : public + 99 : : view + 100 : : virtual + 101 : : override(IERC7943NonFungibleComplianceExtend) + 102 : : returns (bool) + 103 : : { + 104 : 11 : return _detectTransferRestrictionFrom(spender, from, to, value) + 105 : : == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 106 : : } + 107 : : + 108 : : /** + 109 : : * @inheritdoc IERC7943NonFungibleComplianceExtend + 110 : : */ + 111 : 14 : function transferred( + 112 : : address from, + 113 : : address to, + 114 : : uint256, + 115 : : /* tokenId */ + 116 : : uint256 value + 117 : : ) + 118 : : public + 119 : : virtual + 120 : : override(IERC7943NonFungibleComplianceExtend) + 121 : : { + 122 : 14 : _transferred(from, to, value); + 123 : : } + 124 : : + 125 : : /** + 126 : : * @inheritdoc IERC7943NonFungibleComplianceExtend + 127 : : */ + 128 : 9 : function transferred( + 129 : : address spender, + 130 : : address from, + 131 : : address to, + 132 : : uint256, + 133 : : /* tokenId */ + 134 : : uint256 value + 135 : : ) + 136 : : public + 137 : : virtual + 138 : : override(IERC7943NonFungibleComplianceExtend) + 139 : : { + 140 : 9 : _transferredFrom(spender, from, to, value); + 141 : : } + 142 : : + 143 : : /** + 144 : : * @inheritdoc ITransferContext + 145 : : */ + 146 : 6 : function transferred(MultiTokenTransferContext calldata ctx) external virtual override { + 147 [ + + ]: 6 : if (ctx.sender != address(0) && ctx.sender != ctx.from) { + 148 : 3 : _transferredFrom(ctx.sender, ctx.from, ctx.to, ctx.value); + 149 : : } else { + 150 : 3 : _transferred(ctx.from, ctx.to, ctx.value); + 151 : : } + 152 : : } + 153 : : + 154 : : /** + 155 : : * @inheritdoc ITransferContext + 156 : : */ + 157 : 6 : function transferred(FungibleTransferContext calldata ctx) external virtual override { + 158 [ + + ]: 6 : if (ctx.sender != address(0) && ctx.sender != ctx.from) { + 159 : 3 : _transferredFrom(ctx.sender, ctx.from, ctx.to, ctx.value); + 160 : : } else { + 161 : 3 : _transferred(ctx.from, ctx.to, ctx.value); + 162 : : } + 163 : : } + 164 : : } diff --git a/doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.func-sort-c.html b/doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.func-sort-c.html index 13a68b1..ec2abb0 100644 --- a/doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.func-sort-c.html +++ b/doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 5 @@ -69,24 +69,24 @@ Hit count Sort by hit count - RuleTransferValidation.canTransferFrom - 12 + RuleTransferValidation.canTransferFrom + 14 - RuleTransferValidation.canTransfer - 20 + RuleTransferValidation.canTransfer + 21 - RuleTransferValidation.detectTransferRestrictionFrom - 36 + RuleTransferValidation.detectTransferRestrictionFrom + 38 - RuleTransferValidation.supportsInterface - 195 + RuleTransferValidation.supportsInterface + 196 - RuleTransferValidation.detectTransferRestriction - 348 + RuleTransferValidation.detectTransferRestriction + 349
diff --git a/doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.func.html b/doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.func.html index 91fe5a9..d272ef1 100644 --- a/doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.func.html +++ b/doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 5 @@ -69,24 +69,24 @@ Hit count Sort by hit count - RuleTransferValidation.canTransfer - 20 + RuleTransferValidation.canTransfer + 21 - RuleTransferValidation.canTransferFrom - 12 + RuleTransferValidation.canTransferFrom + 14 - RuleTransferValidation.detectTransferRestriction - 348 + RuleTransferValidation.detectTransferRestriction + 349 - RuleTransferValidation.detectTransferRestrictionFrom - 36 + RuleTransferValidation.detectTransferRestrictionFrom + 38 - RuleTransferValidation.supportsInterface - 195 + RuleTransferValidation.supportsInterface + 196
diff --git a/doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.gcov.html b/doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.gcov.html index 67c4f57..7d4c05a 100644 --- a/doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.gcov.html +++ b/doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 5 @@ -83,95 +83,101 @@ 12 : : /* ==== Modules === */ 13 : : import {VersionModule} from "../../../../modules/VersionModule.sol"; 14 : : - 15 : : abstract contract RuleTransferValidation is VersionModule, IERC1404Extend, IERC3643ComplianceRead, IERC7551Compliance, IRule { - 16 : : /** - 17 : : * @notice Internal transfer restriction check. - 18 : : * @param from the origin address - 19 : : * @param to the destination address - 20 : : * @param value amount to transfer - 21 : : * @return restrictionCode The restriction code for this rule. - 22 : : */ - 23 : : function _detectTransferRestriction(address from, address to, uint256 value) - 24 : : internal - 25 : : view - 26 : : virtual - 27 : : returns (uint8 restrictionCode); - 28 : : - 29 : : /** - 30 : : * @notice Internal transfer restriction check for spender-initiated transfers. - 31 : : * @param spender the caller executing the transfer - 32 : : * @param from the origin address - 33 : : * @param to the destination address - 34 : : * @param value amount to transfer - 35 : : * @return restrictionCode The restriction code for this rule. - 36 : : */ - 37 : : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value) - 38 : : internal - 39 : : view - 40 : : virtual - 41 : : returns (uint8 restrictionCode); - 42 : : - 43 : : /** - 44 : : * @inheritdoc IERC1404 - 45 : : */ - 46 : 348 : function detectTransferRestriction(address from, address to, uint256 value) - 47 : : public - 48 : : view - 49 : : virtual - 50 : : override(IERC1404) - 51 : : returns (uint8) - 52 : : { - 53 : 348 : return _detectTransferRestriction(from, to, value); - 54 : : } - 55 : : - 56 : : /** - 57 : : * @inheritdoc IERC1404Extend - 58 : : */ - 59 : 36 : function detectTransferRestrictionFrom(address spender, address from, address to, uint256 value) - 60 : : public - 61 : : view - 62 : : virtual - 63 : : override(IERC1404Extend) - 64 : : returns (uint8) - 65 : : { - 66 : 36 : return _detectTransferRestrictionFrom(spender, from, to, value); - 67 : : } - 68 : : - 69 : : /** - 70 : : * @notice Validate a transfer - 71 : : * @param from the origin address - 72 : : * @param to the destination address - 73 : : * @param amount to transfer - 74 : : * @return isValid => true if the transfer is valid, false otherwise - 75 : : * - 76 : : */ - 77 : 20 : function canTransfer(address from, address to, uint256 amount) - 78 : : public - 79 : : view - 80 : : override(IERC3643ComplianceRead) - 81 : : returns (bool isValid) - 82 : : { - 83 : 20 : return _detectTransferRestriction(from, to, amount) == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - 84 : : } - 85 : : - 86 : : /** - 87 : : * @inheritdoc IERC7551Compliance - 88 : : */ - 89 : 12 : function canTransferFrom(address spender, address from, address to, uint256 value) - 90 : : public - 91 : : view - 92 : : virtual - 93 : : override(IERC7551Compliance) - 94 : : returns (bool) - 95 : : { - 96 : 12 : return _detectTransferRestrictionFrom(spender, from, to, value) - 97 : : == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - 98 : : } - 99 : : - 100 : 195 : function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { - 101 : 195 : return interfaceId == type(IRule).interfaceId || interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID; - 102 : : } - 103 : : } + 15 : : abstract contract RuleTransferValidation is + 16 : : VersionModule, + 17 : : IERC1404Extend, + 18 : : IERC3643ComplianceRead, + 19 : : IERC7551Compliance, + 20 : : IRule + 21 : : { + 22 : : /** + 23 : : * @notice Internal transfer restriction check. + 24 : : * @param from the origin address + 25 : : * @param to the destination address + 26 : : * @param value amount to transfer + 27 : : * @return restrictionCode The restriction code for this rule. + 28 : : */ + 29 : : function _detectTransferRestriction(address from, address to, uint256 value) + 30 : : internal + 31 : : view + 32 : : virtual + 33 : : returns (uint8 restrictionCode); + 34 : : + 35 : : /** + 36 : : * @notice Internal transfer restriction check for spender-initiated transfers. + 37 : : * @param spender the caller executing the transfer + 38 : : * @param from the origin address + 39 : : * @param to the destination address + 40 : : * @param value amount to transfer + 41 : : * @return restrictionCode The restriction code for this rule. + 42 : : */ + 43 : : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value) + 44 : : internal + 45 : : view + 46 : : virtual + 47 : : returns (uint8 restrictionCode); + 48 : : + 49 : : /** + 50 : : * @inheritdoc IERC1404 + 51 : : */ + 52 : 349 : function detectTransferRestriction(address from, address to, uint256 value) + 53 : : public + 54 : : view + 55 : : virtual + 56 : : override(IERC1404) + 57 : : returns (uint8) + 58 : : { + 59 : 349 : return _detectTransferRestriction(from, to, value); + 60 : : } + 61 : : + 62 : : /** + 63 : : * @inheritdoc IERC1404Extend + 64 : : */ + 65 : 38 : function detectTransferRestrictionFrom(address spender, address from, address to, uint256 value) + 66 : : public + 67 : : view + 68 : : virtual + 69 : : override(IERC1404Extend) + 70 : : returns (uint8) + 71 : : { + 72 : 38 : return _detectTransferRestrictionFrom(spender, from, to, value); + 73 : : } + 74 : : + 75 : : /** + 76 : : * @notice Validate a transfer + 77 : : * @param from the origin address + 78 : : * @param to the destination address + 79 : : * @param amount to transfer + 80 : : * @return isValid => true if the transfer is valid, false otherwise + 81 : : * + 82 : : */ + 83 : 21 : function canTransfer(address from, address to, uint256 amount) + 84 : : public + 85 : : view + 86 : : override(IERC3643ComplianceRead) + 87 : : returns (bool isValid) + 88 : : { + 89 : 21 : return _detectTransferRestriction(from, to, amount) == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 90 : : } + 91 : : + 92 : : /** + 93 : : * @inheritdoc IERC7551Compliance + 94 : : */ + 95 : 14 : function canTransferFrom(address spender, address from, address to, uint256 value) + 96 : : public + 97 : : view + 98 : : virtual + 99 : : override(IERC7551Compliance) + 100 : : returns (bool) + 101 : : { + 102 : 14 : return _detectTransferRestrictionFrom(spender, from, to, value) + 103 : : == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 104 : : } + 105 : : + 106 : 196 : function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { + 107 : 196 : return interfaceId == type(IRule).interfaceId || interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID; + 108 : : } + 109 : : } diff --git a/doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.func-sort-c.html b/doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.func-sort-c.html index 588fc1b..90e0227 100644 --- a/doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.func-sort-c.html +++ b/doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.func-sort-c.html @@ -31,13 +31,13 @@ lcov.info Lines: - 21 - 21 + 22 + 22 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 6 @@ -69,7 +69,7 @@ Hit count Sort by hit count - RuleWhitelistShared.transferred.1 + RuleWhitelistShared.transferred.1 4 @@ -77,20 +77,20 @@ 10 - RuleWhitelistShared._transferredFrom + RuleWhitelistShared._transferredFrom 11 - RuleWhitelistShared.messageForTransferRestriction + RuleWhitelistShared.messageForTransferRestriction 14 - RuleWhitelistShared.transferred.0 + RuleWhitelistShared.transferred.0 19 - RuleWhitelistShared._transferred - 26 + RuleWhitelistShared._transferred + 28
diff --git a/doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.func.html b/doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.func.html index 956fe25..f0a8b05 100644 --- a/doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.func.html +++ b/doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.func.html @@ -31,13 +31,13 @@ lcov.info Lines: - 21 - 21 + 22 + 22 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 6 @@ -69,11 +69,11 @@ Hit count Sort by hit count - RuleWhitelistShared._transferred - 26 + RuleWhitelistShared._transferred + 28 - RuleWhitelistShared._transferredFrom + RuleWhitelistShared._transferredFrom 11 @@ -81,15 +81,15 @@ 10 - RuleWhitelistShared.messageForTransferRestriction + RuleWhitelistShared.messageForTransferRestriction 14 - RuleWhitelistShared.transferred.0 + RuleWhitelistShared.transferred.0 19 - RuleWhitelistShared.transferred.1 + RuleWhitelistShared.transferred.1 4 diff --git a/doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.gcov.html b/doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.gcov.html index e0552e4..d899353 100644 --- a/doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.gcov.html +++ b/doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.gcov.html @@ -31,13 +31,13 @@ lcov.info Lines: - 21 - 21 + 22 + 22 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 6 @@ -103,88 +103,82 @@ 32 : : */ 33 : 10 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool isKnown) { 34 : 10 : return restrictionCode == CODE_ADDRESS_FROM_NOT_WHITELISTED - 35 : 5 : || restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED || restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED; - 36 : : } - 37 : : - 38 : : /** - 39 : : * @notice Returns the human-readable message corresponding to a restriction code. - 40 : : * @dev - 41 : : * Returns a descriptive text that explains why a transfer was restricted. - 42 : : * @param restrictionCode The restriction code to decode. - 43 : : * @return message A human-readable explanation of the restriction. - 44 : : */ - 45 : 14 : function messageForTransferRestriction(uint8 restrictionCode) - 46 : : external - 47 : : pure - 48 : : override - 49 : : returns (string memory message) - 50 : : { - 51 [ + + ]: 14 : if (restrictionCode == CODE_ADDRESS_FROM_NOT_WHITELISTED) { - 52 : 6 : return TEXT_ADDRESS_FROM_NOT_WHITELISTED; - 53 [ + + ]: 8 : } else if (restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED) { - 54 : 4 : return TEXT_ADDRESS_TO_NOT_WHITELISTED; - 55 [ + + ]: 4 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED) { - 56 : 2 : return TEXT_ADDRESS_SPENDER_NOT_WHITELISTED; - 57 : : } else { - 58 : 2 : return TEXT_CODE_NOT_FOUND; - 59 : : } - 60 : : } - 61 : : - 62 : : /* ============ State Functions ============ */ - 63 : : - 64 : : /** - 65 : : * @notice ERC-3643 hook called when a transfer occurs. - 66 : : * @dev - 67 : : * - Validates that both `from` and `to` addresses are whitelisted. - 68 : : * - Reverts if any restriction code other than `TRANSFER_OK` is returned. - 69 : : * - Validation only; does not modify state. - 70 : : * - Should be called during token transfer logic to enforce whitelist compliance. - 71 : : * @param from The address sending tokens. - 72 : : * @param to The address receiving tokens. - 73 : : * @param value The token amount being transferred. - 74 : : */ - 75 : 19 : function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) { - 76 : 19 : _transferred(from, to, value); - 77 : : } - 78 : : - 79 : : /** - 80 : : * @notice hook called when a delegated transfer occurs (`transferFrom`). - 81 : : * @dev - 82 : : * - Validates that `spender`, `from`, and `to` are all whitelisted. - 83 : : * - Reverts if any restriction code other than `TRANSFER_OK` is returned. - 84 : : * - Validation only; does not modify state. - 85 : : * @param spender The address performing the transfer on behalf of another. - 86 : : * @param from The address from which tokens are transferred. - 87 : : * @param to The recipient address. - 88 : : * @param value The token amount being transferred. - 89 : : */ - 90 : 4 : function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) { - 91 : 4 : _transferredFrom(spender, from, to, value); - 92 : : } - 93 : : - 94 : 26 : function _transferred(address from, address to, uint256 value) internal view virtual override { - 95 : 26 : uint8 code = _detectTransferRestriction(from, to, value); - 96 [ + + ]: 26 : require( - 97 : : code == uint8(REJECTED_CODE_BASE.TRANSFER_OK), - 98 : : RuleWhitelist_InvalidTransfer(address(this), from, to, value, code) - 99 : : ); - 100 : : } - 101 : : - 102 : 11 : function _transferredFrom(address spender, address from, address to, uint256 value) - 103 : : internal - 104 : : view - 105 : : virtual - 106 : : override - 107 : : { - 108 : 11 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); - 109 [ + + ]: 11 : require( - 110 : : code == uint8(REJECTED_CODE_BASE.TRANSFER_OK), - 111 : : RuleWhitelist_InvalidTransferFrom(address(this), spender, from, to, value, code) - 112 : : ); - 113 : : } - 114 : : - 115 : : - 116 : : } + 35 : 5 : || restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED + 36 : 2 : || restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED; + 37 : : } + 38 : : + 39 : : /** + 40 : : * @notice Returns the human-readable message corresponding to a restriction code. + 41 : : * @dev + 42 : : * Returns a descriptive text that explains why a transfer was restricted. + 43 : : * @param restrictionCode The restriction code to decode. + 44 : : * @return message A human-readable explanation of the restriction. + 45 : : */ + 46 : 14 : function messageForTransferRestriction(uint8 restrictionCode) + 47 : : external + 48 : : pure + 49 : : override + 50 : : returns (string memory message) + 51 : : { + 52 [ + + ]: 14 : if (restrictionCode == CODE_ADDRESS_FROM_NOT_WHITELISTED) { + 53 : 6 : return TEXT_ADDRESS_FROM_NOT_WHITELISTED; + 54 [ + + ]: 8 : } else if (restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED) { + 55 : 4 : return TEXT_ADDRESS_TO_NOT_WHITELISTED; + 56 [ + + ]: 4 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED) { + 57 : 2 : return TEXT_ADDRESS_SPENDER_NOT_WHITELISTED; + 58 : : } else { + 59 : 2 : return TEXT_CODE_NOT_FOUND; + 60 : : } + 61 : : } + 62 : : + 63 : : /* ============ State Functions ============ */ + 64 : : + 65 : : /** + 66 : : * @notice ERC-3643 hook called when a transfer occurs. + 67 : : * @dev + 68 : : * - Validates that both `from` and `to` addresses are whitelisted. + 69 : : * - Reverts if any restriction code other than `TRANSFER_OK` is returned. + 70 : : * - Validation only; does not modify state. + 71 : : * - Should be called during token transfer logic to enforce whitelist compliance. + 72 : : * @param from The address sending tokens. + 73 : : * @param to The address receiving tokens. + 74 : : * @param value The token amount being transferred. + 75 : : */ + 76 : 19 : function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) { + 77 : 19 : _transferred(from, to, value); + 78 : : } + 79 : : + 80 : : /** + 81 : : * @notice hook called when a delegated transfer occurs (`transferFrom`). + 82 : : * @dev + 83 : : * - Validates that `spender`, `from`, and `to` are all whitelisted. + 84 : : * - Reverts if any restriction code other than `TRANSFER_OK` is returned. + 85 : : * - Validation only; does not modify state. + 86 : : * @param spender The address performing the transfer on behalf of another. + 87 : : * @param from The address from which tokens are transferred. + 88 : : * @param to The recipient address. + 89 : : * @param value The token amount being transferred. + 90 : : */ + 91 : 4 : function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) { + 92 : 4 : _transferredFrom(spender, from, to, value); + 93 : : } + 94 : : + 95 : 28 : function _transferred(address from, address to, uint256 value) internal view virtual override { + 96 : 28 : uint8 code = _detectTransferRestriction(from, to, value); + 97 [ + + ]: 28 : require( + 98 : : code == uint8(REJECTED_CODE_BASE.TRANSFER_OK), + 99 : : RuleWhitelist_InvalidTransfer(address(this), from, to, value, code) + 100 : : ); + 101 : : } + 102 : : + 103 : 11 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override { + 104 : 11 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value); + 105 [ + + ]: 11 : require( + 106 : : code == uint8(REJECTED_CODE_BASE.TRANSFER_OK), + 107 : : RuleWhitelist_InvalidTransferFrom(address(this), spender, from, to, value, code) + 108 : : ); + 109 : : } + 110 : : } diff --git a/doc/coverage/coverage/abstract/core/index-sort-b.html b/doc/coverage/coverage/abstract/core/index-sort-b.html index 226fe72..e6fef6b 100644 --- a/doc/coverage/coverage/abstract/core/index-sort-b.html +++ b/doc/coverage/coverage/abstract/core/index-sort-b.html @@ -31,13 +31,13 @@ lcov.info Lines: - 51 - 51 + 52 + 52 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 19 @@ -111,7 +111,7 @@
100.0%
100.0 % - 21 / 21 + 22 / 22 100.0 % 6 / 6 100.0 % diff --git a/doc/coverage/coverage/abstract/core/index-sort-f.html b/doc/coverage/coverage/abstract/core/index-sort-f.html index e680dc9..89620b4 100644 --- a/doc/coverage/coverage/abstract/core/index-sort-f.html +++ b/doc/coverage/coverage/abstract/core/index-sort-f.html @@ -31,13 +31,13 @@ lcov.info Lines: - 51 - 51 + 52 + 52 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 19 @@ -99,7 +99,7 @@
100.0%
100.0 % - 21 / 21 + 22 / 22 100.0 % 6 / 6 100.0 % diff --git a/doc/coverage/coverage/abstract/core/index-sort-l.html b/doc/coverage/coverage/abstract/core/index-sort-l.html index e557c1e..599a86c 100644 --- a/doc/coverage/coverage/abstract/core/index-sort-l.html +++ b/doc/coverage/coverage/abstract/core/index-sort-l.html @@ -31,13 +31,13 @@ lcov.info Lines: - 51 - 51 + 52 + 52 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 19 @@ -111,7 +111,7 @@
100.0%
100.0 % - 21 / 21 + 22 / 22 100.0 % 6 / 6 100.0 % diff --git a/doc/coverage/coverage/abstract/core/index.html b/doc/coverage/coverage/abstract/core/index.html index be497f9..29a0739 100644 --- a/doc/coverage/coverage/abstract/core/index.html +++ b/doc/coverage/coverage/abstract/core/index.html @@ -31,13 +31,13 @@ lcov.info Lines: - 51 - 51 + 52 + 52 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 19 @@ -111,7 +111,7 @@
100.0%
100.0 % - 21 / 21 + 22 / 22 100.0 % 6 / 6 100.0 % diff --git a/doc/coverage/coverage/deployment/RuleBlacklist.sol.func-sort-c.html b/doc/coverage/coverage/deployment/RuleBlacklist.sol.func-sort-c.html index 7a9f3cd..7133758 100644 --- a/doc/coverage/coverage/deployment/RuleBlacklist.sol.func-sort-c.html +++ b/doc/coverage/coverage/deployment/RuleBlacklist.sol.func-sort-c.html @@ -31,13 +31,13 @@ lcov.info Lines: - 10 - 10 + 11 + 11 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 6 @@ -69,23 +69,23 @@ Hit count Sort by hit count - RuleBlacklist._authorizeAddressListRemove + RuleBlacklist._authorizeAddressListRemove 1 - RuleBlacklist._msgData + RuleBlacklist._msgData 1 - RuleBlacklist._authorizeAddressListAdd + RuleBlacklist._authorizeAddressListAdd 28 - RuleBlacklist._msgSender + RuleBlacklist._msgSender 83 - RuleBlacklist._contextSuffixLength + RuleBlacklist._contextSuffixLength 84 diff --git a/doc/coverage/coverage/deployment/RuleBlacklist.sol.func.html b/doc/coverage/coverage/deployment/RuleBlacklist.sol.func.html index a7a1b13..0e71043 100644 --- a/doc/coverage/coverage/deployment/RuleBlacklist.sol.func.html +++ b/doc/coverage/coverage/deployment/RuleBlacklist.sol.func.html @@ -31,13 +31,13 @@ lcov.info Lines: - 10 - 10 + 11 + 11 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 6 @@ -69,23 +69,23 @@ Hit count Sort by hit count - RuleBlacklist._authorizeAddressListAdd + RuleBlacklist._authorizeAddressListAdd 28 - RuleBlacklist._authorizeAddressListRemove + RuleBlacklist._authorizeAddressListRemove 1 - RuleBlacklist._contextSuffixLength + RuleBlacklist._contextSuffixLength 84 - RuleBlacklist._msgData + RuleBlacklist._msgData 1 - RuleBlacklist._msgSender + RuleBlacklist._msgSender 83 diff --git a/doc/coverage/coverage/deployment/RuleBlacklist.sol.gcov.html b/doc/coverage/coverage/deployment/RuleBlacklist.sol.gcov.html index 1f3c2dd..a674ee2 100644 --- a/doc/coverage/coverage/deployment/RuleBlacklist.sol.gcov.html +++ b/doc/coverage/coverage/deployment/RuleBlacklist.sol.gcov.html @@ -31,13 +31,13 @@ lcov.info Lines: - 10 - 10 + 11 + 11 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 6 @@ -103,25 +103,26 @@ 32 : : override(AccessControlEnumerable, RuleBlacklistBase) 33 : : returns (bool) 34 : : { - 35 : 91 : return AccessControlEnumerable.supportsInterface(interfaceId) || RuleBlacklistBase.supportsInterface(interfaceId); - 36 : : } - 37 : : - 38 : 28 : function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {} - 39 : : - 40 : 1 : function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {} - 41 : : - 42 : 83 : function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) { - 43 : 83 : return super._msgSender(); - 44 : : } - 45 : : - 46 : 1 : function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) { - 47 : 1 : return super._msgData(); - 48 : : } - 49 : : - 50 : 84 : function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) { - 51 : 84 : return super._contextSuffixLength(); - 52 : : } - 53 : : } + 35 : 91 : return AccessControlEnumerable.supportsInterface(interfaceId) + 36 : 61 : || RuleBlacklistBase.supportsInterface(interfaceId); + 37 : : } + 38 : : + 39 : 28 : function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {} + 40 : : + 41 : 1 : function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {} + 42 : : + 43 : 83 : function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) { + 44 : 83 : return super._msgSender(); + 45 : : } + 46 : : + 47 : 1 : function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) { + 48 : 1 : return super._msgData(); + 49 : : } + 50 : : + 51 : 84 : function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) { + 52 : 84 : return super._contextSuffixLength(); + 53 : : } + 54 : : } diff --git a/doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.func-sort-c.html b/doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.func-sort-c.html index 4f6c52b..8d61702 100644 --- a/doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.func-sort-c.html +++ b/doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 5 @@ -69,23 +69,23 @@ Hit count Sort by hit count - RuleBlacklistOwnable2Step._msgData + RuleBlacklistOwnable2Step._msgData 1 - RuleBlacklistOwnable2Step._authorizeAddressListAdd + RuleBlacklistOwnable2Step._authorizeAddressListAdd 2 - RuleBlacklistOwnable2Step._authorizeAddressListRemove + RuleBlacklistOwnable2Step._authorizeAddressListRemove 2 - RuleBlacklistOwnable2Step._msgSender + RuleBlacklistOwnable2Step._msgSender 12 - RuleBlacklistOwnable2Step._contextSuffixLength + RuleBlacklistOwnable2Step._contextSuffixLength 13 diff --git a/doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.func.html b/doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.func.html index 3adf440..ad84a28 100644 --- a/doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.func.html +++ b/doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 5 @@ -69,23 +69,23 @@ Hit count Sort by hit count - RuleBlacklistOwnable2Step._authorizeAddressListAdd + RuleBlacklistOwnable2Step._authorizeAddressListAdd 2 - RuleBlacklistOwnable2Step._authorizeAddressListRemove + RuleBlacklistOwnable2Step._authorizeAddressListRemove 2 - RuleBlacklistOwnable2Step._contextSuffixLength + RuleBlacklistOwnable2Step._contextSuffixLength 13 - RuleBlacklistOwnable2Step._msgData + RuleBlacklistOwnable2Step._msgData 1 - RuleBlacklistOwnable2Step._msgSender + RuleBlacklistOwnable2Step._msgSender 12 diff --git a/doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.gcov.html b/doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.gcov.html index 1c015a0..64af672 100644 --- a/doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.gcov.html +++ b/doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 5 @@ -83,27 +83,24 @@ 12 : : * @notice Ownable2Step variant of RuleBlacklist with owner-based authorization hooks. 13 : : */ 14 : : contract RuleBlacklistOwnable2Step is RuleBlacklistBase, Ownable2Step { - 15 : : constructor(address owner, address forwarderIrrevocable) - 16 : : RuleBlacklistBase(forwarderIrrevocable) - 17 : : Ownable(owner) - 18 : : {} - 19 : : - 20 : 2 : function _authorizeAddressListAdd() internal view virtual override onlyOwner {} - 21 : : - 22 : 2 : function _authorizeAddressListRemove() internal view virtual override onlyOwner {} - 23 : : - 24 : 12 : function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) { - 25 : 12 : return super._msgSender(); - 26 : : } - 27 : : - 28 : 1 : function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) { - 29 : 1 : return super._msgData(); - 30 : : } - 31 : : - 32 : 13 : function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) { - 33 : 13 : return super._contextSuffixLength(); - 34 : : } - 35 : : } + 15 : : constructor(address owner, address forwarderIrrevocable) RuleBlacklistBase(forwarderIrrevocable) Ownable(owner) {} + 16 : : + 17 : 2 : function _authorizeAddressListAdd() internal view virtual override onlyOwner {} + 18 : : + 19 : 2 : function _authorizeAddressListRemove() internal view virtual override onlyOwner {} + 20 : : + 21 : 12 : function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) { + 22 : 12 : return super._msgSender(); + 23 : : } + 24 : : + 25 : 1 : function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) { + 26 : 1 : return super._msgData(); + 27 : : } + 28 : : + 29 : 13 : function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) { + 30 : 13 : return super._contextSuffixLength(); + 31 : : } + 32 : : } diff --git a/doc/coverage/coverage/deployment/RuleERC2980.sol.func-sort-c.html b/doc/coverage/coverage/deployment/RuleERC2980.sol.func-sort-c.html index 5982600..0271b40 100644 --- a/doc/coverage/coverage/deployment/RuleERC2980.sol.func-sort-c.html +++ b/doc/coverage/coverage/deployment/RuleERC2980.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 8 diff --git a/doc/coverage/coverage/deployment/RuleERC2980.sol.func.html b/doc/coverage/coverage/deployment/RuleERC2980.sol.func.html index 2fc8959..d1fa5b1 100644 --- a/doc/coverage/coverage/deployment/RuleERC2980.sol.func.html +++ b/doc/coverage/coverage/deployment/RuleERC2980.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 8 diff --git a/doc/coverage/coverage/deployment/RuleERC2980.sol.gcov.html b/doc/coverage/coverage/deployment/RuleERC2980.sol.gcov.html index 44437e3..5863a7a 100644 --- a/doc/coverage/coverage/deployment/RuleERC2980.sol.gcov.html +++ b/doc/coverage/coverage/deployment/RuleERC2980.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 8 diff --git a/doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.func-sort-c.html b/doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.func-sort-c.html index 6a57dc8..7c235e2 100644 --- a/doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.func-sort-c.html +++ b/doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 7 @@ -69,31 +69,31 @@ Hit count Sort by hit count - RuleERC2980Ownable2Step._msgData + RuleERC2980Ownable2Step._msgData 1 - RuleERC2980Ownable2Step._authorizeFrozenlistRemove + RuleERC2980Ownable2Step._authorizeFrozenlistRemove 2 - RuleERC2980Ownable2Step._authorizeWhitelistRemove + RuleERC2980Ownable2Step._authorizeWhitelistRemove 3 - RuleERC2980Ownable2Step._authorizeFrozenlistAdd + RuleERC2980Ownable2Step._authorizeFrozenlistAdd 6 - RuleERC2980Ownable2Step._authorizeWhitelistAdd + RuleERC2980Ownable2Step._authorizeWhitelistAdd 7 - RuleERC2980Ownable2Step._msgSender + RuleERC2980Ownable2Step._msgSender 30 - RuleERC2980Ownable2Step._contextSuffixLength + RuleERC2980Ownable2Step._contextSuffixLength 31 diff --git a/doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.func.html b/doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.func.html index 06ea5a4..b329d9c 100644 --- a/doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.func.html +++ b/doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 7 @@ -69,31 +69,31 @@ Hit count Sort by hit count - RuleERC2980Ownable2Step._authorizeFrozenlistAdd + RuleERC2980Ownable2Step._authorizeFrozenlistAdd 6 - RuleERC2980Ownable2Step._authorizeFrozenlistRemove + RuleERC2980Ownable2Step._authorizeFrozenlistRemove 2 - RuleERC2980Ownable2Step._authorizeWhitelistAdd + RuleERC2980Ownable2Step._authorizeWhitelistAdd 7 - RuleERC2980Ownable2Step._authorizeWhitelistRemove + RuleERC2980Ownable2Step._authorizeWhitelistRemove 3 - RuleERC2980Ownable2Step._contextSuffixLength + RuleERC2980Ownable2Step._contextSuffixLength 31 - RuleERC2980Ownable2Step._msgData + RuleERC2980Ownable2Step._msgData 1 - RuleERC2980Ownable2Step._msgSender + RuleERC2980Ownable2Step._msgSender 30 diff --git a/doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.gcov.html b/doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.gcov.html index 58cf267..fdb8ffe 100644 --- a/doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.gcov.html +++ b/doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 7 @@ -83,31 +83,28 @@ 12 : : * @dev All whitelist and frozenlist management functions are restricted to the contract owner. 13 : : */ 14 : : contract RuleERC2980Ownable2Step is RuleERC2980Base, Ownable2Step { - 15 : : constructor(address owner, address forwarderIrrevocable) - 16 : : RuleERC2980Base(forwarderIrrevocable) - 17 : : Ownable(owner) - 18 : : {} - 19 : : - 20 : 7 : function _authorizeWhitelistAdd() internal view virtual override onlyOwner {} - 21 : : - 22 : 3 : function _authorizeWhitelistRemove() internal view virtual override onlyOwner {} - 23 : : - 24 : 6 : function _authorizeFrozenlistAdd() internal view virtual override onlyOwner {} - 25 : : - 26 : 2 : function _authorizeFrozenlistRemove() internal view virtual override onlyOwner {} - 27 : : - 28 : 30 : function _msgSender() internal view virtual override(Context, RuleERC2980Base) returns (address sender) { - 29 : 30 : return super._msgSender(); - 30 : : } - 31 : : - 32 : 1 : function _msgData() internal view virtual override(Context, RuleERC2980Base) returns (bytes calldata) { - 33 : 1 : return super._msgData(); - 34 : : } - 35 : : - 36 : 31 : function _contextSuffixLength() internal view virtual override(Context, RuleERC2980Base) returns (uint256) { - 37 : 31 : return super._contextSuffixLength(); - 38 : : } - 39 : : } + 15 : : constructor(address owner, address forwarderIrrevocable) RuleERC2980Base(forwarderIrrevocable) Ownable(owner) {} + 16 : : + 17 : 7 : function _authorizeWhitelistAdd() internal view virtual override onlyOwner {} + 18 : : + 19 : 3 : function _authorizeWhitelistRemove() internal view virtual override onlyOwner {} + 20 : : + 21 : 6 : function _authorizeFrozenlistAdd() internal view virtual override onlyOwner {} + 22 : : + 23 : 2 : function _authorizeFrozenlistRemove() internal view virtual override onlyOwner {} + 24 : : + 25 : 30 : function _msgSender() internal view virtual override(Context, RuleERC2980Base) returns (address sender) { + 26 : 30 : return super._msgSender(); + 27 : : } + 28 : : + 29 : 1 : function _msgData() internal view virtual override(Context, RuleERC2980Base) returns (bytes calldata) { + 30 : 1 : return super._msgData(); + 31 : : } + 32 : : + 33 : 31 : function _contextSuffixLength() internal view virtual override(Context, RuleERC2980Base) returns (uint256) { + 34 : 31 : return super._contextSuffixLength(); + 35 : : } + 36 : : } diff --git a/doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.func-sort-c.html b/doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.func-sort-c.html index c671fdf..f448ed3 100644 --- a/doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.func-sort-c.html +++ b/doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 2 diff --git a/doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.func.html b/doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.func.html index 03a6311..1172c83 100644 --- a/doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.func.html +++ b/doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 2 diff --git a/doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.gcov.html b/doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.gcov.html index 29c87c5..e499690 100644 --- a/doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.gcov.html +++ b/doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 2 diff --git a/doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.func-sort-c.html b/doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.func-sort-c.html index f0edaeb..f40a018 100644 --- a/doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.func-sort-c.html +++ b/doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 1 diff --git a/doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.func.html b/doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.func.html index f36b6a3..21fdc8e 100644 --- a/doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.func.html +++ b/doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 1 diff --git a/doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.gcov.html b/doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.gcov.html index c5464a5..b350cb4 100644 --- a/doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.gcov.html +++ b/doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 1 diff --git a/doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.func-sort-c.html b/doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.func-sort-c.html index 3d362ea..571c96e 100644 --- a/doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.func-sort-c.html +++ b/doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 2 diff --git a/doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.func.html b/doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.func.html index 461eca6..90f36b1 100644 --- a/doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.func.html +++ b/doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 2 diff --git a/doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.gcov.html b/doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.gcov.html index 6933e67..5196e15 100644 --- a/doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.gcov.html +++ b/doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 2 diff --git a/doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func-sort-c.html b/doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func-sort-c.html index 8f2bc94..8fa5655 100644 --- a/doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func-sort-c.html +++ b/doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 1 diff --git a/doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func.html b/doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func.html index 9d21145..d7388aa 100644 --- a/doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func.html +++ b/doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 1 diff --git a/doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.gcov.html b/doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.gcov.html index e3cdd2f..bedeb3e 100644 --- a/doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.gcov.html +++ b/doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 1 diff --git a/doc/coverage/coverage/deployment/RuleSanctionsList.sol.func-sort-c.html b/doc/coverage/coverage/deployment/RuleSanctionsList.sol.func-sort-c.html index 1594a91..24e6345 100644 --- a/doc/coverage/coverage/deployment/RuleSanctionsList.sol.func-sort-c.html +++ b/doc/coverage/coverage/deployment/RuleSanctionsList.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 5 diff --git a/doc/coverage/coverage/deployment/RuleSanctionsList.sol.func.html b/doc/coverage/coverage/deployment/RuleSanctionsList.sol.func.html index dcf5ed0..3312a7b 100644 --- a/doc/coverage/coverage/deployment/RuleSanctionsList.sol.func.html +++ b/doc/coverage/coverage/deployment/RuleSanctionsList.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 5 diff --git a/doc/coverage/coverage/deployment/RuleSanctionsList.sol.gcov.html b/doc/coverage/coverage/deployment/RuleSanctionsList.sol.gcov.html index 5b789dd..3a79c33 100644 --- a/doc/coverage/coverage/deployment/RuleSanctionsList.sol.gcov.html +++ b/doc/coverage/coverage/deployment/RuleSanctionsList.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 5 @@ -75,7 +75,7 @@ 4 : : import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol"; 5 : : import {Context} from "OZ/utils/Context.sol"; 6 : : import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol"; - 7 : : import {MetaTxModuleStandalone, ERC2771Context} from "../../../modules/MetaTxModuleStandalone.sol"; + 7 : : import {ERC2771Context} from "../../../modules/MetaTxModuleStandalone.sol"; 8 : : import {RuleSanctionsListBase} from "../abstract/base/RuleSanctionsListBase.sol"; 9 : : import {RuleTransferValidation} from "../abstract/core/RuleTransferValidation.sol"; 10 : : import {ISanctionsList} from "../../interfaces/ISanctionsList.sol"; diff --git a/doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.func-sort-c.html b/doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.func-sort-c.html index d9f05d7..b5c05d7 100644 --- a/doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.func-sort-c.html +++ b/doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 4 diff --git a/doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.func.html b/doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.func.html index 62bd796..58d44b3 100644 --- a/doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.func.html +++ b/doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 4 diff --git a/doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.gcov.html b/doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.gcov.html index 9cba0d5..be60669 100644 --- a/doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.gcov.html +++ b/doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 4 @@ -75,7 +75,7 @@ 4 : : import {Ownable} from "OZ/access/Ownable.sol"; 5 : : import {Ownable2Step} from "OZ/access/Ownable2Step.sol"; 6 : : import {Context} from "OZ/utils/Context.sol"; - 7 : : import {MetaTxModuleStandalone, ERC2771Context} from "../../../modules/MetaTxModuleStandalone.sol"; + 7 : : import {ERC2771Context} from "../../../modules/MetaTxModuleStandalone.sol"; 8 : : import {RuleSanctionsListBase} from "../abstract/base/RuleSanctionsListBase.sol"; 9 : : import {ISanctionsList} from "../../interfaces/ISanctionsList.sol"; 10 : : diff --git a/doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.func-sort-c.html b/doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.func-sort-c.html new file mode 100644 index 0000000..ae631c7 --- /dev/null +++ b/doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.func-sort-c.html @@ -0,0 +1,105 @@ + + + + + + + LCOV - lcov.info - deployment/RuleSpenderWhitelist.sol - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - deployment - RuleSpenderWhitelist.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:1111100.0 %
Date:2026-03-10 16:16:27Functions:66100.0 %
Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
RuleSpenderWhitelist._msgData1
RuleSpenderWhitelist._authorizeAddressListRemove2
RuleSpenderWhitelist.supportsInterface2
RuleSpenderWhitelist._authorizeAddressListAdd6
RuleSpenderWhitelist._msgSender31
RuleSpenderWhitelist._contextSuffixLength33
+
+
+ + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.func.html b/doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.func.html new file mode 100644 index 0000000..e4dd2af --- /dev/null +++ b/doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.func.html @@ -0,0 +1,105 @@ + + + + + + + LCOV - lcov.info - deployment/RuleSpenderWhitelist.sol - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - deployment - RuleSpenderWhitelist.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:1111100.0 %
Date:2026-03-10 16:16:27Functions:66100.0 %
Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
RuleSpenderWhitelist._authorizeAddressListAdd6
RuleSpenderWhitelist._authorizeAddressListRemove2
RuleSpenderWhitelist._contextSuffixLength33
RuleSpenderWhitelist._msgData1
RuleSpenderWhitelist._msgSender31
RuleSpenderWhitelist.supportsInterface2
+
+
+ + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.gcov.html b/doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.gcov.html new file mode 100644 index 0000000..a008bd9 --- /dev/null +++ b/doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.gcov.html @@ -0,0 +1,132 @@ + + + + + + + LCOV - lcov.info - deployment/RuleSpenderWhitelist.sol + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - deployment - RuleSpenderWhitelist.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:1111100.0 %
Date:2026-03-10 16:16:27Functions:66100.0 %
Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : // SPDX-License-Identifier: MPL-2.0
+       2                 :            : pragma solidity ^0.8.20;
+       3                 :            : 
+       4                 :            : import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
+       5                 :            : import {Context} from "OZ/utils/Context.sol";
+       6                 :            : import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol";
+       7                 :            : import {RuleSpenderWhitelistBase} from "../abstract/base/RuleSpenderWhitelistBase.sol";
+       8                 :            : import {RuleAddressSet} from "../abstract/RuleAddressSet/RuleAddressSet.sol";
+       9                 :            : import {RuleTransferValidation} from "../abstract/core/RuleTransferValidation.sol";
+      10                 :            : 
+      11                 :            : /**
+      12                 :            :  * @title RuleSpenderWhitelist
+      13                 :            :  * @notice AccessControlEnumerable deployment variant of spender whitelist rule.
+      14                 :            :  */
+      15                 :            : contract RuleSpenderWhitelist is RuleSpenderWhitelistBase, AccessControlModuleStandalone {
+      16                 :            :     constructor(address admin, address forwarderIrrevocable)
+      17                 :            :         RuleSpenderWhitelistBase(forwarderIrrevocable)
+      18                 :            :         AccessControlModuleStandalone(admin)
+      19                 :            :     {}
+      20                 :            : 
+      21                 :          2 :     function supportsInterface(bytes4 interfaceId)
+      22                 :            :         public
+      23                 :            :         view
+      24                 :            :         virtual
+      25                 :            :         override(AccessControlEnumerable, RuleTransferValidation)
+      26                 :            :         returns (bool)
+      27                 :            :     {
+      28                 :          2 :         return AccessControlEnumerable.supportsInterface(interfaceId)
+      29                 :          1 :             || RuleTransferValidation.supportsInterface(interfaceId);
+      30                 :            :     }
+      31                 :            : 
+      32                 :          6 :     function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {}
+      33                 :            : 
+      34                 :          2 :     function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {}
+      35                 :            : 
+      36                 :         31 :     function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
+      37                 :         31 :         return super._msgSender();
+      38                 :            :     }
+      39                 :            : 
+      40                 :          1 :     function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) {
+      41                 :          1 :         return super._msgData();
+      42                 :            :     }
+      43                 :            : 
+      44                 :         33 :     function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) {
+      45                 :         33 :         return super._contextSuffixLength();
+      46                 :            :     }
+      47                 :            : }
+
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.func-sort-c.html b/doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.func-sort-c.html new file mode 100644 index 0000000..3b72524 --- /dev/null +++ b/doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.func-sort-c.html @@ -0,0 +1,101 @@ + + + + + + + LCOV - lcov.info - deployment/RuleSpenderWhitelistOwnable2Step.sol - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - deployment - RuleSpenderWhitelistOwnable2Step.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:88100.0 %
Date:2026-03-10 16:16:27Functions:55100.0 %
Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
RuleSpenderWhitelistOwnable2Step._msgData1
RuleSpenderWhitelistOwnable2Step._authorizeAddressListAdd2
RuleSpenderWhitelistOwnable2Step._authorizeAddressListRemove2
RuleSpenderWhitelistOwnable2Step._msgSender10
RuleSpenderWhitelistOwnable2Step._contextSuffixLength12
+
+
+ + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.func.html b/doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.func.html new file mode 100644 index 0000000..1026412 --- /dev/null +++ b/doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.func.html @@ -0,0 +1,101 @@ + + + + + + + LCOV - lcov.info - deployment/RuleSpenderWhitelistOwnable2Step.sol - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - deployment - RuleSpenderWhitelistOwnable2Step.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:88100.0 %
Date:2026-03-10 16:16:27Functions:55100.0 %
Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
RuleSpenderWhitelistOwnable2Step._authorizeAddressListAdd2
RuleSpenderWhitelistOwnable2Step._authorizeAddressListRemove2
RuleSpenderWhitelistOwnable2Step._contextSuffixLength12
RuleSpenderWhitelistOwnable2Step._msgData1
RuleSpenderWhitelistOwnable2Step._msgSender10
+
+
+ + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.gcov.html b/doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.gcov.html new file mode 100644 index 0000000..36b3a78 --- /dev/null +++ b/doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.gcov.html @@ -0,0 +1,120 @@ + + + + + + + LCOV - lcov.info - deployment/RuleSpenderWhitelistOwnable2Step.sol + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - deployment - RuleSpenderWhitelistOwnable2Step.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:88100.0 %
Date:2026-03-10 16:16:27Functions:55100.0 %
Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : // SPDX-License-Identifier: MPL-2.0
+       2                 :            : pragma solidity ^0.8.20;
+       3                 :            : 
+       4                 :            : import {Ownable} from "OZ/access/Ownable.sol";
+       5                 :            : import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
+       6                 :            : import {Context} from "OZ/utils/Context.sol";
+       7                 :            : import {RuleSpenderWhitelistBase} from "../abstract/base/RuleSpenderWhitelistBase.sol";
+       8                 :            : import {RuleAddressSet} from "../abstract/RuleAddressSet/RuleAddressSet.sol";
+       9                 :            : 
+      10                 :            : /**
+      11                 :            :  * @title RuleSpenderWhitelistOwnable2Step
+      12                 :            :  * @notice Ownable2Step deployment variant of spender whitelist rule.
+      13                 :            :  */
+      14                 :            : contract RuleSpenderWhitelistOwnable2Step is RuleSpenderWhitelistBase, Ownable2Step {
+      15                 :            :     constructor(address owner, address forwarderIrrevocable)
+      16                 :            :         RuleSpenderWhitelistBase(forwarderIrrevocable)
+      17                 :            :         Ownable(owner)
+      18                 :            :     {}
+      19                 :            : 
+      20                 :          2 :     function _authorizeAddressListAdd() internal view virtual override onlyOwner {}
+      21                 :            : 
+      22                 :          2 :     function _authorizeAddressListRemove() internal view virtual override onlyOwner {}
+      23                 :            : 
+      24                 :         10 :     function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
+      25                 :         10 :         return super._msgSender();
+      26                 :            :     }
+      27                 :            : 
+      28                 :          1 :     function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) {
+      29                 :          1 :         return super._msgData();
+      30                 :            :     }
+      31                 :            : 
+      32                 :         12 :     function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) {
+      33                 :         12 :         return super._contextSuffixLength();
+      34                 :            :     }
+      35                 :            : }
+
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/doc/coverage/coverage/deployment/RuleWhitelist.sol.func-sort-c.html b/doc/coverage/coverage/deployment/RuleWhitelist.sol.func-sort-c.html index 86d6201..6422f45 100644 --- a/doc/coverage/coverage/deployment/RuleWhitelist.sol.func-sort-c.html +++ b/doc/coverage/coverage/deployment/RuleWhitelist.sol.func-sort-c.html @@ -31,13 +31,13 @@ lcov.info Lines: - 11 - 11 + 12 + 12 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 7 @@ -69,32 +69,32 @@ Hit count Sort by hit count - RuleWhitelist._authorizeCheckSpenderManager + RuleWhitelist._authorizeCheckSpenderManager 1 - RuleWhitelist._msgData + RuleWhitelist._msgData 1 - RuleWhitelist.supportsInterface + RuleWhitelist.supportsInterface 40 - RuleWhitelist._authorizeAddressListRemove + RuleWhitelist._authorizeAddressListRemove 263 - RuleWhitelist._authorizeAddressListAdd - 348 + RuleWhitelist._authorizeAddressListAdd + 352 - RuleWhitelist._msgSender - 772 + RuleWhitelist._msgSender + 778 - RuleWhitelist._contextSuffixLength - 773 + RuleWhitelist._contextSuffixLength + 779
diff --git a/doc/coverage/coverage/deployment/RuleWhitelist.sol.func.html b/doc/coverage/coverage/deployment/RuleWhitelist.sol.func.html index b216e14..dca3a94 100644 --- a/doc/coverage/coverage/deployment/RuleWhitelist.sol.func.html +++ b/doc/coverage/coverage/deployment/RuleWhitelist.sol.func.html @@ -31,13 +31,13 @@ lcov.info Lines: - 11 - 11 + 12 + 12 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 7 @@ -69,31 +69,31 @@ Hit count Sort by hit count - RuleWhitelist._authorizeAddressListAdd - 348 + RuleWhitelist._authorizeAddressListAdd + 352 - RuleWhitelist._authorizeAddressListRemove + RuleWhitelist._authorizeAddressListRemove 263 - RuleWhitelist._authorizeCheckSpenderManager + RuleWhitelist._authorizeCheckSpenderManager 1 - RuleWhitelist._contextSuffixLength - 773 + RuleWhitelist._contextSuffixLength + 779 - RuleWhitelist._msgData + RuleWhitelist._msgData 1 - RuleWhitelist._msgSender - 772 + RuleWhitelist._msgSender + 778 - RuleWhitelist.supportsInterface + RuleWhitelist.supportsInterface 40 diff --git a/doc/coverage/coverage/deployment/RuleWhitelist.sol.gcov.html b/doc/coverage/coverage/deployment/RuleWhitelist.sol.gcov.html index ca176dc..b6fe556 100644 --- a/doc/coverage/coverage/deployment/RuleWhitelist.sol.gcov.html +++ b/doc/coverage/coverage/deployment/RuleWhitelist.sol.gcov.html @@ -31,13 +31,13 @@ lcov.info Lines: - 11 - 11 + 12 + 12 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 7 @@ -78,70 +78,72 @@ 7 : : import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol"; 8 : : import {RuleWhitelistBase} from "../abstract/base/RuleWhitelistBase.sol"; 9 : : import {RuleAddressSet} from "../abstract/RuleAddressSet/RuleAddressSet.sol"; - 10 : : /* ==== CMTAT === */ - 11 : : - 12 : : /** - 13 : : * @title Rule Whitelist - 14 : : * @notice Manages a whitelist of authorized addresses and enforces whitelist-based transfer restrictions. - 15 : : * @dev - 16 : : * - Inherits core address management logic from {RuleAddressSet}. - 17 : : * - Integrates restriction code logic from {RuleWhitelistShared}. - 18 : : * - Implements {IERC1404} to return specific restriction codes for non-whitelisted transfers. - 19 : : */ - 20 : : contract RuleWhitelist is RuleWhitelistBase, AccessControlModuleStandalone { - 21 : : /*////////////////////////////////////////////////////////////// - 22 : : CONSTRUCTOR - 23 : : //////////////////////////////////////////////////////////////*/ - 24 : : /** - 25 : : * @param admin Address of the contract (Access Control) - 26 : : * @param forwarderIrrevocable Address of the forwarder, required for the gasless support - 27 : : */ - 28 : : constructor(address admin, address forwarderIrrevocable, bool checkSpender_) - 29 : : RuleWhitelistBase(forwarderIrrevocable, checkSpender_) - 30 : : AccessControlModuleStandalone(admin) - 31 : : { - 32 : : // no-op - 33 : : } - 34 : : - 35 : : /* ============ View Functions ============ */ - 36 : : - 37 : : /** - 38 : : * @notice Indicates whether this contract supports a given interface. - 39 : : * @param interfaceId The interface identifier, as specified in ERC-165. - 40 : : * @return supported True if the interface is supported. - 41 : : */ - 42 : 40 : function supportsInterface(bytes4 interfaceId) - 43 : : public - 44 : : view - 45 : : virtual - 46 : : override(AccessControlEnumerable, RuleWhitelistBase) - 47 : : returns (bool) - 48 : : { - 49 : 40 : return AccessControlEnumerable.supportsInterface(interfaceId) || RuleWhitelistBase.supportsInterface(interfaceId); - 50 : : } - 51 : : - 52 : : /*////////////////////////////////////////////////////////////// - 53 : : ACCESS CONTROL - 54 : : //////////////////////////////////////////////////////////////*/ - 55 : : - 56 : 1 : function _authorizeCheckSpenderManager() internal view virtual override onlyRole(DEFAULT_ADMIN_ROLE) {} + 10 : : + 11 : : /* ==== CMTAT === */ + 12 : : + 13 : : /** + 14 : : * @title Rule Whitelist + 15 : : * @notice Manages a whitelist of authorized addresses and enforces whitelist-based transfer restrictions. + 16 : : * @dev + 17 : : * - Inherits core address management logic from {RuleAddressSet}. + 18 : : * - Integrates restriction code logic from {RuleWhitelistShared}. + 19 : : * - Implements {IERC1404} to return specific restriction codes for non-whitelisted transfers. + 20 : : */ + 21 : : contract RuleWhitelist is RuleWhitelistBase, AccessControlModuleStandalone { + 22 : : /*////////////////////////////////////////////////////////////// + 23 : : CONSTRUCTOR + 24 : : //////////////////////////////////////////////////////////////*/ + 25 : : /** + 26 : : * @param admin Address of the contract (Access Control) + 27 : : * @param forwarderIrrevocable Address of the forwarder, required for the gasless support + 28 : : */ + 29 : : constructor(address admin, address forwarderIrrevocable, bool checkSpender_) + 30 : : RuleWhitelistBase(forwarderIrrevocable, checkSpender_) + 31 : : AccessControlModuleStandalone(admin) + 32 : : { + 33 : : // no-op + 34 : : } + 35 : : + 36 : : /* ============ View Functions ============ */ + 37 : : + 38 : : /** + 39 : : * @notice Indicates whether this contract supports a given interface. + 40 : : * @param interfaceId The interface identifier, as specified in ERC-165. + 41 : : * @return supported True if the interface is supported. + 42 : : */ + 43 : 40 : function supportsInterface(bytes4 interfaceId) + 44 : : public + 45 : : view + 46 : : virtual + 47 : : override(AccessControlEnumerable, RuleWhitelistBase) + 48 : : returns (bool) + 49 : : { + 50 : 40 : return AccessControlEnumerable.supportsInterface(interfaceId) + 51 : 27 : || RuleWhitelistBase.supportsInterface(interfaceId); + 52 : : } + 53 : : + 54 : : /*////////////////////////////////////////////////////////////// + 55 : : ACCESS CONTROL + 56 : : //////////////////////////////////////////////////////////////*/ 57 : : - 58 : 348 : function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {} + 58 : 1 : function _authorizeCheckSpenderManager() internal view virtual override onlyRole(DEFAULT_ADMIN_ROLE) {} 59 : : - 60 : 263 : function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {} + 60 : 352 : function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {} 61 : : - 62 : 772 : function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) { - 63 : 772 : return super._msgSender(); - 64 : : } - 65 : : - 66 : 1 : function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) { - 67 : 1 : return super._msgData(); - 68 : : } - 69 : : - 70 : 773 : function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) { - 71 : 773 : return super._contextSuffixLength(); - 72 : : } - 73 : : } + 62 : 263 : function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {} + 63 : : + 64 : 778 : function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) { + 65 : 778 : return super._msgSender(); + 66 : : } + 67 : : + 68 : 1 : function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) { + 69 : 1 : return super._msgData(); + 70 : : } + 71 : : + 72 : 779 : function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) { + 73 : 779 : return super._contextSuffixLength(); + 74 : : } + 75 : : } diff --git a/doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.func-sort-c.html b/doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.func-sort-c.html index 1d0cde2..9117d9c 100644 --- a/doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.func-sort-c.html +++ b/doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 6 diff --git a/doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.func.html b/doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.func.html index aaac14d..259fa0e 100644 --- a/doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.func.html +++ b/doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 6 diff --git a/doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.gcov.html b/doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.gcov.html index e0f2605..b258205 100644 --- a/doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.gcov.html +++ b/doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 6 diff --git a/doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.func-sort-c.html b/doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.func-sort-c.html index b118fa8..5594f68 100644 --- a/doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.func-sort-c.html +++ b/doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 9 @@ -69,39 +69,39 @@ Hit count Sort by hit count - RuleWhitelistWrapper._msgData + RuleWhitelistWrapper._msgData 1 - RuleWhitelistWrapper._revokeRole + RuleWhitelistWrapper._revokeRole 1 - RuleWhitelistWrapper._authorizeCheckSpenderManager + RuleWhitelistWrapper._authorizeCheckSpenderManager 2 - RuleWhitelistWrapper._grantRole + RuleWhitelistWrapper._grantRole 38 - RuleWhitelistWrapper.hasRole + RuleWhitelistWrapper.hasRole 38 - RuleWhitelistWrapper.supportsInterface + RuleWhitelistWrapper.supportsInterface 46 - RuleWhitelistWrapper._onlyRulesManager + RuleWhitelistWrapper._onlyRulesManager 90 - RuleWhitelistWrapper._msgSender + RuleWhitelistWrapper._msgSender 133 - RuleWhitelistWrapper._contextSuffixLength + RuleWhitelistWrapper._contextSuffixLength 134 diff --git a/doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.func.html b/doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.func.html index c7034ec..d5cf199 100644 --- a/doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.func.html +++ b/doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 9 @@ -69,39 +69,39 @@ Hit count Sort by hit count - RuleWhitelistWrapper._authorizeCheckSpenderManager + RuleWhitelistWrapper._authorizeCheckSpenderManager 2 - RuleWhitelistWrapper._contextSuffixLength + RuleWhitelistWrapper._contextSuffixLength 134 - RuleWhitelistWrapper._grantRole + RuleWhitelistWrapper._grantRole 38 - RuleWhitelistWrapper._msgData + RuleWhitelistWrapper._msgData 1 - RuleWhitelistWrapper._msgSender + RuleWhitelistWrapper._msgSender 133 - RuleWhitelistWrapper._onlyRulesManager + RuleWhitelistWrapper._onlyRulesManager 90 - RuleWhitelistWrapper._revokeRole + RuleWhitelistWrapper._revokeRole 1 - RuleWhitelistWrapper.hasRole + RuleWhitelistWrapper.hasRole 38 - RuleWhitelistWrapper.supportsInterface + RuleWhitelistWrapper.supportsInterface 46 diff --git a/doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.gcov.html b/doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.gcov.html index fee07c5..a7b062c 100644 --- a/doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.gcov.html +++ b/doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 9 @@ -84,89 +84,92 @@ 13 : : /** 14 : : * @title Wrapper to call several different whitelist rules 15 : : */ - 16 : : contract RuleWhitelistWrapper is - 17 : : RuleWhitelistWrapperBase, - 18 : : AccessControlModuleStandalone - 19 : : { - 20 : : /*////////////////////////////////////////////////////////////// - 21 : : CONSTRUCTOR - 22 : : //////////////////////////////////////////////////////////////*/ - 23 : : /** - 24 : : * @param admin Address of the contract (Access Control) - 25 : : * @param forwarderIrrevocable Address of the forwarder, required for the gasless support - 26 : : */ - 27 : : constructor(address admin, address forwarderIrrevocable, bool checkSpender_) - 28 : : RuleWhitelistWrapperBase(forwarderIrrevocable, checkSpender_) - 29 : : AccessControlModuleStandalone(admin) - 30 : : {} - 31 : : - 32 : : /* ============ Access control ============ */ - 33 : : - 34 : : /** - 35 : : * @dev Returns `true` if `account` has been granted `role`. - 36 : : */ - 37 : 38 : function hasRole(bytes32 role, address account) - 38 : : public - 39 : : view - 40 : : virtual - 41 : : override(AccessControl, AccessControlModuleStandalone) - 42 : : returns (bool) - 43 : : { - 44 : 134 : return AccessControlModuleStandalone.hasRole(role, account); - 45 : : } - 46 : : - 47 : 2 : function _authorizeCheckSpenderManager() internal virtual override onlyRole(DEFAULT_ADMIN_ROLE) {} - 48 : : - 49 : : /** - 50 : : * @dev Restrict rules management to the dedicated role. - 51 : : */ - 52 : 90 : function _onlyRulesManager() internal virtual override onlyRole(RULES_MANAGEMENT_ROLE) {} - 53 : : - 54 : : /*////////////////////////////////////////////////////////////// - 55 : : ERC-2771 - 56 : : //////////////////////////////////////////////////////////////*/ - 57 : : - 58 : 133 : function _msgSender() internal view virtual override(RuleWhitelistWrapperBase, Context) returns (address sender) { - 59 : 133 : return RuleWhitelistWrapperBase._msgSender(); - 60 : : } - 61 : : - 62 : 1 : function _msgData() internal view virtual override(RuleWhitelistWrapperBase, Context) returns (bytes calldata) { - 63 : 1 : return RuleWhitelistWrapperBase._msgData(); - 64 : : } - 65 : : - 66 : 134 : function _contextSuffixLength() internal view virtual override(RuleWhitelistWrapperBase, Context) returns (uint256) { - 67 : 134 : return RuleWhitelistWrapperBase._contextSuffixLength(); - 68 : : } - 69 : : - 70 : 46 : function supportsInterface(bytes4 interfaceId) - 71 : : public - 72 : : view - 73 : : virtual - 74 : : override(AccessControlEnumerable, RuleWhitelistWrapperBase) - 75 : : returns (bool) - 76 : : { - 77 : 46 : return RuleWhitelistWrapperBase.supportsInterface(interfaceId) - 78 : 16 : || AccessControlEnumerable.supportsInterface(interfaceId); - 79 : : } - 80 : : - 81 : 38 : function _grantRole(bytes32 role, address account) - 82 : : internal - 83 : : virtual - 84 : : override(AccessControl, AccessControlEnumerable) - 85 : : returns (bool) - 86 : : { - 87 : 38 : return AccessControlEnumerable._grantRole(role, account); - 88 : : } - 89 : : - 90 : 1 : function _revokeRole(bytes32 role, address account) - 91 : : internal - 92 : : virtual - 93 : : override(AccessControl, AccessControlEnumerable) - 94 : : returns (bool) - 95 : : { - 96 : 1 : return AccessControlEnumerable._revokeRole(role, account); - 97 : : } - 98 : : } + 16 : : contract RuleWhitelistWrapper is RuleWhitelistWrapperBase, AccessControlModuleStandalone { + 17 : : /*////////////////////////////////////////////////////////////// + 18 : : CONSTRUCTOR + 19 : : //////////////////////////////////////////////////////////////*/ + 20 : : /** + 21 : : * @param admin Address of the contract (Access Control) + 22 : : * @param forwarderIrrevocable Address of the forwarder, required for the gasless support + 23 : : */ + 24 : : constructor(address admin, address forwarderIrrevocable, bool checkSpender_) + 25 : : RuleWhitelistWrapperBase(forwarderIrrevocable, checkSpender_) + 26 : : AccessControlModuleStandalone(admin) + 27 : : {} + 28 : : + 29 : : /* ============ Access control ============ */ + 30 : : + 31 : : /** + 32 : : * @dev Returns `true` if `account` has been granted `role`. + 33 : : */ + 34 : 38 : function hasRole(bytes32 role, address account) + 35 : : public + 36 : : view + 37 : : virtual + 38 : : override(AccessControl, AccessControlModuleStandalone) + 39 : : returns (bool) + 40 : : { + 41 : 134 : return AccessControlModuleStandalone.hasRole(role, account); + 42 : : } + 43 : : + 44 : 2 : function _authorizeCheckSpenderManager() internal virtual override onlyRole(DEFAULT_ADMIN_ROLE) {} + 45 : : + 46 : : /** + 47 : : * @dev Restrict rules management to the dedicated role. + 48 : : */ + 49 : 90 : function _onlyRulesManager() internal virtual override onlyRole(RULES_MANAGEMENT_ROLE) {} + 50 : : + 51 : : /*////////////////////////////////////////////////////////////// + 52 : : ERC-2771 + 53 : : //////////////////////////////////////////////////////////////*/ + 54 : : + 55 : 133 : function _msgSender() internal view virtual override(RuleWhitelistWrapperBase, Context) returns (address sender) { + 56 : 133 : return RuleWhitelistWrapperBase._msgSender(); + 57 : : } + 58 : : + 59 : 1 : function _msgData() internal view virtual override(RuleWhitelistWrapperBase, Context) returns (bytes calldata) { + 60 : 1 : return RuleWhitelistWrapperBase._msgData(); + 61 : : } + 62 : : + 63 : 134 : function _contextSuffixLength() + 64 : : internal + 65 : : view + 66 : : virtual + 67 : : override(RuleWhitelistWrapperBase, Context) + 68 : : returns (uint256) + 69 : : { + 70 : 134 : return RuleWhitelistWrapperBase._contextSuffixLength(); + 71 : : } + 72 : : + 73 : 46 : function supportsInterface(bytes4 interfaceId) + 74 : : public + 75 : : view + 76 : : virtual + 77 : : override(AccessControlEnumerable, RuleWhitelistWrapperBase) + 78 : : returns (bool) + 79 : : { + 80 : 46 : return RuleWhitelistWrapperBase.supportsInterface(interfaceId) + 81 : 16 : || AccessControlEnumerable.supportsInterface(interfaceId); + 82 : : } + 83 : : + 84 : 38 : function _grantRole(bytes32 role, address account) + 85 : : internal + 86 : : virtual + 87 : : override(AccessControl, AccessControlEnumerable) + 88 : : returns (bool) + 89 : : { + 90 : 38 : return AccessControlEnumerable._grantRole(role, account); + 91 : : } + 92 : : + 93 : 1 : function _revokeRole(bytes32 role, address account) + 94 : : internal + 95 : : virtual + 96 : : override(AccessControl, AccessControlEnumerable) + 97 : : returns (bool) + 98 : : { + 99 : 1 : return AccessControlEnumerable._revokeRole(role, account); + 100 : : } + 101 : : } diff --git a/doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.func-sort-c.html b/doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.func-sort-c.html index b67a8e6..a882b98 100644 --- a/doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.func-sort-c.html +++ b/doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 5 diff --git a/doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.func.html b/doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.func.html index b704ccc..8a05ca5 100644 --- a/doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.func.html +++ b/doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 5 diff --git a/doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.gcov.html b/doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.gcov.html index 211abff..9fad630 100644 --- a/doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.gcov.html +++ b/doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 5 @@ -115,11 +115,16 @@ 44 : 1 : return RuleWhitelistWrapperBase._msgData(); 45 : : } 46 : : - 47 : 13 : function _contextSuffixLength() internal view virtual override(RuleWhitelistWrapperBase, Context) returns (uint256) { - 48 : 13 : return RuleWhitelistWrapperBase._contextSuffixLength(); - 49 : : } - 50 : : - 51 : : } + 47 : 13 : function _contextSuffixLength() + 48 : : internal + 49 : : view + 50 : : virtual + 51 : : override(RuleWhitelistWrapperBase, Context) + 52 : : returns (uint256) + 53 : : { + 54 : 13 : return RuleWhitelistWrapperBase._contextSuffixLength(); + 55 : : } + 56 : : } diff --git a/doc/coverage/coverage/deployment/index-sort-b.html b/doc/coverage/coverage/deployment/index-sort-b.html index ebfc836..746722a 100644 --- a/doc/coverage/coverage/deployment/index-sort-b.html +++ b/doc/coverage/coverage/deployment/index-sort-b.html @@ -31,17 +31,17 @@ lcov.info Lines: - 112 - 112 + 133 + 133 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: - 68 - 68 + 79 + 79 100.0 % @@ -82,31 +82,43 @@ Branches Sort by branch coverage - RuleSanctionsListOwnable2Step.sol + RuleWhitelistOwnable2Step.sol
100.0%
100.0 % - 7 / 7 + 9 / 9 100.0 % - 4 / 4 + 6 / 6 - 0 / 0 - RuleBlacklist.sol + RuleMaxTotalSupplyOwnable2Step.sol
100.0%
100.0 % - 10 / 10 + 1 / 1 100.0 % - 6 / 6 + 1 / 1 - 0 / 0 - RuleMaxTotalSupply.sol + RuleIdentityRegistryOwnable2Step.sol + +
100.0%
+ + 100.0 % + 1 / 1 + 100.0 % + 1 / 1 + - + 0 / 0 + + + RuleIdentityRegistry.sol
100.0%
@@ -118,67 +130,79 @@ 0 / 0 - RuleWhitelist.sol + RuleWhitelistWrapperOwnable2Step.sol
100.0%
100.0 % - 11 / 11 + 8 / 8 100.0 % - 7 / 7 + 5 / 5 - 0 / 0 - RuleBlacklistOwnable2Step.sol + RuleSanctionsList.sol
100.0%
100.0 % - 8 / 8 + 10 / 10 100.0 % 5 / 5 - 0 / 0 - RuleMaxTotalSupplyOwnable2Step.sol + RuleERC2980.sol
100.0%
100.0 % - 1 / 1 + 12 / 12 100.0 % - 1 / 1 + 8 / 8 - 0 / 0 - RuleWhitelistWrapper.sol + RuleMaxTotalSupply.sol
100.0%
100.0 % - 17 / 17 + 4 / 4 100.0 % - 9 / 9 + 2 / 2 - 0 / 0 - RuleSanctionsList.sol + RuleWhitelist.sol
100.0%
100.0 % - 10 / 10 + 12 / 12 100.0 % - 5 / 5 + 7 / 7 - 0 / 0 - RuleWhitelistWrapperOwnable2Step.sol + RuleWhitelistWrapper.sol + +
100.0%
+ + 100.0 % + 17 / 17 + 100.0 % + 9 / 9 + - + 0 / 0 + + + RuleSpenderWhitelistOwnable2Step.sol
100.0%
@@ -190,62 +214,62 @@ 0 / 0 - RuleERC2980Ownable2Step.sol + RuleSanctionsListOwnable2Step.sol
100.0%
100.0 % - 10 / 10 - 100.0 % 7 / 7 + 100.0 % + 4 / 4 - 0 / 0 - RuleERC2980.sol + RuleSpenderWhitelist.sol
100.0%
100.0 % - 12 / 12 + 11 / 11 100.0 % - 8 / 8 + 6 / 6 - 0 / 0 - RuleIdentityRegistry.sol + RuleBlacklistOwnable2Step.sol
100.0%
100.0 % - 4 / 4 + 8 / 8 100.0 % - 2 / 2 + 5 / 5 - 0 / 0 - RuleWhitelistOwnable2Step.sol + RuleERC2980Ownable2Step.sol
100.0%
100.0 % - 9 / 9 + 10 / 10 100.0 % - 6 / 6 + 7 / 7 - 0 / 0 - RuleIdentityRegistryOwnable2Step.sol + RuleBlacklist.sol
100.0%
100.0 % - 1 / 1 + 11 / 11 100.0 % - 1 / 1 + 6 / 6 - 0 / 0 diff --git a/doc/coverage/coverage/deployment/index-sort-f.html b/doc/coverage/coverage/deployment/index-sort-f.html index a3d26c0..966a0a0 100644 --- a/doc/coverage/coverage/deployment/index-sort-f.html +++ b/doc/coverage/coverage/deployment/index-sort-f.html @@ -31,17 +31,17 @@ lcov.info Lines: - 112 - 112 + 133 + 133 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: - 68 - 68 + 79 + 79 100.0 % @@ -106,7 +106,7 @@ 0 / 0 - RuleMaxTotalSupply.sol + RuleIdentityRegistry.sol
100.0%
@@ -118,7 +118,7 @@ 0 / 0 - RuleIdentityRegistry.sol + RuleMaxTotalSupply.sol
100.0%
@@ -142,7 +142,7 @@ 0 / 0 - RuleBlacklistOwnable2Step.sol + RuleWhitelistWrapperOwnable2Step.sol
100.0%
@@ -166,7 +166,7 @@ 0 / 0 - RuleWhitelistWrapperOwnable2Step.sol + RuleSpenderWhitelistOwnable2Step.sol
100.0%
@@ -178,14 +178,14 @@ 0 / 0 - RuleBlacklist.sol + RuleBlacklistOwnable2Step.sol
100.0%
100.0 % - 10 / 10 + 8 / 8 100.0 % - 6 / 6 + 5 / 5 - 0 / 0 @@ -202,13 +202,37 @@ 0 / 0 - RuleWhitelist.sol + RuleSpenderWhitelist.sol + +
100.0%
+ + 100.0 % + 11 / 11 + 100.0 % + 6 / 6 + - + 0 / 0 + + + RuleBlacklist.sol
100.0%
100.0 % 11 / 11 100.0 % + 6 / 6 + - + 0 / 0 + + + RuleWhitelist.sol + +
100.0%
+ + 100.0 % + 12 / 12 + 100.0 % 7 / 7 - 0 / 0 diff --git a/doc/coverage/coverage/deployment/index-sort-l.html b/doc/coverage/coverage/deployment/index-sort-l.html index 6ace07a..af7dd25 100644 --- a/doc/coverage/coverage/deployment/index-sort-l.html +++ b/doc/coverage/coverage/deployment/index-sort-l.html @@ -31,17 +31,17 @@ lcov.info Lines: - 112 - 112 + 133 + 133 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: - 68 - 68 + 79 + 79 100.0 % @@ -106,7 +106,7 @@ 0 / 0 - RuleMaxTotalSupply.sol + RuleIdentityRegistry.sol
100.0%
@@ -118,7 +118,7 @@ 0 / 0 - RuleIdentityRegistry.sol + RuleMaxTotalSupply.sol
100.0%
@@ -142,7 +142,7 @@ 0 / 0 - RuleBlacklistOwnable2Step.sol + RuleWhitelistWrapperOwnable2Step.sol
100.0%
@@ -154,7 +154,7 @@ 0 / 0 - RuleWhitelistWrapperOwnable2Step.sol + RuleSpenderWhitelistOwnable2Step.sol
100.0%
@@ -166,24 +166,24 @@ 0 / 0 - RuleWhitelistOwnable2Step.sol + RuleBlacklistOwnable2Step.sol
100.0%
100.0 % - 9 / 9 + 8 / 8 100.0 % - 6 / 6 + 5 / 5 - 0 / 0 - RuleBlacklist.sol + RuleWhitelistOwnable2Step.sol
100.0%
100.0 % - 10 / 10 + 9 / 9 100.0 % 6 / 6 - @@ -214,14 +214,26 @@ 0 / 0 - RuleWhitelist.sol + RuleSpenderWhitelist.sol
100.0%
100.0 % 11 / 11 100.0 % - 7 / 7 + 6 / 6 + - + 0 / 0 + + + RuleBlacklist.sol + +
100.0%
+ + 100.0 % + 11 / 11 + 100.0 % + 6 / 6 - 0 / 0 @@ -237,6 +249,18 @@ - 0 / 0 + + RuleWhitelist.sol + +
100.0%
+ + 100.0 % + 12 / 12 + 100.0 % + 7 / 7 + - + 0 / 0 + RuleWhitelistWrapper.sol diff --git a/doc/coverage/coverage/deployment/index.html b/doc/coverage/coverage/deployment/index.html index e2cc395..6516ec5 100644 --- a/doc/coverage/coverage/deployment/index.html +++ b/doc/coverage/coverage/deployment/index.html @@ -31,17 +31,17 @@ lcov.info Lines: - 112 - 112 + 133 + 133 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: - 68 - 68 + 79 + 79 100.0 % @@ -87,7 +87,7 @@
100.0%
100.0 % - 10 / 10 + 11 / 11 100.0 % 6 / 6 - @@ -202,13 +202,37 @@ 0 / 0 - RuleWhitelist.sol + RuleSpenderWhitelist.sol
100.0%
100.0 % 11 / 11 100.0 % + 6 / 6 + - + 0 / 0 + + + RuleSpenderWhitelistOwnable2Step.sol + +
100.0%
+ + 100.0 % + 8 / 8 + 100.0 % + 5 / 5 + - + 0 / 0 + + + RuleWhitelist.sol + +
100.0%
+ + 100.0 % + 12 / 12 + 100.0 % 7 / 7 - 0 / 0 diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func-sort-c.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func-sort-c.html index 6e237b7..2ec22a1 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func-sort-c.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 2 @@ -70,11 +70,11 @@ AccessControlModuleStandalone.constructor - 396 + 421 AccessControlModuleStandalone.hasRole - 507 + 531
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func.html index ce374e8..14ea0ee 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 2 @@ -70,11 +70,11 @@ AccessControlModuleStandalone.constructor - 396 + 421 AccessControlModuleStandalone.hasRole - 507 + 531
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.gcov.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.gcov.html index 0ff4430..a786a91 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.gcov.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 2 @@ -92,12 +92,12 @@ 21 : : * @param admin The address that will receive the `DEFAULT_ADMIN_ROLE`. 22 : : */ 23 : : - 24 : 396 : constructor(address admin) { - 25 [ + + ]: 396 : require(admin != address(0), AccessControlModuleStandalone_AddressZeroNotAllowed()); + 24 : 421 : constructor(address admin) { + 25 [ + + ]: 421 : require(admin != address(0), AccessControlModuleStandalone_AddressZeroNotAllowed()); 26 : : // we don't check the return value 27 : : // _grantRole attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted. 28 : : // return false only if the admin has already the role - 29 : 391 : _grantRole(DEFAULT_ADMIN_ROLE, admin); + 29 : 415 : _grantRole(DEFAULT_ADMIN_ROLE, admin); 30 : : } 31 : : 32 : : /*////////////////////////////////////////////////////////////// @@ -106,7 +106,7 @@ 35 : : /** 36 : : * @dev Returns `true` if `account` has been granted `role`. 37 : : */ - 38 : 507 : function hasRole(bytes32 role, address account) + 38 : 531 : function hasRole(bytes32 role, address account) 39 : : public 40 : : view 41 : : virtual @@ -115,10 +115,10 @@ 44 : : { 45 : : // Dev note: default admin is treated as having all roles but may not appear in enumerable role members. 46 : : // The Default Admin has all roles - 47 [ + + ]: 3597 : if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) { - 48 : 3110 : return true; + 47 [ + + ]: 3534 : if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) { + 48 : 3021 : return true; 49 : : } else { - 50 : 487 : return AccessControl.hasRole(role, account); + 50 : 513 : return AccessControl.hasRole(role, account); 51 : : } 52 : : } 53 : : } diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func-sort-c.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func-sort-c.html index 9a3a841..8bceb58 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func-sort-c.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 1 diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func.html index ba069d3..8e9e823 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 1 diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.gcov.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.gcov.html index 21cb955..50ad511 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.gcov.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 1 diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-b.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-b.html index 1c2b511..6a86955 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-b.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-b.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 3 diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-f.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-f.html index 250be9c..d2c4b7f 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-f.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-f.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 3 diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-l.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-l.html index 38d71c7..8a6ec85 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-l.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-l.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 3 diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index.html index e1ab118..6117c79 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 3 diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func-sort-c.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func-sort-c.html index 79562b0..67c7b18 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func-sort-c.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 6 @@ -81,16 +81,16 @@ 18 - RuleConditionalTransferLight._onlyComplianceManager + RuleConditionalTransferLight._onlyComplianceManager 19 RuleConditionalTransferLight._authorizeTransferExecution - 857 + 770 RuleConditionalTransferLight._authorizeTransferApproval - 1947 + 1848
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func.html index a785d77..59fbabf 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 6 @@ -70,14 +70,14 @@ RuleConditionalTransferLight._authorizeTransferApproval - 1947 + 1848 RuleConditionalTransferLight._authorizeTransferExecution - 857 + 770 - RuleConditionalTransferLight._onlyComplianceManager + RuleConditionalTransferLight._onlyComplianceManager 19 diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.gcov.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.gcov.html index c7dd5c5..f49dbcf 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.gcov.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 6 @@ -114,17 +114,14 @@ 43 : 1 : _transferred(from, address(0), value); 44 : : } 45 : : - 46 : 1947 : function _authorizeTransferApproval() internal view virtual override onlyRole(OPERATOR_ROLE) {} + 46 : 1848 : function _authorizeTransferApproval() internal view virtual override onlyRole(OPERATOR_ROLE) {} 47 : : - 48 : 857 : function _authorizeTransferExecution() internal view virtual override { - 49 [ + + ]: 857 : require( - 50 : : isTokenBound(_msgSender()), - 51 : : RuleConditionalTransferLight_TransferExecutorUnauthorized(_msgSender()) - 52 : : ); - 53 : : } - 54 : : - 55 : 19 : function _onlyComplianceManager() internal virtual override onlyRole(COMPLIANCE_MANAGER_ROLE) {} - 56 : : } + 48 : 770 : function _authorizeTransferExecution() internal view virtual override { + 49 [ + + ]: 770 : require(isTokenBound(_msgSender()), RuleConditionalTransferLight_TransferExecutorUnauthorized(_msgSender())); + 50 : : } + 51 : : + 52 : 19 : function _onlyComplianceManager() internal virtual override onlyRole(COMPLIANCE_MANAGER_ROLE) {} + 53 : : } diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func-sort-c.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func-sort-c.html index b181ee1..7a7c2bf 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func-sort-c.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 3 @@ -69,15 +69,15 @@ Hit count Sort by hit count - RuleConditionalTransferLightOwnable2Step._authorizeTransferExecution + RuleConditionalTransferLightOwnable2Step._authorizeTransferExecution 3 - RuleConditionalTransferLightOwnable2Step._authorizeTransferApproval + RuleConditionalTransferLightOwnable2Step._authorizeTransferApproval 4 - RuleConditionalTransferLightOwnable2Step.supportsInterface + RuleConditionalTransferLightOwnable2Step.supportsInterface 4 diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func.html index 60b99de..bb0973f 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 3 @@ -69,15 +69,15 @@ Hit count Sort by hit count - RuleConditionalTransferLightOwnable2Step._authorizeTransferApproval + RuleConditionalTransferLightOwnable2Step._authorizeTransferApproval 4 - RuleConditionalTransferLightOwnable2Step._authorizeTransferExecution + RuleConditionalTransferLightOwnable2Step._authorizeTransferExecution 3 - RuleConditionalTransferLightOwnable2Step.supportsInterface + RuleConditionalTransferLightOwnable2Step.supportsInterface 4 diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.gcov.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.gcov.html index b0a0b09..de9032f 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.gcov.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 3 @@ -83,21 +83,18 @@ 12 : : * @title RuleConditionalTransferLightOwnable2Step 13 : : * @notice Ownable2Step variant of RuleConditionalTransferLight. 14 : : */ - 15 : : contract RuleConditionalTransferLightOwnable2Step is - 16 : : RuleConditionalTransferLightBase, - 17 : : Ownable2Step - 18 : : { - 19 : : constructor(address owner) Ownable(owner) {} - 20 : : - 21 : 4 : function supportsInterface(bytes4 interfaceId) public view override returns (bool) { - 22 : 4 : return interfaceId == type(IERC165).interfaceId || interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID - 23 : 2 : || interfaceId == type(IRule).interfaceId; - 24 : : } - 25 : : - 26 : 4 : function _authorizeTransferApproval() internal view virtual override onlyOwner {} - 27 : : - 28 : 3 : function _authorizeTransferExecution() internal view virtual override onlyOwner {} - 29 : : } + 15 : : contract RuleConditionalTransferLightOwnable2Step is RuleConditionalTransferLightBase, Ownable2Step { + 16 : : constructor(address owner) Ownable(owner) {} + 17 : : + 18 : 4 : function supportsInterface(bytes4 interfaceId) public view override returns (bool) { + 19 : 4 : return interfaceId == type(IERC165).interfaceId || interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID + 20 : 2 : || interfaceId == type(IRule).interfaceId; + 21 : : } + 22 : : + 23 : 4 : function _authorizeTransferApproval() internal view virtual override onlyOwner {} + 24 : : + 25 : 3 : function _authorizeTransferExecution() internal view virtual override onlyOwner {} + 26 : : } diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func-sort-c.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func-sort-c.html index d8df2c5..d263bae 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func-sort-c.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func-sort-c.html @@ -31,13 +31,13 @@ lcov.info Lines: - 62 - 62 + 66 + 66 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 18 @@ -69,76 +69,76 @@ Hit count Sort by hit count - RuleConditionalTransferLightBase.canReturnTransferRestrictionCode + RuleConditionalTransferLightBase.canReturnTransferRestrictionCode 1 - RuleConditionalTransferLightBase.canTransferFrom + RuleConditionalTransferLightBase.canTransferFrom 1 - RuleConditionalTransferLightBase.detectTransferRestrictionFrom + RuleConditionalTransferLightBase.detectTransferRestrictionFrom 1 - RuleConditionalTransferLightBase.transferred.1 + RuleConditionalTransferLightBase.transferred.1 1 - RuleConditionalTransferLightBase.messageForTransferRestriction + RuleConditionalTransferLightBase.messageForTransferRestriction 2 - RuleConditionalTransferLightBase._transferredFromContext + RuleConditionalTransferLightBase._transferredFromContext 3 - RuleConditionalTransferLightBase.onlyTransferExecutor + RuleConditionalTransferLightBase.onlyTransferExecutor 3 - RuleConditionalTransferLightBase.transferred.2 + RuleConditionalTransferLightBase.transferred.2 3 - RuleConditionalTransferLightBase.approveAndTransferIfAllowed + RuleConditionalTransferLightBase.approveAndTransferIfAllowed 4 - RuleConditionalTransferLightBase.canTransfer + RuleConditionalTransferLightBase.canTransfer 4 - RuleConditionalTransferLightBase.cancelTransferApproval + RuleConditionalTransferLightBase.cancelTransferApproval 4 - RuleConditionalTransferLightBase.onlyTransferApprover + RuleConditionalTransferLightBase.onlyTransferApprover 4 - RuleConditionalTransferLightBase.detectTransferRestriction + RuleConditionalTransferLightBase.detectTransferRestriction 7 - RuleConditionalTransferLightBase.approvedCount - 264 + RuleConditionalTransferLightBase.approvedCount + 263 - RuleConditionalTransferLightBase.transferred.0 - 856 + RuleConditionalTransferLightBase.transferred.0 + 769 - RuleConditionalTransferLightBase._transferred - 860 + RuleConditionalTransferLightBase._transferred + 773 - RuleConditionalTransferLightBase.approveTransfer - 1940 + RuleConditionalTransferLightBase.approveTransfer + 1841 - RuleConditionalTransferLightBase._transferHash - 3063 + RuleConditionalTransferLightBase._transferHash + 2885
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func.html index bd1a0a3..aa179f3 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func.html @@ -31,13 +31,13 @@ lcov.info Lines: - 62 - 62 + 66 + 66 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 18 @@ -69,75 +69,75 @@ Hit count Sort by hit count - RuleConditionalTransferLightBase._transferHash - 3063 + RuleConditionalTransferLightBase._transferHash + 2885 - RuleConditionalTransferLightBase._transferred - 860 + RuleConditionalTransferLightBase._transferred + 773 - RuleConditionalTransferLightBase._transferredFromContext + RuleConditionalTransferLightBase._transferredFromContext 3 - RuleConditionalTransferLightBase.approveAndTransferIfAllowed + RuleConditionalTransferLightBase.approveAndTransferIfAllowed 4 - RuleConditionalTransferLightBase.approveTransfer - 1940 + RuleConditionalTransferLightBase.approveTransfer + 1841 - RuleConditionalTransferLightBase.approvedCount - 264 + RuleConditionalTransferLightBase.approvedCount + 263 - RuleConditionalTransferLightBase.canReturnTransferRestrictionCode + RuleConditionalTransferLightBase.canReturnTransferRestrictionCode 1 - RuleConditionalTransferLightBase.canTransfer + RuleConditionalTransferLightBase.canTransfer 4 - RuleConditionalTransferLightBase.canTransferFrom + RuleConditionalTransferLightBase.canTransferFrom 1 - RuleConditionalTransferLightBase.cancelTransferApproval + RuleConditionalTransferLightBase.cancelTransferApproval 4 - RuleConditionalTransferLightBase.detectTransferRestriction + RuleConditionalTransferLightBase.detectTransferRestriction 7 - RuleConditionalTransferLightBase.detectTransferRestrictionFrom + RuleConditionalTransferLightBase.detectTransferRestrictionFrom 1 - RuleConditionalTransferLightBase.messageForTransferRestriction + RuleConditionalTransferLightBase.messageForTransferRestriction 2 - RuleConditionalTransferLightBase.onlyTransferApprover + RuleConditionalTransferLightBase.onlyTransferApprover 4 - RuleConditionalTransferLightBase.onlyTransferExecutor + RuleConditionalTransferLightBase.onlyTransferExecutor 3 - RuleConditionalTransferLightBase.transferred.0 - 856 + RuleConditionalTransferLightBase.transferred.0 + 769 - RuleConditionalTransferLightBase.transferred.1 + RuleConditionalTransferLightBase.transferred.1 1 - RuleConditionalTransferLightBase.transferred.2 + RuleConditionalTransferLightBase.transferred.2 3 diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.gcov.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.gcov.html index 4dc44fd..4855a0f 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.gcov.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.gcov.html @@ -31,13 +31,13 @@ lcov.info Lines: - 62 - 62 + 66 + 66 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 18 @@ -79,184 +79,202 @@ 8 : : import {IRule} from "RuleEngine/interfaces/IRule.sol"; 9 : : import {ITransferContext} from "../../interfaces/ITransferContext.sol"; 10 : : import {IERC20} from "OZ/token/ERC20/IERC20.sol"; - 11 : : import { - 12 : : RuleConditionalTransferLightInvariantStorage - 13 : : } from "./RuleConditionalTransferLightInvariantStorage.sol"; - 14 : : import {VersionModule} from "../../../modules/VersionModule.sol"; - 15 : : - 16 : : /** - 17 : : * @title RuleConditionalTransferLightBase - 18 : : * @dev Requires operator approval for each transfer. Same transfer (from, to, value) - 19 : : * can be approved multiple times to allow repeated transfers. - 20 : : */ - 21 : : abstract contract RuleConditionalTransferLightBase is VersionModule, RuleConditionalTransferLightInvariantStorage, IRule { - 22 : : // Mapping from transfer hash to approval count - 23 : : mapping(bytes32 => uint256) public approvalCounts; - 24 : : - 25 : 1940 : function approveTransfer(address from, address to, uint256 value) public onlyTransferApprover { - 26 : 1941 : bytes32 transferHash = _transferHash(from, to, value); - 27 : 1941 : approvalCounts[transferHash] += 1; - 28 : 1941 : emit TransferApproved(from, to, value, approvalCounts[transferHash]); - 29 : : } - 30 : : - 31 : 4 : function cancelTransferApproval(address from, address to, uint256 value) public onlyTransferApprover { - 32 : 3 : bytes32 transferHash = _transferHash(from, to, value); - 33 : 3 : uint256 count = approvalCounts[transferHash]; - 34 [ + + ]: 3 : require(count != 0, TransferApprovalNotFound()); - 35 : 2 : approvalCounts[transferHash] = count - 1; - 36 : 2 : emit TransferApprovalCancelled(from, to, value, approvalCounts[transferHash]); - 37 : : } - 38 : : - 39 : : /** - 40 : : * @notice Approves and performs a transferFrom using this rule as spender. - 41 : : * @dev Requires `from` to have approved this contract on the token. - 42 : : * @dev This function is only safe for tokens that call back `transferred()` during transfer. - 43 : : * @dev CEI is intentionally inverted so the approval exists for the callback. - 44 : : */ - 45 : 4 : function approveAndTransferIfAllowed(address token, address from, address to, uint256 value) - 46 : : public - 47 : : onlyTransferApprover - 48 : : returns (bool) - 49 : : { - 50 [ + + ]: 4 : require(token != address(0), RuleConditionalTransferLight_TokenAddressZeroNotAllowed()); - 51 : : - 52 : 3 : approveTransfer(from, to, value); + 11 : : import {RuleConditionalTransferLightInvariantStorage} from "./RuleConditionalTransferLightInvariantStorage.sol"; + 12 : : import {VersionModule} from "../../../modules/VersionModule.sol"; + 13 : : + 14 : : /** + 15 : : * @title RuleConditionalTransferLightBase + 16 : : * @dev Requires operator approval for each transfer. Same transfer (from, to, value) + 17 : : * can be approved multiple times to allow repeated transfers. + 18 : : */ + 19 : : abstract contract RuleConditionalTransferLightBase is + 20 : : VersionModule, + 21 : : RuleConditionalTransferLightInvariantStorage, + 22 : : IRule + 23 : : { + 24 : : // Mapping from transfer hash to approval count + 25 : : mapping(bytes32 => uint256) public approvalCounts; + 26 : : + 27 : 1841 : function approveTransfer(address from, address to, uint256 value) public onlyTransferApprover { + 28 : 1842 : bytes32 transferHash = _transferHash(from, to, value); + 29 : 1842 : approvalCounts[transferHash] += 1; + 30 : 1842 : emit TransferApproved(from, to, value, approvalCounts[transferHash]); + 31 : : } + 32 : : + 33 : 4 : function cancelTransferApproval(address from, address to, uint256 value) public onlyTransferApprover { + 34 : 3 : bytes32 transferHash = _transferHash(from, to, value); + 35 : 3 : uint256 count = approvalCounts[transferHash]; + 36 [ + + ]: 3 : require(count != 0, TransferApprovalNotFound()); + 37 : 2 : approvalCounts[transferHash] = count - 1; + 38 : 2 : emit TransferApprovalCancelled(from, to, value, approvalCounts[transferHash]); + 39 : : } + 40 : : + 41 : : /** + 42 : : * @notice Approves and performs a transferFrom using this rule as spender. + 43 : : * @dev Requires `from` to have approved this contract on the token. + 44 : : * @dev This function is only safe for tokens that call back `transferred()` during transfer. + 45 : : * @dev CEI is intentionally inverted so the approval exists for the callback. + 46 : : */ + 47 : 4 : function approveAndTransferIfAllowed(address token, address from, address to, uint256 value) + 48 : : public + 49 : : onlyTransferApprover + 50 : : returns (bool) + 51 : : { + 52 [ + + ]: 4 : require(token != address(0), RuleConditionalTransferLight_TokenAddressZeroNotAllowed()); 53 : : - 54 : 3 : uint256 allowed = IERC20(token).allowance(from, address(this)); - 55 [ + + ]: 3 : require( - 56 : : allowed >= value, - 57 : : RuleConditionalTransferLight_InsufficientAllowance(token, from, allowed, value) - 58 : : ); - 59 : : - 60 : 2 : bool success = IERC20(token).transferFrom(from, to, value); - 61 [ + + ]: 2 : require(success, RuleConditionalTransferLight_TransferFailed()); - 62 : 1 : return true; - 63 : : } - 64 : : - 65 : 264 : function approvedCount(address from, address to, uint256 value) public view returns (uint256) { - 66 : 264 : bytes32 transferHash = _transferHash(from, to, value); - 67 : 264 : return approvalCounts[transferHash]; - 68 : : } - 69 : : - 70 : 856 : function transferred(address from, address to, uint256 value) - 71 : : public - 72 : : override(IERC3643IComplianceContract) - 73 : : onlyTransferExecutor - 74 : : { - 75 : 854 : _transferred(from, to, value); - 76 : : } - 77 : : - 78 : 1 : function transferred(address /* spender */, address from, address to, uint256 value) - 79 : : public - 80 : : override(IRuleEngine) - 81 : : onlyTransferExecutor - 82 : : { - 83 : 1 : _transferred(from, to, value); - 84 : : } - 85 : : - 86 : 7 : function detectTransferRestriction(address from, address to, uint256 value) - 87 : : public - 88 : : view - 89 : : override(IERC1404) - 90 : : returns (uint8) - 91 : : { - 92 [ + ]: 13 : if (from == address(0) || to == address(0)) { - 93 : 4 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - 94 : : } - 95 : 9 : bytes32 transferHash = _transferHash(from, to, value); - 96 [ + ]: 9 : if (approvalCounts[transferHash] == 0) { - 97 : 6 : return CODE_TRANSFER_REQUEST_NOT_APPROVED; - 98 : : } - 99 : 3 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - 100 : : } - 101 : : - 102 : 1 : function detectTransferRestrictionFrom(address /* spender */, address from, address to, uint256 value) - 103 : : public - 104 : : view - 105 : : override(IERC1404Extend) - 106 : : returns (uint8) - 107 : : { - 108 : 2 : return detectTransferRestriction(from, to, value); - 109 : : } - 110 : : - 111 : 4 : function canTransfer(address from, address to, uint256 value) - 112 : : public - 113 : : view - 114 : : override(IERC3643ComplianceRead) - 115 : : returns (bool) - 116 : : { - 117 : 4 : return detectTransferRestriction(from, to, value) == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - 118 : : } - 119 : : - 120 : 1 : function canTransferFrom(address spender, address from, address to, uint256 value) - 121 : : public - 122 : : view - 123 : : override(IERC7551Compliance) - 124 : : returns (bool) - 125 : : { - 126 : 1 : return detectTransferRestrictionFrom(spender, from, to, value) - 127 : : == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - 128 : : } - 129 : : - 130 : 1 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override(IRule) returns (bool) { - 131 : 1 : return restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED; - 132 : : } - 133 : : - 134 : 2 : function messageForTransferRestriction(uint8 restrictionCode) - 135 : : external - 136 : : pure - 137 : : override(IERC1404) - 138 : : returns (string memory) - 139 : : { - 140 [ + ]: 2 : if (restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED) { - 141 : 1 : return TEXT_TRANSFER_REQUEST_NOT_APPROVED; - 142 : : } - 143 : 1 : return TEXT_CODE_NOT_FOUND; - 144 : : } - 145 : : - 146 : 3 : function transferred(ITransferContext.FungibleTransferContext calldata ctx) external onlyTransferExecutor { - 147 : 3 : _transferredFromContext(ctx); - 148 : : } - 149 : : - 150 : 3 : function _transferredFromContext(ITransferContext.FungibleTransferContext calldata ctx) internal virtual { - 151 : 3 : _transferred(ctx.from, ctx.to, ctx.value); - 152 : : } - 153 : : - 154 : 860 : function _transferred(address from, address to, uint256 value) internal virtual { - 155 [ + ]: 860 : if (from == address(0) || to == address(0)) { - 156 : 860 : return; - 157 : : } - 158 : 846 : bytes32 transferHash = _transferHash(from, to, value); - 159 : 846 : uint256 count = approvalCounts[transferHash]; + 54 : 3 : approveTransfer(from, to, value); + 55 : : + 56 : 3 : uint256 allowed = IERC20(token).allowance(from, address(this)); + 57 [ + + ]: 3 : require(allowed >= value, RuleConditionalTransferLight_InsufficientAllowance(token, from, allowed, value)); + 58 : : + 59 : 2 : bool success = IERC20(token).transferFrom(from, to, value); + 60 [ + + ]: 2 : require(success, RuleConditionalTransferLight_TransferFailed()); + 61 : 1 : return true; + 62 : : } + 63 : : + 64 : 263 : function approvedCount(address from, address to, uint256 value) public view returns (uint256) { + 65 : 263 : bytes32 transferHash = _transferHash(from, to, value); + 66 : 263 : return approvalCounts[transferHash]; + 67 : : } + 68 : : + 69 : 769 : function transferred(address from, address to, uint256 value) + 70 : : public + 71 : : override(IERC3643IComplianceContract) + 72 : : onlyTransferExecutor + 73 : : { + 74 : 767 : _transferred(from, to, value); + 75 : : } + 76 : : + 77 : 1 : function transferred( + 78 : : address, + 79 : : /* spender */ + 80 : : address from, + 81 : : address to, + 82 : : uint256 value + 83 : : ) + 84 : : public + 85 : : override(IRuleEngine) + 86 : : onlyTransferExecutor + 87 : : { + 88 : 1 : _transferred(from, to, value); + 89 : : } + 90 : : + 91 : 7 : function detectTransferRestriction(address from, address to, uint256 value) + 92 : : public + 93 : : view + 94 : : override(IERC1404) + 95 : : returns (uint8) + 96 : : { + 97 [ + ]: 13 : if (from == address(0) || to == address(0)) { + 98 : 4 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 99 : : } + 100 : 9 : bytes32 transferHash = _transferHash(from, to, value); + 101 [ + ]: 9 : if (approvalCounts[transferHash] == 0) { + 102 : 6 : return CODE_TRANSFER_REQUEST_NOT_APPROVED; + 103 : : } + 104 : 3 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 105 : : } + 106 : : + 107 : 1 : function detectTransferRestrictionFrom( + 108 : : address, + 109 : : /* spender */ + 110 : : address from, + 111 : : address to, + 112 : : uint256 value + 113 : : ) + 114 : : public + 115 : : view + 116 : : override(IERC1404Extend) + 117 : : returns (uint8) + 118 : : { + 119 : 2 : return detectTransferRestriction(from, to, value); + 120 : : } + 121 : : + 122 : 4 : function canTransfer(address from, address to, uint256 value) + 123 : : public + 124 : : view + 125 : : override(IERC3643ComplianceRead) + 126 : : returns (bool) + 127 : : { + 128 : 4 : return detectTransferRestriction(from, to, value) == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 129 : : } + 130 : : + 131 : 1 : function canTransferFrom(address spender, address from, address to, uint256 value) + 132 : : public + 133 : : view + 134 : : override(IERC7551Compliance) + 135 : : returns (bool) + 136 : : { + 137 : 1 : return detectTransferRestrictionFrom(spender, from, to, value) + 138 : : == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 139 : : } + 140 : : + 141 : 1 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override(IRule) returns (bool) { + 142 : 1 : return restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED; + 143 : : } + 144 : : + 145 : 2 : function messageForTransferRestriction(uint8 restrictionCode) + 146 : : external + 147 : : pure + 148 : : override(IERC1404) + 149 : : returns (string memory) + 150 : : { + 151 [ + ]: 2 : if (restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED) { + 152 : 1 : return TEXT_TRANSFER_REQUEST_NOT_APPROVED; + 153 : : } + 154 : 1 : return TEXT_CODE_NOT_FOUND; + 155 : : } + 156 : : + 157 : 3 : function transferred(ITransferContext.FungibleTransferContext calldata ctx) external onlyTransferExecutor { + 158 : 3 : _transferredFromContext(ctx); + 159 : : } 160 : : - 161 [ + + ]: 846 : require(count != 0, TransferNotApproved()); - 162 : : - 163 : 843 : approvalCounts[transferHash] = count - 1; - 164 : 843 : emit TransferExecuted(from, to, value, approvalCounts[transferHash]); - 165 : : } - 166 : : - 167 : 3063 : function _transferHash(address from, address to, uint256 value) internal pure virtual returns (bytes32 hash) { - 168 : 3063 : return keccak256(abi.encodePacked(from, to, value)); - 169 : : } - 170 : : - 171 : : /*////////////////////////////////////////////////////////////// - 172 : : ACCESS CONTROL - 173 : : //////////////////////////////////////////////////////////////*/ - 174 : : - 175 : 4 : modifier onlyTransferApprover() { - 176 : 4 : _authorizeTransferApproval(); - 177 : : _; - 178 : : } - 179 : : - 180 : 3 : modifier onlyTransferExecutor() { - 181 : 3 : _authorizeTransferExecution(); - 182 : : _; - 183 : : } - 184 : : - 185 : : function _authorizeTransferApproval() internal view virtual; - 186 : : - 187 : : function _authorizeTransferExecution() internal view virtual; - 188 : : } + 161 : 3 : function _transferredFromContext(ITransferContext.FungibleTransferContext calldata ctx) internal virtual { + 162 : 3 : _transferred(ctx.from, ctx.to, ctx.value); + 163 : : } + 164 : : + 165 : 773 : function _transferred(address from, address to, uint256 value) internal virtual { + 166 [ + ]: 773 : if (from == address(0) || to == address(0)) { + 167 : 773 : return; + 168 : : } + 169 : 768 : bytes32 transferHash = _transferHash(from, to, value); + 170 : 768 : uint256 count = approvalCounts[transferHash]; + 171 : : + 172 [ + + ]: 768 : require(count != 0, TransferNotApproved()); + 173 : : + 174 : 765 : approvalCounts[transferHash] = count - 1; + 175 : 765 : emit TransferExecuted(from, to, value, approvalCounts[transferHash]); + 176 : : } + 177 : : + 178 : 2885 : function _transferHash(address from, address to, uint256 value) internal pure virtual returns (bytes32 hash) { + 179 : : // Linter suggestion (`asm-keccak256`): hash packed values in assembly to avoid abi.encodePacked overhead. + 180 : : assembly ("memory-safe") { + 181 : 2885 : let ptr := mload(0x40) + 182 : 2885 : mstore(ptr, shl(96, from)) + 183 : 2885 : mstore(add(ptr, 0x20), shl(96, to)) + 184 : 2885 : mstore(add(ptr, 0x40), value) + 185 : 2885 : hash := keccak256(ptr, 0x60) + 186 : : } + 187 : : } + 188 : : + 189 : : /*////////////////////////////////////////////////////////////// + 190 : : ACCESS CONTROL + 191 : : //////////////////////////////////////////////////////////////*/ + 192 : : + 193 : 4 : modifier onlyTransferApprover() { + 194 : 4 : _authorizeTransferApproval(); + 195 : : _; + 196 : : } + 197 : : + 198 : 3 : modifier onlyTransferExecutor() { + 199 : 3 : _authorizeTransferExecution(); + 200 : : _; + 201 : : } + 202 : : + 203 : : function _authorizeTransferApproval() internal view virtual; + 204 : : + 205 : : function _authorizeTransferExecution() internal view virtual; + 206 : : } diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-b.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-b.html index 1481813..cee77ef 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-b.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-b.html @@ -31,13 +31,13 @@ lcov.info Lines: - 62 - 62 + 66 + 66 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 18 @@ -87,7 +87,7 @@
100.0%
100.0 % - 62 / 62 + 66 / 66 100.0 % 18 / 18 100.0 % diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-f.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-f.html index 3d54907..3ca5529 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-f.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-f.html @@ -31,13 +31,13 @@ lcov.info Lines: - 62 - 62 + 66 + 66 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 18 @@ -87,7 +87,7 @@
100.0%
100.0 % - 62 / 62 + 66 / 66 100.0 % 18 / 18 100.0 % diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-l.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-l.html index 90e3217..ad74f6a 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-l.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-l.html @@ -31,13 +31,13 @@ lcov.info Lines: - 62 - 62 + 66 + 66 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 18 @@ -87,7 +87,7 @@
100.0%
100.0 % - 62 / 62 + 66 / 66 100.0 % 18 / 18 100.0 % diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index.html index 1a454a5..075046f 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index.html @@ -31,13 +31,13 @@ lcov.info Lines: - 62 - 62 + 66 + 66 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 18 @@ -87,7 +87,7 @@
100.0%
100.0 % - 62 / 62 + 66 / 66 100.0 % 18 / 18 100.0 % diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-b.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-b.html index 4c73cf0..0727bad 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-b.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-b.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 9 diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-f.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-f.html index eba8d47..bba2e9c 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-f.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-f.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 9 diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-l.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-l.html index 90bdb37..178c5f3 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-l.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-l.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 9 diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index.html index 8abcc29..71e0554 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index.html @@ -37,7 +37,7 @@ Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: 9 diff --git a/doc/coverage/coverage/index-sort-b.html b/doc/coverage/coverage/index-sort-b.html index c0fea9e..3500b9e 100644 --- a/doc/coverage/coverage/index-sort-b.html +++ b/doc/coverage/coverage/index-sort-b.html @@ -31,17 +31,17 @@ lcov.info Lines: - 698 - 698 + 742 + 742 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: - 249 - 249 + 268 + 268 100.0 % @@ -49,8 +49,8 @@ Branches: - 155 - 155 + 159 + 159 100.0 % @@ -87,9 +87,9 @@
100.0%
100.0 % - 112 / 112 + 133 / 133 100.0 % - 68 / 68 + 79 / 79 - 0 / 0 @@ -147,7 +147,7 @@
100.0%
100.0 % - 51 / 51 + 52 / 52 100.0 % 19 / 19 100.0 % @@ -159,7 +159,7 @@
100.0%
100.0 % - 62 / 62 + 66 / 66 100.0 % 18 / 18 100.0 % @@ -171,11 +171,11 @@
100.0%
100.0 % - 360 / 360 + 378 / 378 100.0 % - 101 / 101 + 109 / 109 100.0 % - 105 / 105 + 109 / 109 diff --git a/doc/coverage/coverage/index-sort-f.html b/doc/coverage/coverage/index-sort-f.html index 4733fa7..e9e4797 100644 --- a/doc/coverage/coverage/index-sort-f.html +++ b/doc/coverage/coverage/index-sort-f.html @@ -31,17 +31,17 @@ lcov.info Lines: - 698 - 698 + 742 + 742 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: - 249 - 249 + 268 + 268 100.0 % @@ -49,8 +49,8 @@ Branches: - 155 - 155 + 159 + 159 100.0 % @@ -123,7 +123,7 @@
100.0%
100.0 % - 62 / 62 + 66 / 66 100.0 % 18 / 18 100.0 % @@ -135,7 +135,7 @@
100.0%
100.0 % - 51 / 51 + 52 / 52 100.0 % 19 / 19 100.0 % @@ -159,9 +159,9 @@
100.0%
100.0 % - 112 / 112 + 133 / 133 100.0 % - 68 / 68 + 79 / 79 - 0 / 0 @@ -171,11 +171,11 @@
100.0%
100.0 % - 360 / 360 + 378 / 378 100.0 % - 101 / 101 + 109 / 109 100.0 % - 105 / 105 + 109 / 109 diff --git a/doc/coverage/coverage/index-sort-l.html b/doc/coverage/coverage/index-sort-l.html index 73dd95c..4a38b39 100644 --- a/doc/coverage/coverage/index-sort-l.html +++ b/doc/coverage/coverage/index-sort-l.html @@ -31,17 +31,17 @@ lcov.info Lines: - 698 - 698 + 742 + 742 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: - 249 - 249 + 268 + 268 100.0 % @@ -49,8 +49,8 @@ Branches: - 155 - 155 + 159 + 159 100.0 % @@ -123,7 +123,7 @@
100.0%
100.0 % - 51 / 51 + 52 / 52 100.0 % 19 / 19 100.0 % @@ -147,7 +147,7 @@
100.0%
100.0 % - 62 / 62 + 66 / 66 100.0 % 18 / 18 100.0 % @@ -159,9 +159,9 @@
100.0%
100.0 % - 112 / 112 + 133 / 133 100.0 % - 68 / 68 + 79 / 79 - 0 / 0 @@ -171,11 +171,11 @@
100.0%
100.0 % - 360 / 360 + 378 / 378 100.0 % - 101 / 101 + 109 / 109 100.0 % - 105 / 105 + 109 / 109 diff --git a/doc/coverage/coverage/index.html b/doc/coverage/coverage/index.html index 209f17b..ea97940 100644 --- a/doc/coverage/coverage/index.html +++ b/doc/coverage/coverage/index.html @@ -31,17 +31,17 @@ lcov.info Lines: - 698 - 698 + 742 + 742 100.0 % Date: - 2026-03-10 10:55:10 + 2026-03-10 16:16:27 Functions: - 249 - 249 + 268 + 268 100.0 % @@ -49,8 +49,8 @@ Branches: - 155 - 155 + 159 + 159 100.0 % @@ -111,7 +111,7 @@
100.0%
100.0 % - 62 / 62 + 66 / 66 100.0 % 18 / 18 100.0 % @@ -147,11 +147,11 @@
100.0%
100.0 % - 360 / 360 + 378 / 378 100.0 % - 101 / 101 + 109 / 109 100.0 % - 105 / 105 + 109 / 109 abstract/core @@ -159,7 +159,7 @@
100.0%
100.0 % - 51 / 51 + 52 / 52 100.0 % 19 / 19 100.0 % @@ -171,9 +171,9 @@
100.0%
100.0 % - 112 / 112 + 133 / 133 100.0 % - 68 / 68 + 79 / 79 - 0 / 0 diff --git a/doc/coverage/lcov.info b/doc/coverage/lcov.info index f2bc445..65fb8e6 100644 --- a/doc/coverage/lcov.info +++ b/doc/coverage/lcov.info @@ -1,116 +1,20 @@ TN: -SF:script/DeployCMTATWithBlacklist.s.sol -DA:11,1 -FN:11,DeployCMTATWithBlacklist.deploy -FNDA:1,DeployCMTATWithBlacklist.deploy -DA:15,1 -DA:16,1 -DA:17,1 -DA:18,1 -DA:25,1 -DA:27,1 -DA:28,1 -DA:30,1 -DA:32,1 -BRDA:32,0,0,1 -DA:33,1 -DA:34,1 -DA:38,0 -FN:38,DeployCMTATWithBlacklist.run -FNDA:0,DeployCMTATWithBlacklist.run -DA:39,0 -DA:40,0 -DA:41,0 -FNF:2 -FNH:1 -LF:16 -LH:12 -BRF:1 -BRH:1 -end_of_record -TN: -SF:script/DeployCMTATWithBlacklistAndSanctionsList.s.sol -DA:27,18 -FN:27,DeployCMTATWithBlacklistAndSanctionsList.deploy -FNDA:18,DeployCMTATWithBlacklistAndSanctionsList.deploy -DA:36,18 -DA:37,18 -DA:38,18 -DA:39,18 -DA:46,18 -DA:49,18 -DA:52,18 -DA:53,18 -DA:57,18 -DA:60,18 -DA:61,18 -DA:64,18 -DA:67,18 -BRDA:67,0,0,18 -DA:68,18 -DA:69,18 -DA:70,18 -DA:71,18 -DA:75,0 -FN:75,DeployCMTATWithBlacklistAndSanctionsList.run -FNDA:0,DeployCMTATWithBlacklistAndSanctionsList.run -DA:84,0 -DA:87,0 -DA:89,0 -FNF:2 -FNH:1 -LF:22 -LH:18 -BRF:1 -BRH:1 -end_of_record -TN: -SF:script/DeployCMTATWithWhitelist.s.sol -DA:11,1 -FN:11,DeployCMTATWithWhitelist.deploy -FNDA:1,DeployCMTATWithWhitelist.deploy -DA:15,1 -DA:16,1 -DA:17,1 -DA:18,1 -DA:25,1 -DA:27,1 -DA:28,1 -DA:30,1 -DA:32,1 -BRDA:32,0,0,1 -DA:33,1 -DA:34,1 -DA:38,0 -FN:38,DeployCMTATWithWhitelist.run -FNDA:0,DeployCMTATWithWhitelist.run -DA:39,0 -DA:40,0 -DA:41,0 -FNF:2 -FNH:1 -LF:16 -LH:12 -BRF:1 -BRH:1 -end_of_record -TN: SF:src/modules/AccessControlModuleStandalone.sol -DA:24,415 +DA:24,421 FN:24,AccessControlModuleStandalone.constructor -FNDA:415,AccessControlModuleStandalone.constructor -DA:25,415 +FNDA:421,AccessControlModuleStandalone.constructor +DA:25,421 BRDA:25,0,0,6 -BRDA:25,0,1,409 -DA:29,409 -DA:38,525 +BRDA:25,0,1,415 +DA:29,415 +DA:38,531 FN:38,AccessControlModuleStandalone.hasRole -FNDA:525,AccessControlModuleStandalone.hasRole -DA:47,3622 -BRDA:47,1,0,3115 -BRDA:47,1,1,507 -DA:48,3115 -DA:50,507 +FNDA:531,AccessControlModuleStandalone.hasRole +DA:47,3534 +BRDA:47,1,0,3021 +BRDA:47,1,1,513 +DA:48,3021 +DA:50,513 FNF:2 FNH:2 LF:7 @@ -146,17 +50,17 @@ DA:42,1 FN:42,RuleConditionalTransferLight.destroyed FNDA:1,RuleConditionalTransferLight.destroyed DA:43,1 -DA:46,1948 +DA:46,1848 FN:46,RuleConditionalTransferLight._authorizeTransferApproval -FNDA:1948,RuleConditionalTransferLight._authorizeTransferApproval -DA:48,844 +FNDA:1848,RuleConditionalTransferLight._authorizeTransferApproval +DA:48,770 FN:48,RuleConditionalTransferLight._authorizeTransferExecution -FNDA:844,RuleConditionalTransferLight._authorizeTransferExecution -DA:49,844 +FNDA:770,RuleConditionalTransferLight._authorizeTransferExecution +DA:49,770 BRDA:49,0,0,1 -BRDA:49,0,1,843 -DA:55,19 -FN:55,RuleConditionalTransferLight._onlyComplianceManager +BRDA:49,0,1,769 +DA:52,19 +FN:52,RuleConditionalTransferLight._onlyComplianceManager FNDA:19,RuleConditionalTransferLight._onlyComplianceManager FNF:6 FNH:6 @@ -167,16 +71,16 @@ BRH:2 end_of_record TN: SF:src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol -DA:21,4 -FN:21,RuleConditionalTransferLightOwnable2Step.supportsInterface +DA:18,4 +FN:18,RuleConditionalTransferLightOwnable2Step.supportsInterface FNDA:4,RuleConditionalTransferLightOwnable2Step.supportsInterface -DA:22,4 -DA:23,2 -DA:26,4 -FN:26,RuleConditionalTransferLightOwnable2Step._authorizeTransferApproval +DA:19,4 +DA:20,2 +DA:23,4 +FN:23,RuleConditionalTransferLightOwnable2Step._authorizeTransferApproval FNDA:4,RuleConditionalTransferLightOwnable2Step._authorizeTransferApproval -DA:28,3 -FN:28,RuleConditionalTransferLightOwnable2Step._authorizeTransferExecution +DA:25,3 +FN:25,RuleConditionalTransferLightOwnable2Step._authorizeTransferExecution FNDA:3,RuleConditionalTransferLightOwnable2Step._authorizeTransferExecution FNF:3 FNH:3 @@ -187,122 +91,126 @@ BRH:0 end_of_record TN: SF:src/rules/operation/abstract/RuleConditionalTransferLightBase.sol -DA:25,1941 -FN:25,RuleConditionalTransferLightBase.approveTransfer -FNDA:1941,RuleConditionalTransferLightBase.approveTransfer -DA:26,1942 -DA:27,1942 -DA:28,1942 -DA:31,4 -FN:31,RuleConditionalTransferLightBase.cancelTransferApproval +DA:27,1841 +FN:27,RuleConditionalTransferLightBase.approveTransfer +FNDA:1841,RuleConditionalTransferLightBase.approveTransfer +DA:28,1842 +DA:29,1842 +DA:30,1842 +DA:33,4 +FN:33,RuleConditionalTransferLightBase.cancelTransferApproval FNDA:4,RuleConditionalTransferLightBase.cancelTransferApproval -DA:32,3 -DA:33,3 DA:34,3 -BRDA:34,0,0,1 -BRDA:34,0,1,2 -DA:35,2 -DA:36,2 -DA:45,4 -FN:45,RuleConditionalTransferLightBase.approveAndTransferIfAllowed +DA:35,3 +DA:36,3 +BRDA:36,0,0,1 +BRDA:36,0,1,2 +DA:37,2 +DA:38,2 +DA:47,4 +FN:47,RuleConditionalTransferLightBase.approveAndTransferIfAllowed FNDA:4,RuleConditionalTransferLightBase.approveAndTransferIfAllowed -DA:50,4 -BRDA:50,1,0,1 -BRDA:50,1,1,3 -DA:52,3 +DA:52,4 +BRDA:52,1,0,1 +BRDA:52,1,1,3 DA:54,3 -DA:55,3 -BRDA:55,2,0,1 -BRDA:55,2,1,2 +DA:56,3 +DA:57,3 +BRDA:57,2,0,1 +BRDA:57,2,1,2 +DA:59,2 DA:60,2 -DA:61,2 -BRDA:61,3,0,1 -BRDA:61,3,1,1 -DA:62,1 -DA:65,264 -FN:65,RuleConditionalTransferLightBase.approvedCount -FNDA:264,RuleConditionalTransferLightBase.approvedCount -DA:66,264 -DA:67,264 -DA:70,843 -FN:70,RuleConditionalTransferLightBase.transferred.0 -FNDA:843,RuleConditionalTransferLightBase.transferred.0 -DA:75,841 -DA:78,1 -FN:78,RuleConditionalTransferLightBase.transferred.1 +BRDA:60,3,0,1 +BRDA:60,3,1,1 +DA:61,1 +DA:64,263 +FN:64,RuleConditionalTransferLightBase.approvedCount +FNDA:263,RuleConditionalTransferLightBase.approvedCount +DA:65,263 +DA:66,263 +DA:69,769 +FN:69,RuleConditionalTransferLightBase.transferred.0 +FNDA:769,RuleConditionalTransferLightBase.transferred.0 +DA:74,767 +DA:77,1 +FN:77,RuleConditionalTransferLightBase.transferred.1 FNDA:1,RuleConditionalTransferLightBase.transferred.1 -DA:83,1 -DA:86,7 -FN:86,RuleConditionalTransferLightBase.detectTransferRestriction +DA:88,1 +DA:91,7 +FN:91,RuleConditionalTransferLightBase.detectTransferRestriction FNDA:7,RuleConditionalTransferLightBase.detectTransferRestriction -DA:92,13 -BRDA:92,4,0,4 -DA:93,4 -DA:95,9 -DA:96,9 -BRDA:96,5,0,6 -DA:97,6 -DA:99,3 -DA:102,1 -FN:102,RuleConditionalTransferLightBase.detectTransferRestrictionFrom +DA:97,13 +BRDA:97,4,0,4 +DA:98,4 +DA:100,9 +DA:101,9 +BRDA:101,5,0,6 +DA:102,6 +DA:104,3 +DA:107,1 +FN:107,RuleConditionalTransferLightBase.detectTransferRestrictionFrom FNDA:1,RuleConditionalTransferLightBase.detectTransferRestrictionFrom -DA:108,2 -DA:111,4 -FN:111,RuleConditionalTransferLightBase.canTransfer +DA:119,2 +DA:122,4 +FN:122,RuleConditionalTransferLightBase.canTransfer FNDA:4,RuleConditionalTransferLightBase.canTransfer -DA:117,4 -DA:120,1 -FN:120,RuleConditionalTransferLightBase.canTransferFrom +DA:128,4 +DA:131,1 +FN:131,RuleConditionalTransferLightBase.canTransferFrom FNDA:1,RuleConditionalTransferLightBase.canTransferFrom -DA:126,1 -DA:130,1 -FN:130,RuleConditionalTransferLightBase.canReturnTransferRestrictionCode +DA:137,1 +DA:141,1 +FN:141,RuleConditionalTransferLightBase.canReturnTransferRestrictionCode FNDA:1,RuleConditionalTransferLightBase.canReturnTransferRestrictionCode -DA:131,1 -DA:134,2 -FN:134,RuleConditionalTransferLightBase.messageForTransferRestriction +DA:142,1 +DA:145,2 +FN:145,RuleConditionalTransferLightBase.messageForTransferRestriction FNDA:2,RuleConditionalTransferLightBase.messageForTransferRestriction -DA:140,2 -BRDA:140,6,0,1 -DA:141,1 -DA:143,1 -DA:146,3 -FN:146,RuleConditionalTransferLightBase.transferred.2 +DA:151,2 +BRDA:151,6,0,1 +DA:152,1 +DA:154,1 +DA:157,3 +FN:157,RuleConditionalTransferLightBase.transferred.2 FNDA:3,RuleConditionalTransferLightBase.transferred.2 -DA:147,3 -DA:150,3 -FN:150,RuleConditionalTransferLightBase._transferredFromContext +DA:158,3 +DA:161,3 +FN:161,RuleConditionalTransferLightBase._transferredFromContext FNDA:3,RuleConditionalTransferLightBase._transferredFromContext -DA:151,3 -DA:154,847 -FN:154,RuleConditionalTransferLightBase._transferred -FNDA:847,RuleConditionalTransferLightBase._transferred -DA:155,847 -BRDA:155,7,0,847 -DA:156,847 -DA:158,833 -DA:159,833 -DA:161,833 -BRDA:161,8,0,3 -BRDA:161,8,1,830 -DA:163,830 -DA:164,830 -DA:167,3051 -FN:167,RuleConditionalTransferLightBase._transferHash -FNDA:3051,RuleConditionalTransferLightBase._transferHash -DA:168,3051 -DA:175,4 -FN:175,RuleConditionalTransferLightBase.onlyTransferApprover +DA:162,3 +DA:165,773 +FN:165,RuleConditionalTransferLightBase._transferred +FNDA:773,RuleConditionalTransferLightBase._transferred +DA:166,773 +BRDA:166,7,0,773 +DA:167,773 +DA:169,768 +DA:170,768 +DA:172,768 +BRDA:172,8,0,3 +BRDA:172,8,1,765 +DA:174,765 +DA:175,765 +DA:178,2885 +FN:178,RuleConditionalTransferLightBase._transferHash +FNDA:2885,RuleConditionalTransferLightBase._transferHash +DA:181,2885 +DA:182,2885 +DA:183,2885 +DA:184,2885 +DA:185,2885 +DA:193,4 +FN:193,RuleConditionalTransferLightBase.onlyTransferApprover FNDA:4,RuleConditionalTransferLightBase.onlyTransferApprover -DA:176,4 -DA:180,3 -FN:180,RuleConditionalTransferLightBase.onlyTransferExecutor +DA:194,4 +DA:198,3 +FN:198,RuleConditionalTransferLightBase.onlyTransferExecutor FNDA:3,RuleConditionalTransferLightBase.onlyTransferExecutor -DA:181,3 +DA:199,3 FNF:18 FNH:18 -LF:62 -LH:62 +LF:66 +LH:66 BRF:14 BRH:14 end_of_record @@ -318,14 +226,14 @@ FN:63,RuleAddressSet.removeAddresses FNDA:260,RuleAddressSet.removeAddresses DA:64,259 DA:65,259 -DA:75,111 +DA:75,117 FN:75,RuleAddressSet.addAddress -FNDA:111,RuleAddressSet.addAddress -DA:76,106 +FNDA:117,RuleAddressSet.addAddress +DA:76,112 BRDA:76,0,0,1 -BRDA:76,0,1,105 -DA:77,105 -DA:78,105 +BRDA:76,0,1,111 +DA:77,111 +DA:78,111 DA:88,12 FN:88,RuleAddressSet.removeAddress FNDA:12,RuleAddressSet.removeAddress @@ -353,25 +261,25 @@ DA:126,2 DA:134,71 FN:134,RuleAddressSet.isAddressListed FNDA:71,RuleAddressSet.isAddressListed -DA:135,387 +DA:135,391 DA:143,108 FN:143,RuleAddressSet.areAddressesListed FNDA:108,RuleAddressSet.areAddressesListed DA:144,108 DA:145,108 DA:146,244 -DA:154,917 -FN:154,RuleAddressSet._msgSender -FNDA:917,RuleAddressSet._msgSender -DA:155,917 -DA:159,6 -FN:159,RuleAddressSet._msgData -FNDA:6,RuleAddressSet._msgData +DA:155,929 +FN:155,RuleAddressSet._msgSender +FNDA:929,RuleAddressSet._msgSender +DA:156,929 DA:160,6 -DA:164,925 -FN:164,RuleAddressSet._contextSuffixLength -FNDA:925,RuleAddressSet._contextSuffixLength -DA:165,925 +FN:160,RuleAddressSet._msgData +FNDA:6,RuleAddressSet._msgData +DA:161,6 +DA:165,937 +FN:165,RuleAddressSet._contextSuffixLength +FNDA:937,RuleAddressSet._contextSuffixLength +DA:166,937 FNF:13 FNH:13 LF:34 @@ -384,37 +292,37 @@ SF:src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol DA:38,274 FN:38,RuleAddressSetInternal._addAddresses FNDA:274,RuleAddressSetInternal._addAddresses -DA:42,274 -DA:43,806 -BRDA:43,0,0,548 -BRDA:43,0,1,258 -DA:44,548 -DA:46,258 -DA:60,259 -FN:60,RuleAddressSetInternal._removeAddresses +DA:39,274 +DA:40,806 +BRDA:40,0,0,548 +BRDA:40,0,1,258 +DA:41,548 +DA:43,258 +DA:57,259 +FN:57,RuleAddressSetInternal._removeAddresses FNDA:259,RuleAddressSetInternal._removeAddresses -DA:64,259 -DA:65,775 -BRDA:65,1,0,518 -BRDA:65,1,1,257 -DA:66,518 -DA:68,257 -DA:77,105 -FN:77,RuleAddressSetInternal._addAddress -FNDA:105,RuleAddressSetInternal._addAddress -DA:78,105 -DA:85,6 -FN:85,RuleAddressSetInternal._removeAddress +DA:61,259 +DA:62,775 +BRDA:62,1,0,518 +BRDA:62,1,1,257 +DA:63,518 +DA:65,257 +DA:74,111 +FN:74,RuleAddressSetInternal._addAddress +FNDA:111,RuleAddressSetInternal._addAddress +DA:75,111 +DA:82,6 +FN:82,RuleAddressSetInternal._removeAddress FNDA:6,RuleAddressSetInternal._removeAddress -DA:86,6 -DA:93,536 -FN:93,RuleAddressSetInternal._listedAddressCount +DA:83,6 +DA:90,536 +FN:90,RuleAddressSetInternal._listedAddressCount FNDA:536,RuleAddressSetInternal._listedAddressCount -DA:94,536 -DA:102,757 -FN:102,RuleAddressSetInternal._isAddressListed -FNDA:757,RuleAddressSetInternal._isAddressListed -DA:103,757 +DA:91,536 +DA:99,771 +FN:99,RuleAddressSetInternal._isAddressListed +FNDA:771,RuleAddressSetInternal._isAddressListed +DA:100,771 FNF:6 FNH:6 LF:18 @@ -504,68 +412,68 @@ SF:src/rules/validation/abstract/base/RuleBlacklistBase.sol DA:20,106 FN:20,RuleBlacklistBase._detectTransferRestriction FNDA:106,RuleBlacklistBase._detectTransferRestriction -DA:26,106 -BRDA:26,0,0,23 -BRDA:26,0,1,64 -DA:27,23 -DA:28,83 -BRDA:28,1,0,19 -DA:29,19 -DA:31,64 -DA:34,22 -FN:34,RuleBlacklistBase._detectTransferRestrictionFrom +DA:30,106 +BRDA:30,0,0,23 +BRDA:30,0,1,64 +DA:31,23 +DA:32,83 +BRDA:32,1,0,19 +DA:33,19 +DA:35,64 +DA:38,22 +FN:38,RuleBlacklistBase._detectTransferRestrictionFrom FNDA:22,RuleBlacklistBase._detectTransferRestrictionFrom -DA:40,22 -BRDA:40,2,0,8 -DA:41,8 -DA:43,14 -DA:46,4 -FN:46,RuleBlacklistBase.canReturnTransferRestrictionCode +DA:44,22 +BRDA:44,2,0,8 +DA:45,8 +DA:47,14 +DA:50,4 +FN:50,RuleBlacklistBase.canReturnTransferRestrictionCode FNDA:4,RuleBlacklistBase.canReturnTransferRestrictionCode -DA:53,4 -DA:54,1 -DA:57,12 -FN:57,RuleBlacklistBase.messageForTransferRestriction +DA:57,4 +DA:58,1 +DA:61,12 +FN:61,RuleBlacklistBase.messageForTransferRestriction FNDA:12,RuleBlacklistBase.messageForTransferRestriction -DA:64,12 -BRDA:64,3,0,5 -BRDA:64,3,1,3 -DA:65,5 -DA:66,7 -BRDA:66,4,0,3 -BRDA:66,4,1,3 -DA:67,3 -DA:68,4 -BRDA:68,5,0,1 -BRDA:68,5,1,3 -DA:69,1 +DA:68,12 +BRDA:68,3,0,5 +BRDA:68,3,1,3 +DA:69,5 +DA:70,7 +BRDA:70,4,0,3 +BRDA:70,4,1,3 DA:71,3 -DA:75,61 -FN:75,RuleBlacklistBase.supportsInterface +DA:72,4 +BRDA:72,5,0,1 +BRDA:72,5,1,3 +DA:73,1 +DA:75,3 +DA:79,61 +FN:79,RuleBlacklistBase.supportsInterface FNDA:61,RuleBlacklistBase.supportsInterface -DA:76,61 -DA:83,58 -FN:83,RuleBlacklistBase.transferred.0 +DA:80,61 +DA:87,58 +FN:87,RuleBlacklistBase.transferred.0 FNDA:58,RuleBlacklistBase.transferred.0 -DA:89,58 -DA:96,2 -FN:96,RuleBlacklistBase.transferred.1 +DA:93,58 +DA:100,2 +FN:100,RuleBlacklistBase.transferred.1 FNDA:2,RuleBlacklistBase.transferred.1 -DA:102,2 -DA:105,61 -FN:105,RuleBlacklistBase._transferred +DA:106,2 +DA:109,61 +FN:109,RuleBlacklistBase._transferred FNDA:61,RuleBlacklistBase._transferred -DA:106,61 -DA:107,61 -BRDA:107,6,0,15 -BRDA:107,6,1,46 -DA:113,4 -FN:113,RuleBlacklistBase._transferredFrom +DA:110,61 +DA:111,61 +BRDA:111,6,0,15 +BRDA:111,6,1,46 +DA:117,4 +FN:117,RuleBlacklistBase._transferredFrom FNDA:4,RuleBlacklistBase._transferredFrom +DA:118,4 DA:119,4 -DA:120,4 -BRDA:120,7,0,2 -BRDA:120,7,1,2 +BRDA:119,7,0,2 +BRDA:119,7,1,2 FNF:9 FNH:9 LF:33 @@ -578,200 +486,199 @@ SF:src/rules/validation/abstract/base/RuleERC2980Base.sol DA:47,22 FN:47,RuleERC2980Base._detectTransferRestriction FNDA:22,RuleERC2980Base._detectTransferRestriction -DA:55,22 -BRDA:55,0,0,4 -BRDA:55,0,1,14 -DA:56,4 -DA:57,18 -BRDA:57,1,0,4 -DA:58,4 -DA:61,14 -BRDA:61,2,0,4 +DA:59,22 +BRDA:59,0,0,4 +BRDA:59,0,1,14 +DA:60,4 +DA:61,18 +BRDA:61,1,0,4 DA:62,4 -DA:64,10 -DA:67,8 -FN:67,RuleERC2980Base._detectTransferRestrictionFrom +DA:65,14 +BRDA:65,2,0,4 +DA:66,4 +DA:68,10 +DA:71,8 +FN:71,RuleERC2980Base._detectTransferRestrictionFrom FNDA:8,RuleERC2980Base._detectTransferRestrictionFrom -DA:74,8 -BRDA:74,3,0,4 -DA:75,4 -DA:77,4 -DA:84,4 -FN:84,RuleERC2980Base.transferred.0 +DA:78,8 +BRDA:78,3,0,4 +DA:79,4 +DA:81,4 +DA:88,4 +FN:88,RuleERC2980Base.transferred.0 FNDA:4,RuleERC2980Base.transferred.0 -DA:90,4 -DA:93,2 -FN:93,RuleERC2980Base.transferred.1 +DA:94,4 +DA:97,2 +FN:97,RuleERC2980Base.transferred.1 FNDA:2,RuleERC2980Base.transferred.1 -DA:99,2 -DA:102,5 -FN:102,RuleERC2980Base._transferred +DA:103,2 +DA:106,5 +FN:106,RuleERC2980Base._transferred FNDA:5,RuleERC2980Base._transferred -DA:103,5 -DA:104,5 -BRDA:104,4,0,3 -BRDA:104,4,1,2 -DA:110,3 -FN:110,RuleERC2980Base._transferredFrom +DA:107,5 +DA:108,5 +BRDA:108,4,0,3 +BRDA:108,4,1,2 +DA:114,3 +FN:114,RuleERC2980Base._transferredFrom FNDA:3,RuleERC2980Base._transferredFrom +DA:115,3 DA:116,3 -DA:117,3 -BRDA:117,5,0,1 -BRDA:117,5,1,2 -DA:127,5 -FN:127,RuleERC2980Base.canReturnTransferRestrictionCode +BRDA:116,5,0,1 +BRDA:116,5,1,2 +DA:126,5 +FN:126,RuleERC2980Base.canReturnTransferRestrictionCode FNDA:5,RuleERC2980Base.canReturnTransferRestrictionCode -DA:134,5 -DA:135,3 -DA:136,2 -DA:139,5 -FN:139,RuleERC2980Base.messageForTransferRestriction +DA:133,5 +DA:134,3 +DA:137,5 +FN:137,RuleERC2980Base.messageForTransferRestriction FNDA:5,RuleERC2980Base.messageForTransferRestriction -DA:146,5 -BRDA:146,6,0,1 -BRDA:146,6,1,1 +DA:144,5 +BRDA:144,6,0,1 +BRDA:144,6,1,1 +DA:145,1 +DA:146,4 +BRDA:146,7,0,1 +BRDA:146,7,1,1 DA:147,1 -DA:148,4 -BRDA:148,7,0,1 -BRDA:148,7,1,1 +DA:148,3 +BRDA:148,8,0,1 +BRDA:148,8,1,1 DA:149,1 -DA:150,3 -BRDA:150,8,0,1 -BRDA:150,8,1,1 +DA:150,2 +BRDA:150,9,0,1 +BRDA:150,9,1,1 DA:151,1 -DA:152,2 -BRDA:152,9,0,1 -BRDA:152,9,1,1 DA:153,1 -DA:155,1 -DA:167,6 -FN:167,RuleERC2980Base.addWhitelistAddresses +DA:165,6 +FN:165,RuleERC2980Base.addWhitelistAddresses FNDA:6,RuleERC2980Base.addWhitelistAddresses -DA:168,4 -DA:169,4 -DA:176,4 -FN:176,RuleERC2980Base.removeWhitelistAddresses +DA:166,4 +DA:167,4 +DA:174,4 +FN:174,RuleERC2980Base.removeWhitelistAddresses FNDA:4,RuleERC2980Base.removeWhitelistAddresses -DA:177,3 -DA:178,3 -DA:189,43 -FN:189,RuleERC2980Base.addWhitelistAddress +DA:175,3 +DA:176,3 +DA:187,43 +FN:187,RuleERC2980Base.addWhitelistAddress FNDA:43,RuleERC2980Base.addWhitelistAddress -DA:190,40 -BRDA:190,10,0,1 -BRDA:190,10,1,39 -DA:191,39 -DA:192,39 -DA:203,7 -FN:203,RuleERC2980Base.removeWhitelistAddress +DA:188,40 +BRDA:188,10,0,1 +BRDA:188,10,1,39 +DA:189,39 +DA:190,39 +DA:201,7 +FN:201,RuleERC2980Base.removeWhitelistAddress FNDA:7,RuleERC2980Base.removeWhitelistAddress -DA:204,5 -BRDA:204,11,0,1 -BRDA:204,11,1,4 -DA:205,4 -DA:206,4 -DA:212,5 -FN:212,RuleERC2980Base.whitelistAddressCount +DA:202,5 +BRDA:202,11,0,1 +BRDA:202,11,1,4 +DA:203,4 +DA:204,4 +DA:210,5 +FN:210,RuleERC2980Base.whitelistAddressCount FNDA:5,RuleERC2980Base.whitelistAddressCount -DA:213,5 -DA:219,13 -FN:219,RuleERC2980Base.isWhitelisted +DA:211,5 +DA:217,13 +FN:217,RuleERC2980Base.isWhitelisted FNDA:13,RuleERC2980Base.isWhitelisted -DA:220,13 -DA:226,5 -FN:226,RuleERC2980Base.whitelist +DA:218,13 +DA:224,5 +FN:224,RuleERC2980Base.whitelist FNDA:5,RuleERC2980Base.whitelist -DA:227,5 -DA:235,3 -FN:235,RuleERC2980Base.isVerified +DA:225,5 +DA:233,3 +FN:233,RuleERC2980Base.isVerified FNDA:3,RuleERC2980Base.isVerified -DA:242,3 -DA:248,1 -FN:248,RuleERC2980Base.areWhitelisted +DA:234,3 +DA:240,1 +FN:240,RuleERC2980Base.areWhitelisted FNDA:1,RuleERC2980Base.areWhitelisted -DA:249,1 -DA:250,1 -DA:251,2 -DA:263,6 -FN:263,RuleERC2980Base.addFrozenlistAddresses +DA:241,1 +DA:242,1 +DA:243,2 +DA:255,6 +FN:255,RuleERC2980Base.addFrozenlistAddresses FNDA:6,RuleERC2980Base.addFrozenlistAddresses -DA:264,4 -DA:265,4 -DA:272,2 -FN:272,RuleERC2980Base.removeFrozenlistAddresses +DA:256,4 +DA:257,4 +DA:264,2 +FN:264,RuleERC2980Base.removeFrozenlistAddresses FNDA:2,RuleERC2980Base.removeFrozenlistAddresses -DA:273,2 -DA:274,2 -DA:285,22 -FN:285,RuleERC2980Base.addFrozenlistAddress +DA:265,2 +DA:266,2 +DA:277,22 +FN:277,RuleERC2980Base.addFrozenlistAddress FNDA:22,RuleERC2980Base.addFrozenlistAddress -DA:286,19 -BRDA:286,12,0,1 -BRDA:286,12,1,18 -DA:287,18 -DA:288,18 -DA:299,7 -FN:299,RuleERC2980Base.removeFrozenlistAddress +DA:278,19 +BRDA:278,12,0,1 +BRDA:278,12,1,18 +DA:279,18 +DA:280,18 +DA:291,7 +FN:291,RuleERC2980Base.removeFrozenlistAddress FNDA:7,RuleERC2980Base.removeFrozenlistAddress -DA:300,5 -BRDA:300,13,0,1 -BRDA:300,13,1,4 -DA:301,4 -DA:302,4 -DA:308,4 -FN:308,RuleERC2980Base.frozenlistAddressCount +DA:292,5 +BRDA:292,13,0,1 +BRDA:292,13,1,4 +DA:293,4 +DA:294,4 +DA:300,4 +FN:300,RuleERC2980Base.frozenlistAddressCount FNDA:4,RuleERC2980Base.frozenlistAddressCount -DA:309,4 -DA:315,12 -FN:315,RuleERC2980Base.isFrozen +DA:301,4 +DA:307,12 +FN:307,RuleERC2980Base.isFrozen FNDA:12,RuleERC2980Base.isFrozen -DA:316,12 -DA:322,4 -FN:322,RuleERC2980Base.frozenlist +DA:308,12 +DA:314,4 +FN:314,RuleERC2980Base.frozenlist FNDA:4,RuleERC2980Base.frozenlist -DA:323,4 -DA:329,1 -FN:329,RuleERC2980Base.areFrozen +DA:315,4 +DA:321,1 +FN:321,RuleERC2980Base.areFrozen FNDA:1,RuleERC2980Base.areFrozen -DA:330,1 -DA:331,1 -DA:332,2 -DA:340,1 -FN:340,RuleERC2980Base.supportsInterface +DA:322,1 +DA:323,1 +DA:324,2 +DA:332,1 +FN:332,RuleERC2980Base.supportsInterface FNDA:1,RuleERC2980Base.supportsInterface -DA:341,1 -DA:348,6 -FN:348,RuleERC2980Base.onlyWhitelistAdd +DA:333,1 +DA:340,6 +FN:340,RuleERC2980Base.onlyWhitelistAdd FNDA:6,RuleERC2980Base.onlyWhitelistAdd -DA:349,6 -DA:353,7 -FN:353,RuleERC2980Base.onlyWhitelistRemove +DA:341,6 +DA:345,7 +FN:345,RuleERC2980Base.onlyWhitelistRemove FNDA:7,RuleERC2980Base.onlyWhitelistRemove -DA:354,7 -DA:358,6 -FN:358,RuleERC2980Base.onlyFrozenlistAdd +DA:346,7 +DA:350,6 +FN:350,RuleERC2980Base.onlyFrozenlistAdd FNDA:6,RuleERC2980Base.onlyFrozenlistAdd -DA:359,6 -DA:363,2 -FN:363,RuleERC2980Base.onlyFrozenlistRemove +DA:351,6 +DA:355,2 +FN:355,RuleERC2980Base.onlyFrozenlistRemove FNDA:2,RuleERC2980Base.onlyFrozenlistRemove -DA:364,2 -DA:377,267 -FN:377,RuleERC2980Base._msgSender +DA:356,2 +DA:369,267 +FN:369,RuleERC2980Base._msgSender FNDA:267,RuleERC2980Base._msgSender -DA:378,267 -DA:381,2 -FN:381,RuleERC2980Base._msgData +DA:370,267 +DA:373,2 +FN:373,RuleERC2980Base._msgData FNDA:2,RuleERC2980Base._msgData -DA:382,2 -DA:385,269 -FN:385,RuleERC2980Base._contextSuffixLength +DA:374,2 +DA:377,269 +FN:377,RuleERC2980Base._contextSuffixLength FNDA:269,RuleERC2980Base._contextSuffixLength -DA:386,269 +DA:378,269 FNF:33 FNH:33 -LF:102 -LH:102 +LF:101 +LH:101 BRF:25 BRH:25 end_of_record @@ -799,78 +706,78 @@ DA:33,3 DA:36,16 FN:36,RuleIdentityRegistryBase._detectTransferRestriction FNDA:16,RuleIdentityRegistryBase._detectTransferRestriction -DA:42,16 -BRDA:42,2,0,3 -DA:43,3 -DA:45,13 -BRDA:45,3,0,2 -DA:46,2 -DA:49,11 -BRDA:49,4,0,4 -DA:50,4 -DA:52,7 -BRDA:52,5,0,1 -DA:53,1 -DA:55,6 -DA:58,9 -FN:58,RuleIdentityRegistryBase._detectTransferRestrictionFrom +DA:46,16 +BRDA:46,2,0,3 +DA:47,3 +DA:49,13 +BRDA:49,3,0,2 +DA:50,2 +DA:53,11 +BRDA:53,4,0,4 +DA:54,4 +DA:56,7 +BRDA:56,5,0,1 +DA:57,1 +DA:59,6 +DA:62,9 +FN:62,RuleIdentityRegistryBase._detectTransferRestrictionFrom FNDA:9,RuleIdentityRegistryBase._detectTransferRestrictionFrom -DA:64,9 -BRDA:64,6,0,1 -DA:65,1 -DA:67,8 -BRDA:67,7,0,1 -DA:68,1 -DA:70,7 -BRDA:70,8,0,4 -DA:71,4 -DA:73,3 -DA:76,2 -FN:76,RuleIdentityRegistryBase.transferred.0 +DA:68,9 +BRDA:68,6,0,1 +DA:69,1 +DA:71,8 +BRDA:71,7,0,1 +DA:72,1 +DA:74,7 +BRDA:74,8,0,4 +DA:75,4 +DA:77,3 +DA:80,2 +FN:80,RuleIdentityRegistryBase.transferred.0 FNDA:2,RuleIdentityRegistryBase.transferred.0 DA:81,2 DA:84,2 FN:84,RuleIdentityRegistryBase.transferred.1 FNDA:2,RuleIdentityRegistryBase.transferred.1 -DA:89,2 -DA:92,2 -FN:92,RuleIdentityRegistryBase._transferred +DA:85,2 +DA:88,2 +FN:88,RuleIdentityRegistryBase._transferred FNDA:2,RuleIdentityRegistryBase._transferred -DA:93,2 -DA:94,2 -BRDA:94,9,0,1 -BRDA:94,9,1,1 -DA:100,2 -FN:100,RuleIdentityRegistryBase._transferredFrom +DA:89,2 +DA:90,2 +BRDA:90,9,0,1 +BRDA:90,9,1,1 +DA:96,2 +FN:96,RuleIdentityRegistryBase._transferredFrom FNDA:2,RuleIdentityRegistryBase._transferredFrom -DA:106,2 -DA:107,2 -BRDA:107,10,0,1 -BRDA:107,10,1,1 -DA:113,4 -FN:113,RuleIdentityRegistryBase.canReturnTransferRestrictionCode +DA:97,2 +DA:98,2 +BRDA:98,10,0,1 +BRDA:98,10,1,1 +DA:104,4 +FN:104,RuleIdentityRegistryBase.canReturnTransferRestrictionCode FNDA:4,RuleIdentityRegistryBase.canReturnTransferRestrictionCode -DA:114,4 -DA:115,2 -DA:118,4 -FN:118,RuleIdentityRegistryBase.messageForTransferRestriction +DA:105,4 +DA:106,2 +DA:109,4 +FN:109,RuleIdentityRegistryBase.messageForTransferRestriction FNDA:4,RuleIdentityRegistryBase.messageForTransferRestriction -DA:124,4 -BRDA:124,11,0,1 -BRDA:124,11,1,1 -DA:125,1 -DA:126,3 -BRDA:126,12,0,1 -BRDA:126,12,1,1 -DA:127,1 -DA:128,2 -BRDA:128,13,0,1 -DA:129,1 -DA:131,1 -DA:138,5 -FN:138,RuleIdentityRegistryBase.onlyIdentityRegistryManager +DA:115,4 +BRDA:115,11,0,1 +BRDA:115,11,1,1 +DA:116,1 +DA:117,3 +BRDA:117,12,0,1 +BRDA:117,12,1,1 +DA:118,1 +DA:119,2 +BRDA:119,13,0,1 +DA:120,1 +DA:122,1 +DA:129,5 +FN:129,RuleIdentityRegistryBase.onlyIdentityRegistryManager FNDA:5,RuleIdentityRegistryBase.onlyIdentityRegistryManager -DA:139,5 +DA:130,5 FNF:12 FNH:12 LF:51 @@ -904,54 +811,54 @@ DA:34,1 DA:37,271 FN:37,RuleMaxTotalSupplyBase._detectTransferRestriction FNDA:271,RuleMaxTotalSupplyBase._detectTransferRestriction -DA:43,271 -BRDA:43,2,0,268 -DA:44,268 -DA:45,268 -BRDA:45,3,0,179 -DA:46,179 -DA:49,92 -DA:52,2 -FN:52,RuleMaxTotalSupplyBase._detectTransferRestrictionFrom +DA:48,271 +BRDA:48,2,0,268 +DA:49,268 +DA:50,268 +BRDA:50,3,0,176 +DA:51,176 +DA:54,95 +DA:57,2 +FN:57,RuleMaxTotalSupplyBase._detectTransferRestrictionFrom FNDA:2,RuleMaxTotalSupplyBase._detectTransferRestrictionFrom -DA:58,2 -DA:61,2 -FN:61,RuleMaxTotalSupplyBase.transferred.0 -FNDA:2,RuleMaxTotalSupplyBase.transferred.0 +DA:63,2 DA:66,2 -DA:69,2 -FN:69,RuleMaxTotalSupplyBase.transferred.1 +FN:66,RuleMaxTotalSupplyBase.transferred.0 +FNDA:2,RuleMaxTotalSupplyBase.transferred.0 +DA:67,2 +DA:70,2 +FN:70,RuleMaxTotalSupplyBase.transferred.1 FNDA:2,RuleMaxTotalSupplyBase.transferred.1 +DA:71,2 DA:74,2 -DA:77,2 -FN:77,RuleMaxTotalSupplyBase._transferred +FN:74,RuleMaxTotalSupplyBase._transferred FNDA:2,RuleMaxTotalSupplyBase._transferred -DA:78,2 -DA:79,2 -BRDA:79,4,0,1 -BRDA:79,4,1,1 -DA:85,2 -FN:85,RuleMaxTotalSupplyBase._transferredFrom +DA:75,2 +DA:76,2 +BRDA:76,4,0,1 +BRDA:76,4,1,1 +DA:82,2 +FN:82,RuleMaxTotalSupplyBase._transferredFrom FNDA:2,RuleMaxTotalSupplyBase._transferredFrom -DA:86,2 -DA:87,2 -BRDA:87,5,0,1 -BRDA:87,5,1,1 -DA:93,2 -FN:93,RuleMaxTotalSupplyBase.canReturnTransferRestrictionCode +DA:83,2 +DA:84,2 +BRDA:84,5,0,1 +BRDA:84,5,1,1 +DA:90,2 +FN:90,RuleMaxTotalSupplyBase.canReturnTransferRestrictionCode FNDA:2,RuleMaxTotalSupplyBase.canReturnTransferRestrictionCode +DA:91,2 DA:94,2 -DA:97,2 -FN:97,RuleMaxTotalSupplyBase.messageForTransferRestriction +FN:94,RuleMaxTotalSupplyBase.messageForTransferRestriction FNDA:2,RuleMaxTotalSupplyBase.messageForTransferRestriction -DA:103,2 -BRDA:103,6,0,1 -DA:104,1 -DA:106,1 -DA:113,260 -FN:113,RuleMaxTotalSupplyBase.onlyMaxTotalSupplyManager +DA:100,2 +BRDA:100,6,0,1 +DA:101,1 +DA:103,1 +DA:110,260 +FN:110,RuleMaxTotalSupplyBase.onlyMaxTotalSupplyManager FNDA:260,RuleMaxTotalSupplyBase.onlyMaxTotalSupplyManager -DA:114,260 +DA:111,260 FNF:12 FNH:12 LF:37 @@ -970,88 +877,88 @@ DA:24,20 DA:28,84 FN:28,RuleSanctionsListBase._detectTransferRestriction FNDA:84,RuleSanctionsListBase._detectTransferRestriction -DA:34,84 -BRDA:34,1,0,77 -DA:35,77 -BRDA:35,2,0,10 -BRDA:35,2,1,55 -DA:36,10 -DA:37,67 -BRDA:37,3,0,12 -DA:38,12 -DA:41,62 -DA:44,16 -FN:44,RuleSanctionsListBase._detectTransferRestrictionFrom +DA:38,84 +BRDA:38,1,0,77 +DA:39,77 +BRDA:39,2,0,10 +BRDA:39,2,1,55 +DA:40,10 +DA:41,67 +BRDA:41,3,0,12 +DA:42,12 +DA:45,62 +DA:48,16 +FN:48,RuleSanctionsListBase._detectTransferRestrictionFrom FNDA:16,RuleSanctionsListBase._detectTransferRestrictionFrom -DA:51,16 -BRDA:51,4,0,15 -DA:52,15 -BRDA:52,5,0,6 -DA:53,6 -DA:55,9 -DA:57,1 -DA:60,3 -FN:60,RuleSanctionsListBase.canReturnTransferRestrictionCode +DA:55,16 +BRDA:55,4,0,15 +DA:56,15 +BRDA:56,5,0,6 +DA:57,6 +DA:59,9 +DA:61,1 +DA:64,3 +FN:64,RuleSanctionsListBase.canReturnTransferRestrictionCode FNDA:3,RuleSanctionsListBase.canReturnTransferRestrictionCode -DA:61,3 -DA:62,1 -DA:65,4 -FN:65,RuleSanctionsListBase.messageForTransferRestriction +DA:65,3 +DA:66,1 +DA:69,4 +FN:69,RuleSanctionsListBase.messageForTransferRestriction FNDA:4,RuleSanctionsListBase.messageForTransferRestriction -DA:71,4 -BRDA:71,6,0,1 -BRDA:71,6,1,1 -DA:72,1 -DA:73,3 -BRDA:73,7,0,1 -BRDA:73,7,1,1 -DA:74,1 -DA:75,2 -BRDA:75,8,0,1 +DA:75,4 +BRDA:75,6,0,1 +BRDA:75,6,1,1 DA:76,1 +DA:77,3 +BRDA:77,7,0,1 +BRDA:77,7,1,1 DA:78,1 -DA:81,17 -FN:81,RuleSanctionsListBase.setSanctionListOracle +DA:79,2 +BRDA:79,8,0,1 +DA:80,1 +DA:82,1 +DA:85,17 +FN:85,RuleSanctionsListBase.setSanctionListOracle FNDA:17,RuleSanctionsListBase.setSanctionListOracle -DA:82,15 -BRDA:82,9,0,1 -BRDA:82,9,1,14 -DA:83,14 -DA:86,3 -FN:86,RuleSanctionsListBase.clearSanctionListOracle +DA:86,15 +BRDA:86,9,0,1 +BRDA:86,9,1,14 +DA:87,14 +DA:90,3 +FN:90,RuleSanctionsListBase.clearSanctionListOracle FNDA:3,RuleSanctionsListBase.clearSanctionListOracle -DA:87,3 -DA:90,43 -FN:90,RuleSanctionsListBase.transferred.0 +DA:91,3 +DA:94,43 +FN:94,RuleSanctionsListBase.transferred.0 FNDA:43,RuleSanctionsListBase.transferred.0 DA:95,43 DA:98,2 FN:98,RuleSanctionsListBase.transferred.1 FNDA:2,RuleSanctionsListBase.transferred.1 -DA:103,2 -DA:106,47 -FN:106,RuleSanctionsListBase._transferred +DA:99,2 +DA:102,47 +FN:102,RuleSanctionsListBase._transferred FNDA:47,RuleSanctionsListBase._transferred -DA:107,47 -DA:108,47 -BRDA:108,10,0,6 -BRDA:108,10,1,41 -DA:114,3 -FN:114,RuleSanctionsListBase._transferredFrom +DA:103,47 +DA:104,47 +BRDA:104,10,0,6 +BRDA:104,10,1,41 +DA:110,3 +FN:110,RuleSanctionsListBase._transferredFrom FNDA:3,RuleSanctionsListBase._transferredFrom -DA:120,3 -DA:121,3 -BRDA:121,11,0,2 -BRDA:121,11,1,1 -DA:127,37 -FN:127,RuleSanctionsListBase._setSanctionListOracle +DA:111,3 +DA:112,3 +BRDA:112,11,0,2 +BRDA:112,11,1,1 +DA:118,37 +FN:118,RuleSanctionsListBase._setSanctionListOracle FNDA:37,RuleSanctionsListBase._setSanctionListOracle -DA:128,37 -DA:129,37 -DA:136,3 -FN:136,RuleSanctionsListBase.onlySanctionListManager +DA:119,37 +DA:120,37 +DA:127,3 +FN:127,RuleSanctionsListBase.onlySanctionListManager FNDA:3,RuleSanctionsListBase.onlySanctionListManager -DA:137,3 +DA:128,3 FNF:13 FNH:13 LF:47 @@ -1064,42 +971,42 @@ SF:src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol DA:19,4 FN:19,RuleSpenderWhitelistBase._detectTransferRestriction FNDA:4,RuleSpenderWhitelistBase._detectTransferRestriction -DA:26,4 -DA:29,9 -FN:29,RuleSpenderWhitelistBase._detectTransferRestrictionFrom -FNDA:9,RuleSpenderWhitelistBase._detectTransferRestrictionFrom -DA:36,9 -BRDA:36,0,0,3 -DA:37,3 -DA:39,6 -DA:42,2 -FN:42,RuleSpenderWhitelistBase.canReturnTransferRestrictionCode +DA:20,4 +DA:23,13 +FN:23,RuleSpenderWhitelistBase._detectTransferRestrictionFrom +FNDA:13,RuleSpenderWhitelistBase._detectTransferRestrictionFrom +DA:30,13 +BRDA:30,0,0,5 +DA:31,5 +DA:33,8 +DA:36,2 +FN:36,RuleSpenderWhitelistBase.canReturnTransferRestrictionCode FNDA:2,RuleSpenderWhitelistBase.canReturnTransferRestrictionCode -DA:43,2 -DA:46,2 -FN:46,RuleSpenderWhitelistBase.messageForTransferRestriction +DA:37,2 +DA:40,2 +FN:40,RuleSpenderWhitelistBase.messageForTransferRestriction FNDA:2,RuleSpenderWhitelistBase.messageForTransferRestriction -DA:52,2 -BRDA:52,1,0,1 -DA:53,1 +DA:46,2 +BRDA:46,1,0,1 +DA:47,1 +DA:49,1 DA:55,1 -DA:61,1 -FN:61,RuleSpenderWhitelistBase.transferred.0 +FN:55,RuleSpenderWhitelistBase.transferred.0 FNDA:1,RuleSpenderWhitelistBase.transferred.0 -DA:63,2 -FN:63,RuleSpenderWhitelistBase.transferred.1 +DA:57,2 +FN:57,RuleSpenderWhitelistBase.transferred.1 FNDA:2,RuleSpenderWhitelistBase.transferred.1 -DA:68,2 -DA:71,1 -FN:71,RuleSpenderWhitelistBase._transferred -FNDA:1,RuleSpenderWhitelistBase._transferred -DA:75,3 -FN:75,RuleSpenderWhitelistBase._transferredFrom -FNDA:3,RuleSpenderWhitelistBase._transferredFrom -DA:81,3 -DA:82,3 -BRDA:82,2,0,1 -BRDA:82,2,1,2 +DA:58,2 +DA:61,3 +FN:61,RuleSpenderWhitelistBase._transferred +FNDA:3,RuleSpenderWhitelistBase._transferred +DA:65,7 +FN:65,RuleSpenderWhitelistBase._transferredFrom +FNDA:7,RuleSpenderWhitelistBase._transferredFrom +DA:66,7 +DA:67,7 +BRDA:67,2,0,3 +BRDA:67,2,1,4 FNF:8 FNH:8 LF:19 @@ -1109,49 +1016,49 @@ BRH:4 end_of_record TN: SF:src/rules/validation/abstract/base/RuleWhitelistBase.sol -DA:15,157 -FN:15,RuleWhitelistBase.constructor -FNDA:157,RuleWhitelistBase.constructor -DA:16,157 -DA:19,51 -FN:19,RuleWhitelistBase._detectTransferRestriction -FNDA:51,RuleWhitelistBase._detectTransferRestriction -DA:26,51 -BRDA:26,0,0,13 -BRDA:26,0,1,28 -DA:27,13 -DA:28,38 -BRDA:28,1,0,10 -DA:29,10 -DA:31,28 -DA:34,18 -FN:34,RuleWhitelistBase._detectTransferRestrictionFrom +DA:14,159 +FN:14,RuleWhitelistBase.constructor +FNDA:159,RuleWhitelistBase.constructor +DA:15,159 +DA:18,53 +FN:18,RuleWhitelistBase._detectTransferRestriction +FNDA:53,RuleWhitelistBase._detectTransferRestriction +DA:29,53 +BRDA:29,0,0,13 +BRDA:29,0,1,30 +DA:30,13 +DA:31,40 +BRDA:31,1,0,10 +DA:32,10 +DA:34,30 +DA:37,18 +FN:37,RuleWhitelistBase._detectTransferRestrictionFrom FNDA:18,RuleWhitelistBase._detectTransferRestrictionFrom -DA:41,18 -BRDA:41,2,0,8 -DA:42,8 -DA:44,10 -DA:48,2 -FN:48,RuleWhitelistBase.isVerified +DA:44,18 +BRDA:44,2,0,8 +DA:45,8 +DA:47,10 +DA:50,2 +FN:50,RuleWhitelistBase.isVerified FNDA:2,RuleWhitelistBase.isVerified -DA:55,2 -DA:58,3 -FN:58,RuleWhitelistBase.setCheckSpender +DA:57,2 +DA:60,3 +FN:60,RuleWhitelistBase.setCheckSpender FNDA:3,RuleWhitelistBase.setCheckSpender -DA:59,2 -DA:60,2 -DA:63,2 -FN:63,RuleWhitelistBase._setCheckSpender +DA:61,2 +DA:62,2 +DA:65,2 +FN:65,RuleWhitelistBase._setCheckSpender FNDA:2,RuleWhitelistBase._setCheckSpender -DA:64,2 -DA:67,27 -FN:67,RuleWhitelistBase.supportsInterface +DA:66,2 +DA:69,27 +FN:69,RuleWhitelistBase.supportsInterface FNDA:27,RuleWhitelistBase.supportsInterface -DA:68,27 -DA:75,3 -FN:75,RuleWhitelistBase.onlyCheckSpenderManager +DA:70,27 +DA:77,3 +FN:77,RuleWhitelistBase.onlyCheckSpenderManager FNDA:3,RuleWhitelistBase.onlyCheckSpenderManager -DA:76,3 +DA:78,3 FNF:8 FNH:8 LF:23 @@ -1161,12 +1068,12 @@ BRH:4 end_of_record TN: SF:src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol -DA:36,44 -FN:36,RuleWhitelistWrapperBase.constructor +DA:34,44 +FN:34,RuleWhitelistWrapperBase.constructor FNDA:44,RuleWhitelistWrapperBase.constructor -DA:39,44 -DA:50,34 -FN:50,RuleWhitelistWrapperBase._detectTransferRestriction +DA:35,44 +DA:46,34 +FN:46,RuleWhitelistWrapperBase._detectTransferRestriction FNDA:34,RuleWhitelistWrapperBase._detectTransferRestriction DA:57,34 DA:58,34 @@ -1212,64 +1119,64 @@ DA:109,62 DA:116,4 FN:116,RuleWhitelistWrapperBase.isVerified FNDA:4,RuleWhitelistWrapperBase.isVerified -DA:123,4 -DA:124,4 -DA:125,4 -DA:126,4 -DA:139,4 -FN:139,RuleWhitelistWrapperBase.setCheckSpender +DA:117,4 +DA:118,4 +DA:119,4 +DA:120,4 +DA:133,4 +FN:133,RuleWhitelistWrapperBase.setCheckSpender FNDA:4,RuleWhitelistWrapperBase.setCheckSpender -DA:140,3 -DA:141,3 -DA:144,13 -FN:144,RuleWhitelistWrapperBase._transferred.0 +DA:134,3 +DA:135,3 +DA:138,13 +FN:138,RuleWhitelistWrapperBase._transferred.0 FNDA:13,RuleWhitelistWrapperBase._transferred.0 -DA:150,13 -DA:153,1 -FN:153,RuleWhitelistWrapperBase._transferred.1 +DA:144,13 +DA:147,1 +FN:147,RuleWhitelistWrapperBase._transferred.1 FNDA:1,RuleWhitelistWrapperBase._transferred.1 -DA:159,1 -DA:171,57 -FN:171,RuleWhitelistWrapperBase._detectTransferRestrictionForTargets +DA:153,1 +DA:165,57 +FN:165,RuleWhitelistWrapperBase._detectTransferRestrictionForTargets FNDA:57,RuleWhitelistWrapperBase._detectTransferRestrictionForTargets -DA:177,57 -DA:178,57 -DA:179,57 -DA:182,105 -DA:183,105 -DA:184,85 -BRDA:184,6,0,85 -DA:185,85 -DA:190,105 -DA:191,105 -DA:192,201 -BRDA:192,7,0,81 -DA:193,81 -DA:194,81 -DA:197,24 -BRDA:197,8,0,24 -DA:198,24 -DA:201,57 -DA:208,3 -FN:208,RuleWhitelistWrapperBase._setCheckSpender +DA:171,57 +DA:172,57 +DA:173,57 +DA:176,105 +DA:177,105 +DA:178,85 +BRDA:178,6,0,85 +DA:179,85 +DA:184,105 +DA:185,105 +DA:186,201 +BRDA:186,7,0,81 +DA:187,81 +DA:188,81 +DA:191,24 +BRDA:191,8,0,24 +DA:192,24 +DA:195,57 +DA:202,3 +FN:202,RuleWhitelistWrapperBase._setCheckSpender FNDA:3,RuleWhitelistWrapperBase._setCheckSpender -DA:209,3 -DA:216,4 -FN:216,RuleWhitelistWrapperBase.onlyCheckSpenderManager +DA:203,3 +DA:210,4 +FN:210,RuleWhitelistWrapperBase.onlyCheckSpenderManager FNDA:4,RuleWhitelistWrapperBase.onlyCheckSpenderManager -DA:217,4 -DA:230,145 -FN:230,RuleWhitelistWrapperBase._msgSender +DA:211,4 +DA:224,145 +FN:224,RuleWhitelistWrapperBase._msgSender FNDA:145,RuleWhitelistWrapperBase._msgSender -DA:231,145 -DA:237,2 -FN:237,RuleWhitelistWrapperBase._msgData +DA:225,145 +DA:231,2 +FN:231,RuleWhitelistWrapperBase._msgData FNDA:2,RuleWhitelistWrapperBase._msgData -DA:238,2 -DA:244,147 -FN:244,RuleWhitelistWrapperBase._contextSuffixLength +DA:232,2 +DA:238,147 +FN:238,RuleWhitelistWrapperBase._contextSuffixLength FNDA:147,RuleWhitelistWrapperBase._contextSuffixLength -DA:245,147 +DA:239,147 FNF:14 FNH:14 LF:67 @@ -1279,46 +1186,46 @@ BRH:14 end_of_record TN: SF:src/rules/validation/abstract/core/RuleNFTAdapter.sol -DA:40,17 -FN:40,RuleNFTAdapter.detectTransferRestriction +DA:39,17 +FN:39,RuleNFTAdapter.detectTransferRestriction FNDA:17,RuleNFTAdapter.detectTransferRestriction -DA:47,17 -DA:53,13 -FN:53,RuleNFTAdapter.detectTransferRestrictionFrom +DA:52,17 +DA:58,13 +FN:58,RuleNFTAdapter.detectTransferRestrictionFrom FNDA:13,RuleNFTAdapter.detectTransferRestrictionFrom -DA:60,13 -DA:66,15 -FN:66,RuleNFTAdapter.canTransfer -FNDA:15,RuleNFTAdapter.canTransfer +DA:66,13 DA:72,15 -DA:78,11 -FN:78,RuleNFTAdapter.canTransferFrom +FN:72,RuleNFTAdapter.canTransfer +FNDA:15,RuleNFTAdapter.canTransfer +DA:84,15 +DA:90,11 +FN:90,RuleNFTAdapter.canTransferFrom FNDA:11,RuleNFTAdapter.canTransferFrom -DA:85,11 -DA:92,14 -FN:92,RuleNFTAdapter.transferred.0 +DA:104,11 +DA:111,14 +FN:111,RuleNFTAdapter.transferred.0 FNDA:14,RuleNFTAdapter.transferred.0 -DA:97,14 -DA:103,9 -FN:103,RuleNFTAdapter.transferred.1 +DA:122,14 +DA:128,9 +FN:128,RuleNFTAdapter.transferred.1 FNDA:9,RuleNFTAdapter.transferred.1 -DA:108,9 -DA:114,2 -FN:114,RuleNFTAdapter.transferred.2 -FNDA:2,RuleNFTAdapter.transferred.2 -DA:115,2 -BRDA:115,0,0,1 -BRDA:115,0,1,1 -DA:116,1 -DA:118,1 -DA:125,2 -FN:125,RuleNFTAdapter.transferred.3 -FNDA:2,RuleNFTAdapter.transferred.3 -DA:126,2 -BRDA:126,1,0,1 -BRDA:126,1,1,1 -DA:127,1 -DA:129,1 +DA:140,9 +DA:146,6 +FN:146,RuleNFTAdapter.transferred.2 +FNDA:6,RuleNFTAdapter.transferred.2 +DA:147,6 +BRDA:147,0,0,3 +BRDA:147,0,1,3 +DA:148,3 +DA:150,3 +DA:157,6 +FN:157,RuleNFTAdapter.transferred.3 +FNDA:6,RuleNFTAdapter.transferred.3 +DA:158,6 +BRDA:158,1,0,3 +BRDA:158,1,1,3 +DA:159,3 +DA:161,3 FNF:8 FNH:8 LF:20 @@ -1328,26 +1235,26 @@ BRH:4 end_of_record TN: SF:src/rules/validation/abstract/core/RuleTransferValidation.sol -DA:46,349 -FN:46,RuleTransferValidation.detectTransferRestriction +DA:52,349 +FN:52,RuleTransferValidation.detectTransferRestriction FNDA:349,RuleTransferValidation.detectTransferRestriction -DA:53,349 -DA:59,38 -FN:59,RuleTransferValidation.detectTransferRestrictionFrom +DA:59,349 +DA:65,38 +FN:65,RuleTransferValidation.detectTransferRestrictionFrom FNDA:38,RuleTransferValidation.detectTransferRestrictionFrom -DA:66,38 -DA:77,21 -FN:77,RuleTransferValidation.canTransfer -FNDA:21,RuleTransferValidation.canTransfer +DA:72,38 DA:83,21 -DA:89,14 -FN:89,RuleTransferValidation.canTransferFrom +FN:83,RuleTransferValidation.canTransfer +FNDA:21,RuleTransferValidation.canTransfer +DA:89,21 +DA:95,14 +FN:95,RuleTransferValidation.canTransferFrom FNDA:14,RuleTransferValidation.canTransferFrom -DA:96,14 -DA:100,196 -FN:100,RuleTransferValidation.supportsInterface +DA:102,14 +DA:106,196 +FN:106,RuleTransferValidation.supportsInterface FNDA:196,RuleTransferValidation.supportsInterface -DA:101,196 +DA:107,196 FNF:5 FNH:5 LF:10 @@ -1362,48 +1269,49 @@ FN:33,RuleWhitelistShared.canReturnTransferRestrictionCode FNDA:10,RuleWhitelistShared.canReturnTransferRestrictionCode DA:34,10 DA:35,5 -DA:45,14 -FN:45,RuleWhitelistShared.messageForTransferRestriction +DA:36,2 +DA:46,14 +FN:46,RuleWhitelistShared.messageForTransferRestriction FNDA:14,RuleWhitelistShared.messageForTransferRestriction -DA:51,14 -BRDA:51,0,0,6 -BRDA:51,0,1,2 -DA:52,6 -DA:53,8 -BRDA:53,1,0,4 -BRDA:53,1,1,2 -DA:54,4 +DA:52,14 +BRDA:52,0,0,6 +BRDA:52,0,1,2 +DA:53,6 +DA:54,8 +BRDA:54,1,0,4 +BRDA:54,1,1,2 DA:55,4 -BRDA:55,2,0,2 -BRDA:55,2,1,2 -DA:56,2 -DA:58,2 -DA:75,19 -FN:75,RuleWhitelistShared.transferred.0 -FNDA:19,RuleWhitelistShared.transferred.0 +DA:56,4 +BRDA:56,2,0,2 +BRDA:56,2,1,2 +DA:57,2 +DA:59,2 DA:76,19 -DA:90,4 -FN:90,RuleWhitelistShared.transferred.1 -FNDA:4,RuleWhitelistShared.transferred.1 +FN:76,RuleWhitelistShared.transferred.0 +FNDA:19,RuleWhitelistShared.transferred.0 +DA:77,19 DA:91,4 -DA:94,26 -FN:94,RuleWhitelistShared._transferred -FNDA:26,RuleWhitelistShared._transferred -DA:95,26 -DA:96,26 -BRDA:96,3,0,14 -BRDA:96,3,1,12 -DA:102,11 -FN:102,RuleWhitelistShared._transferredFrom +FN:91,RuleWhitelistShared.transferred.1 +FNDA:4,RuleWhitelistShared.transferred.1 +DA:92,4 +DA:95,28 +FN:95,RuleWhitelistShared._transferred +FNDA:28,RuleWhitelistShared._transferred +DA:96,28 +DA:97,28 +BRDA:97,3,0,14 +BRDA:97,3,1,14 +DA:103,11 +FN:103,RuleWhitelistShared._transferredFrom FNDA:11,RuleWhitelistShared._transferredFrom -DA:108,11 -DA:109,11 -BRDA:109,4,0,4 -BRDA:109,4,1,7 +DA:104,11 +DA:105,11 +BRDA:105,4,0,4 +BRDA:105,4,1,7 FNF:6 FNH:6 -LF:21 -LH:21 +LF:22 +LH:22 BRF:10 BRH:10 end_of_record @@ -1413,51 +1321,52 @@ DA:28,91 FN:28,RuleBlacklist.supportsInterface FNDA:91,RuleBlacklist.supportsInterface DA:35,91 -DA:38,28 -FN:38,RuleBlacklist._authorizeAddressListAdd +DA:36,61 +DA:39,28 +FN:39,RuleBlacklist._authorizeAddressListAdd FNDA:28,RuleBlacklist._authorizeAddressListAdd -DA:40,1 -FN:40,RuleBlacklist._authorizeAddressListRemove +DA:41,1 +FN:41,RuleBlacklist._authorizeAddressListRemove FNDA:1,RuleBlacklist._authorizeAddressListRemove -DA:42,83 -FN:42,RuleBlacklist._msgSender -FNDA:83,RuleBlacklist._msgSender DA:43,83 -DA:46,1 -FN:46,RuleBlacklist._msgData -FNDA:1,RuleBlacklist._msgData +FN:43,RuleBlacklist._msgSender +FNDA:83,RuleBlacklist._msgSender +DA:44,83 DA:47,1 -DA:50,84 -FN:50,RuleBlacklist._contextSuffixLength -FNDA:84,RuleBlacklist._contextSuffixLength +FN:47,RuleBlacklist._msgData +FNDA:1,RuleBlacklist._msgData +DA:48,1 DA:51,84 +FN:51,RuleBlacklist._contextSuffixLength +FNDA:84,RuleBlacklist._contextSuffixLength +DA:52,84 FNF:6 FNH:6 -LF:10 -LH:10 +LF:11 +LH:11 BRF:0 BRH:0 end_of_record TN: SF:src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol -DA:20,2 -FN:20,RuleBlacklistOwnable2Step._authorizeAddressListAdd +DA:17,2 +FN:17,RuleBlacklistOwnable2Step._authorizeAddressListAdd FNDA:2,RuleBlacklistOwnable2Step._authorizeAddressListAdd -DA:22,2 -FN:22,RuleBlacklistOwnable2Step._authorizeAddressListRemove +DA:19,2 +FN:19,RuleBlacklistOwnable2Step._authorizeAddressListRemove FNDA:2,RuleBlacklistOwnable2Step._authorizeAddressListRemove -DA:24,12 -FN:24,RuleBlacklistOwnable2Step._msgSender +DA:21,12 +FN:21,RuleBlacklistOwnable2Step._msgSender FNDA:12,RuleBlacklistOwnable2Step._msgSender -DA:25,12 -DA:28,1 -FN:28,RuleBlacklistOwnable2Step._msgData +DA:22,12 +DA:25,1 +FN:25,RuleBlacklistOwnable2Step._msgData FNDA:1,RuleBlacklistOwnable2Step._msgData -DA:29,1 -DA:32,13 -FN:32,RuleBlacklistOwnable2Step._contextSuffixLength +DA:26,1 +DA:29,13 +FN:29,RuleBlacklistOwnable2Step._contextSuffixLength FNDA:13,RuleBlacklistOwnable2Step._contextSuffixLength -DA:33,13 +DA:30,13 FNF:5 FNH:5 LF:8 @@ -1504,30 +1413,30 @@ BRH:0 end_of_record TN: SF:src/rules/validation/deployment/RuleERC2980Ownable2Step.sol -DA:20,7 -FN:20,RuleERC2980Ownable2Step._authorizeWhitelistAdd +DA:17,7 +FN:17,RuleERC2980Ownable2Step._authorizeWhitelistAdd FNDA:7,RuleERC2980Ownable2Step._authorizeWhitelistAdd -DA:22,3 -FN:22,RuleERC2980Ownable2Step._authorizeWhitelistRemove +DA:19,3 +FN:19,RuleERC2980Ownable2Step._authorizeWhitelistRemove FNDA:3,RuleERC2980Ownable2Step._authorizeWhitelistRemove -DA:24,6 -FN:24,RuleERC2980Ownable2Step._authorizeFrozenlistAdd +DA:21,6 +FN:21,RuleERC2980Ownable2Step._authorizeFrozenlistAdd FNDA:6,RuleERC2980Ownable2Step._authorizeFrozenlistAdd -DA:26,2 -FN:26,RuleERC2980Ownable2Step._authorizeFrozenlistRemove +DA:23,2 +FN:23,RuleERC2980Ownable2Step._authorizeFrozenlistRemove FNDA:2,RuleERC2980Ownable2Step._authorizeFrozenlistRemove -DA:28,30 -FN:28,RuleERC2980Ownable2Step._msgSender +DA:25,30 +FN:25,RuleERC2980Ownable2Step._msgSender FNDA:30,RuleERC2980Ownable2Step._msgSender -DA:29,30 -DA:32,1 -FN:32,RuleERC2980Ownable2Step._msgData +DA:26,30 +DA:29,1 +FN:29,RuleERC2980Ownable2Step._msgData FNDA:1,RuleERC2980Ownable2Step._msgData -DA:33,1 -DA:36,31 -FN:36,RuleERC2980Ownable2Step._contextSuffixLength +DA:30,1 +DA:33,31 +FN:33,RuleERC2980Ownable2Step._contextSuffixLength FNDA:31,RuleERC2980Ownable2Step._contextSuffixLength -DA:37,31 +DA:34,31 FNF:7 FNH:7 LF:10 @@ -1653,24 +1562,24 @@ FN:21,RuleSpenderWhitelist.supportsInterface FNDA:2,RuleSpenderWhitelist.supportsInterface DA:28,2 DA:29,1 -DA:32,4 +DA:32,6 FN:32,RuleSpenderWhitelist._authorizeAddressListAdd -FNDA:4,RuleSpenderWhitelist._authorizeAddressListAdd +FNDA:6,RuleSpenderWhitelist._authorizeAddressListAdd DA:34,2 FN:34,RuleSpenderWhitelist._authorizeAddressListRemove FNDA:2,RuleSpenderWhitelist._authorizeAddressListRemove -DA:36,25 +DA:36,31 FN:36,RuleSpenderWhitelist._msgSender -FNDA:25,RuleSpenderWhitelist._msgSender -DA:37,25 +FNDA:31,RuleSpenderWhitelist._msgSender +DA:37,31 DA:40,1 FN:40,RuleSpenderWhitelist._msgData FNDA:1,RuleSpenderWhitelist._msgData DA:41,1 -DA:44,27 +DA:44,33 FN:44,RuleSpenderWhitelist._contextSuffixLength -FNDA:27,RuleSpenderWhitelist._contextSuffixLength -DA:45,27 +FNDA:33,RuleSpenderWhitelist._contextSuffixLength +DA:45,33 FNF:6 FNH:6 LF:11 @@ -1707,35 +1616,36 @@ BRH:0 end_of_record TN: SF:src/rules/validation/deployment/RuleWhitelist.sol -DA:42,40 -FN:42,RuleWhitelist.supportsInterface +DA:43,40 +FN:43,RuleWhitelist.supportsInterface FNDA:40,RuleWhitelist.supportsInterface -DA:49,40 -DA:56,1 -FN:56,RuleWhitelist._authorizeCheckSpenderManager +DA:50,40 +DA:51,27 +DA:58,1 +FN:58,RuleWhitelist._authorizeCheckSpenderManager FNDA:1,RuleWhitelist._authorizeCheckSpenderManager -DA:58,348 -FN:58,RuleWhitelist._authorizeAddressListAdd -FNDA:348,RuleWhitelist._authorizeAddressListAdd -DA:60,263 -FN:60,RuleWhitelist._authorizeAddressListRemove +DA:60,352 +FN:60,RuleWhitelist._authorizeAddressListAdd +FNDA:352,RuleWhitelist._authorizeAddressListAdd +DA:62,263 +FN:62,RuleWhitelist._authorizeAddressListRemove FNDA:263,RuleWhitelist._authorizeAddressListRemove -DA:62,772 -FN:62,RuleWhitelist._msgSender -FNDA:772,RuleWhitelist._msgSender -DA:63,772 -DA:66,1 -FN:66,RuleWhitelist._msgData +DA:64,778 +FN:64,RuleWhitelist._msgSender +FNDA:778,RuleWhitelist._msgSender +DA:65,778 +DA:68,1 +FN:68,RuleWhitelist._msgData FNDA:1,RuleWhitelist._msgData -DA:67,1 -DA:70,773 -FN:70,RuleWhitelist._contextSuffixLength -FNDA:773,RuleWhitelist._contextSuffixLength -DA:71,773 +DA:69,1 +DA:72,779 +FN:72,RuleWhitelist._contextSuffixLength +FNDA:779,RuleWhitelist._contextSuffixLength +DA:73,779 FNF:7 FNH:7 -LF:11 -LH:11 +LF:12 +LH:12 BRF:0 BRH:0 end_of_record @@ -1771,41 +1681,41 @@ BRH:0 end_of_record TN: SF:src/rules/validation/deployment/RuleWhitelistWrapper.sol -DA:37,38 -FN:37,RuleWhitelistWrapper.hasRole +DA:34,38 +FN:34,RuleWhitelistWrapper.hasRole FNDA:38,RuleWhitelistWrapper.hasRole -DA:44,134 -DA:47,2 -FN:47,RuleWhitelistWrapper._authorizeCheckSpenderManager +DA:41,134 +DA:44,2 +FN:44,RuleWhitelistWrapper._authorizeCheckSpenderManager FNDA:2,RuleWhitelistWrapper._authorizeCheckSpenderManager -DA:52,90 -FN:52,RuleWhitelistWrapper._onlyRulesManager +DA:49,90 +FN:49,RuleWhitelistWrapper._onlyRulesManager FNDA:90,RuleWhitelistWrapper._onlyRulesManager -DA:58,133 -FN:58,RuleWhitelistWrapper._msgSender +DA:55,133 +FN:55,RuleWhitelistWrapper._msgSender FNDA:133,RuleWhitelistWrapper._msgSender -DA:59,133 -DA:62,1 -FN:62,RuleWhitelistWrapper._msgData +DA:56,133 +DA:59,1 +FN:59,RuleWhitelistWrapper._msgData FNDA:1,RuleWhitelistWrapper._msgData -DA:63,1 -DA:66,134 -FN:66,RuleWhitelistWrapper._contextSuffixLength +DA:60,1 +DA:63,134 +FN:63,RuleWhitelistWrapper._contextSuffixLength FNDA:134,RuleWhitelistWrapper._contextSuffixLength -DA:67,134 -DA:70,46 -FN:70,RuleWhitelistWrapper.supportsInterface +DA:70,134 +DA:73,46 +FN:73,RuleWhitelistWrapper.supportsInterface FNDA:46,RuleWhitelistWrapper.supportsInterface -DA:77,46 -DA:78,16 -DA:81,38 -FN:81,RuleWhitelistWrapper._grantRole +DA:80,46 +DA:81,16 +DA:84,38 +FN:84,RuleWhitelistWrapper._grantRole FNDA:38,RuleWhitelistWrapper._grantRole -DA:87,38 -DA:90,1 -FN:90,RuleWhitelistWrapper._revokeRole +DA:90,38 +DA:93,1 +FN:93,RuleWhitelistWrapper._revokeRole FNDA:1,RuleWhitelistWrapper._revokeRole -DA:96,1 +DA:99,1 FNF:9 FNH:9 LF:17 @@ -1832,7 +1742,7 @@ DA:44,1 DA:47,13 FN:47,RuleWhitelistWrapperOwnable2Step._contextSuffixLength FNDA:13,RuleWhitelistWrapperOwnable2Step._contextSuffixLength -DA:48,13 +DA:54,13 FNF:5 FNH:5 LF:8 @@ -1840,426 +1750,3 @@ LH:8 BRF:0 BRH:0 end_of_record -TN: -SF:test/Coverage/DeploymentOperationCoverage.t.sol -DA:25,1 -FN:25,RuleBlacklistHarness.exposedMsgDataLength.0 -FNDA:1,RuleBlacklistHarness.exposedMsgDataLength.0 -DA:26,1 -DA:35,1 -FN:35,RuleWhitelistHarness.exposedMsgDataLength.1 -FNDA:1,RuleWhitelistHarness.exposedMsgDataLength.1 -DA:36,1 -DA:45,1 -FN:45,RuleWhitelistWrapperHarness.exposedMsgDataLength.2 -FNDA:1,RuleWhitelistWrapperHarness.exposedMsgDataLength.2 -DA:46,1 -DA:53,1 -FN:53,RuleERC2980Harness.exposedMsgDataLength.3 -FNDA:1,RuleERC2980Harness.exposedMsgDataLength.3 -DA:54,1 -DA:63,1 -FN:63,RuleSanctionsListHarness.exposedMsgDataLength.4 -FNDA:1,RuleSanctionsListHarness.exposedMsgDataLength.4 -DA:64,1 -DA:71,1 -FN:71,RuleBlacklistOwnable2StepHarness.exposedMsgDataLength.5 -FNDA:1,RuleBlacklistOwnable2StepHarness.exposedMsgDataLength.5 -DA:72,1 -DA:81,1 -FN:81,RuleWhitelistOwnable2StepHarness.exposedMsgDataLength.6 -FNDA:1,RuleWhitelistOwnable2StepHarness.exposedMsgDataLength.6 -DA:82,1 -DA:91,1 -FN:91,RuleWhitelistWrapperOwnable2StepHarness.exposedMsgDataLength.7 -FNDA:1,RuleWhitelistWrapperOwnable2StepHarness.exposedMsgDataLength.7 -DA:92,1 -DA:99,1 -FN:99,RuleERC2980Ownable2StepHarness.exposedMsgDataLength.8 -FNDA:1,RuleERC2980Ownable2StepHarness.exposedMsgDataLength.8 -DA:100,1 -FNF:9 -FNH:9 -LF:18 -LH:18 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/RuleBlacklist/Ownable/RuleBlacklistOwnable2Step.t.sol -DA:9,2 -FN:9,RuleBlacklistOwnable2StepTest._deployOwnable2Step -FNDA:2,RuleBlacklistOwnable2StepTest._deployOwnable2Step -DA:10,2 -DA:11,2 -DA:12,2 -FNF:1 -FNH:1 -LF:4 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/RuleBlacklist/Ownable/RuleBlacklistOwnableAccessControl.t.sol -DA:9,2 -FN:9,RuleBlacklistOwnable2StepAccessControl._deployAddressList -FNDA:2,RuleBlacklistOwnable2StepAccessControl._deployAddressList -DA:10,2 -DA:11,2 -DA:12,2 -FNF:1 -FNH:1 -LF:4 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/RuleConditionalTransferLight/RuleConditionalTransferLightApproveAndTransfer.t.sol -DA:12,1 -FN:12,MockERC20TransferFromFalse.setAllowance -FNDA:1,MockERC20TransferFromFalse.setAllowance -DA:13,1 -DA:16,1 -FN:16,MockERC20TransferFromFalse.allowance -FNDA:1,MockERC20TransferFromFalse.allowance -DA:17,1 -DA:20,1 -FN:20,MockERC20TransferFromFalse.transferFrom -FNDA:1,MockERC20TransferFromFalse.transferFrom -DA:21,1 -FNF:3 -FNH:3 -LF:6 -LH:6 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/RuleERC2980/Ownable/RuleERC2980Ownable2Step.t.sol -DA:9,2 -FN:9,RuleERC2980Ownable2StepTest._deployOwnable2Step -FNDA:2,RuleERC2980Ownable2StepTest._deployOwnable2Step -DA:10,2 -DA:11,2 -DA:12,2 -FNF:1 -FNH:1 -LF:4 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/RuleIdentityRegistry/Ownable/RuleIdentityRegistryOwnable2Step.t.sol -DA:12,2 -FN:12,RuleIdentityRegistryOwnable2StepTest._deployOwnable2Step -FNDA:2,RuleIdentityRegistryOwnable2StepTest._deployOwnable2Step -DA:13,2 -DA:14,2 -DA:15,2 -DA:16,2 -FNF:1 -FNH:1 -LF:5 -LH:5 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/RuleMaxTotalSupply/Ownable/RuleMaxTotalSupplyOwnable2Step.t.sol -DA:11,2 -FN:11,RuleMaxTotalSupplyOwnable2StepTest._deployOwnable2Step -FNDA:2,RuleMaxTotalSupplyOwnable2StepTest._deployOwnable2Step -DA:12,2 -DA:13,2 -DA:14,2 -DA:15,2 -FNF:1 -FNH:1 -LF:5 -LH:5 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/RuleSanctionList/Ownable/RuleSanctionsListOwnable2Step.t.sol -DA:16,1 -FN:16,RuleSanctionsListOwnable2StepHarness.exposedMsgSender -FNDA:1,RuleSanctionsListOwnable2StepHarness.exposedMsgSender -DA:17,1 -DA:20,1 -FN:20,RuleSanctionsListOwnable2StepHarness.exposedMsgData -FNDA:1,RuleSanctionsListOwnable2StepHarness.exposedMsgData -DA:21,1 -DA:24,1 -FN:24,RuleSanctionsListOwnable2StepHarness.exposedContextSuffixLength -FNDA:1,RuleSanctionsListOwnable2StepHarness.exposedContextSuffixLength -DA:25,1 -DA:30,2 -FN:30,RuleSanctionsListOwnable2StepTest._deployOwnable2Step -FNDA:2,RuleSanctionsListOwnable2StepTest._deployOwnable2Step -DA:31,2 -DA:32,2 -DA:33,2 -DA:34,2 -FNF:4 -FNH:4 -LF:11 -LH:11 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/RuleSpenderWhitelist/Ownable/RuleSpenderWhitelistOwnable2Step.t.sol -DA:12,1 -FN:12,RuleSpenderWhitelistOwnable2StepHarness.exposedMsgSender -FNDA:1,RuleSpenderWhitelistOwnable2StepHarness.exposedMsgSender -DA:13,1 -DA:16,1 -FN:16,RuleSpenderWhitelistOwnable2StepHarness.exposedMsgData -FNDA:1,RuleSpenderWhitelistOwnable2StepHarness.exposedMsgData -DA:17,1 -DA:20,1 -FN:20,RuleSpenderWhitelistOwnable2StepHarness.exposedContextSuffixLength -FNDA:1,RuleSpenderWhitelistOwnable2StepHarness.exposedContextSuffixLength -DA:21,1 -FNF:3 -FNH:3 -LF:6 -LH:6 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/RuleSpenderWhitelist/RuleSpenderWhitelist.t.sol -DA:14,1 -FN:14,RuleSpenderWhitelistHarness.exposedMsgSender -FNDA:1,RuleSpenderWhitelistHarness.exposedMsgSender -DA:15,1 -DA:18,1 -FN:18,RuleSpenderWhitelistHarness.exposedMsgData -FNDA:1,RuleSpenderWhitelistHarness.exposedMsgData -DA:19,1 -DA:22,1 -FN:22,RuleSpenderWhitelistHarness.exposedContextSuffixLength -FNDA:1,RuleSpenderWhitelistHarness.exposedContextSuffixLength -DA:23,1 -FNF:3 -FNH:3 -LF:6 -LH:6 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/RuleWhitelist/Ownable/RuleWhitelistOwnable2Step.t.sol -DA:9,2 -FN:9,RuleWhitelistOwnable2StepTest._deployOwnable2Step -FNDA:2,RuleWhitelistOwnable2StepTest._deployOwnable2Step -DA:10,2 -DA:11,2 -DA:12,2 -FNF:1 -FNH:1 -LF:4 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/RuleWhitelist/Ownable/RuleWhitelistOwnableAccessControl.t.sol -DA:9,2 -FN:9,RuleWhitelistOwnable2StepAccessControl._deployAddressList -FNDA:2,RuleWhitelistOwnable2StepAccessControl._deployAddressList -DA:10,2 -DA:11,2 -DA:12,2 -FNF:1 -FNH:1 -LF:4 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/RuleWhitelist/WhitelistWrapper.t.sol -DA:18,1 -FN:18,RuleWhitelistWrapperHarnessInternal.exposedTransferredSpenderInternal -FNDA:1,RuleWhitelistWrapperHarnessInternal.exposedTransferredSpenderInternal -DA:19,1 -FNF:1 -FNH:1 -LF:2 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/utils/AccessControlEnumerableTestBase.sol -DA:24,7 -FN:24,AccessControlEnumerableTestBase.setUp -FNDA:7,AccessControlEnumerableTestBase.setUp -DA:25,7 -DA:28,14 -FN:28,AccessControlEnumerableTestBase._assertRoleMembers -FNDA:14,AccessControlEnumerableTestBase._assertRoleMembers -DA:29,14 -DA:30,14 -DA:31,14 -BRDA:31,0,0,7 -DA:32,7 -DA:34,7 -DA:35,7 -DA:36,7 -FNF:2 -FNH:2 -LF:10 -LH:10 -BRF:1 -BRH:1 -end_of_record -TN: -SF:test/utils/IdentityRegistryMock.sol -DA:9,17 -FN:9,IdentityRegistryMock.setVerified -FNDA:17,IdentityRegistryMock.setVerified -DA:10,17 -DA:13,25 -FN:13,IdentityRegistryMock.isVerified -FNDA:25,IdentityRegistryMock.isVerified -DA:14,25 -FNF:2 -FNH:2 -LF:4 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/utils/MockERC20WithTransferContext.sol -DA:19,10 -FN:19,MockERC20WithTransferContext.constructor -FNDA:10,MockERC20WithTransferContext.constructor -DA:20,10 -DA:21,10 -DA:22,10 -DA:25,10 -FN:25,MockERC20WithTransferContext.setRule -FNDA:10,MockERC20WithTransferContext.setRule -DA:26,10 -DA:29,10 -FN:29,MockERC20WithTransferContext.mint -FNDA:10,MockERC20WithTransferContext.mint -DA:30,10 -DA:31,10 -DA:34,4 -FN:34,MockERC20WithTransferContext.approve -FNDA:4,MockERC20WithTransferContext.approve -DA:35,4 -DA:36,4 -DA:37,4 -DA:40,0 -FN:40,MockERC20WithTransferContext.transfer -FNDA:0,MockERC20WithTransferContext.transfer -DA:41,0 -DA:42,0 -DA:43,0 -DA:46,1 -FN:46,MockERC20WithTransferContext.transferFrom -FNDA:1,MockERC20WithTransferContext.transferFrom -DA:47,1 -DA:48,1 -BRDA:48,0,0,- -BRDA:48,0,1,1 -DA:49,1 -DA:50,1 -DA:51,1 -DA:52,1 -DA:55,3 -FN:55,MockERC20WithTransferContext.transferWithContext -FNDA:3,MockERC20WithTransferContext.transferWithContext -DA:59,3 -DA:60,3 -DA:61,3 -DA:64,3 -FN:64,MockERC20WithTransferContext.transferFromWithContext -FNDA:3,MockERC20WithTransferContext.transferFromWithContext -DA:71,3 -DA:72,3 -BRDA:72,1,0,- -BRDA:72,1,1,3 -DA:73,3 -DA:74,3 -DA:75,3 -DA:76,3 -DA:79,7 -FN:79,MockERC20WithTransferContext._transfer -FNDA:7,MockERC20WithTransferContext._transfer -DA:80,7 -BRDA:80,2,0,- -BRDA:80,2,1,7 -DA:81,7 -DA:82,7 -DA:83,7 -DA:86,7 -FN:86,MockERC20WithTransferContext._callRuleContext -FNDA:7,MockERC20WithTransferContext._callRuleContext -DA:94,7 -BRDA:94,3,0,7 -DA:95,7 -DA:98,5 -BRDA:98,4,0,5 -BRDA:98,4,1,2 -DA:99,5 -DA:100,5 -DA:110,5 -DA:112,2 -DA:113,2 -DA:124,2 -FNF:10 -FNH:9 -LF:50 -LH:46 -BRF:9 -BRH:6 -end_of_record -TN: -SF:test/utils/SanctionListOracle.sol -DA:15,22 -FN:15,SanctionListOracle.addToSanctionsList -FNDA:22,SanctionListOracle.addToSanctionsList -DA:16,22 -DA:19,0 -FN:19,SanctionListOracle.removeFromSanctionsList -FNDA:0,SanctionListOracle.removeFromSanctionsList -DA:20,0 -DA:23,159 -FN:23,SanctionListOracle.isSanctioned -FNDA:159,SanctionListOracle.isSanctioned -DA:24,159 -FNF:3 -FNH:2 -LF:6 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/utils/TotalSupplyMock.sol -DA:7,268 -FN:7,TotalSupplyMock.totalSupply -FNDA:268,TotalSupplyMock.totalSupply -DA:8,268 -DA:11,267 -FN:11,TotalSupplyMock.setTotalSupply -FNDA:267,TotalSupplyMock.setTotalSupply -DA:12,267 -FNF:2 -FNH:2 -LF:4 -LH:4 -BRF:0 -BRH:0 -end_of_record From bc57984b8879d20f37ce872a8e2ad5c44ba705ca Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Tue, 10 Mar 2026 16:47:09 +0100 Subject: [PATCH 8/8] Update doc and remove useless error --- README.md | 14 ++++ ...ntrolModuleStandalone.sol.func-sort-c.html | 4 +- ...ccessControlModuleStandalone.sol.func.html | 4 +- ...ccessControlModuleStandalone.sol.gcov.html | 4 +- .../VersionModule.sol.func-sort-c.html | 4 +- .../src/modules/VersionModule.sol.func.html | 4 +- .../src/modules/VersionModule.sol.gcov.html | 4 +- .../dev/Rules/src/modules/index-sort-b.html | 4 +- .../dev/Rules/src/modules/index-sort-f.html | 4 +- .../dev/Rules/src/modules/index-sort-l.html | 4 +- .../Pictures/dev/Rules/src/modules/index.html | 4 +- ...ditionalTransferLight.sol.func-sort-c.html | 4 +- ...RuleConditionalTransferLight.sol.func.html | 4 +- ...RuleConditionalTransferLight.sol.gcov.html | 4 +- ...sferLightOwnable2Step.sol.func-sort-c.html | 4 +- ...nalTransferLightOwnable2Step.sol.func.html | 4 +- ...nalTransferLightOwnable2Step.sol.gcov.html | 4 +- ...onalTransferLightBase.sol.func-sort-c.html | 4 +- ...ConditionalTransferLightBase.sol.func.html | 4 +- ...ConditionalTransferLightBase.sol.gcov.html | 4 +- .../operation/abstract/index-sort-b.html | 4 +- .../operation/abstract/index-sort-f.html | 4 +- .../operation/abstract/index-sort-l.html | 4 +- .../src/rules/operation/abstract/index.html | 4 +- .../src/rules/operation/index-sort-b.html | 4 +- .../src/rules/operation/index-sort-f.html | 4 +- .../src/rules/operation/index-sort-l.html | 4 +- .../dev/Rules/src/rules/operation/index.html | 4 +- doc/coverage/coverage/index-sort-b.html | 6 +- doc/coverage/coverage/index-sort-f.html | 6 +- doc/coverage/coverage/index-sort-l.html | 6 +- doc/coverage/coverage/index.html | 6 +- ..._graph_DeploymentCoverageHarnesses.sol.png | Bin 0 -> 193441 bytes .../surya_graph_IdentityRegistryMock.sol.png | Bin 0 -> 18577 bytes ...a_graph_MockERC20TransferFromFalse.sol.png | Bin 0 -> 30806 bytes ...graph_MockERC20WithTransferContext.sol.png | Bin 0 -> 169153 bytes ...raph_MockERC721WithTransferContext.sol.png | Bin 0 -> 78821 bytes ...graph_RuleConditionalTransferLight.sol.png | Bin 109279 -> 113776 bytes ...h_RuleConditionalTransferLightBase.sol.png | Bin 231993 -> 249484 bytes ...leSanctionsListOwnable2StepHarness.sol.png | Bin 0 -> 49488 bytes ...a_graph_RuleSharedInvariantStorage.sol.png | Bin 0 -> 10721 bytes .../surya_graph_RuleSpenderWhitelist.sol.png | Bin 0 -> 95087 bytes ...rya_graph_RuleSpenderWhitelistBase.sol.png | Bin 0 -> 87130 bytes ...raph_RuleSpenderWhitelistHarnesses.sol.png | Bin 0 -> 88491 bytes ...leSpenderWhitelistInvariantStorage.sol.png | Bin 0 -> 10721 bytes ...h_RuleSpenderWhitelistOwnable2Step.sol.png | Bin 0 -> 68938 bytes ...uleWhitelistWrapperHarnessInternal.sol.png | Bin 0 -> 29369 bytes .../surya_graph_SanctionListOracle.sol.png | Bin 0 -> 30284 bytes .../surya_graph_TotalSupplyMock.sol.png | Bin 0 -> 19142 bytes ...itance_DeploymentCoverageHarnesses.sol.png | Bin 0 -> 76928 bytes ...a_inheritance_IdentityRegistryMock.sol.png | Bin 0 -> 13606 bytes ...ritance_MockERC20TransferFromFalse.sol.png | Bin 0 -> 7945 bytes ...tance_MockERC20WithTransferContext.sol.png | Bin 0 -> 13055 bytes ...ance_MockERC721WithTransferContext.sol.png | Bin 0 -> 13168 bytes ...ance_RuleBlacklistInvariantStorage.sol.png | Bin 15321 -> 15187 bytes ...ionalTransferLightInvariantStorage.sol.png | Bin 16885 -> 16770 bytes ...itance_RuleERC2980InvariantStorage.sol.png | Bin 15701 -> 15723 bytes ...leIdentityRegistryInvariantStorage.sol.png | Bin 15977 -> 15698 bytes ...RuleMaxTotalSupplyInvariantStorage.sol.png | Bin 16185 -> 16113 bytes ..._RuleSanctionsListInvariantStorage.sol.png | Bin 15416 -> 15273 bytes ...leSanctionsListOwnable2StepHarness.sol.png | Bin 0 -> 17370 bytes ...ritance_RuleSharedInvariantStorage.sol.png | Bin 0 -> 7123 bytes ...a_inheritance_RuleSpenderWhitelist.sol.png | Bin 0 -> 22248 bytes ...heritance_RuleSpenderWhitelistBase.sol.png | Bin 0 -> 27390 bytes ...ance_RuleSpenderWhitelistHarnesses.sol.png | Bin 0 -> 25990 bytes ...leSpenderWhitelistInvariantStorage.sol.png | Bin 0 -> 16324 bytes ...e_RuleSpenderWhitelistOwnable2Step.sol.png | Bin 0 -> 22483 bytes ...ance_RuleWhitelistInvariantStorage.sol.png | Bin 15187 -> 15099 bytes ...uleWhitelistWrapperHarnessInternal.sol.png | Bin 0 -> 14610 bytes ...rya_inheritance_SanctionListOracle.sol.png | Bin 0 -> 11237 bytes .../surya_inheritance_TotalSupplyMock.sol.png | Bin 0 -> 5881 bytes ..._report_DeploymentCoverageHarnesses.sol.md | 60 ++++++++++++++++++ .../surya_report_IAddressList.sol.md | 2 +- ...eport_IERC7943NonFungibleCompliance.sol.md | 2 +- .../surya_report_IdentityRegistryMock.sol.md | 28 ++++++++ ...a_report_MockERC20TransferFromFalse.sol.md | 29 +++++++++ ...report_MockERC20WithTransferContext.sol.md | 35 ++++++++++ ...eport_MockERC721WithTransferContext.sol.md | 31 +++++++++ .../surya_report_RuleAddressSet.sol.md | 2 +- ...surya_report_RuleAddressSetInternal.sol.md | 2 +- .../surya_report_RuleBlacklist.sol.md | 2 +- .../surya_report_RuleBlacklistBase.sol.md | 2 +- ...eport_RuleBlacklistInvariantStorage.sol.md | 4 +- ...ya_report_RuleBlacklistOwnable2Step.sol.md | 2 +- ...report_RuleConditionalTransferLight.sol.md | 2 +- ...rt_RuleConditionalTransferLightBase.sol.md | 2 +- ...tionalTransferLightInvariantStorage.sol.md | 4 +- ...onditionalTransferLightOwnable2Step.sol.md | 2 +- .../surya_report_RuleERC2980Base.sol.md | 2 +- ..._report_RuleERC2980InvariantStorage.sol.md | 4 +- ...urya_report_RuleERC2980Ownable2Step.sol.md | 2 +- ...rya_report_RuleIdentityRegistryBase.sol.md | 2 +- ...uleIdentityRegistryInvariantStorage.sol.md | 4 +- ...surya_report_RuleMaxTotalSupplyBase.sol.md | 2 +- ..._RuleMaxTotalSupplyInvariantStorage.sol.md | 4 +- .../surya_report_RuleNFTAdapter.sol.md | 2 +- .../surya_report_RuleSanctionsList.sol.md | 2 +- .../surya_report_RuleSanctionsListBase.sol.md | 2 +- ...t_RuleSanctionsListInvariantStorage.sol.md | 4 +- ...eport_RuleSanctionsListOwnable2Step.sol.md | 2 +- ...uleSanctionsListOwnable2StepHarness.sol.md | 30 +++++++++ ...a_report_RuleSharedInvariantStorage.sol.md | 26 ++++++++ .../surya_report_RuleSpenderWhitelist.sol.md | 33 ++++++++++ ...rya_report_RuleSpenderWhitelistBase.sol.md | 35 ++++++++++ ...eport_RuleSpenderWhitelistHarnesses.sol.md | 36 +++++++++++ ...uleSpenderWhitelistInvariantStorage.sol.md | 26 ++++++++ ...rt_RuleSpenderWhitelistOwnable2Step.sol.md | 32 ++++++++++ ...surya_report_RuleTransferValidation.sol.md | 2 +- .../surya_report_RuleWhitelist.sol.md | 2 +- .../surya_report_RuleWhitelistBase.sol.md | 2 +- ...eport_RuleWhitelistInvariantStorage.sol.md | 4 +- .../surya_report_RuleWhitelistShared.sol.md | 2 +- .../surya_report_RuleWhitelistWrapper.sol.md | 2 +- ...rya_report_RuleWhitelistWrapperBase.sol.md | 2 +- ...RuleWhitelistWrapperHarnessInternal.sol.md | 28 ++++++++ ...rt_RuleWhitelistWrapperOwnable2Step.sol.md | 2 +- .../surya_report_SanctionListOracle.sol.md | 29 +++++++++ .../surya_report_TotalSupplyMock.sol.md | 28 ++++++++ ...nditionalTransferLightInvariantStorage.sol | 1 - 119 files changed, 605 insertions(+), 106 deletions(-) create mode 100644 doc/surya/surya_graph/surya_graph_DeploymentCoverageHarnesses.sol.png create mode 100644 doc/surya/surya_graph/surya_graph_IdentityRegistryMock.sol.png create mode 100644 doc/surya/surya_graph/surya_graph_MockERC20TransferFromFalse.sol.png create mode 100644 doc/surya/surya_graph/surya_graph_MockERC20WithTransferContext.sol.png create mode 100644 doc/surya/surya_graph/surya_graph_MockERC721WithTransferContext.sol.png create mode 100644 doc/surya/surya_graph/surya_graph_RuleSanctionsListOwnable2StepHarness.sol.png create mode 100644 doc/surya/surya_graph/surya_graph_RuleSharedInvariantStorage.sol.png create mode 100644 doc/surya/surya_graph/surya_graph_RuleSpenderWhitelist.sol.png create mode 100644 doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistBase.sol.png create mode 100644 doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistHarnesses.sol.png create mode 100644 doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistInvariantStorage.sol.png create mode 100644 doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistOwnable2Step.sol.png create mode 100644 doc/surya/surya_graph/surya_graph_RuleWhitelistWrapperHarnessInternal.sol.png create mode 100644 doc/surya/surya_graph/surya_graph_SanctionListOracle.sol.png create mode 100644 doc/surya/surya_graph/surya_graph_TotalSupplyMock.sol.png create mode 100644 doc/surya/surya_inheritance/surya_inheritance_DeploymentCoverageHarnesses.sol.png create mode 100644 doc/surya/surya_inheritance/surya_inheritance_IdentityRegistryMock.sol.png create mode 100644 doc/surya/surya_inheritance/surya_inheritance_MockERC20TransferFromFalse.sol.png create mode 100644 doc/surya/surya_inheritance/surya_inheritance_MockERC20WithTransferContext.sol.png create mode 100644 doc/surya/surya_inheritance/surya_inheritance_MockERC721WithTransferContext.sol.png create mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleSanctionsListOwnable2StepHarness.sol.png create mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleSharedInvariantStorage.sol.png create mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleSpenderWhitelist.sol.png create mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleSpenderWhitelistBase.sol.png create mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleSpenderWhitelistHarnesses.sol.png create mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleSpenderWhitelistInvariantStorage.sol.png create mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleSpenderWhitelistOwnable2Step.sol.png create mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleWhitelistWrapperHarnessInternal.sol.png create mode 100644 doc/surya/surya_inheritance/surya_inheritance_SanctionListOracle.sol.png create mode 100644 doc/surya/surya_inheritance/surya_inheritance_TotalSupplyMock.sol.png create mode 100644 doc/surya/surya_report/surya_report_DeploymentCoverageHarnesses.sol.md create mode 100644 doc/surya/surya_report/surya_report_IdentityRegistryMock.sol.md create mode 100644 doc/surya/surya_report/surya_report_MockERC20TransferFromFalse.sol.md create mode 100644 doc/surya/surya_report/surya_report_MockERC20WithTransferContext.sol.md create mode 100644 doc/surya/surya_report/surya_report_MockERC721WithTransferContext.sol.md create mode 100644 doc/surya/surya_report/surya_report_RuleSanctionsListOwnable2StepHarness.sol.md create mode 100644 doc/surya/surya_report/surya_report_RuleSharedInvariantStorage.sol.md create mode 100644 doc/surya/surya_report/surya_report_RuleSpenderWhitelist.sol.md create mode 100644 doc/surya/surya_report/surya_report_RuleSpenderWhitelistBase.sol.md create mode 100644 doc/surya/surya_report/surya_report_RuleSpenderWhitelistHarnesses.sol.md create mode 100644 doc/surya/surya_report/surya_report_RuleSpenderWhitelistInvariantStorage.sol.md create mode 100644 doc/surya/surya_report/surya_report_RuleSpenderWhitelistOwnable2Step.sol.md create mode 100644 doc/surya/surya_report/surya_report_RuleWhitelistWrapperHarnessInternal.sol.md create mode 100644 doc/surya/surya_report/surya_report_SanctionListOracle.sol.md create mode 100644 doc/surya/surya_report/surya_report_TotalSupplyMock.sol.md diff --git a/README.md b/README.md index 036f319..9fc1d26 100644 --- a/README.md +++ b/README.md @@ -437,6 +437,20 @@ An operator configures CMTAT to use `RuleWhitelist`. The issuer tries to mint to ![surya_inheritance_RuleWhitelist.sol](./doc/surya/surya_inheritance/surya_inheritance_RuleWhitelist.sol.png) +#### Spender whitelist + +This rule only checks `transferFrom` spender authorization: + +- Direct transfers (`transfer`) are always allowed by this rule. +- `transferFrom` is rejected when `spender` is not listed. +- Restriction code: `66` (`CODE_ADDRESS_SPENDER_NOT_WHITELISTED`). + +**Usage scenario** + +The operator deploys `RuleSpenderWhitelist` and sets it in the token or `RuleEngine`. Alice calls `transfer` to Bob and it passes this rule. Bob then tries `transferFrom(Alice, Bob, amount)` and it is rejected until the operator calls `addAddress(Bob)` (or whichever spender account should be authorized). + +![surya_inheritance_RuleSpenderWhitelist.sol](./doc/surya/surya_inheritance/surya_inheritance_RuleSpenderWhitelist.sol.png) + #### Whitelist wrapper Allows independent whitelist groups managed by different operators. diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func-sort-c.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func-sort-c.html index 2ec22a1..e3e217e 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func-sort-c.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func-sort-c.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol - functions + LCOV - lcov.info - ../../../src/modules/AccessControlModuleStandalone.sol - functions @@ -19,7 +19,7 @@ - + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func.html index 14ea0ee..be2519d 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol - functions + LCOV - lcov.info - ../../../src/modules/AccessControlModuleStandalone.sol - functions @@ -19,7 +19,7 @@
Current view:top level - home/ryan/Pictures/dev/Rules/src/modules - AccessControlModuleStandalone.sol (source / functions)top level - ../../../src/modules - AccessControlModuleStandalone.sol (source / functions) Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.gcov.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.gcov.html index a786a91..a435a7b 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.gcov.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.gcov.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol + LCOV - lcov.info - ../../../src/modules/AccessControlModuleStandalone.sol @@ -19,7 +19,7 @@
Current view:top level - home/ryan/Pictures/dev/Rules/src/modules - AccessControlModuleStandalone.sol (source / functions)top level - ../../../src/modules - AccessControlModuleStandalone.sol (source / functions) Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func-sort-c.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func-sort-c.html index 8bceb58..80489dc 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func-sort-c.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func-sort-c.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol - functions + LCOV - lcov.info - ../../../src/modules/VersionModule.sol - functions @@ -19,7 +19,7 @@
Current view:top level - home/ryan/Pictures/dev/Rules/src/modules - AccessControlModuleStandalone.sol (source / functions)top level - ../../../src/modules - AccessControlModuleStandalone.sol (source / functions) Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func.html index 8e9e823..f548b23 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol - functions + LCOV - lcov.info - ../../../src/modules/VersionModule.sol - functions @@ -19,7 +19,7 @@
Current view:top level - home/ryan/Pictures/dev/Rules/src/modules - VersionModule.sol (source / functions)top level - ../../../src/modules - VersionModule.sol (source / functions) Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.gcov.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.gcov.html index 50ad511..ebeafe9 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.gcov.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.gcov.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol + LCOV - lcov.info - ../../../src/modules/VersionModule.sol @@ -19,7 +19,7 @@
Current view:top level - home/ryan/Pictures/dev/Rules/src/modules - VersionModule.sol (source / functions)top level - ../../../src/modules - VersionModule.sol (source / functions) Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-b.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-b.html index 6a86955..c5cb892 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-b.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-b.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/modules + LCOV - lcov.info - ../../../src/modules @@ -19,7 +19,7 @@
Current view:top level - home/ryan/Pictures/dev/Rules/src/modules - VersionModule.sol (source / functions)top level - ../../../src/modules - VersionModule.sol (source / functions) Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-f.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-f.html index d2c4b7f..f5b2551 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-f.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-f.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/modules + LCOV - lcov.info - ../../../src/modules @@ -19,7 +19,7 @@
Current view:top level - /home/ryan/Pictures/dev/Rules/src/modulestop level - ../../../src/modules Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-l.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-l.html index 8a6ec85..cd1b8a4 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-l.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-l.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/modules + LCOV - lcov.info - ../../../src/modules @@ -19,7 +19,7 @@
Current view:top level - /home/ryan/Pictures/dev/Rules/src/modulestop level - ../../../src/modules Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index.html index 6117c79..469987d 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/modules + LCOV - lcov.info - ../../../src/modules @@ -19,7 +19,7 @@
Current view:top level - /home/ryan/Pictures/dev/Rules/src/modulestop level - ../../../src/modules Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func-sort-c.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func-sort-c.html index 67c7b18..92fa7b0 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func-sort-c.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func-sort-c.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol - functions + LCOV - lcov.info - ../../../src/rules/operation/RuleConditionalTransferLight.sol - functions @@ -19,7 +19,7 @@
Current view:top level - /home/ryan/Pictures/dev/Rules/src/modulestop level - ../../../src/modules Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func.html index 59fbabf..0ccd4a1 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol - functions + LCOV - lcov.info - ../../../src/rules/operation/RuleConditionalTransferLight.sol - functions @@ -19,7 +19,7 @@
Current view:top level - home/ryan/Pictures/dev/Rules/src/rules/operation - RuleConditionalTransferLight.sol (source / functions)top level - ../../../src/rules/operation - RuleConditionalTransferLight.sol (source / functions) Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.gcov.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.gcov.html index f49dbcf..9320c13 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.gcov.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.gcov.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol + LCOV - lcov.info - ../../../src/rules/operation/RuleConditionalTransferLight.sol @@ -19,7 +19,7 @@
Current view:top level - home/ryan/Pictures/dev/Rules/src/rules/operation - RuleConditionalTransferLight.sol (source / functions)top level - ../../../src/rules/operation - RuleConditionalTransferLight.sol (source / functions) Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func-sort-c.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func-sort-c.html index 7a7c2bf..191f539 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func-sort-c.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func-sort-c.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol - functions + LCOV - lcov.info - ../../../src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol - functions @@ -19,7 +19,7 @@
Current view:top level - home/ryan/Pictures/dev/Rules/src/rules/operation - RuleConditionalTransferLight.sol (source / functions)top level - ../../../src/rules/operation - RuleConditionalTransferLight.sol (source / functions) Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func.html index bb0973f..12bc2cf 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol - functions + LCOV - lcov.info - ../../../src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol - functions @@ -19,7 +19,7 @@
Current view:top level - home/ryan/Pictures/dev/Rules/src/rules/operation - RuleConditionalTransferLightOwnable2Step.sol (source / functions)top level - ../../../src/rules/operation - RuleConditionalTransferLightOwnable2Step.sol (source / functions) Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.gcov.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.gcov.html index de9032f..b05073e 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.gcov.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.gcov.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol + LCOV - lcov.info - ../../../src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol @@ -19,7 +19,7 @@
Current view:top level - home/ryan/Pictures/dev/Rules/src/rules/operation - RuleConditionalTransferLightOwnable2Step.sol (source / functions)top level - ../../../src/rules/operation - RuleConditionalTransferLightOwnable2Step.sol (source / functions) Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func-sort-c.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func-sort-c.html index d263bae..99f53d0 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func-sort-c.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func-sort-c.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol - functions + LCOV - lcov.info - ../../../src/rules/operation/abstract/RuleConditionalTransferLightBase.sol - functions @@ -19,7 +19,7 @@
Current view:top level - home/ryan/Pictures/dev/Rules/src/rules/operation - RuleConditionalTransferLightOwnable2Step.sol (source / functions)top level - ../../../src/rules/operation - RuleConditionalTransferLightOwnable2Step.sol (source / functions) Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func.html index aa179f3..fdf58b9 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol - functions + LCOV - lcov.info - ../../../src/rules/operation/abstract/RuleConditionalTransferLightBase.sol - functions @@ -19,7 +19,7 @@
Current view:top level - home/ryan/Pictures/dev/Rules/src/rules/operation/abstract - RuleConditionalTransferLightBase.sol (source / functions)top level - ../../../src/rules/operation/abstract - RuleConditionalTransferLightBase.sol (source / functions) Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.gcov.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.gcov.html index 4855a0f..e80e06d 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.gcov.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.gcov.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol + LCOV - lcov.info - ../../../src/rules/operation/abstract/RuleConditionalTransferLightBase.sol @@ -19,7 +19,7 @@
Current view:top level - home/ryan/Pictures/dev/Rules/src/rules/operation/abstract - RuleConditionalTransferLightBase.sol (source / functions)top level - ../../../src/rules/operation/abstract - RuleConditionalTransferLightBase.sol (source / functions) Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-b.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-b.html index cee77ef..ae4276f 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-b.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-b.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/rules/operation/abstract + LCOV - lcov.info - ../../../src/rules/operation/abstract @@ -19,7 +19,7 @@
Current view:top level - home/ryan/Pictures/dev/Rules/src/rules/operation/abstract - RuleConditionalTransferLightBase.sol (source / functions)top level - ../../../src/rules/operation/abstract - RuleConditionalTransferLightBase.sol (source / functions) Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-f.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-f.html index 3ca5529..461d0f6 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-f.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-f.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/rules/operation/abstract + LCOV - lcov.info - ../../../src/rules/operation/abstract @@ -19,7 +19,7 @@
Current view:top level - /home/ryan/Pictures/dev/Rules/src/rules/operation/abstracttop level - ../../../src/rules/operation/abstract Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-l.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-l.html index ad74f6a..55bb533 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-l.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-l.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/rules/operation/abstract + LCOV - lcov.info - ../../../src/rules/operation/abstract @@ -19,7 +19,7 @@
Current view:top level - /home/ryan/Pictures/dev/Rules/src/rules/operation/abstracttop level - ../../../src/rules/operation/abstract Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index.html index 075046f..a47f107 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/rules/operation/abstract + LCOV - lcov.info - ../../../src/rules/operation/abstract @@ -19,7 +19,7 @@
Current view:top level - /home/ryan/Pictures/dev/Rules/src/rules/operation/abstracttop level - ../../../src/rules/operation/abstract Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-b.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-b.html index 0727bad..156b486 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-b.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-b.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/rules/operation + LCOV - lcov.info - ../../../src/rules/operation @@ -19,7 +19,7 @@
Current view:top level - /home/ryan/Pictures/dev/Rules/src/rules/operation/abstracttop level - ../../../src/rules/operation/abstract Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-f.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-f.html index bba2e9c..eae3f77 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-f.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-f.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/rules/operation + LCOV - lcov.info - ../../../src/rules/operation @@ -19,7 +19,7 @@
Current view:top level - /home/ryan/Pictures/dev/Rules/src/rules/operationtop level - ../../../src/rules/operation Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-l.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-l.html index 178c5f3..ec44c2c 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-l.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-l.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/rules/operation + LCOV - lcov.info - ../../../src/rules/operation @@ -19,7 +19,7 @@
Current view:top level - /home/ryan/Pictures/dev/Rules/src/rules/operationtop level - ../../../src/rules/operation Hit
- + diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index.html index 71e0554..a2a41cf 100644 --- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index.html +++ b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - /home/ryan/Pictures/dev/Rules/src/rules/operation + LCOV - lcov.info - ../../../src/rules/operation @@ -19,7 +19,7 @@
Current view:top level - /home/ryan/Pictures/dev/Rules/src/rules/operationtop level - ../../../src/rules/operation Hit
- + diff --git a/doc/coverage/coverage/index-sort-b.html b/doc/coverage/coverage/index-sort-b.html index 3500b9e..1c4e1f3 100644 --- a/doc/coverage/coverage/index-sort-b.html +++ b/doc/coverage/coverage/index-sort-b.html @@ -94,7 +94,7 @@ - + @@ -106,7 +106,7 @@ - + @@ -154,7 +154,7 @@ - + diff --git a/doc/coverage/coverage/index-sort-f.html b/doc/coverage/coverage/index-sort-f.html index e9e4797..a5d5163 100644 --- a/doc/coverage/coverage/index-sort-f.html +++ b/doc/coverage/coverage/index-sort-f.html @@ -82,7 +82,7 @@ - + @@ -94,7 +94,7 @@ - + @@ -118,7 +118,7 @@ - + diff --git a/doc/coverage/coverage/index-sort-l.html b/doc/coverage/coverage/index-sort-l.html index 4a38b39..c3bb25f 100644 --- a/doc/coverage/coverage/index-sort-l.html +++ b/doc/coverage/coverage/index-sort-l.html @@ -82,7 +82,7 @@ - + @@ -94,7 +94,7 @@ - + @@ -142,7 +142,7 @@ - + diff --git a/doc/coverage/coverage/index.html b/doc/coverage/coverage/index.html index ea97940..dde6e42 100644 --- a/doc/coverage/coverage/index.html +++ b/doc/coverage/coverage/index.html @@ -82,7 +82,7 @@ - + @@ -94,7 +94,7 @@ - + @@ -106,7 +106,7 @@ - + diff --git a/doc/surya/surya_graph/surya_graph_DeploymentCoverageHarnesses.sol.png b/doc/surya/surya_graph/surya_graph_DeploymentCoverageHarnesses.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..fb91b43b214015ee52aa506d69ead6fbd5ffe38f GIT binary patch literal 193441 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 z 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 H@!kIe26x@h literal 0 HcmV?d00001 diff --git a/doc/surya/surya_graph/surya_graph_IdentityRegistryMock.sol.png b/doc/surya/surya_graph/surya_graph_IdentityRegistryMock.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..35781cca1fa75b446bd216ae42e48d364b437907 GIT binary patch literal 18577 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 bM%gL#?Be{8a1VaR5b{J)L83_fx$pl40~L{u literal 0 HcmV?d00001 diff --git a/doc/surya/surya_graph/surya_graph_MockERC20TransferFromFalse.sol.png b/doc/surya/surya_graph/surya_graph_MockERC20TransferFromFalse.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..af13e5ef4016077b3ddfa6ff2f99cd60d798badc GIT binary patch literal 30806 zcmcG$1z1+?yC?dhf=UP~h@^saOE(Gvf=G8tcXwleAOcFaQqtYsprn)_4HAMh(sl0j z{b$dabN1{#v(Gi>`Y!bo-&pI3`~KClg5+f-aWIK7Q79CS)YB)5C=^;W{A$030Y4d- zpXrA`FbtkaK0#d||9!5{j6k98qokfZR(4BVn{xMhZhGFdEqBL;`{(VCf!;x((oD^q z>`w9+898Q_-*W~uSJlcZ`Bm1jL-K!QXV4K4SZ2rnkR2wcR>8@qF8L6+=IQWh=3d-n zjZt-wm}tXh!v>>6pJVc}r>sr?LGrTu2A_#Ey+5AlwG^CscX7%4Z}8^7Q3i=$qj>X$ zsu+I%9!YhF;tgJWcpK##JW-`^b@<&(`c^Q!%d!hf0i}F)=YQ@TWW2ySf(s z#(P5-4L2r@ck9-x!a`R5q)?jY@kPenchdGIDy-9-|NI!vQn>8v>noectM5Q|^X5&N zc+Q}BF3VdaB;94^Lw3&2?L$Km&l9+bMz(*2i43NQU4_du`&mM*R-omdw)8A52RJQ@6tSwc>me^WIr}8 z4sPnPlao`BGxj~S`FMzfo5yUy>rA@fPt zJ1{6{uKr-!aAh!qz}@T(U0lu^U9W9%t`|*y?{0_*rg(XKN6BU~7R%V!6garLsu8m4 zax&HWoYh(A-@vz{*Zf1+h!2{q}BpQ_ww@y9}q zjg5UsOq7w8y)lxjcD1Rs_4QDuT!OaboO)1HRFr;FNC*z9y1F`1z%|ryx$mLVZ~3(K zv(r;@CqjQWvvfw8K+3kx&dYcN1pbO$zn#xd-BDj;litCG9~I!PwrP&Cpcbi`L?>6uerH7V9}Maj^S1+`^PrQoXFVNyEfBxQZQ76EZS^T zv3Yq+K4*Js7}$6Ha&s9~RaIfClh)R(XylUL$HWkZhK4$AOvX*udtSyPCGANOds|di z#(7NRJ5}TSv(!{B+u6v}^foauX4A{dSLLNYCM0w>zrKn#*61seoSa;@_d`p&%I+nF zSb*KH4x9q*>Xr)Y36$GL_4480A-Q{JFY!~Ua5=qaDL!iG&+FgicgngX?Y%x#J6hDc zv)HZD8h{g3US7U)aKNMKdU|MYY-*}zL{@Gw!cZO>N+v*T&EdIkHBz7>kY*fwhgs3x z-F+2SsFID1O;=x^EDpJ#dT%115{ynZ^|R=#^z?K|SG@Mya={w#%SwhDC?n{p9aor=|W+7ey_M5o)^b{-1n~zb))QGfEQ=zQd%~kmx$& z9TOOM&A`Awz32s+WEgq-=x9t;Rh2`z)(`b3i+>p#cP_Ec29VfpVVwMw6Fwp!`*FJ) z+8*9`wo2|DU0vPN<3ELmM@RZLHpj~W3TYDdi(OG~@9O-ls;P-r-hkHeckSnGLPA2> zB!2(buV3pYLA!Vs&D7l4`L@)wKe|>&$?#^B9z%AXAz7}vKNbtN30vV7rnR}&K#GvU z!n?)mgg0+Cr%Od-X_V3w7Z=MUaO0?{sR;@R{VX%Tje@HGVtu?E#mmR14Qy$;o#sfzo3y#d}?4o`S|f;38_UJ!;beUu#^{VMu*kgeo@3|qi#KYas8Q@ zq(I%){KcV2pTYQ5JOxaZ>-C58!4^$^Xar;(hS^ZQFy*tev!&@X_?>=#hW?5Fxg(S; zx22^;Sy3?@6B}C@Di8w?j~ac(a8Dcu!RK4IZ{s-UYnDr+V_@WT$FSxe9=eTW%H1=D zuG5#umv-sWCG5Sv1Rl90L3c%WPfy0C^!@QN^RybLl~e;m!;y?dS9oYJI=1-_Q`}O04$r@)YR@TCkitg@i z!>&krQhukeY}a4RwfK8MbL&YKO8EX=9xAPjygZ)uL`D0|%%`tkpQ0khhyLvSU7sL? z`4AKo{5@ICG2?xp6SvPyN%;zD`|6MUVA)I#a}wt9`WVrNA70`rzjdpUAu8*qxav1^ zl;pe3YQpx~rOfb}*l#&s?T;)9N>T>dmnNsC(27b**qKU;i_z}$@Kk=a?)xMnr>#v2 zh^N+e${&l+Po#r9p4(b;X&=V&a#PT4TJQL8UHBj-M$8`g7*;rr`C%ZXSIO7edOF3q zM{Z98_i1~e^IW=o+1}1>7M21wF=v*x8ji5A@ZsU%hsek_=uPArwe#N;LM%{j^WU`U z#P8~BFR>5Bu}CeVJ%#&+sYQM5zc8F`&@H@**`YWamW#XB$clD+bTs!LG~9Q2t;74F zq=|i^_6%#|_wVOpr z(>pji^0{r@N1YsOO49pBMBJ8V!zgxGl!o`j3VZYa{P`2vsI084q-10(urTU94`_sh zlFm*JF5{7qSOzvn?puuHpf^EhgC=h>^yN9JkVho+GoPbH!W-m*U!hO?z4~?)dQ$s_ zW1()ndW{o3K(%z0TvdR80l$Bn!6hJY@y}?XDXdv+QeHecxqgRoOADsdo!rMb7#y+Q zYrpPP#`b$1-RN%JYH}PRzZ7Sq?E)xC)o&nIzcnDourpMm+oV4^A7F@Snbkn5I0FU6 zW1-z1j;`L`=jd0jlC0`9cvV}B6{VC^RH&YxpIdBB*GtnIE5A)hNFWyRsZ*4Wo1BKC z7Fl0kZ!uk0JznFSt66E2R8n59@~b06sn%tkondovQDyb~?c2A=mu7qHtMXq?cb(x`95-`4!;nEuahzh*CdSjVwM=wXr9XaadB~ZIriqo=1w+Iz}dz*C7yw=Nc7$XopKl?vOLK3FH$aB$j(J=1BZsUMp5k&ahb2bY#| zAh>LGIB0hEMN4ZdPQNw1W$j{+xUwjp>wS^j)U+&iSZ4vM1=>=uyUEGPe>?FMi&Co^zO+o70TOB`5a*M!jb+{Ka!IO6_nZ^OFpV@7mZy%`&rQ0ATJ1Q?5aQ zf%gG~qGR2$`}kgFr!+nafrCGVzK9oU=q@Mn8h=%yI8$R6l`{SPC6q2#Q@5u zdiZd_3_v%Z^Xl+iT9`0{k^vEy1wL?>0sbBbM`vfQ>`B;FD?dvC%d;f%J9lk8HAd;_ z=|wYXyaN0Tn}gZ4_DcsPLv>9p85$W; z!G7!P?Zwg3(t?KbUiRESOq!*)E$FtCj0_bW-B-HoN$Z~2hr_@ZC)eYNgWa&RE`)UX zX>a;y-4MCb^h48b>Ega{nSr5axZv-h4ss0lSLx>eB2XNfcgV={k!}dBE=p0Fnu;n* zDuRao5irK*D|;SM;o+%J$yJ^{4ea{%O+lKT%W+8t{ceSlG{6njY*=8( z*w#_O)JZ(O<%Xwfsm1ab=>C71kp2 z!)#Qdh;MRL6)(_wmzf$YLKc+odm&Ei@nN(2+FAh=(5(PtZf)M zsp7$7CC0%D?n+d&w3lC4TU+mNYnFN5%ee2<^cor_OYQNO80IyWT1Vnrt@kaimT6qs z7sjQnp#4A=_gu-BlOYT)oBy3Wp2|VRK8HES&Z_u z48%NRHMO~ZELdcF$yx8^u~>I>*Q>^APz5f@j-S5>lCf(hzYAyXyZJ+adGXzz& zYabs-R(b3(0PSoA1S&5vwTIr;!cyw_r$KFw@ZJoFMT&}w@0cRu+9c=W+{9?Vmdm)=9+l>`}Zp|S7Yy`u!7A~BIP&35e1o(FIUx8)>PP*NzM zXA65De=oOGYklM~=kyEhGDeZ_h0k9PAt+Ukn(wxCMKMY}efk16F)(Zn_Z_3Ux;i@` zIslpfZcHTrYuVqN!F@68QH9b+yPY4j7UXT3ET{orv2nmA3l6ec3&cbYV+mQ>(@Be%z6#lTvlW9 z8d_S6pox{cZtBA80jP6WZNh6h!tNDDD*gj2ocoi7CbF15-(l8F2SqJ?ZGBy3cd2*e zN50lbjq{(#{QP`k9-Bk}9x)2;0KOH&q}<%9h`Fs|bJPlx2UncBe*V-zzj7sufKfH; z^wdkNx}>7k^I(I$lae7ND@mG+EM56;rS#&mvJ+=i{GFkY-pCv;o=2;ojX|-qnye~L z6}u@K$RPfDw@|mH<$q5Zon(}`Mj@@>);jbShSws1q(Zn4QCgqS+e}t%KOF~5>qdDi z*vbF;|3rKxzbtZb$|2{0;JL;@~MJT{Xret%EN z(=2}n3_26CQ{khFZKn81Nl9aQ?J4Di_VD4Z9OG7XD{aU?p>f)rCXw7d_m_VFO-c4IuThQsAN=wgYXC|{VZ4PJOPU3f-FYOmL zoUF1Jyg1!W6!P3}ki1H`3~NTYQ1?vVUx&ff^+2&(yWS%zS;%vKe!eAJDHA)43u9|< z&-hz7H82jl{WXo}h9v(D(fr#NRvWlKnRZ_$L$(w2O!W$@IDPkj2RWcbv4YCMq*d|$ z&6_J?gcFP1F&Z!oWCAXn+Rx$E*vtp1EPmukSy?dwfNvccApj+t+j`sxU($Y^;CQ?9 z-pcos%g{K=tbPurN38ri;1NKpehJ8CAc$lJmX^V9-(Cg5iqnZBu0-Vjr3a|1-~D&! zhgL3`ik&?iO31IJrGWf=W;8Uk1L~ToTGt`a+JFLP>op2PGh?dAFDolk3=76niKYo7 z9UA*}eB~RIVg^FO7=uyU={gOx9OLe2Aon1XXTWM3fg4rv@~T5>0y~g;)4s%qR=XV} zws%LWUDh=hfB()xaY3nrtxv}9BoAy0Qy!><3h31g^z>3d`59o1L?t9xDtdN?-BW}9 z$v{WF$VFX)g9ww)28A;sbO=}E^s~iqR*K8UWVWJ` z(nv=LNfeX{1n2-I;d1vi=}XK;Ma9NuMJh7fzu#0eRp-7t4B}r@Wo6}fscG1M1c}

W!R}hO$iSLkksJ%F>B|@7S11HLQbP? zX2>>U>v|!v1($&yIILHvSlD~|CLw$L!On^I9U<-vXIl<%Mc*08(C)^@N50=W?@aOp zBdQvavb7lAa{I`i++tpH%iDC9O4HhDPxr>Pq+j+_R4cuT4O)kd-8Twxk^dQukrC1Gne5RYmFB2jlG+Io)%AjqG&1oHna0s2_xnkR`w#9;t*x!8{V12dDOh zxaQH9tpSQ59lB~wFgAP2kaH}$$(i34GU9Lz>m_E+TFg5?k5IJ zCL7xB1B-lT6O$LPYqt=lE5$@9#&b9XKm#Z%Z_<^1QuWZ^A4erbbGNTw|31Co&vMWS z(GqpmuH-m}s=h@DacDArV3Bwe^d*##=*dJ);ETyn7T8F6i=WY4u$6(KL~4QNP`~2f z5Cy5kpIx?&SBe)o0rH;V>m^W^J5CQGVT2eP7xk|99-w<6p+}P30s=&X6^=||w&I_% zT>x;=4nPnYV^0R37`i2ol@~#YTY|aJ+>8(4O8wrpx2LHozVOSJoA{I)*2eQEz`-Iw zV{aY|JF~;*x4wL==4|^D;|Q3ip-TaJ8R)tQpAp1mY#BJcA!IdIlwla#H4y8|^EaLa zh(4X^TTmFqwHq19+e*iJJ_-qWi$oCDi!K88yzs54*{;BcjW}T!7UV6XC&}uAR$L~X z(St>I9^3~pnoB{!tLTciye;@2tSUHGD1K|)*nbd1XA0neZ*6P4i;=OhzTW89rIWz~ zmXC}UbYBE4*5fR9>|5VIlR{!*(yohk;2WT(W5}ic3K{zj78Yoo^I-9^JumzR1u8sD zcu`U+1APAQjm5!ZH{%A@VUb6_wFKmi;sAQ#eKGZiDc|@n~96@p~mHc7EHkHN=P`1+2GK;=jpq;nF6)Eh>?Mh_9{c|86F*- zkF;H0TlmEK`>11x75b27ko*v14l#!ii(vSczr~#tB! z4>`$$+Z=~1_FY9)6*@2B%Yj~0oFu38>+r;Fkk5m^gvHq;M$z}*T!4a+PQUr^{Q|^B z`A3j_Dez$Q9E1NCs3#qNCp-Zy2!@AVzwJ5L8^{27&qmEa;fyK_*K`z)W>o`hdFem4 ztbb4f9s#+GdQTE_z`)Z0_CS*e@C?v9K7!T^=#qtb)pZ94cxgPUFoia(5d04O=K;*e zDYNsxapxgc=Rj4NK-Mx#RB_ZgI&!bEh(C)#&P`kq}xOgH+8#HaLx?cK9>>qAuA|Cu6*SRvF6p$ z7cAp}`W$d{Txt^ra{KxFLwtiwT0=lHSp#S`xVnsjsY={vhRpQ^Vf0J3hm8ajAJGW! zO6*KQL1;$sczSwzFaQSt!i`(EjzZ94_pmMz2s?mj(Br^#czKo5wD6FCuRt%17yJp0 zYR<37{^uI0b}qVp6NH$;6nP$!UHl0Ee&e=%bSadr05Y_+Fq{UX z$lTnD^aQo}m=w^L(cjlsO0D!(#|l6B>x>d5wx~zk2FEH7G%eerLkl`ZkfQ49Tu-W? zI(T3Kixz+hp`6<>-5HD}M5>Uo!kRtC@At1?>H=Z-9Pod^oj@n`vL~2r#t^7OKrnW7 zceh*o`tjokqxnmEIU?@MZ<%U+{-VJG$6U5-A|N@WQux96_&mCXb#&gv_q6{VZj9EQt%thEB3vS6&V`64ES`y8i|Y3WTveeD&KC3=eGeuV(?~ z%6DIra$Y_~gM-U_I#Tp4EWJZc^`n`S@d0`Xt*osPb?N7{eq3D)$zcd3BavcMVVy)t z{@LW$uGfdQz@_@RA@P|>q(yIH_x(TrbygME7-Sp)+)`efj8yj${pgPQ#FcN4z-J`3 zQYy*giWwfCx%r%)KC!7tBoDXsngRbMq6>-i3p%OwfBygf*S2D^5zDU~90AnKcn8vH MMOB4#IitJ(1szVnoB#j- literal 0 HcmV?d00001 diff --git a/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLight.sol.png b/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLight.sol.png index 51147c267762d669a3ec25a744bf2c4bdbeeb98e..2b5ab953953fb9fb5fc784d5ee78153f886470bd 100644 GIT binary patch literal 113776 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%0A-g+yLOE|N)(e7&7xyr^ENS!bJ%gO^0K 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 MSZ{f4nc&br0S`8bHUIzs literal 109279 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 z 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 %5B-3+!HdQV&BqqPc63p^ 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 Qm&7GZo-j?8<>a&JU+?aS!2kdN diff --git a/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLightBase.sol.png b/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLightBase.sol.png index 468a008efe475b30bf819f84c1dc072efb0f421c..db7e97a551eb494cc050ad549a5db28b00945dee 100644 GIT binary patch delta 235155 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 Jm0&K0{0nW~bYTDh delta 217527 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%0D_%ey5O;`SwN4K#+r3d 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≊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 diff --git a/doc/surya/surya_graph/surya_graph_RuleSanctionsListOwnable2StepHarness.sol.png b/doc/surya/surya_graph/surya_graph_RuleSanctionsListOwnable2StepHarness.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..4e91ef8bf1c007d602ead77ea85781787936f016 GIT binary patch literal 49488 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 Xh-`$0dlYiwO=*-BF3P9L={@`}oHevj literal 0 HcmV?d00001 diff --git a/doc/surya/surya_graph/surya_graph_RuleSharedInvariantStorage.sol.png b/doc/surya/surya_graph/surya_graph_RuleSharedInvariantStorage.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..e166f8f300a14e64f1ed3caf7e86aeb6aab548c6 GIT binary patch literal 10721 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 literal 0 HcmV?d00001 diff --git a/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistBase.sol.png b/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistBase.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..ad790f2f8c7ed9dd97af303e0906b3df91874a62 GIT binary patch literal 87130 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


tDC~0uca-9wDi+f3nuHRoP zbrHqSC7_anN>e2+orAAB3%?cW`n-o4Lo#Mcl0X24MfBM~{~2>gv+@PfmKc zl%WMlR{_S}_7D{V6BF`e!9+}a{CIgwOADQUMuvzBQ!9?5Yjt$J&{j$lvlk#)_yGua zRCzOMUA(Tu+}vZvW+_^IV8H}c_3gpo4)_VSiJ@rA_Km(=f4Rku!|+U6|31g$R1x6qjbD@@DDQT6fp9oF^fVc+_w$Pq>-CE8>4>#AZRO*uUt#zK%;o)j1f15shxB}YD z6QD@d=w{G${b($G_>c>VGX^>sN0KlAT;T-f@u6!)ybcL5tJrO5c|*MNcBgZ=2qIM} z7VD9WP+J7t1Neo|%EeEAK3_sWKa%mld4%P?3@ozvyOsa8DxR~jNbL9bW z%45QqS5ET0l@beCx@eph5aE)+rl{`lUL?*As1uTc*-WkeL(A98Z3{Xc`3W;1btgXD ziHR4)NRES#E$Jh^Bj;t&h9+?y49fI6HZUf&rzeY^iG6(A(4dNA8U^#pU$f=7Ne&K< zPqSz`_T?EW$;%NG(B zihdXeWv0$7Nbxf9*AQJ@ccmd&eaqUgb|3sL|1VkppRc55sb9bD!AXZoe-z#P8)@5n za8b5Wcbk69ItJyh)IxppuDQ9XqeH}FTK&thbR8Hxttcxi!vS)$ln=)^K1z?^DL`Hy zFfd^K`OpU z$+x&5AjSbgMnX~18bJDc4^AeZ57$b^`ekO?yGL8QIV_p}-N=yj6LIO%I?VD&X%u&(_0||_8!-g93l4^1#nzW5gO#<%!E`Q|~ za;{(?FtoReiGL9e>Py&%9}6N2_HXK+@IJ1qdx->Is@cMG@C$C>U_~GL%$v!|u*jO& z4Xl{;sEURwMwvCXwg#1#E2Y;ZJ=v3}3AOVw_~D_?V(a7t89{id=-<0qybspd&$s)H zF2M|ejl#lg1W$lr#Wlbq=|_^!-v<0_wlJ$ttO%ZiqHxB}dK&V7C{5=%Gauoa;Mm4+3L}{hZaIBeyUM@Q|9?MZ@eM zaG4GsWPv#Fy;YMCRsig<`EjR2>-_yYIyWqe{Gsnt{v5>1nwTt#I!95R!)%4I*tw4Z zatMM=ikd#<#tmIoNenC9e|Iy)sdjdD&al4%qP86CW%`YcQUFW}J^@^~q?cJnm6o`l z@-VT*4hS!P1*fO6yE`~8j(@56ssT$$9)RC4MoVlS>UEPRbp-A|DDThu+%L7o(8%ad zg{$Dfjz_NofCBzGSAYnv1Q#3-ZUipD9Icj&j0{Z!gR7)kMcWPo=3f9qc?6Oic$*f+ z)RTvfoCJ+%6K)qF66Fu(!F?SXy71ca`MRgwwm0Bt3}X2P6k3ZfF|5A6$i&11T^yg- zKPTgruQ}Mgm54shv%gNiZ*6`4d6cBC@SUgtg^N%E9!7|9^x{qQ*RI0KNJ2y{C@8>F zCFB96g_*aX(^KP~qplOo3>6T&Bo?h6gp>x~5iKNqu?h#7Doe>qOgD&lz=X6OJV-na zf{p?o1{RX=*#i$goC6fQW?k? zHo2!uH6Zkm`UF8DxwMoQxd85aFIGJ%(9oU}H7@2t&p<0`vA=-WQ7&-W*;#zgoG>%D ze{{mUs8cY<+4WXkKQj10jnn}AP)P*mk1N3Sdi6&4tAF3p{-l~3)tKGqS4&Gvr=_Rw zwXoQP-HSsG#SNjwf^rV`O>)p_MIEttG3@afv9s8FLPTli%L*NR{p6gSrKleeDm?*q zfpK;joN|F}+m=X1tAD%2Vt(kziV$P*%b0Hmy$Mze3c9*}jKp5HHK;IoQ&e4IlP!pK z=*Y4a7;+$Cy;si++tKjXO!w-yxJUoH#;SKMEtfhv49WL<@PHW&noBKqmsAofK$#B< z4-Wu}gnscR5ah(1w$kBr10#DSKI?#q$vX1fEzzR$VUP#wuK^mjOBlK@~2&z7X zw(~%*xXy#RLB3wS6t5^SAWiHW+=ZBL?)z^17 z*b703Z6ptdb00)KNDRoL1007e^#XD|%JXs!WYStUUt7{ACR2WXbu9trjaOU!+B)y( zES=Vt@VzNoD7Xj>Tq2#n14gp!iFQ`7cyLn~e|be4r#Uur)4O*UalKgAbpFU+ z$-|F~4EpuUjqs}xC-9FWriE%&?=!sn3t$baLyMg>&cY2*b@W|J&!ED7$+0}%F9s9;OQUs(K#2215;mrjl6;a#%?SMsNC>z z1X&6G22bOp1b44%30)WeWg%3iaELfX2QGvgMlWpIy?Y(zGk!|uUC(}cC@w`ugwZf! z_VV3wx;4e~ZR>E%N7b#8DCu?@-4Xh7lSa8-8jKcc>qBW%^HY5kGcG0xmK+b3@Q1%RHM}AUG5^q^Jt`{C(~3?$ zI)T?`E*brzHJk2YP_cN_5~MMVg*$NU3PsfVTVX3;&(duu>88JjH2HP&i?GQ5{ppYj`@c;4|K@+)FAm?@ ygSM@OF3aEejbEE~U;Qt=|G)XB|Hn7Dz*w5d+3oY}*(o}F96q42KS#y<;{O9r6lgpE literal 0 HcmV?d00001 diff --git a/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistHarnesses.sol.png b/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistHarnesses.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..886371e4b3d3c6d063181cc60c5a05c309f39805 GIT binary patch literal 88491 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 a|JFMs552v!9C)$>1B0ilpUXO@geCyvJj(3= literal 0 HcmV?d00001 diff --git a/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistInvariantStorage.sol.png b/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistInvariantStorage.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..e166f8f300a14e64f1ed3caf7e86aeb6aab548c6 GIT binary patch literal 10721 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

%_2K`$*NVU*P<6e5hN?SLN@#J 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 literal 0 HcmV?d00001 diff --git a/doc/surya/surya_graph/surya_graph_TotalSupplyMock.sol.png b/doc/surya/surya_graph/surya_graph_TotalSupplyMock.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..3cc02f5f302681c244a6be25e182d719d6c026ed GIT binary patch literal 19142 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 MM*04GX=DHY2YU_+Gynhq literal 0 HcmV?d00001 diff --git a/doc/surya/surya_inheritance/surya_inheritance_DeploymentCoverageHarnesses.sol.png b/doc/surya/surya_inheritance/surya_inheritance_DeploymentCoverageHarnesses.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..f0a71e484b0ef001b47bd2eb05ac514fbe19f529 GIT binary patch literal 76928 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 literal 0 HcmV?d00001 diff --git a/doc/surya/surya_inheritance/surya_inheritance_IdentityRegistryMock.sol.png b/doc/surya/surya_inheritance/surya_inheritance_IdentityRegistryMock.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..20c2f583293cf3eeb2bd0a13de27041b52c1e761 GIT binary patch literal 13606 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 literal 0 HcmV?d00001 diff --git a/doc/surya/surya_inheritance/surya_inheritance_MockERC20TransferFromFalse.sol.png b/doc/surya/surya_inheritance/surya_inheritance_MockERC20TransferFromFalse.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..50e4bee9908868167195b74e25a391e6717616bb GIT binary patch literal 7945 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 PHlnJii7t^hd;b3bf&g2f literal 0 HcmV?d00001 diff --git a/doc/surya/surya_inheritance/surya_inheritance_MockERC20WithTransferContext.sol.png b/doc/surya/surya_inheritance/surya_inheritance_MockERC20WithTransferContext.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..936a908c20138b7a49bc9643f32f011ea60b3ef4 GIT binary patch literal 13055 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 literal 0 HcmV?d00001 diff --git a/doc/surya/surya_inheritance/surya_inheritance_MockERC721WithTransferContext.sol.png b/doc/surya/surya_inheritance/surya_inheritance_MockERC721WithTransferContext.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..e831b0847589da256f6c4608bfb84e56c262242c GIT binary patch literal 13168 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 literal 0 HcmV?d00001 diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleBlacklistInvariantStorage.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleBlacklistInvariantStorage.sol.png index 813852a18d82a8fe03544bab2e64e2ba1f5c5a58..d7c2e2c2403111a17a5ab694b478d233b0c09b78 100644 GIT binary patch literal 15187 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 Zc7ntPDUp5`VV5j&`<5~`PsY&izW}SyKTQAt literal 15321 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 J$X&kqe*xoAhmimP literal 16885 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 OI( diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleSanctionsListInvariantStorage.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleSanctionsListInvariantStorage.sol.png index 824eb65a7c2156d7b0f4b83f568d364dd144365e..27076d318543dac4f97bd9e74e0b804438bfdec7 100644 GIT binary patch literal 15273 zcmdVBbySsI_ceS7LApa)KuRQ(l$4ed5rLa7B_s}#5`rKlB_aaSARr=L2aqli5fCY9 zP(r$q{ML0p?{AFn8Q=T8|G&dC@QCMJ*S_{%d#$6fe?j4k=#~O(nX=L z(C|LxA|CwoU2FaVf8kkas4Ah(kw2LY`SBwEj{nlwKQLo`}e2L!2Slmb0(xh;{~^%?;RG41-klMiltayPe!3|aB%t^swQNs zjG|jgY(DB=6=8_JH~Yu^=I+6Pl*h-63|2pX|1RlogM(C7Wuwk1H8tY6*jT9Mwl*Bf zi09+nacVQOEq|1v9^q4Mu24s--~_jz8qCPjwDF@=f*TuUm)vg}^3yKu`RwlPwO9yc z*3{6cw$mg-Z5EOIk5 zGx7+fnVrAnksX`6yT1r=3iJqBV)2tT@!%)CH#axGh>NYpNg1xh4sQ;RkL$mihDKUo zud9$#=<(6~a1e!`2h-KXBP*6d^qGUpnfitB2ICQ}VqFs;;wXAYHiIlq4OdW5@M4I9 zb~rrr?BZfrW+t1IFy%$u&Ha5ml=e&1F+<5UepD*k7`#p@l1{aZc13@`oDoFAO`0O1ikX z)N^5Vwr4jrvEEE0<%%c33&t`kqBSadbM?I_1Bv@hW&@q^VW;CE2hm+08F;}^qg3Wg zA9?%ukWzV!m#hU?Sg`$iED5impdhxy9tv{unINghlWu_ohY|y0V-Ybiq?OgxKO@|1 zZMo~}>M(o7#R4W6bj!NQojZ4MFI*UV@G2|WwvxDGe#_*SXj|Iy$_isutB`w&Q$u~d zui=BBzD2hn7HVqT5QUZqUmYFtpy1%ki9K05JmeGg%m6es+9~u%eRzx;M%fux8aXGLhY3aQl9}Ma7oO2IZ%y4~O-KyF3 z6zaK@BqSs{dsveCz5Td8^W%BUw$jZsV>Fw>cb8%7C(C8_hhFOrxq9Y7R zy8eKWor8mdh9+cb$xcaG+4WpeQL$t(T`u0Z86OWXQ;+Yiv2o{1{>_B_V#u*Vd1!*og22_lpa6cw(+*y zFvB)8H;*kZzy3NgasF%ajrT=G%1%z#My_ddQeGAiAl=&93XhCbR8YX4o0}u2qwD(l zojz(MJTH$+o7KU=0h8Oz9r8d#7w>28KTlgO`Xqaq}REVW~W`&FsNQi{TA8LMDB5J}5<>losEQ zjC>b?#9Im}F7v~O7gW31+3cy(PbgJ#D0B;`|M};i&tJbP>Fd+NSBgDU!wLmwu3ft( z;l4z^y|d%GIx1XQQ`6SdLsU>ukR;l0-FMVXySeA^77{A`yh1>LoVtca?Te+Y z`7T&#e3sa-OE(@`v;0wuXHE@<}H*f0b={;u+IH3q5W9?iX%%5Fbi+-}RaG9GM zUs6(1?e^_U8$B_xfrWZ}Cp#JE?Q&;ZWYpBu&2}Ql41MnIZgHxa3{7!qOePQuZoxPs zS?lRjS>(YEH!a;gJTCL|6MId#;=d6zk1=*>@Q`k7Z1lsbG2|buabcA`TH=7A26xRP z_tQueP}bHa&Cbp){vm-BGG8cG>gwv~rT)vS<27X5chaAm2y|`#?%C=wKclp_w@+l; z#p=KEePTkhPwrfrmzr>UclX`6OH-Qc$)=)i;ZP#OYh!B>hUGRgxp(kT0~&%2zZ~2; zqtnw_2+7FuN6dVChw`GrrAEDLH6KpX(@A=*Go3Eq3CK>qVM~ds+v;SrKi*%n5layi zeSfM=#tsn`YkvC2AUqy5+NFxFHCV;`aEfODCJz6`Pgy%(FC=#zD?CPiy&jzDBvnREHPPY4_6P67Sf6?uo@{zc7n>Jz2n=<$JUu%*Xkzs&vLDPdEn}VU z7^*vunfp0bxwK@``I~}~F_O;Q53&-Cgy$;#t5>f|ANDdpK+y!8?PM^M?ntp)-~QBM zk(p@b69IM5{%56qrQ71S9$sD(Z5TvEhm|f5wUUy}_2i|`aU3Gnoy6GkjAD+Mk3v}e zM|&%2vWqhc?IpmCujqQ(imvIAQn59$zrObOaM1<$~&Nv#Ssx8}; z!)8=?G*WyeOGhm(E)Me1;#d1)RhrE&Umzyb*`LYFmwehL+}q!eiLDY~7ZZC!g=U0& z$Bz27vf|r)b}713gLbncl5X(T6^&3QIoP<9u3gND?x$C;h>ItpG?Su|-@a9sm6e@m zSyy`sMeHT&rFK5!!6R)Erb!&z!8s)j?)c>DYB8VP0oCrdw&3-KgQ>Fhzn`(sCcUQP znwsPu*xKH^cW>~}_zyM{0j9(1G8q{ew*1=Knv&A5<>lKbyGSmx7L4Wu`fR`5cT212Zo2!D+f zbRM_O@E3D9xo==FSm&{#mZkGjx8Pl_Mxw5~Jj(z4^nldA{(Gg+cNsL-wHVKH6%8tm zzlM5xA|K?$WY16BkZpFGhgugh6AdjbX@zU0-@-bRtX~pD)0Hb%Am5Fsg-OyP>rNS= zRQdR~dbuILLEo20Q5;x(eSO?0YDUH$r+Wo@CW9}Ko&DwOSEhT-u)X}heEXL7^QY0D zKYy})*K5P1rKR6vFiGLzvS)|Z*pQ~4?uN;oJcE^==^x(RbvLTCqo}H?x~ru{qO7E( z0|}dgqBli6_NvYB$A1)IDDU(Od0}?m>GIOqX83Irz}$Zy$WiUK6Zsy0NA@;q34UJA zj!bq(_x{O=m1Qr`Q%5cRUCdZ?{Cl)ga+{NK;OzAHcK+Z%x{R+H8@UcV@jv{u`D?fD z+{y2gJ&w}kqC%#Nnx5Xf8(a2ObWVuOk2{Qt7bY&r-IS8DKRfx08@RtQ-52tp%4oSD zKRr85%InpT1GDJa!nd>@(?!96zeH&gu0eU4$qKc#wH!yDx%MpsGH9`DH*b1<6cK(E z3rU`3h?PD2^!R`(wkzjg$~P8J;M!G!p@PrmwzU9xj<$cEjEM3jnyt~>t> zlEHKH^Y59PPY+dXGFVe>K6{4c;Ov~|HSM2>jf2C>#)j?Z3x+SJDwT|UKCJB@c1$?f(l zawhiF?m@)&tjTaYI)c2#O_AGdCK@XM7vpepj5f*$I>(;eoH4+ zQIPbs>o-}R9$K!S8*bG&Pu|3qmpj>Pd*3KY_2!0HtUFoi?MTHw4>7H%U-O1%{KnOe zhRRoEWYXRUn5rv%Tde4o_wW$?dwAGiztOm2cd%*31Bg3}l({uhuu+0Sb-K<9Ds1!O z4h03pvo6*Erb2@fl?M;5EcB+>dZjvf?zN0Q)Mt$VxaIEY`8aq2N$_%hfats?IAW!P zASKVjj>n;}9L&>75_4jZJzl-Bo-{XSCB4;7#ly$f`r&?Iscj#NGrcBiLVhpUY5U*+ zA6*uE7D2_`KQ#1Uq)UXCmq12F#`{;Cs><#yfyD75Iy$S|g58=m8={=0Wk%`L(B zY2{r2fdO6{mRew$dCy*`tgM_7Z~9B3prD{q+3^o!*NxS(6O_PIR|pZ^9HhVBF}%FI zw_uCZ$m*Y5xNrdrMM+7ive%njnp*aR6J{-D)s^c%vj(l2V$Q&5Zzv5VWe|)V_3ym- z`AO>+n?wYh%(IdnkWm2u^E52dS5i?i^O!ezrjQlbVTF`fEEHTEI>UKNPXhxwRAz1M zB_*4h*9i$@%vTe8%IpWZL_|ereJ$dp3I;&BPD@UGo+6zdq zZ4OmtulzYoR~$mu!t*npGCK-2wavE!`nx zDovp`H9^ceb}xq!;c49K}!8>G5?GmNdRt z8?VU$pqvqKCJ7t4yrSZAoSKe_NfbV-ANuRha~;Rv@8g6Ydag)IGof_u-xqac&FE9r z)QlRmgv>?;+0J`DTAZAoJ{+(RiE)jy$I*#kW<8ZjB0z=e{$C ztkA=rkN;GlOsJ=3}3nxElZBqU^bIB#evwe7~)x!r~r+tv0~ z^iiqThMD77`2{k$6QP>ESvwD)#W{(pH+|Ot{IjFqR@ia z2W#W1D7$Z|lJ7=VBEpxV#i!_p*Ix834#sh)hKDbu`>tP3)>Lt6{L6JvUIyh9+7-J$ zKMLOI7A);958?&_5WZccf6vT}1u7;*MqmDm7lb#V*8yONmQe>pzqhwH02rPC650 z?=BE_%5ukJeMs?9QfhM)N!H8>UHja(zV7@YHkKRZzPohy&&Gz=7qS#nC8e8bF;MR( zJw{AD?VUazN}*>^UTImAi=jtiX8#sfz%=gXo$6FR4O3aM)_?Em=*T}B{&?w)GnNiC z`2MGRBig?!x|;#PtNF#(fIs1?sbOf-HMFUD8T5v(5V9?v}+3`f$XQe(Qv@BHd#L+@Clj+fltg*o;r?> z{D1%cy{n>v=MVkfL}N6gxGu~TOm7_I=FeSSVUX3-@5uh;^nha1g#f&ED`8lqfyImf z?Ru{bE*MUq^bRq=+Hq6gorPW#I@R&*VPh8xih=icu^vJPf+zh~#Tb*WPYJJGK~y@su* zV`+JrAVeX|o=rsLM}gnMxA#L1Mh!lqTi%~6r>%)CcLjxkD_Vjo%K`iqK*x8`3%mMV z1Lh~{@+v@XLprVC7Wv=5e*<43W*;WAw6c-%LFSr6VFlajOoO*-eNno40H0;qTD=Wt(CejuCQ}M7p_Cx5*gxzx} zraU}6%@E-DvKg_dsZ5#~vdk&sE(>*q!t}(Q3A(_65YY+DL~y4!1GAAiD&u2DP0^&hI65IUA!G0ca@ z)90kYErCcehq}`ha5@s8wPg7K8S^5Pl~!ozBL?&DDCX)~!m4978jm;OD^vECDeqI| z0$4Jh9`VYa?%qq4bi)G%#t1rg!C5zo zx!Ma{1{FcY*wQXb{SSNc>oY~YWY7j?o|GS;i}XSpZgJ0*M zzypN=s|NHBglh1|kNh?d9sr5u{7DcQ$_Q~}N6@QRl+?7e*+A~dogH$#efyRzLA?w; zt5A&Xn-I!XdlOq081Gl6%So z)FM#dNwWSoU&Y7Ay?y%v2rej@9PI3KMk${ygo>??j*pSW{10!I4ZPKZ2M++H2j%B; zQ&Le01JCd^U4{{gfSQ^by5m@O6Y^O{M_jb4X6TO}dT?R4x%8x@ z&(YD%Fb#(#Be=qOiBKYakrgp=|A~N!>k58MS5J^&WB`DBp! zQ39l1jLgi@hlkz>9r+*n66nYUu1++^#GPhU#r(lBWg~#_2cTAkDvVjNK#$azfq?-Ea@OE7#=5Poje?c6kD$^iA|fJL^G39m z02V7rg1RVwE52YbHz901gd&E93_C>OS$O!x=Wq*Y>D1%fOaZjX)$NYgy3QAGmv*(w7Tb>rKP2(0y71LaI(XI0XEg9MvKjL*9d1c zHj{}pkl;ucu=;IhbCaHHsimdmWzX-4YRKsj>GFID3S9BG_!8(oCUqqRD zF2h#Sn%8Efy%=zvt9%^Q=eKU%BF&I@8mtiRq~V&O3V|op_@Wnl9xHOW0+gte)6>iG z-E8C+kry@L@u- zg6Me`=r#)cw84Fgiky@!gMF_JdaYP08R(OzU=lcfEam zV|}8uaJ#HHXBkgel=25%?`Vs~U1%l{M!S|zwK#opsA2$6b<8{=<-iZPqgG*99~FCF zLW7gi*_5AF5neF=T=AxYf=668G@CEQ4A_a38X@7AdT|Wb_9Fuas{Z^xnxn~RaL3(} z5w{y1A{H>jv-V}jS|y5V3HjR3{kml_yu%6}>84-y zr2_d%ncKqjiXd$!eVRbGks$S~%(4y7Af?s9goIQ=G?yV5sRk@C24cK6EzAGbK$8M* zfJmCsikk`_nxN*ILHO=GAuLJdd67XFN%<%s$UsYB5<-kE7b@c(@zr)pvK8q@& zS|<>*u%DqIv?s&>HHc4n;{coJ^(=w76Z1HbK*CxVJ=2Ue0npW&WpQOC5;ovP+@MDm zG{LU-C7a*s(8mV>(oo}kbvJf)=Pw4xpk(hGTqH0l@z|h}P5@g2Z8^(U5^z1zhcm$= z{d{=ye_%$1?G0-mUx7GRnGmFmDD~c&dt^ru?CJqakR&qUx6=y=$OF@t%y2V!))}T; zlL2-Mi{Iw0Fm|Uh!_8(KGE6gasTQ9sAubv~plTW#jL`cg<}@@gv#@;p)|wVT%ND$Eg_jMh9B80aVfH|Q{%BJBJ%m=6-T;62d25n8 zAe5auavjJV&PJRZ0p`plF5=m$;t+ zW3vUw*dS)30@ZV|(RaN`@Ngjcc&I`H4`MkE>bb&Y6jC8_b8~sFUAtgKXnPrjV$?;v z0I0*ie_KXIyndknlN@RU;=55Ms~XNkBS0_!%dCC;8RFKEQNmiU(&(B914#|^EPzIn zG`RpI*oiQ}Pe|^_t@ig73Ws37WP_B>mp}+mL5LxmjU7IWnyJ>pa|8`_=Q3pk#tAM< z4uWum(&pCIGZ2BFn{&mtbammMot+^%I{Z?NGYIry$XcL4E3sdyD77>hDIK_2f)4`# zPH|vxFc`vO-JnQ+JYr`?Ial`7J zRIS7@`uvDBU=|C2Gwj>?M?W1}IV`D^7?Iw@xqeLyfav&SWQ*cA(hjRKdB_7R`h_$M z(RhLWS=NPXv3fit0vMPIA75XnrA)Mr!5K_Ue>vmSFv@%hpynDweg$fg0<_{+8d4u&cdE2?-Sd z;vdKf36VpEyGTTYP#djK?wObzNA_OL(h6Z^s6nUzQI-k1G9Wla`qI!KIvAgtih1*f z)~?EEoe9yz@$nS}5;=r~UKTzZyZ&c}xX0mPJR{UYD8BWr{TGLhND$ZsWgz*ZbmP6@P!3pX1}T^GfU#AkUElrh5OL2juR{(B>VN=;O{dLbvv|w-uC>aQ~wjhe2oC-qpnccFWnzo(q601!&R0XH^u`(-WIGrpN`HeKK{k1WNWxPfzWEB&>y+ zre-@R<8g1^gjQCHK%jeOEnE=nBxrA(@474_gEd$fjWU$e`rb^lXL%r5LBTU* zJPyD-y)fZWH3v;44?n*WG$Suwyg+a=lXm1r|RVAkcV_hIMGSOH_V&Due-{}2j@N47F3*AX z1EmYJxR=Sv5zr5F+_*8g-bMz+)CYh%I1g$G4PYdoUqMNtxO6FEb=8sIsPZDTY>nyL z8^35bVG)@?&7oR@fQQY12+>JWUIGvM(xait*jMYcz+8s5f?GRP9xl{)e&%}uauoP% zl7y}CxEG+LEjAveJ=c`Q5)=?n0bc3sZ(jh?6hM|US^i`EA1`u)wTtf&R^O0Nl6D;fEjo7e0X{1j%%s8&lB`u{TSb%pc2GCpxT5k z)N$(5C4|L=67zH`(%hos1r5mcR$3gyc-ERA3^jtncXGNB&;=3_m~sLU8TxR|C4i{b z1a2k}g2N_0+a5vX4$DUMuX4Q{OeV_~-~G#>qL={~G(-`9EAGP5u=`zOp1~7(9)th_ z^G!ifk&{VVBh$AGxjR7pvV*9l>+j!C*n27AzhrWu&Swh?4}E|u1w|(b0P`|*xq08d zX&a>c=0E2C6j%e&nX|LN6L0T+n8{`H^P|KxV6L8TTYc zYMl*yPT2B5BkrE;^pVwP09#fp79TD^=nYLz!`acwJj*^<4WNpAaUM5xmHb&tya+5x zrN@dsArTP=sB)m=T#oFRbExRFvLZTc^gmV;NWACnF5Sw8C+k=oN1=vqFXKrn8Z)bZ=Jqd$Ky0^RA4~)A!VMx&9$B!}d z!^Ngjmbj_mO9=*Mv+(!(s;Y#%I~m%jrO`5L5h0-&Bb<`!J`L$sR#vM@qhlC%cY*os z{*^sg8^O4e62abdnG{%$4TpFY>p8+hAm1Xo<_83yZV`Q7b}ts|;Z_ob!DBcrC=Vu$|+B{g()lMmCfm9UN5UCrZbz)8c%n@$0_Vcu84b{c# z#ZjQJ0!K~TZFBvm=V}r}K*TB4_W0(Ac>r_M@#MxPP=T|cYtH4(KURg5gw%dub4W4) zj)042)vQh%lHvHnl<$w;C6+_b10NUy&DGreJdl1T!Q-}NhUo2Iw^L<&hu2dXoiSKr zV`CF_PKJSCeEVqL!~%)zA{kj1aB3~ggQKJ2zk3p)bSkouTdYsiBF-CBCTx4e>H)G; zKYT!H;}aEpNy2rmJxL6^8Myf8VDmr}or;IO3Z|x$NeAV1bqp)RMZpSL@=zzue3q|3 z+liP`GGMVwk3Y|EVU9N!<<67GtGza+dbZcV@G#ooEACwToA%RYE0Ojjx2@w-kk7Y3 zLC3;KNW8s9B0-hNkw%1quxPnfGl31+^yN$PlcSNQg}ea9YiBAuU7hd@&!9ShS<%ME zCiDG!J43(d1U#6#}V+!89tRkQixlom00=WsZ2(V!QY6vin;Rq#80mANJwsIs`y`mBQ zpPfAjIQ{T&JDBu;Z468QZ(SKtkOw=V#v$5*R*G1hdT#coPtsucVXVNDb(xZ0e+%?? z7GyMF6keyLY3UZchQ1gm=kF(fcL-2x(@hyfJq}gh@7O;nk3+`Z z|E;F&YXGLcTL8_h^RT?Knwm1+@c*L#a+{3^gQ?Ru9WFB}b?_Ta`m7Wci_Mpp5*&hw z6HIr5Am(a7SOIe@v?{!c$e<+GQd|7-~h4bI)Alx>#yq1>MMD;b}YI2l=vojZaHZXwL@-T0e^_}p=ucu8+ z)8PX9M)Z6$)*-*6dSjH5KG$NHe2Rx0ase^<{3*y^jj3p`^#(OuWzUsA;LSB-v5(oW zVCKMXb%lL#u%NzwYDybwspo-BkWkrM9at@-_9Gf;dni^=%*wr#g8|6~Px^F+s}p2opfH3n)NWGcmrPIiuGnB&81~+}PM1e^wHJ ziapOVhCjc!*mYXdn_v%eoC(t#gw&S5dzV7L$S6d{cYjptB@;k?6hdVF>;zUFhHS2qYaUgy)temFCw8JmWdlGZzF zCh8`n)%pJ)!CMuX3n*e)19q5yyishNoVcLvqEheVuLIC-hAJO@a^h!@ay^RR$_!8< zw2>V}VPSea)L<4w(gP|pGt*)MZ?LS_5$tEg?B&K^zI<7YN$B}KT4_%OJn|+K{5Ct0 zxo7w+@=u=pO&ZBMKX)M6ZHYK;Mfy3DGB(3y1x6aAE*vGBtOiDLnL+pt}K z;LY!Xh6}Dk9F*+eUsNBBs$Pr-NH#{hpO&@OeYXr36cqqhEDBtBKb^>kh=Kv385tX6 zMIoXGlC+@tGpzT#h5*u3iD#gZ&Q*^)WDbckiq{*6{3BT4~ z0FjI=0HP-V5^F{nc_ATm$E-RhC5q0RG`cZ);Vk4Ina^tN(m%_6^I?cJ|h1>v4qTox%5h4L|iq>)=;r_ z0#iwn?{JkLzYS~>R8%+SMANox!4`%*0L&>lmL@j;nN0Q1 zhaZ||Lm6Se!fXjzKwv^66{3>U0(Krmu}3v`$8&ED-jO4zcmU=fR3KQi>PzwI_{ENa ziANlkKSoC86Pr$QCoA=XA6W&*)(F3e1|+??x!DXx4@WOK$5B640^^-;YM$dWTi%8h z4@vgdCnI4e&j3bU*f%Y9Y2K7@<>I$>tR4!*2ak{msf-ug3*n0qZKZy92m-4}Ka%FE ze$>+cNfLJdqYakKnWcf8!;SMZ7YN$aN5d2AoUn7LSy=wv=M`hC4sNL`1$wWP*e`?i zx1KKeVMQ{yhBQ!iU@OuC(GuW@=lTSg)*vf^^lLv-Y+4D%QfzrFEUd~$BLY9cuZfi@ z>9zpkF=R7fo2*9-Uiiso#4t%hZwH&441j|VNRI`zwaH%}-k_nQy9d3CR@%)3u$e<0 zddB$1;$VFe@DIXuPSEAnd#=qLl`KN;H!8}5B7)fZWHau7Sl|xC)tBz>%P8;*T6qa} zmTy6lU_g8KRtKp6xmW*MK?ut438Vs0ZRzvAzF zcBs-dH)p+O-k6H&-(MTAWfA!=Nq0X@*8iy7A5nGbxK(mozm}3R-~9Eu7vdX)U~sVh ztaamtk|0HssPt=d0@4#Xs_uBbz92U@1a{o=H>r(xz@e2JAydYDB=JTLL_w&tZ!Nco z0>K!*430ieJ`xNOh$f&z+l`e!C>HCWpemsw9O!U<2gstcc@Vd z#p6YE^zZ#EoSZKQ?A~RZuG)g5Q3C`9WSPK*nF(3W2U-uijj0CD*^sa>w^_u&1(>kA zuP^rc_3KL@-_7nL!Y_=`e!esM^~;y?z!ixACFTQ$hgxA41m4t_ng^VEfU&q@e7~mY zG#X&0D#-AF?3Q-=^fn9JNG4*PJ4*K+9 znsxZmGoXM&A?$#ush_d}vo-)DZ|EQaO%l|k%MDwVA&J3zZ^)nwnoO{}YW;{M;NG`; z4pLKQ#`(!2ZXj4f%{~+rc~sqowy_u5V=%%s&yI=!gD&Pgv4maN8H;7z)XDu^4QAe+D))gAN~08W2QBP$a^k=8x0^I zMhMg(6v8=hI;l827Z+-MvI)P4^risS&`{eEFFaV;y`gk)pE2PS3n-)l>DCVpDtpjA ze*p{vv{?zFEaGgavWL-jfbENyn>!3<>WQ!KJ#Y^|L+IRo=aiezq3Uh5^Q1a>{oCia zme%Vx^1#q;kmA9sIU%+g2V}p5_a++{_Cnjj$T&nqsFA+6FW}5g>?#N`^fd9^&%sB- zE+|NbPsRcyAU;x9^3#0?A%u&?HgsK^c!%)Z02!Q2pP#Zq8wJLs5Rme;zq-^da~Y&` z0jrOCSaInb5cSK%#4s=`wmFJfL!L4$v$~-F(GaW5a1}adx&zwH7Vrggz@3ne9?mHM zIaO-YO^FZ?5N}t-*Ws{I(utmd!8~kF@qZRhH4FtI{*_3iZcq~4Zs#0 z2@QZjisY20HWq7?exdTMTUc~uAX9Jd>?nesas9>(M52Xr1&`-dK`4&sg|G$61VrM` z*MN-zfCbHdD}Zny)2*Om2<%&||2a|E{fllh3o*EX8@vO$n|9?B_#$!$A|W9JvH)C= z{o1u&=lA!4k6{2l_b!` z&jB(F(Y<3>WL^LPiJ}X8si~o%Xk^5Ih{~YoeoYc?D{8uKEyTqKq$$D#f_ssVj}Nh! zLAU5!*8n!ruW3?=J@Mj`?(uD|dnFu6fl}E(|AAXy2`DWn;ozhVg%dF36wup4azR)y zAbt>s16Vdc5`?y(DM5)34aI|~&&Q92Or-bpGP&;nv~$~1iEuzbo3$^3UhTM;30t2n*sh~;&2~2pTbcP zp3&#?b90?e)gM+shBAl*woXJ$>~ZT;*Z~4@R}<9X_|!8gF(8^jc=l{%`Io&F`d>mZ zBY#EuxiQGgfbQ*_ok5YsM>J}nkBi3BSpZfEhlPYl`uRkGTCSwjzIS$g;6Bje z@4fxC7@J=l@qs+Z z4><$!@G8>J0lpe;n<{^>yPH{G&j{@9(w{#HUS0>Kw__j{DOgxyVAHMJ3qmgsiQhBQ z>5o|F^I!r@y`qvyC-Yl-rxlO_JTHw|2oV#7!KpJVS;NsV0rt3y@Ir(W5J>)W3=wn& zKR>@2ICxoR=qR4SK0oKp1ZU?!sc2|u09FQGAe#d^eAaCf1TUkaP@|%S_9yQ;C;%IQ z_-%5TnV$Y4SVCwPf{AuvRKsVhXTa05fVK~9`z0=FqasgDEC|^CW%o9&V`jpPzA#W` z;9wxoBO@2SLTxyf|H8Ek^8JM7LhwPPQnqF9Ey@U+A5RZ+XjsH3m?Ng9rYx)U;=9|m z)ISb605%VVI06;e((>m%G^N^^U}H*sn>h|PUNE+UjWvfhvsxLXc+kl~v*k-*hjyRl z?FcK#dx>FM?NKTmi14CY(E0HJc3_KzJisIr%zJRSL<>%H2tJA-x^rDd{$F8xGD$4D zeI}@N?6f+caK_5uE~tZuRaqV^cMESb;It_0QZQLct}eIh3xV$tG$Q%`5sqy2Qs|@Z y{;w0NU$FMI{!{<>Blt>bA1BQn7+X(EkHjvULyu literal 15416 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

    |$1oioO`H2AKXO&-P$? zTH3X1sX?J9owd!nao_1DCI#MU7c3@uC?O`(Q&amkF;%cs*VbOAv|mydFX#P&a<`fG z5gmmjyMwCl$gZhh7oYmD84DRCEFxlEtrRX%OG&w29ccUJoyb@Fhg7{AL8I}QG9jmLc$o&xj;(~CD~6`Q?IREUHt9)_b-2nk~Ok@sC0o}u6YRr zzI^#9%xV7WJSr$Z}nEQE`#uP-u+ zYW8_-;+7EM=ic~Marx{mEckNJyrSSvWi)E$;0*O$%TtgmX?R( z!VS@8EF3C|4lfByN=@}gMoz(!jEZhS{nYYY9P$g}IeL_2nu4@k^|NPb?8Vq$y?T{m zGkj5O<7AG7n7=xV^72>w#3x7T6x~x-{DgOlNKQ^}u`n8IPi3Tigp4$H{_4xZqrBgb3J6eH zzNgVrS7&W%YU025$3AfxxU<1&JRnxb^TmrRAuBJ|ZrFATt>Mb=dS?n{X<<^%lcYM^F2 z8XCJ#S=FCDQ78cEx?U!V&VPT$wdP?{O4L&WXIkH%-jGAT1zWwx{T=?&|I)fQj#H?vC1&rp3iYlD2`Z zEJr@?|FyXI&287c-lrvif?_xU1lWYxf1?rm{UbnKT08s7--i?W$_7S8mE#P6C57nz zo1$k&+ZaqtOcs{^1cj9r7gIKDJ5;#*&;;{ZiSMK?E6@~(>+I@PshVi7Cdgs5F zM(zCNTr4v@ftbxL%A8wCeD}^ZA;HY;Qy#No;&YV)H|;{}_N}LIadTg| zdey`3>z(zSoSd3gTeffah>hLz?rQov^b%;Jo!?kZ#HP=$r65`@zgKKT(xpN2`30Oi zRnDv<){uo{%E-=6PszFaTW|~QTA)+#9rs_q-dz)Zvgq>7YmWVP0}>nVv$=|Dm*D=l=!FE=4w ztj_8FQC(WP3h4f*#PaN=E!(z5f%6%x3oQ$=D5Rl~qKxZIP-A!gbBnUF!<#Or`_Q>d zdo16ti+%liO>?Z`C{Bo>7H`0@T8X0~BKjZPnHt*KDgp1myz@pgKYIQ+Z+1smN4k+T z2V*a=%_*FU?7M)I{30TiS9F{n4Td`x*0!1ctsftkt+rLKh&UU2ghpR>J|=OzEB76a z$u6f^CKL?As<7zPs)6PoMik$w3A zv9s)_uBl$QP=Y*q)zXrGhs51uW&ngnSHT4lz^iHGoT*;Rx?@KNI@IlyEOb{$y&W44 z=ND5_e$NaF#jAWW|C(P_;kygf8MyW6jdsg6D}>G!B`d3Gt)7R+tp{*@5vtY9yy_p2 z<}%i4H@tcG&Oljg3Wxx(qfF(%R(z&Gx?$}#3c14|^+ZFItb+^M#_Upg_{4QC+o&PGr87*#c<(oHo39Ly^Pk%qSHYv%3?}>)e z<~<6%f3;OrV}-c_U%X&WNJ!8ZGO9CJb>9WKEfs%F@s(I~U%PHyTIdP8v|Y}BE|@v` z`1o|qXIb>r0Y3$U{@Zc%2Fr;%)4Lb4H|{u^Qd%mNrB}9YpufKyhcgIFlq1gSRTGo_ z*6^tOQl8?}r6W7I zUDePK!hczoeNtKIbB`J~aLl({(Gkeiyw_%>ZrH0#qgo z7PLc>bFELJ1lK>N+a8sv5U|fU7R^>g`#5LG!v_z7z^?(kO^UCOMYNa;`wLi=n3bq< zpd*l1qdm`dG|1a~qqU8V!LED1I7QUELi@jN4>tt8qYwB})7JJPQ7u(!v_K1>0AS+= zNTIRbl7~0y!^CSoe|}Z~2>LE7Yd)#JXH=*?;CWzRnm@O!poWGl+*+ZG40yri&glB43}?IY11Td?gd}DU5}Gpy_@2urYo;RZE5}e{rQg^ z`2f@-W}1drn3;gLt5pp0xCDtKxYr??ha zIh0zLpFb_vtY6Q~!}I7VV&sl1_%DY;|7~V+tomtdYHIlJ{<2gE7F>Jw?Abi}#J0EK zn{g&_G|@Bt);^KP#%Xs+RrT@Z1l34jPj^qxvLvndIeO_doUUS`q<)5FXN%lh8W;J4 zMg3S`Uzws;#*fZ;=gE7o_&!fQ)Z}xM+btz8PfO7S>~GJtj`NA;dOhJHlszNO4jW7N1WfuKo4zv3JlDq=;Dwo#QZk!pYE$hm)?i(D88~sVm z+5Ijjhvnp-pR4D`zqn!bO6uzw5Kn?AI2z*I?x2FXuY-(z-IfO=1YG_I#g`kb8Wj~4 zso7x;Bm4hxWMWcs%<*sEmZFZOfo#XM*)C@3g85vmDf z;|d%Xz7^kJ4Ypi!CJXy>4YgUFL3X$6ti<;1+uc1pO7KHV&^i1S{3cDLOzpxw#CGn$ zIkf||Im-(gpZpr)1ccb?cokZ(27m$zuZ}U{w7NWe_%Nw#w`-TQt*tQn&vG6SP)8{l z88T{WEPE7Rx`K^p?p=kens|&No~>1Mj|~xVNon)&ujh?w&UEi8ft)K^ZNxb}hiZ76QC>B6%iKUp`B*T~o3zJ2q< z@1OkpYqfmLrcEAe{!2kVc<_MVX6SrSP!Qo47vBvG7-|+cY-Q%tEH3wCzSUQ{7AU9~ zP-69ZdKsi|luJ^*J!GOrEfF-cO5`)Hpi4u;N`Cu8WhJ+S1Utyl2VfdCwY2(1M?Jx& z>VEX&WD&L5H#RKhvEBk*LShUt_KtI#5@Vl5gQ=EianV*H0T7}H$Oql&AZ z`TO6;Vhjxrmz0;Ug>dk5dintlhsflQAFoFnXohXTm4SpsSHBMTp8GpQ#3Bl0C#82_ zAolrZI@Tl9pe^$@zC!3mV_&7%Wx(X12;N#=v_+-oI(X1CcM$|gL@8Jd)zzZ3mBQ5tUD z5 zKJ1&YaTSH#cRf-h;aadCN=i!L*&m|K1w*B4VZq=bvkG6}Y1t;WHVS8|dqbrH;+H<~ zJPKEUh8(Fz7FmvH9p}%xL`88yGO|t<5)inLH+fOhb#=!0=FP;i0xp~qc3MQk>~0k2 z_Z+qL^=)}GVd3Gvc+HkATTaERm=-8ORjR01had;Q|BtBDKOh_s6T>6J#e^?$-`DF= zvb%N%R6(FB z7UZi6&|AY)xn%veB2=dLy-7+sgJ#K&GxX`x2VfSzHN~7mQu+W`oxztQJcEyd3fg6? zJ`T3!KJ-Vq-4Fhw9L~Xrq$lo z+A0;VVl~5SCPXw+1x6NqP47psv8#XSL`60V_8C_fJWYNtZu7K$Fq?I&LV)p%3-}3JMD3fYzFAI=Ojs0K2~edRquU-@x4bnrqYXfAxw^UtgbO zbMTqKqfwlVB#rWr)7#e4*2XO=$_jLL3Rwje)a`}Nz3t%hoUVO-xAmYZ(QwcDVI&e9 z1RhD+ZPN#IY0tX3gO--oFDS_U<3~9t zih3Xo89mFX85m>{M4-%V+4#_Gl}5&zxz0+RK7E?JqVUi3Imq97cmw;T@odPT(W4D{ zY{FX2Y^)9NB*-zGiB4i_3faAP?>_<@aj19w`Xe+*y1%FU(e*dk8jDJMDAh-(93Vv$ zSHH%Mp6!9k0f^xx=*AEN_v0_cS=C=A2{4ap4iavhS;vYYs%j1z5VAxX+2(q+FNJ+= zo=Q8=BgR}GJ>ooYfEG|A=g!QYuTBeE9}NTvmxPQ+O+!-xy6*w%u9n+5YR(@_r;yIX zRUq!8OQ7GiYnMW}1RF9`YHF&Sl2Ytnk=K>cR2#9JL#)DD+^^jr>6Jj6Np)Jf4XIM^ zYyKVk@yxc~@$tmb28Z3Id9CmN6ZckSSN87RTh`vrA}J~9?(SZUUF;s?}ED%!>TKhxD%bRbySXqh;>|9r9y(@3Va3WU!H60>+g@jz4Myp%^Rcn{DAGUgz}0zISl8*eKb|2Wo2X^r@mK~ zA-3A|h~Rk~;Fz;J^7_gSEYl&aye*#0habZzkR&}ix3BTeY=g@>Y`Cb)BGSWUbg|@U z;B*rW8M1X5ZXfE@#&_U=(Gsxx0dk>ddVuBN5D;Jj2rGp=rE6m1fnJ0eK98R>Gi7Kr z7_xytDf=@eoKbSKS|ngH~JdUC+m)Iz^X%wNdF;u zjX0YgoVXZHX=Z8&%(>Gf_mKX$qQ?eyjhyhi^+G>#9~1jwpy-TLUy zpS%BwbWTX^ADxI12j>~>umH4Ms8-xilNWm!o2vh+*ag_x+3owEUtvU?!sRjcC7a>iy?gB$CYvAAv(YjzFdVv?wno-xr=+wr z8V_^=(>kQ$>j38b`VpYq+t+vB`Oo)V0JNo$EPQ_bvL`C_x^?S_&>f}!Z^viZKihbV zO~Zw8pI0MGx6+5LcjmYK;&9y5K!`ShLr0AfZm9RUtL`d!;XYKE-Wq z%w*eTWY(a&0K8scrr~@Yf(V)(BKwXa)!X0yNWapj56t-)fcU7WsC`wOu3aMkZ|8UR z4rxB*p<$vlZG?7?V=lEPpbxw$sh@L22shUM$4uz7iAVH@|9N%ww=F9bAmcziNBtFX z^)r`T&5A_65G^74S{Y1oDIxd37p+6XVn5$uL@HlNRn=K6i;|R+jhsd7#dtr+3mbJp z|BsSCvlVSIi-QmSup`=H;2GS%o#-@WoM(6L5|tO+q+!DqG0WF z`EuTa2M<2H81IT6KN~XIE+UyCm)J1v;nYe3>WotgEv*XJI|XGd0^}*$8B#P61R(Ah zfQPl*&Qf#c$zW|Jqf`@aEzX)GtthViU7jl4a99`61IB_@Tl?3Zm#|7gXB z54sTJyBW7~=AHg`iy_24Aq|Wi6&*bV*`~KM(~Q_(K0QB(_RoYkP2ES3) zgeYufCJH_l7iBY8S zYkW1tV-OOjRa8_&WY5UeNB`ezG%R_;u&7WE(;_&-_Ve(pMPV*S)gdf*%()leVqR#Y zC1|uYmZ=2X)q@KP{=J z%CvEAl9Dqb`;0b)Ro0iioTO0{nl)?I^b%}~Tok{uv2nUas9qO>7PR*pb0R1%aBZ13 z$$bQ(Vg27zn|%Zac@#mm(J0A!mIeBRRwF zEt<$%Q4dqVYk=$4hgPs}-@a4Vu5p2$A^kh3V97(gUN&|6?n-#mOnJ$ypc@zg)ui|zjaGM68Q5k4>U*~e6(rA3v&MUd;g z(Ve$dFqp0fxF=+kXYXEaLBUOsC_<~M4OQ4O(40LpKy!2FB zZm*@SZ8^FGCN?&2_!B==RB#aqoK13=8=6cn6J z%9L=;7{rHC)6#ysH#qZKE!&(;eD^ayzIl$-tU0;4oFXF3l;ZDGy(1$}z{d2#hA}zu zlZMlmp4H1mEWfi;T_NP?##^^;C5GLco~b_>osqExV*YWG!_Nln=_8m~O)bbLipR+# zA>kmpeF{$D=Xuf&gRZL1$FhUYe$NYkVOl>1LTq*Vo-F8!dmnNI7ogh=*-^4a; zi53o?Fqdb~o~bG)3{Kg1Wf(Vd5yUpsmK^TG#pBdC(vpyR>-(7_5KKU&<=6~AO_JvN z;U9yH2ns4%*7qBfJ_1|OEcZ@K_>8tCXaDxofs#mUT-Y%-7#(aFg*jg{5EEO@)2Exf zc8Ji!qG;zN?{xRB82kh81q7$xkoWkryc`)9=LTf*9Ve^FR?gLLjGaLf1O`&xSD7IL+eOqV&GOXByV0h8kct7Flf)Wxt zN}hT(#2Jx{G>`}AX?3q%TZJb6r+q$OXNZr#d<=__Asw0mjg}u79|mWbpoX!XxNW0v z^I8N>SnwUI@kit5&#rIZ9-w50k7?`Z^q4N=n>Q_{`HLe7`(QnT;6b>7$nzhCJsV*t zfpWB-0&g!dt-wTqYd~YIRb&k&6>o;V!L}_#uXy|=8~P|x#(#bDJdEpVQe={N71%T5 zC6IW3I}%Hz%7M(*EAc95^Cy1JZ>25QD$<`cFgB*Xbg7v>`S2zW^^KLu$7NS#hph3G z;hM1EO+H6Gymnt>BY{SsVo(<@z%3iB@EDdubPkEX$)EjJ6Hy9$FQl1Q;A3`zgBJ#A z7EmQ14qVj^0l8ienSu61Y`pN(Vt?7+j=>5DTi!aDk=R73W`5uO(cfRv+BzTkiAVee z^4ry`+sS8vm45Ps79T*q3(U=7qJcNs2snW)=?iHV7N zFwmNrjjBc$F-e&(;WXe>zM^+lp0*dudH?=90gTkt#&!i@@j#~$_c54Hr23YY792%5 zqbYywgk%B^85d>?)3^_GMW2;W-*bSs=!@`|n^*aAYeC+O>XZ-8h!rGR++)sllq+1-)aR!Iy+xNaXaWX)yi-lMaQSk1 z=qoc*Qv~ZrUI;#B&%H7g8YaZ{hagNE8=26c!vsu7J>p;<8KD&s5y29aRaC^*u3QIO zk2dH$c$NASHoS>i@3#T<-E(W(D=rJ40nz}zrl+URtEsu;q~X9sMnt%rvpmAQiuI*y zM1g@MZ17l%B`ZS5`TH}uN^wHOTIg?|u1@Evo!awUo{5>+4bIrCyy&-$({*nLa-LTA z6JiH^H`o+HW#Nc{#4_VCw)^|6x<7ILGM9fbC^}p?v0g*30a1v)a18(;x{1<~lE}-7 zn>n4jqfUGN?6&LaZd+JuxnvlYoO~Gd?EK}+kI0#QE)Vj?E+rvh)>&X1~W_b(K_|0f>-hed6##ajyDwi&m73kQto-%oQdZXe+8sl&y zEMmm@eHq%$MyuZLm%Vf_HojnTsP=HJaNxj_j8M+ab2xwb!_?;gIYrq=K~ z*J5OchmU+rDWpM5n1qNdeb##*F1BL>@(gj3v$5rRI>Mni5!HhYf&l_ux6{b#9+;rP zeQsf9j)v(AjUI~S;63;pI8L721^;gsO%nzT2o-E+H~4fHjyQwFFP9SnBg4b@E5F}T zq=)xjgU1Z51Mv#@aY|eM>@6|xv9q!e78WK3ZdKK7#5v6)3?mp?|E{U%xVZJGYV92z zC17Sjh>`_QOytEn60iG?9Xs0F+lxPadaJPzi5F;uShwP^0Kfr8k|r9d02TPWrluEK z4fCt`)=shlMQCVC4!|xRIB+26Z1bl`wAkPi zk&7NH?D;-m(UsF^-m`Nfjui;XhxLQ_vSv;M->`ZeoeL;e1w};=baavD-w0b68m_y4 zs<;-3BkxO(tg&hR5gKBfgwQ`SGQ#nq8i@{HUqZp9YfckN7f1sCqAHRlJn@{`Bv9k( z)mxws?>~RORrvlyuEUk6Xw?LNSjN#j_QGO7tTlpyf`0z~CEa?Kw{N%R9kVz-IW*KB zw<)L&YvBqb7)W?yo+mGNU$hoEqpa+EP8TvpAI{l-{OdSp>#(q0G%hb^XLn-Z;UR_W za0+_?Wq^DX&;}*jVhuTy<>ik;jxhh=n~KokcDDmGD%FMppfqb1ep`t`N` za<6S~8Jn2UY}l{?q7Hm_AcapI+E&)t$%-h1x%b;kr;)s({dZ=K)j#0;SZB_@l+jAh zFCd)q(U5VhGl+m&T5FF43|RL}Ti`{An7AKr9B0R5;!;u=(OP#sLmfvspt!)*gUf@( zzIvICnz~nXXFy#{{DZ%v$wk1h-Y_I-zQ67L-cmK81x1Xwr4h0@Rh5-)6Yp%(k(kNB znN)^E39qdekQOET@EdV4u^jzM%r>CS1z{2GmObKvsPT!z2*kv%Pc=2J@-eGmK1J`4 ztN#gvp6|)O_StPO{lk>wRft;>=Lp$-yl$|+Khw175S+n=oiD54d4~9r7-+V~(Q!$Y zt%K&y7GqPdiC60EMs`XFcJ<5h zFMgtDZ2ZP{O3ePJF5J%l*c{G)6;koxpn@wf_w_8=5@f)~FbJISV!02Bm_QrYvZFnR zl>!3-9>TfQ3#>IzB*w?kBfvF!Xk0^*coruM{vD!?B4DAv~>weEtqq!nZf$+ z=x;D2aq7YaCU~gVF|d0MyBx-J#_ah>W=Go97FCz3n9en@=Ph4Am zevEnX4d;L{V4nI;rdaCh-Bb?rKV^a7h8&k#L%JU9o*Se3ur)S-&bOHh<1~6Z&?(+RHiLkT;1KNYhE4Sj5W@q zPp<@DU6N}(NN7dE5QBWiosq?|8v`ZUoW7AAj(=Kc)?JEgYg6HfC&L)%8^HwYp-g<9 zm2~Sgjd~NT?xPuFqW;z-&uTCq@>=&FZdXc<);SezZ6BZ(tco=^ZT74B+S>lbHj}!; zHx<#+IHg`b)wWj@iK!jNSwceswU@!W(AU=&bi`y6bnG=aS4oG$W_4f28ScX1285T# z7vn#`(#&r=qEZtg!hr1FVCybg!cqopd8%3YWFMppO(_;u)+b;^N&ATD9-Bt_PI$ZB z;NIN``kC+}&}5;&`O<9OqYG;lnH*_(efvHrJ@bfHxQy>;f#Lgpj7>B(06MYL>l+^K z7?FDTlm)%ADUObkl22>x*4o_t5FvIjRsvb$mb&g#A$ffL`V~oLw6Y|4{g z3x1*Fxdrbxs+-}h)PA2pqbNs!Et52+@bF#WD>Zn8HhIWYI)aa0xpeVj(*dfyTi@3acVf#? z&+=>V4VHp`laP?;s@HCyjhopNiZr`Z)P`Ck>jsG)GJS#Wm23wld~6niZGwPf(A7@? zXZ67dgIUOOY)k6h-&Qa%q$)cFVmys-1b5L3B85Ceea50ZBt!tbGkNsBvy#ZTzW~5* z;kNmPgN4nu1@dV<0S7ZGn$I2sizLFPi{l_>8BrE{CtO629m`n!wt(Dj@R+e_FVK*+ zhz+a&L>hk`7Z(kgyLg<{6f%U^-(TOmBJ|Mij-3^5W(XfbcL4k9YTS&Zwl+HUAa3`D{>6>rgd~IE+9?U67LP5xvf2eOrq*{=qYds9rW3Ck{$r< zka`BSvc&J*$V#?s>~~y|EPKfa56-P8@+_gxssnk6RmE|9YAynJHit^(NHZ)2B(p`H zcZbtNAE!%G@H?j8P<}^Kz;=Ei4k;c9$Rxz402>#|Gb1Bo#M~PuWN0m(lMG=)$Ut}D z-Y3_Bk%FnQ^!jU1gCIi;jd9RWQLqsDFv+y18!`OXAD9orRKdW5cTiPN+#V~&Rnj75 zK>*O}NV`sA$lK?P%>=5-uZ5x&Z>(AI$B)#+i3A3(#VEXuJD|#PqU-pp%#{h zUuTA5Yqu9l6H!JN;$OmRF?@q}eZ^S?g&(FRqkvb)A&iVJ7oyMTVb!TOZhRCReAUj? zcEv*pW`@GQi)LiLgIFR@Oy)ntPWZ5YKAWcqH~znW124)iBvgi4m}=Y@#ePEF9ifI1 zAJUiu^AIgk4MyO_g~{a625OTS_-0SoO?)W&J9ik}!uQNJ?J^*VucK}}iAhNn@B-d~ znU`EX;z`%5q^D;WsGky8lyY7_etdn8tDjrk#du2u5rn%w$dSa~1aB)i6aE|R{G3kY47O1p&T&_#!Y+%QE1X3;vU>r{E1FDJYEu%$$l z#H0-qiYzoB*n79=Jgi909)p?H3v3sU3QR;hl0EU|6Hckg7tM*mg4A z$L}y}jCNs&5S*MVm(eleN_(N25px%YVS9&%J>X{2huMq_rtC7D87-bbLUSVq$KaPQ zi6!x?*&KU9Qj*W|;K>y|6v8p&o$=N*3s^kA-Wg;w#1IBtD09W5e)E9FxVUfu5GhB^ zyN;=Xl}}g0oZ?4fV+5Z6Qsi7z_iczSPt4qbR`jUFIeGbO2zvv#6vsO=&$aa#S5;T* zquZ63`T0|q5`+x8gwZOsix?OFPZ%~#i1LpM=@`dS^LTmO=T_Yz8Rl%3h&+t8O7LN=94+?<_wc& z;_q$hn?oO{@!YYfl22dD@y5u=u{-Bs&mF53=`nC{aJT_hRv}S!^hg-w$uuN>A$H$N zAf)yk7WpL@bhTk^emFu?X>l%ePOD+7=xESRafgi7l`pNWfs8xTSN_KfAW+fn&cv-= zz|31MASn1P(3eHvf%kTy$M90D>kaepdH8U(M$x^3*6F3=3>gbyS=r<7O|DLWmDdW`EY_ z%|0Q()>$A%D+Xt_Q|2d~SKhaX9(ewQ4Kp+w*~Nm8a|GdpCi5r21QnnVGFxH8|7T;} z0klXamNZgysSfh;UdIFwyf6Zk8`D3kFtY+y;3_&3U?H7^g};)%S`~Q%?VsmvP4oYq z318ut2(MR7(u@z7PS!5?6sr{aNy`}KpoMplk&=5;ZDPYL{|L6;=~=54FXU5&x#-)_ zW(>{E>wvCnV9Lq<1LRDsv0#c*f$tOB_CJ>==P?V!@17Uc+x5K)eh-8!DA;sPa}3_E z%Lz0|=tAEzFg}h^9bop+F~@iBGv-bX4H*@QgcmtRgS^QCpct5(tViYR0DS5Ie|uuO zDQhzulqPr#gMgY6-n|>^GM;=G7q{20v`r3kN)&{2&g9{&yu3U&iQ}*mJT91P)$qc= z4S+g*(L_RWVcy``T<%eu82Cqy-uv@QwHg?y9Wxc8`JoWq*PV*n>jK<3@Z-k^@bw+M z{V{QILYp^lhJhl@eE+1m!>3!DckZmA@FT!c8(Kyt$?zByr6%dxBj5oLuD+5B?!LIgQD);H!|zyHuf@8dQ+I%;Pol!dmAII9hfjX$DIRFM#cV=OiPrX!_GZj9_|rG^&Tacu|QWr3MNmdn`a%;!cFjpk&?Z z&|AFC+PU!7>QmGd6>C>pyw5fsb#7>^zh`mMdBG5Hxu&NloMz1`eClIIo*!mk#!{DY zh}))@Z5;Gu~pR6RL?Z3zlJRymlr1^Ocz4bG1n(BDJ%zF(xK+^1OEA zd9SaXdEl|nJ%{pO$C6;$#%j8nX*|Yb^3{p58vgaywom2jB+tAQ8WbDsD5{^i8*aOD z&(+nnxT$FqRP19mLw-uuuA?|3!RaIvM+aa=GDsrfN5 za1Gu8V5U_CI7P^{4PRYio)Oiwdz-%bO722rLLGy5`VeM{^xO%Cut9$fI#2wD!1 z`LS{`c#vv6s6=szj*dR_$Bu`~pPJwhbe2DRR{myR>gM7ilZm8CLiTNmH_v=A@iYW3 zi&K&3Iri*Xhm<=$y@b3-%oqd_1xYxG#t9C?4*prq=IgeOwRF`MxIiEP!pDdR_4u8Twz6y^M#}*zDwVQZV zmy&77%zSdxb2Z;=u;R9K7-4u%rYMR-nzTcorb zm$2~Vg9SNRM!T*M)+ z#Uvp{2n-D(4~bg#QqIO)T!bW7)zJ|=e%*Au8%0-&BFDkl@MP=3S)YOJR?a|-XPTR* zAm%gy(2BNrLnnKR<XGOd`R5-lqxa7E@^H=sr__hXPuK3NPNJ<~NLXK251z6H|gHyg3uabe&2&rbxDg94I8r4)~f0DhDqAi#GU7+IAdux_ztmO5QgY zvlDV{*)%jXpf+UTWQoQ)cEW82#CIOv(JFXpXY|baIJrbI^dB4))PR$w4EQq(WSVLg z4>CIb&6_uh;~in8BnYaiJoYGuy|bu&GygdghhsAZoaETuU92wqe?FJzfzH(kP46SN z8dYiE@#9y^#!%seY437HVd67ey|=pG3Ls8@g8^3*YSF4w2!^!BT7tn|uw8bnfIMDv zYLJfu(0CR-p{ZDikde=s$eQvRbapfpOw)!5>wm1T@teoHbu8#O&27byO4g!}9&XLR z!a|t>F2n}|+X|SyO<$6!h#A7TI3wl2zI{VSL=0 zSr`WVq#`-EmY>jHvQN-)mTffg9NTm&pcV{LXWI1*OMlUiaic?+U%?d1Sq{b&Jsz$_ zfMjaQiGtLaSC$@Ew606pr2`y~z)TWnuJ99^>xXHb?mXLs<}UtiUZ?MEY*{Pwc;+~B zHl{J;C`V#nnzyIir<@0y$Fx1L%EvDhlPOFTc|}DYt|&Y$p$TJpRZ3^Spa*7R>MnE& zA+6%`p6#axVW=1r8u)_80C71Si|O=>D&skn_pB}O_Kvrcxd%jLx|)W-?XPixQ7=ia z2VG>{*Bu8$=3@Ml?1c>ezZ}$`4g3X`AVOHK_#Mv@tWD}0qa%O9{HT?%dbgO^tHh zU?t2$6lP>{r-qu5Zd8ACOP6Zjf%g=<4h5JlNw1Gt3h=yos1+z5V@sHbEc^U<3vlaL z`kOcV+P{3^=H*q4JDK|-Aqg2}`-$6!@Z=QibEAnls_lBb=i~5jow!^*1(t_@Sl@1- zl>L6?sZq1#lC87Q-q$!GN`f6sX()T^fzJM5NEcdz;{q4_i7+^jCnexn5H%9cAbRGM zXtq$VQSZ}@Z6QX)KW9ScTT^+*2QKzlm!D^)Vu-tfF1MNZKFkJ?q{xKvQqTF^_`}{d zxX$G07Abz=4$&d~CGvuo=Ez?gU23sWwCxvz1PNv7QCA* z?!^9@si=(LjO*`z(ZWRgh|&-*i01^%s&~8`SI)w8;@-4j!ZKn1UM} zQ&%Z=liDx{b7E!(BpjhqKrIsQ7aqp*4bLbb&RLDj1RjNs;(m@%Y+T+L*|__oR9y%| zb}}CH^y#Wzz4fOt!?g7EKiihu^HnhD;N$6g=U}~{qF}IqwZ0%fU-#xsZ}9Py#WLf4 zVyME8AWm)LRd+?UCqe*pD`M26$~f6Gy9If~7s^QJWX8WIZ?TKnH!PNh@l{|h1Mx+s zm2V9<@!&Z#n3kHh_)>jD3H#CWHW$!I7c;Bs!Ew-;;Ladp+##I7>_?rL>RM`gre<)@ zeju-r(l>#%|Ahpef{yRuuR zRs04P_3A-3|G3-UHdbQ21BDu#+&uUB;iULCyuWYfl1%PkNw$Ldsx1v$TLyE|T zV0gO(@*c)Y>_-!`@i2#N6kqe@MkbUZGARjSz4f>Dxke9ncNZ)Y=$o&@VP*%z?@rSY zj}?H>H9$pH@y%dPR#Ch|rQu(2Sux40;g7&GSbnBV+gMr_BQd5T`@y9Yf!P!6Juxer z-G*3(uEHbG8E6*IgYbvZZsMIFh9Z@@bYfNoLs{+L%M4#K}289Tnu50Y~P6GUR_UyR`4=6!=lm@JD zd|_c2o>L?V_u(2B?1eF)&{+Hk3f?t_bxR;&GPg;DgoHFh|A4*e3DH_`0nNEH5U5^b z%7y9YPnmx7RsouPab$X#(r_?2pGbT*gLQ0Ae0=s$0BTLp6|Ad$2dWVMw^I~?cv&a1 z28`lWBRe=$qD||{g5GKz(||Msnf7W(=B{hn`;mL_?2TKc+Om1|@8eQIK{{X5Dpb zsAp?ju>0|tIiH{GQARr34L@5R21Kx=O{o4KKYVZ{%L8`FW?@2$RovkS_S_2ulZRaP ztBh^Qz{L*Lt`l4$A}<`~Mo#xQuQVn2mxSfTkJ@UzWb>MdD~qQFhT z!I!~MY3?0}u>~fd1#dha6NS9E_vGl4)k$}B+Oicw zr+uCOJOm()fBo7Oe1a5|C45|r$Szh|WiV{KYAL4I+6RV{!UAj~S*PGdbSJH$1J3k+u+iU_LfT?I-r@_fdWfZIzy-HMcYutQnk^KD*XCE-r2rF&+K1v36&^cWlogLBCO{)i2(uohK~ zJy9KX8XeG;%qWwoCMPebeG$3Ub=-ZcPZCugIy;W(*H2S(DvB5cf4?XAdaYdPL~F>* z;YfXn@%L2LCMMOa)7JKo9^W-YT}@3*kOr+up3@_TR{PGtyq!(nny0(_6gs;l1=|`L z5(dprUlxwo!K3)(46;>9z4nLY)q?2tVX$o`ZAOzknpzDLw40(>hySF@u&+s}wET1J zAHFXgZByn2-oEbVaT3N@qTc5GWV)T(UPoX5?5xUdE%~GUUbU={lD2K)^AR8ddk9FrikZ}un$8UuZSGLbJde&wCGTaEU`E{IRxV&X*IYR6h# zd((JjLcp;+Qy6nQMguh9Xn(@pog*T|ODpaNq?Z~R8d(i*$50Zan*>6a^`K*s+$o9g zgaeJd6?m%hYlpivmX^7;#I?|ZDeqb|Nh~XOC<~9x{3df^T85v!12|ZJmQl1W)KU@1 z!$=Y0y1d|ru@!ogjGhs|wTcPf)6H!%WyPrffC1}o)@rIdgdresU^z!^x3R%XUOztv zOMoj7E4&=fD|*A>jr$SkmBm?CF7+8|@jbEu*DHZ~FYA8ahu7jlndKmP_kf$jq5$Vr zepXTKb|0tBbg1NQYZ3$e`&$_wYgG=^CA#2elp3OhK`S{Ix%(#(CUp{^TgQ z(oAd&3er@_MJc6^zURR*A8UgVPs`NS@r-4qz<)a*CtWxLbi+Pwd*IJ3t#XFNK_n?=#K>?C9B@qJw z`tFdJ>Y&qiJXfrE!X&BHKLuNvq-*i!Enk*8+n1PK2M;K5c1)SaXqXl1?!0uV8qgY+ zMjdct&Czpgc`oL~e_R}E-iyg54}KuS>z=mw3Wsf0s_@BjBb7>jbNXNF4{r@&dv;^N zh0PSpU45zZ9~NEkf(S#-Fp7{dm)1d_>Nv;B?Z>dB(?&){%enJA0aVt4qsqyW_FZ)Q z(OXhd z74MW5ZU-9M)Q7fqc5Xb2BbkS%yy-VovUWGWe^nz^JP6|E#w$&dIjEI1s#WRV6|_^{ zj)b>PAE_aJ1qOlq&mU-V-R+R<77my#LXD%_-fz76uDu*|_S9WrVPQ!Yk`qm72tw(L+*=?L zI1Z@{;Es4_(4!R}ymIrMm0j2qBp9L~pp8|@T=I`WkYVmqj-H#Z@1wrj)f;;W^G_7X zS*VYnO#Ql`IhSB7%H5mWCZ^nbk_{=g7lslWF;-zo8$r|0$XD55bu=#+PEJll_ufNn zC``a(VH~c<;UD2)S>Vl3>7+(=W;<7j8_ewSQctAgYeL_uT- z252d+<;CR<=X5ceJtU+S@1zXsJkb#oCiG@*u)owT>2uNM%EB`e>L8FtKPIUt>1|4X z)4GB?93gya!88e|d-PsNJ_;X7WI)`NmGwb-=JSgjMF&fdl1uU0 z37952F;IaGjhQw2Zr8hd?C*8d_c)i>wztjQX(S?0dYwQ~Ef#2EVki(etdBLeyT|yo zKKq&oMMcirmYzuP#S8;Wxqq0o_C2ePAvwOmNncZ><<5~Puzz%@OdW^~e_40WDl9g3 z;Otm^6^4(>hC9;^5wtGxCVT{~9QK<+@vmK?t)YCu3m#%H`Q#>H!C_%FekU_C2caH> zLpxK3RzwdXP*nlnERsVyQvO6tcE`(?Tjq6}XzoztI2tfgiVzw-xq$^q;>s6QoEWW; z9=2NTiR=rqg<$QLD9IRTo=}s!D1_!hf^fYw#ra87lkdyG-3rC0k@6h@f8DuOPi=#X z6M-L>Dps}~uHwsJ3ws|8p;t4@aYpEiPhSvRO{vTM>(~>=$QL)8~ z9-sUn20pF5zoAi)Sdh4Y_3OO~hbLOr{gq?gMO8KEdfb~cj{c>6_uUe0nKUQdyf{lF zRt2ngGSP1$^!x0y-1LU$lNk%1P^)my+cVhwwkqStDsaBQV@N2~mFOs94Cq!;e?wkP0C%iINuU!V_Ah;*=GRsi z^v5U0Wu;2RhhVjvKD~#ida*pWG*_sK1A$IcqOG9=sFWQKfyG3AN zWA1@wrE(w=pe{`6VBBzEW`s zaKrHlkCO<<(o5*O82Onh*iy$&sBeGjNCM0VJ-u+3P4d$}{@9aTDCCP02T7X4WR^{Y z_|OCC9R^NF(M9`>>gx&G*fjSWZTDY3F9~yTr)Wj+m$saUkL*kFWoFZ|%0hTXmSG5c z3qKH_7>Q^+Nq|kH)<9PmjGIz7Gm0$OpN<@PQeWST>Fc9KXYkbg8?Cj@RJZw7*7PwztzGQF21iD{R$8sb3=og4v6P?5T zB!^)bSkGRu=AS=*``0x&ok2zxiUg-UNU{-Mb{8Yn-McH(`A-F3jPVP&2Bb-D#4l=E zM!T(TF8;WB&6=Cs;}1i>W5eKqQ6X_ifpsA-SVi@5O-&dPa=2V2_6#gD6cd%nn`>Uq zc$47ZDz0rA%*Lue7#)41y$nWFo{!7iLDiuPyf<97u}!;vBHhi!$w`_XC}ei5&t{A% ziScjGUtRC#=XT7DZ)3n-gKSKc;14QV+6MB-=}F~FFr1x307(V$1|!?lf6%jK2~MjY za*=+*TIyBXWmj!?^zGDpVbQBN`7yY(S z?~zSB<)_!U_UziFv$OM;^76rqo|BJ#wS^t6hU`{sJ%xom=|?MvXjIvP;e=1OKSLw7 za3eJ0@=LWw1_r-Ea;qSC3OsoSAtr4N%lfQ(Z&D%OzTh#~d-msZvYX4!^&L%&WW$BU z?p|KqdCgaGZyY*g$ifxL)$5@BG1Xx<`4w*plD($1zgL@Zi~KwD9GIDaWs1Km#8ziA z*-vFIOP8K*T}q_EoHs866t#7|mcMT`Jdm|(nsd?WaF!rEH|w>_k|k;JZicSsvD7ht z(2gNjQ2A(9;68sBz&C9mVKoWek9T*-zm}x3PE=O5SRFpv5XA%+Ls+pwB{(zFOvIOJ zw+>{!Zf_`5k7^hDYk8l0#7h$Shs{8mi!$j?M{36Q0U;lYod%v~ck+S9OYTy3x&?_(*7po*mF}9u$ZQdT{ zyk%f@9?X(Bhwy=7fnhH$zDz#Vxf6DE9d+%=1Jd>nztpB%68%dB5mqPYMsR7Y^7fvB zs93i`o(fBJuKR|Ci%cynF``y`4fuMJ zvpZ$a_}O4X=!p5R+{O)-xUF4NE;{lN#2Q7l{L*^Ty;8T|Qc*&K>KPwJ>jXTQ@nKL7 zl8%gLhxcXxj2_J3L4`M!`Vs%dbpdc@oH#;%@3GgLy|?Z|?Dvj_;bP5IXay!xA)h*U z_ZW`qv$^Qzjr;v_`k6B;s~6$C8WnvZf7omScV_~;V{B1q2QExbU*x?=J0`cKRh5_niETqzE80W*_}Fi*<;5mh zEcZ;VUe%+u@b+FZ`$z~%RT}m`nKdM3!Np!#T86K+)azcj@`NFJFlpTTa(JwL#N08S z786_}>{C84!VR>ZU6o~ZqDNhL=bi7_&aU zlJb7lHD^Zo-^;4^vLc#_|Gl33#j2X#uRO|8{r}f<8{hZCp4%teUcXtmlP|PV%&?nd KduGb=9sdWUor8k_ literal 0 HcmV?d00001 diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleSpenderWhitelistHarnesses.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleSpenderWhitelistHarnesses.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..e386649e137c95398a861fefaf5a8a7d9487008a GIT binary patch literal 25990 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 LQpr#<@%ldi-DqRR literal 0 HcmV?d00001 diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleSpenderWhitelistOwnable2Step.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleSpenderWhitelistOwnable2Step.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..7e435265ae7f9863e6a64aad52939547190d3e5c GIT binary patch literal 22483 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 l@wZ^24CK;6$+0i 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 diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleWhitelistWrapperHarnessInternal.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleWhitelistWrapperHarnessInternal.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..259b1f31e4fc368cf48b1720376564e697f0829b GIT binary patch literal 14610 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 F{}+&k4^IF9 literal 0 HcmV?d00001 diff --git a/doc/surya/surya_inheritance/surya_inheritance_SanctionListOracle.sol.png b/doc/surya/surya_inheritance/surya_inheritance_SanctionListOracle.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..f49b13bafce7bf026ad1a6880d1a87ee51f5165f GIT binary patch literal 11237 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 E01HxV#Q*>R literal 0 HcmV?d00001 diff --git a/doc/surya/surya_report/surya_report_DeploymentCoverageHarnesses.sol.md b/doc/surya/surya_report/surya_report_DeploymentCoverageHarnesses.sol.md new file mode 100644 index 0000000..3214d4b --- /dev/null +++ b/doc/surya/surya_report/surya_report_DeploymentCoverageHarnesses.sol.md @@ -0,0 +1,60 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./mocks/harness/DeploymentCoverageHarnesses.sol | efef241e157c319d20144f266ca0228a74ddb8b2 | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **RuleBlacklistHarness** | Implementation | RuleBlacklist ||| +| └ | | Public ❗️ | 🛑 | RuleBlacklist | +| └ | exposedMsgDataLength | External ❗️ | |NO❗️ | +|||||| +| **RuleWhitelistHarness** | Implementation | RuleWhitelist ||| +| └ | | Public ❗️ | 🛑 | RuleWhitelist | +| └ | exposedMsgDataLength | External ❗️ | |NO❗️ | +|||||| +| **RuleWhitelistWrapperHarness** | Implementation | RuleWhitelistWrapper ||| +| └ | | Public ❗️ | 🛑 | RuleWhitelistWrapper | +| └ | exposedMsgDataLength | External ❗️ | |NO❗️ | +|||||| +| **RuleERC2980Harness** | Implementation | RuleERC2980 ||| +| └ | | Public ❗️ | 🛑 | RuleERC2980 | +| └ | exposedMsgDataLength | External ❗️ | |NO❗️ | +|||||| +| **RuleSanctionsListHarness** | Implementation | RuleSanctionsList ||| +| └ | | Public ❗️ | 🛑 | RuleSanctionsList | +| └ | exposedMsgDataLength | External ❗️ | |NO❗️ | +|||||| +| **RuleBlacklistOwnable2StepHarness** | Implementation | RuleBlacklistOwnable2Step ||| +| └ | | Public ❗️ | 🛑 | RuleBlacklistOwnable2Step | +| └ | exposedMsgDataLength | External ❗️ | |NO❗️ | +|||||| +| **RuleWhitelistOwnable2StepHarness** | Implementation | RuleWhitelistOwnable2Step ||| +| └ | | Public ❗️ | 🛑 | RuleWhitelistOwnable2Step | +| └ | exposedMsgDataLength | External ❗️ | |NO❗️ | +|||||| +| **RuleWhitelistWrapperOwnable2StepHarness** | Implementation | RuleWhitelistWrapperOwnable2Step ||| +| └ | | Public ❗️ | 🛑 | RuleWhitelistWrapperOwnable2Step | +| └ | exposedMsgDataLength | External ❗️ | |NO❗️ | +|||||| +| **RuleERC2980Ownable2StepHarness** | Implementation | RuleERC2980Ownable2Step ||| +| └ | | Public ❗️ | 🛑 | RuleERC2980Ownable2Step | +| └ | exposedMsgDataLength | External ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_IAddressList.sol.md b/doc/surya/surya_report/surya_report_IAddressList.sol.md index 9a19323..a055f5a 100644 --- a/doc/surya/surya_report/surya_report_IAddressList.sol.md +++ b/doc/surya/surya_report/surya_report_IAddressList.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/interfaces/IAddressList.sol | 2b961381e42d46c2387a86eee244fb07f4043fbb | +| ./rules/interfaces/IAddressList.sol | 6470e15510efea5ed2dbdfa826ce74e2b7aa91b8 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_IERC7943NonFungibleCompliance.sol.md b/doc/surya/surya_report/surya_report_IERC7943NonFungibleCompliance.sol.md index d878eb3..d3117c2 100644 --- a/doc/surya/surya_report/surya_report_IERC7943NonFungibleCompliance.sol.md +++ b/doc/surya/surya_report/surya_report_IERC7943NonFungibleCompliance.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/interfaces/IERC7943NonFungibleCompliance.sol | 3dcc5ac4a04723f3107fa7f2b288cc4374b678fa | +| ./rules/interfaces/IERC7943NonFungibleCompliance.sol | 056034ef3844a682334b6a1d880e5144af4f6eb2 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_IdentityRegistryMock.sol.md b/doc/surya/surya_report/surya_report_IdentityRegistryMock.sol.md new file mode 100644 index 0000000..a1695d1 --- /dev/null +++ b/doc/surya/surya_report/surya_report_IdentityRegistryMock.sol.md @@ -0,0 +1,28 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./mocks/IdentityRegistryMock.sol | 81a48dbb5b0f632020ce23003bc49e31f79e2e37 | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **IdentityRegistryMock** | Implementation | IIdentityRegistryVerified ||| +| └ | setVerified | External ❗️ | 🛑 |NO❗️ | +| └ | isVerified | External ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_MockERC20TransferFromFalse.sol.md b/doc/surya/surya_report/surya_report_MockERC20TransferFromFalse.sol.md new file mode 100644 index 0000000..919b4bf --- /dev/null +++ b/doc/surya/surya_report/surya_report_MockERC20TransferFromFalse.sol.md @@ -0,0 +1,29 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./mocks/MockERC20TransferFromFalse.sol | 126dbf9c338c740bfbdd73b9cbc930137e96e64d | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **MockERC20TransferFromFalse** | Implementation | ||| +| └ | setAllowance | External ❗️ | 🛑 |NO❗️ | +| └ | allowance | External ❗️ | |NO❗️ | +| └ | transferFrom | External ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_MockERC20WithTransferContext.sol.md b/doc/surya/surya_report/surya_report_MockERC20WithTransferContext.sol.md new file mode 100644 index 0000000..bc70198 --- /dev/null +++ b/doc/surya/surya_report/surya_report_MockERC20WithTransferContext.sol.md @@ -0,0 +1,35 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./mocks/MockERC20WithTransferContext.sol | fa64b379e094097f646856ba2ea52463112c3555 | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **MockERC20WithTransferContext** | Implementation | ERC20 ||| +| └ | | Public ❗️ | 🛑 | ERC20 | +| └ | setRule | External ❗️ | 🛑 |NO❗️ | +| └ | mint | External ❗️ | 🛑 |NO❗️ | +| └ | transfer | Public ❗️ | 🛑 |NO❗️ | +| └ | transferFrom | Public ❗️ | 🛑 |NO❗️ | +| └ | transferWithContext | External ❗️ | 🛑 |NO❗️ | +| └ | transferFromWithContext | External ❗️ | 🛑 |NO❗️ | +| └ | _notifyFungible | Internal 🔒 | 🛑 | | +| └ | _notifyMultiToken | Internal 🔒 | 🛑 | | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_MockERC721WithTransferContext.sol.md b/doc/surya/surya_report/surya_report_MockERC721WithTransferContext.sol.md new file mode 100644 index 0000000..8debf0e --- /dev/null +++ b/doc/surya/surya_report/surya_report_MockERC721WithTransferContext.sol.md @@ -0,0 +1,31 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./mocks/MockERC721WithTransferContext.sol | 93cbfe1335f8121dec4b4424973cf0a6e623fa59 | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **MockERC721WithTransferContext** | Implementation | ERC721 ||| +| └ | | Public ❗️ | 🛑 | ERC721 | +| └ | setRule | External ❗️ | 🛑 |NO❗️ | +| └ | mint | External ❗️ | 🛑 |NO❗️ | +| └ | transferFrom | Public ❗️ | 🛑 |NO❗️ | +| └ | _notifyRule | Internal 🔒 | 🛑 | | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_RuleAddressSet.sol.md b/doc/surya/surya_report/surya_report_RuleAddressSet.sol.md index 1f4691c..d46c16c 100644 --- a/doc/surya/surya_report/surya_report_RuleAddressSet.sol.md +++ b/doc/surya/surya_report/surya_report_RuleAddressSet.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol | d3c0ae66393dfd096ab093154e58ff19b4c8f5db | +| ./rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol | a3c3be817c875ac39b08a0c7b06b97f1d3a4c440 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleAddressSetInternal.sol.md b/doc/surya/surya_report/surya_report_RuleAddressSetInternal.sol.md index 20d7e1f..ddfdb85 100644 --- a/doc/surya/surya_report/surya_report_RuleAddressSetInternal.sol.md +++ b/doc/surya/surya_report/surya_report_RuleAddressSetInternal.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol | 14069f79818b8ba217e6472729be7931739239f3 | +| ./rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol | 61850ffd777b0d2df65b50258100a0bfba79765c | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleBlacklist.sol.md b/doc/surya/surya_report/surya_report_RuleBlacklist.sol.md index 68ef999..e1a6f8d 100644 --- a/doc/surya/surya_report/surya_report_RuleBlacklist.sol.md +++ b/doc/surya/surya_report/surya_report_RuleBlacklist.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/deployment/RuleBlacklist.sol | 8aed298894c40dd177b7b98e10b61d9e2ee7d9f7 | +| ./rules/validation/deployment/RuleBlacklist.sol | 4bf9ad173243b77e6bc78a9c870509454437fd48 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleBlacklistBase.sol.md b/doc/surya/surya_report/surya_report_RuleBlacklistBase.sol.md index 88cba88..1d34304 100644 --- a/doc/surya/surya_report/surya_report_RuleBlacklistBase.sol.md +++ b/doc/surya/surya_report/surya_report_RuleBlacklistBase.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/base/RuleBlacklistBase.sol | 7ed6f787688c2ce046e4762d00c4f3479d7b3b80 | +| ./rules/validation/abstract/base/RuleBlacklistBase.sol | ec66a18aa4908019e16c6d570202260524c44904 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleBlacklistInvariantStorage.sol.md b/doc/surya/surya_report/surya_report_RuleBlacklistInvariantStorage.sol.md index f280d23..961d7e2 100644 --- a/doc/surya/surya_report/surya_report_RuleBlacklistInvariantStorage.sol.md +++ b/doc/surya/surya_report/surya_report_RuleBlacklistInvariantStorage.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol | 64b452cdfbf764b87e9379f51fa3089b4b7d3543 | +| ./rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol | d3f1c084086821a5ec13825d4f8488c552947ac6 | ### Contracts Description Table @@ -15,7 +15,7 @@ |:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| | └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | |||||| -| **RuleBlacklistInvariantStorage** | Implementation | RuleCommonInvariantStorage ||| +| **RuleBlacklistInvariantStorage** | Implementation | RuleSharedInvariantStorage ||| ### Legend diff --git a/doc/surya/surya_report/surya_report_RuleBlacklistOwnable2Step.sol.md b/doc/surya/surya_report/surya_report_RuleBlacklistOwnable2Step.sol.md index 9d44947..e685d62 100644 --- a/doc/surya/surya_report/surya_report_RuleBlacklistOwnable2Step.sol.md +++ b/doc/surya/surya_report/surya_report_RuleBlacklistOwnable2Step.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/deployment/RuleBlacklistOwnable2Step.sol | 5f123378df5b9f27789b8a8c6513c4772d6e624a | +| ./rules/validation/deployment/RuleBlacklistOwnable2Step.sol | 52a9b745423b9706c4c88fc8aee35f4d5020c176 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleConditionalTransferLight.sol.md b/doc/surya/surya_report/surya_report_RuleConditionalTransferLight.sol.md index 0d09699..f613b8f 100644 --- a/doc/surya/surya_report/surya_report_RuleConditionalTransferLight.sol.md +++ b/doc/surya/surya_report/surya_report_RuleConditionalTransferLight.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/operation/RuleConditionalTransferLight.sol | e0162216172e500f983792bc25a3b76bae195279 | +| ./rules/operation/RuleConditionalTransferLight.sol | 81491b418d569b10e02f08058beea7080fb943f6 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleConditionalTransferLightBase.sol.md b/doc/surya/surya_report/surya_report_RuleConditionalTransferLightBase.sol.md index 157d6d7..075c449 100644 --- a/doc/surya/surya_report/surya_report_RuleConditionalTransferLightBase.sol.md +++ b/doc/surya/surya_report/surya_report_RuleConditionalTransferLightBase.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/operation/abstract/RuleConditionalTransferLightBase.sol | a5157a72d529a6270f365c36d9a6bb8f58fa17f8 | +| ./rules/operation/abstract/RuleConditionalTransferLightBase.sol | 649f37246378014573f7368fa573f21c4b15d679 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleConditionalTransferLightInvariantStorage.sol.md b/doc/surya/surya_report/surya_report_RuleConditionalTransferLightInvariantStorage.sol.md index 09dd6e1..93c5fa4 100644 --- a/doc/surya/surya_report/surya_report_RuleConditionalTransferLightInvariantStorage.sol.md +++ b/doc/surya/surya_report/surya_report_RuleConditionalTransferLightInvariantStorage.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol | 9c92d2e986e00f880b5d54e03f6fbad475aba90d | +| ./rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol | db973443a192d9342f2d19b9909e00744e488439 | ### Contracts Description Table @@ -15,7 +15,7 @@ |:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| | └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | |||||| -| **RuleConditionalTransferLightInvariantStorage** | Implementation | RuleCommonInvariantStorage ||| +| **RuleConditionalTransferLightInvariantStorage** | Implementation | RuleSharedInvariantStorage ||| ### Legend diff --git a/doc/surya/surya_report/surya_report_RuleConditionalTransferLightOwnable2Step.sol.md b/doc/surya/surya_report/surya_report_RuleConditionalTransferLightOwnable2Step.sol.md index ed0bf88..6bcd7c1 100644 --- a/doc/surya/surya_report/surya_report_RuleConditionalTransferLightOwnable2Step.sol.md +++ b/doc/surya/surya_report/surya_report_RuleConditionalTransferLightOwnable2Step.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/operation/RuleConditionalTransferLightOwnable2Step.sol | 1f1370e5855be0b612db99cf1b60fbbb0e0eb4f6 | +| ./rules/operation/RuleConditionalTransferLightOwnable2Step.sol | 8687e3c3162af3f4863d713cf56b5895a724dc97 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleERC2980Base.sol.md b/doc/surya/surya_report/surya_report_RuleERC2980Base.sol.md index a6849f1..b57d274 100644 --- a/doc/surya/surya_report/surya_report_RuleERC2980Base.sol.md +++ b/doc/surya/surya_report/surya_report_RuleERC2980Base.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/base/RuleERC2980Base.sol | a48f4f0ab9e21d1da777c6000ef780c527ae0110 | +| ./rules/validation/abstract/base/RuleERC2980Base.sol | d50ea84a4570130dffdd7940cd40004b6f6a2eb0 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleERC2980InvariantStorage.sol.md b/doc/surya/surya_report/surya_report_RuleERC2980InvariantStorage.sol.md index 78b6d6a..35100ff 100644 --- a/doc/surya/surya_report/surya_report_RuleERC2980InvariantStorage.sol.md +++ b/doc/surya/surya_report/surya_report_RuleERC2980InvariantStorage.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol | fade52ea9b2658ce1c5ddd11da5047a73c5539cd | +| ./rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol | e297f0edb2cf9641ee0277f1baef6b838a61729c | ### Contracts Description Table @@ -15,7 +15,7 @@ |:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| | └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | |||||| -| **RuleERC2980InvariantStorage** | Implementation | RuleCommonInvariantStorage ||| +| **RuleERC2980InvariantStorage** | Implementation | RuleSharedInvariantStorage ||| ### Legend diff --git a/doc/surya/surya_report/surya_report_RuleERC2980Ownable2Step.sol.md b/doc/surya/surya_report/surya_report_RuleERC2980Ownable2Step.sol.md index 4c878c8..1656cc1 100644 --- a/doc/surya/surya_report/surya_report_RuleERC2980Ownable2Step.sol.md +++ b/doc/surya/surya_report/surya_report_RuleERC2980Ownable2Step.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/deployment/RuleERC2980Ownable2Step.sol | 9aa2fe60b1c93ee6bbeee4f84642e0a7662bc6c5 | +| ./rules/validation/deployment/RuleERC2980Ownable2Step.sol | b8d79b607fd79c889394e5aa708b36bc27f66af0 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleIdentityRegistryBase.sol.md b/doc/surya/surya_report/surya_report_RuleIdentityRegistryBase.sol.md index 8080cc9..d23f64e 100644 --- a/doc/surya/surya_report/surya_report_RuleIdentityRegistryBase.sol.md +++ b/doc/surya/surya_report/surya_report_RuleIdentityRegistryBase.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/base/RuleIdentityRegistryBase.sol | 47a89ca38792869c7affc9267934137198be36df | +| ./rules/validation/abstract/base/RuleIdentityRegistryBase.sol | b45427318245e6f2c8a95e6703a841f5aa17b92e | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleIdentityRegistryInvariantStorage.sol.md b/doc/surya/surya_report/surya_report_RuleIdentityRegistryInvariantStorage.sol.md index ff4e702..3045ea6 100644 --- a/doc/surya/surya_report/surya_report_RuleIdentityRegistryInvariantStorage.sol.md +++ b/doc/surya/surya_report/surya_report_RuleIdentityRegistryInvariantStorage.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol | f48bd119a5ba7612d03d08faf053b20d5a3523b0 | +| ./rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol | 663984fafa1c5e4989ba9e16187cec3fec5bf9b4 | ### Contracts Description Table @@ -15,7 +15,7 @@ |:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| | └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | |||||| -| **RuleIdentityRegistryInvariantStorage** | Implementation | RuleCommonInvariantStorage ||| +| **RuleIdentityRegistryInvariantStorage** | Implementation | RuleSharedInvariantStorage ||| ### Legend diff --git a/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyBase.sol.md b/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyBase.sol.md index db09856..6782ba4 100644 --- a/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyBase.sol.md +++ b/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyBase.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol | 0a81c8c5a5216d01bd0432e472aee26135ddb180 | +| ./rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol | d053ae9f319f818704986cd5e551422376088f75 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyInvariantStorage.sol.md b/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyInvariantStorage.sol.md index e9718a0..c267fcf 100644 --- a/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyInvariantStorage.sol.md +++ b/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyInvariantStorage.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol | 472d1b814581d38e0e0e68c9f5496875253235df | +| ./rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol | 9c921b3736a3f7f28b6b0681c2cf995a55fa9cc6 | ### Contracts Description Table @@ -15,7 +15,7 @@ |:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| | └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | |||||| -| **RuleMaxTotalSupplyInvariantStorage** | Implementation | RuleCommonInvariantStorage ||| +| **RuleMaxTotalSupplyInvariantStorage** | Implementation | RuleSharedInvariantStorage ||| ### Legend diff --git a/doc/surya/surya_report/surya_report_RuleNFTAdapter.sol.md b/doc/surya/surya_report/surya_report_RuleNFTAdapter.sol.md index f66a528..08a6b2c 100644 --- a/doc/surya/surya_report/surya_report_RuleNFTAdapter.sol.md +++ b/doc/surya/surya_report/surya_report_RuleNFTAdapter.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/core/RuleNFTAdapter.sol | f30fee37868a3a64343d7ccb183c58df9fa485ba | +| ./rules/validation/abstract/core/RuleNFTAdapter.sol | 3c6af34113014eb17564b992ee6af4b0f973b89a | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleSanctionsList.sol.md b/doc/surya/surya_report/surya_report_RuleSanctionsList.sol.md index fd7c843..2fbdb7e 100644 --- a/doc/surya/surya_report/surya_report_RuleSanctionsList.sol.md +++ b/doc/surya/surya_report/surya_report_RuleSanctionsList.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/deployment/RuleSanctionsList.sol | 637091b2665ce493579a5a357e09814e56bdf864 | +| ./rules/validation/deployment/RuleSanctionsList.sol | 6d463c0d660ea2517d9aa0f678d0d38bb0634a1b | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleSanctionsListBase.sol.md b/doc/surya/surya_report/surya_report_RuleSanctionsListBase.sol.md index 9a517ad..cc2b1c7 100644 --- a/doc/surya/surya_report/surya_report_RuleSanctionsListBase.sol.md +++ b/doc/surya/surya_report/surya_report_RuleSanctionsListBase.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/base/RuleSanctionsListBase.sol | 4df9987f34a4451f42e019bd7016c6ba51d750b8 | +| ./rules/validation/abstract/base/RuleSanctionsListBase.sol | bdaa898898ea6ba654f2b627b3dd0161b3c39d39 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleSanctionsListInvariantStorage.sol.md b/doc/surya/surya_report/surya_report_RuleSanctionsListInvariantStorage.sol.md index 7870d81..bd47a88 100644 --- a/doc/surya/surya_report/surya_report_RuleSanctionsListInvariantStorage.sol.md +++ b/doc/surya/surya_report/surya_report_RuleSanctionsListInvariantStorage.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol | 898f1976a71788fd6aa39127e741988481f6082f | +| ./rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol | 0b799d5753392482f00fea8d5a885847747d6360 | ### Contracts Description Table @@ -15,7 +15,7 @@ |:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| | └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | |||||| -| **RuleSanctionsListInvariantStorage** | Implementation | RuleCommonInvariantStorage ||| +| **RuleSanctionsListInvariantStorage** | Implementation | RuleSharedInvariantStorage ||| ### Legend diff --git a/doc/surya/surya_report/surya_report_RuleSanctionsListOwnable2Step.sol.md b/doc/surya/surya_report/surya_report_RuleSanctionsListOwnable2Step.sol.md index bbdbf0e..f491457 100644 --- a/doc/surya/surya_report/surya_report_RuleSanctionsListOwnable2Step.sol.md +++ b/doc/surya/surya_report/surya_report_RuleSanctionsListOwnable2Step.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/deployment/RuleSanctionsListOwnable2Step.sol | 83e1b5b8af6650b2ce7274b87b0ff92f99157e86 | +| ./rules/validation/deployment/RuleSanctionsListOwnable2Step.sol | ab32806c8989f946fb487bb3db318b49c5c265d4 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleSanctionsListOwnable2StepHarness.sol.md b/doc/surya/surya_report/surya_report_RuleSanctionsListOwnable2StepHarness.sol.md new file mode 100644 index 0000000..1da0028 --- /dev/null +++ b/doc/surya/surya_report/surya_report_RuleSanctionsListOwnable2StepHarness.sol.md @@ -0,0 +1,30 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./mocks/harness/RuleSanctionsListOwnable2StepHarness.sol | 44292571fdcfc1cd2bcaa78849bd355b11c0b391 | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **RuleSanctionsListOwnable2StepHarness** | Implementation | RuleSanctionsListOwnable2Step ||| +| └ | | Public ❗️ | 🛑 | RuleSanctionsListOwnable2Step | +| └ | exposedMsgSender | External ❗️ | |NO❗️ | +| └ | exposedMsgData | External ❗️ | |NO❗️ | +| └ | exposedContextSuffixLength | External ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_RuleSharedInvariantStorage.sol.md b/doc/surya/surya_report/surya_report_RuleSharedInvariantStorage.sol.md new file mode 100644 index 0000000..e446e6c --- /dev/null +++ b/doc/surya/surya_report/surya_report_RuleSharedInvariantStorage.sol.md @@ -0,0 +1,26 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./rules/validation/abstract/invariant/RuleSharedInvariantStorage.sol | c64ab28b9789c1339609af1fde0cfd314976645d | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **RuleSharedInvariantStorage** | Implementation | ||| + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_RuleSpenderWhitelist.sol.md b/doc/surya/surya_report/surya_report_RuleSpenderWhitelist.sol.md new file mode 100644 index 0000000..057a7f0 --- /dev/null +++ b/doc/surya/surya_report/surya_report_RuleSpenderWhitelist.sol.md @@ -0,0 +1,33 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./rules/validation/deployment/RuleSpenderWhitelist.sol | a0be674edf4d466f3359f0d8b9cf5e928356d27b | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **RuleSpenderWhitelist** | Implementation | RuleSpenderWhitelistBase, AccessControlModuleStandalone ||| +| └ | | Public ❗️ | 🛑 | RuleSpenderWhitelistBase AccessControlModuleStandalone | +| └ | supportsInterface | Public ❗️ | |NO❗️ | +| └ | _authorizeAddressListAdd | Internal 🔒 | | onlyRole | +| └ | _authorizeAddressListRemove | Internal 🔒 | | onlyRole | +| └ | _msgSender | Internal 🔒 | | | +| └ | _msgData | Internal 🔒 | | | +| └ | _contextSuffixLength | Internal 🔒 | | | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_RuleSpenderWhitelistBase.sol.md b/doc/surya/surya_report/surya_report_RuleSpenderWhitelistBase.sol.md new file mode 100644 index 0000000..692fb0b --- /dev/null +++ b/doc/surya/surya_report/surya_report_RuleSpenderWhitelistBase.sol.md @@ -0,0 +1,35 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./rules/validation/abstract/base/RuleSpenderWhitelistBase.sol | 5c98b6381ca5afb108537c1e8691793f622098ee | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **RuleSpenderWhitelistBase** | Implementation | RuleAddressSet, RuleNFTAdapter, RuleSpenderWhitelistInvariantStorage ||| +| └ | | Public ❗️ | 🛑 | RuleAddressSet | +| └ | _detectTransferRestriction | Internal 🔒 | | | +| └ | _detectTransferRestrictionFrom | Internal 🔒 | | | +| └ | canReturnTransferRestrictionCode | External ❗️ | |NO❗️ | +| └ | messageForTransferRestriction | Public ❗️ | |NO❗️ | +| └ | transferred | Public ❗️ | |NO❗️ | +| └ | transferred | Public ❗️ | |NO❗️ | +| └ | _transferred | Internal 🔒 | | | +| └ | _transferredFrom | Internal 🔒 | | | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_RuleSpenderWhitelistHarnesses.sol.md b/doc/surya/surya_report/surya_report_RuleSpenderWhitelistHarnesses.sol.md new file mode 100644 index 0000000..7a787a4 --- /dev/null +++ b/doc/surya/surya_report/surya_report_RuleSpenderWhitelistHarnesses.sol.md @@ -0,0 +1,36 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./mocks/harness/RuleSpenderWhitelistHarnesses.sol | 0ffebe781ed82e1a573c0b78dad7051f9c10cd69 | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **RuleSpenderWhitelistHarness** | Implementation | RuleSpenderWhitelist ||| +| └ | | Public ❗️ | 🛑 | RuleSpenderWhitelist | +| └ | exposedMsgSender | External ❗️ | |NO❗️ | +| └ | exposedMsgData | External ❗️ | |NO❗️ | +| └ | exposedContextSuffixLength | External ❗️ | |NO❗️ | +|||||| +| **RuleSpenderWhitelistOwnable2StepHarness** | Implementation | RuleSpenderWhitelistOwnable2Step ||| +| └ | | Public ❗️ | 🛑 | RuleSpenderWhitelistOwnable2Step | +| └ | exposedMsgSender | External ❗️ | |NO❗️ | +| └ | exposedMsgData | External ❗️ | |NO❗️ | +| └ | exposedContextSuffixLength | External ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_RuleSpenderWhitelistInvariantStorage.sol.md b/doc/surya/surya_report/surya_report_RuleSpenderWhitelistInvariantStorage.sol.md new file mode 100644 index 0000000..baf1ff2 --- /dev/null +++ b/doc/surya/surya_report/surya_report_RuleSpenderWhitelistInvariantStorage.sol.md @@ -0,0 +1,26 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol | 94c54ff0f3e4162cb50e082ea6a23df02cf0ddb5 | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **RuleSpenderWhitelistInvariantStorage** | Implementation | RuleSharedInvariantStorage ||| + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_RuleSpenderWhitelistOwnable2Step.sol.md b/doc/surya/surya_report/surya_report_RuleSpenderWhitelistOwnable2Step.sol.md new file mode 100644 index 0000000..a0f1499 --- /dev/null +++ b/doc/surya/surya_report/surya_report_RuleSpenderWhitelistOwnable2Step.sol.md @@ -0,0 +1,32 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol | ab6f45280b6ae2420fae79d04ee7092a6e22d2e6 | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **RuleSpenderWhitelistOwnable2Step** | Implementation | RuleSpenderWhitelistBase, Ownable2Step ||| +| └ | | Public ❗️ | 🛑 | RuleSpenderWhitelistBase Ownable | +| └ | _authorizeAddressListAdd | Internal 🔒 | | onlyOwner | +| └ | _authorizeAddressListRemove | Internal 🔒 | | onlyOwner | +| └ | _msgSender | Internal 🔒 | | | +| └ | _msgData | Internal 🔒 | | | +| └ | _contextSuffixLength | Internal 🔒 | | | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_RuleTransferValidation.sol.md b/doc/surya/surya_report/surya_report_RuleTransferValidation.sol.md index da0948b..39097a2 100644 --- a/doc/surya/surya_report/surya_report_RuleTransferValidation.sol.md +++ b/doc/surya/surya_report/surya_report_RuleTransferValidation.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/core/RuleTransferValidation.sol | df3a84d6c6a529f41063006f27b0ff52239d26d6 | +| ./rules/validation/abstract/core/RuleTransferValidation.sol | 60cacb209f7dd69907e0319ecd359140eeb3a204 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleWhitelist.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelist.sol.md index 47f1f48..1d32e17 100644 --- a/doc/surya/surya_report/surya_report_RuleWhitelist.sol.md +++ b/doc/surya/surya_report/surya_report_RuleWhitelist.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/deployment/RuleWhitelist.sol | 756120de4d3681f98814733f4cb4c49d2671571a | +| ./rules/validation/deployment/RuleWhitelist.sol | 51776b16b0583a57947a6fb2e1f4f5862bf491d0 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistBase.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelistBase.sol.md index a5e5446..7caef73 100644 --- a/doc/surya/surya_report/surya_report_RuleWhitelistBase.sol.md +++ b/doc/surya/surya_report/surya_report_RuleWhitelistBase.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/base/RuleWhitelistBase.sol | 143951e9f858d05f9ad5d1c1e39879043dd82563 | +| ./rules/validation/abstract/base/RuleWhitelistBase.sol | c294dd72e48d0a71699d3b54c560e1e5c23d52da | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistInvariantStorage.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelistInvariantStorage.sol.md index 5ec38ef..f96edac 100644 --- a/doc/surya/surya_report/surya_report_RuleWhitelistInvariantStorage.sol.md +++ b/doc/surya/surya_report/surya_report_RuleWhitelistInvariantStorage.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol | 47459cd64d53f9b0596944655f6950b5b6fc3833 | +| ./rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol | 3f3d8473cd932de92f68cbbee4ce822d622719a3 | ### Contracts Description Table @@ -15,7 +15,7 @@ |:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| | └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | |||||| -| **RuleWhitelistInvariantStorage** | Implementation | RuleCommonInvariantStorage ||| +| **RuleWhitelistInvariantStorage** | Implementation | RuleSharedInvariantStorage ||| ### Legend diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistShared.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelistShared.sol.md index 649e63c..f0fc863 100644 --- a/doc/surya/surya_report/surya_report_RuleWhitelistShared.sol.md +++ b/doc/surya/surya_report/surya_report_RuleWhitelistShared.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/core/RuleWhitelistShared.sol | 068fbec610ae8b20c344210f9fcb6d52c5a7f088 | +| ./rules/validation/abstract/core/RuleWhitelistShared.sol | 32ad86781e49207c99a45a2866f1bd76fff3c1f0 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistWrapper.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelistWrapper.sol.md index c535b69..1fa327b 100644 --- a/doc/surya/surya_report/surya_report_RuleWhitelistWrapper.sol.md +++ b/doc/surya/surya_report/surya_report_RuleWhitelistWrapper.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/deployment/RuleWhitelistWrapper.sol | 26f6fc8fe45b000d217b180687bf19434356cb51 | +| ./rules/validation/deployment/RuleWhitelistWrapper.sol | b3a545c03fcd77815fe7ed2675827303ecc734d3 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistWrapperBase.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelistWrapperBase.sol.md index 0c76e98..a704d91 100644 --- a/doc/surya/surya_report/surya_report_RuleWhitelistWrapperBase.sol.md +++ b/doc/surya/surya_report/surya_report_RuleWhitelistWrapperBase.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/base/RuleWhitelistWrapperBase.sol | 97ce428d5969d44b79f0432f741c2fd188190cec | +| ./rules/validation/abstract/base/RuleWhitelistWrapperBase.sol | b7d69ae4c5ff3d95b75a3c86e104a1deaf1fb834 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistWrapperHarnessInternal.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelistWrapperHarnessInternal.sol.md new file mode 100644 index 0000000..bb09dc6 --- /dev/null +++ b/doc/surya/surya_report/surya_report_RuleWhitelistWrapperHarnessInternal.sol.md @@ -0,0 +1,28 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./mocks/harness/RuleWhitelistWrapperHarnessInternal.sol | 9b23d0a69ee6fd159072911d447c37fe54e42610 | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **RuleWhitelistWrapperHarnessInternal** | Implementation | RuleWhitelistWrapper ||| +| └ | | Public ❗️ | 🛑 | RuleWhitelistWrapper | +| └ | exposedTransferredSpenderInternal | External ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistWrapperOwnable2Step.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelistWrapperOwnable2Step.sol.md index 3efef57..c4d00e7 100644 --- a/doc/surya/surya_report/surya_report_RuleWhitelistWrapperOwnable2Step.sol.md +++ b/doc/surya/surya_report/surya_report_RuleWhitelistWrapperOwnable2Step.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol | 4a0c970391c25af7e865ff070db90e93590e1862 | +| ./rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol | ddd7eb760481cd54f2fad6b3665c93e460ba61e6 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_SanctionListOracle.sol.md b/doc/surya/surya_report/surya_report_SanctionListOracle.sol.md new file mode 100644 index 0000000..a167801 --- /dev/null +++ b/doc/surya/surya_report/surya_report_SanctionListOracle.sol.md @@ -0,0 +1,29 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./mocks/SanctionListOracle.sol | c3ba0148abb353bd935ec7c914c7e3c28e245a2f | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **SanctionListOracle** | Implementation | ISanctionsList ||| +| └ | addToSanctionsList | Public ❗️ | 🛑 |NO❗️ | +| └ | removeFromSanctionsList | Public ❗️ | 🛑 |NO❗️ | +| └ | isSanctioned | Public ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_TotalSupplyMock.sol.md b/doc/surya/surya_report/surya_report_TotalSupplyMock.sol.md new file mode 100644 index 0000000..678f202 --- /dev/null +++ b/doc/surya/surya_report/surya_report_TotalSupplyMock.sol.md @@ -0,0 +1,28 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./mocks/TotalSupplyMock.sol | 200ea8b14c36b646b38d1487be97223685750a0f | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **TotalSupplyMock** | Implementation | ||| +| └ | totalSupply | External ❗️ | |NO❗️ | +| └ | setTotalSupply | External ❗️ | 🛑 |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol b/src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol index 6c9cf92..83639b2 100644 --- a/src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol +++ b/src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol @@ -13,7 +13,6 @@ abstract contract RuleConditionalTransferLightInvariantStorage is RuleSharedInva uint8 public constant CODE_TRANSFER_REQUEST_NOT_APPROVED = 46; /* ============ Custom error ============ */ - error RuleConditionalTransferLight_AdminAddressZeroNotAllowed(); error RuleConditionalTransferLight_TransferExecutorUnauthorized(address account); error RuleConditionalTransferLight_TokenAddressZeroNotAllowed(); error RuleConditionalTransferLight_InsufficientAllowance(

Ts4jl?Wp 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 diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleIdentityRegistryInvariantStorage.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleIdentityRegistryInvariantStorage.sol.png index 273070e95ad813da2198eac310e92bf08e459c02..b43c3699fc88c0087fea674076de177fb1c3803b 100644 GIT binary patch literal 15698 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 diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleMaxTotalSupplyInvariantStorage.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleMaxTotalSupplyInvariantStorage.sol.png index 6d7a992224378a1193539b01a4e63bb3f48d6012..73534b51d73e5b1b643f942396c1634f75949d45 100644 GIT binary patch literal 16113 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 Ju4H=ie*s8lEkghR literal 16185 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 G|NjP+JCHg6 literal 0 HcmV?d00001 diff --git a/doc/surya/surya_graph/surya_graph_MockERC20WithTransferContext.sol.png b/doc/surya/surya_graph/surya_graph_MockERC20WithTransferContext.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..7ae1874934b1ccbdbeaff37cb42803282e0cd5e7 GIT binary patch literal 169153 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�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 eQ!YG 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 Zw3kNrnu#dPl#NRpf+t0+MP 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

Current view:top level - /home/ryan/Pictures/dev/Rules/src/rules/operationtop level - ../../../src/rules/operation Hit0 / 0
/home/ryan/Pictures/dev/Rules/src/rules/operation../../../src/rules/operation
100.0%
2 / 2
/home/ryan/Pictures/dev/Rules/src/modules../../../src/modules
100.0%
14 / 14
/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract../../../src/rules/operation/abstract
100.0%
Branches Sort by branch coverage
/home/ryan/Pictures/dev/Rules/src/modules../../../src/modules
100.0%
4 / 4
/home/ryan/Pictures/dev/Rules/src/rules/operation../../../src/rules/operation
100.0%
8 / 8
/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract../../../src/rules/operation/abstract
100.0%
Branches Sort by branch coverage
/home/ryan/Pictures/dev/Rules/src/modules../../../src/modules
100.0%
4 / 4
/home/ryan/Pictures/dev/Rules/src/rules/operation../../../src/rules/operation
100.0%
8 / 8
/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract../../../src/rules/operation/abstract
100.0%
Branches Sort by branch coverage
/home/ryan/Pictures/dev/Rules/src/modules../../../src/modules
100.0%
4 / 4
/home/ryan/Pictures/dev/Rules/src/rules/operation../../../src/rules/operation
100.0%
2 / 2
/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract../../../src/rules/operation/abstract
100.0%