// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol"; import "../../acl/direct/IACL.sol"; import "./ITaxTermsRegistry.sol"; abstract contract TaxTermsRegistryStorage { /** * @dev ACL contract. */ IACL internal _aclContract; /** * @dev Universe ID -> Tax Strategy ID -> Universe local tax terms */ mapping(uint256 => mapping(bytes4 => ITaxTermsRegistry.TaxTerms)) internal _universeLocalTaxTerms; /** * @dev Universe ID -> Warper Address -> Tax Strategy ID -> Universe warper tax terms */ mapping(uint256 => mapping(address => mapping(bytes4 => ITaxTermsRegistry.TaxTerms))) internal _universeWarperTaxTerms; /** * @dev Tax Strategy ID -> Protocol global tax terms */ mapping(bytes4 => ITaxTermsRegistry.TaxTerms) internal _protocolGlobalTaxTerms; /** * @dev Universe ID -> Tax Strategy ID -> Protocol universe tax terms */ mapping(uint256 => mapping(bytes4 => ITaxTermsRegistry.TaxTerms)) internal _protocolUniverseTaxTerms; /** * @dev Warper address -> Tax Strategy ID -> Protocol warper tax terms */ mapping(address => mapping(bytes4 => ITaxTermsRegistry.TaxTerms)) internal _protocolWarperTaxTerms; }