// 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 "./IListingTermsRegistry.sol"; /** * @title Listing Terms Registry Storage storage contract. */ abstract contract ListingTermsRegistryStorage { /** * @dev ACL contract address. */ IACL internal _aclContract; /** * @dev Listing ID -> Global listing terms */ mapping(uint256 => EnumerableSetUpgradeable.UintSet) internal _globalListingTerms; /** * @dev Listing ID -> Universe ID -> Universe listing terms */ mapping(uint256 => mapping(uint256 => EnumerableSetUpgradeable.UintSet)) internal _universeListingTerms; /** * @dev Listing ID -> Warper address -> Warper listing terms */ mapping(uint256 => mapping(address => EnumerableSetUpgradeable.UintSet)) internal _warperListingTerms; /** * @dev Counter of Listing Terms IDs. */ CountersUpgradeable.Counter internal _listingTermsIdTracker; /** * @dev Mapping from Listing Terms ID to Listing Terms data. */ mapping(uint256 => IListingTermsRegistry.ListingTerms) internal _listingTerms; /** * @dev Mapping from Listing Terms ID to its Listing Terms Params. */ mapping(uint256 => IListingTermsRegistry.Params) internal _listingTermsParams; }