// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import "@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol"; import "../../acl/direct/IACL.sol"; import "../universe-token/IUniverseToken.sol"; /** * @title Universe Registry storage contract. */ abstract contract UniverseRegistryStorage { /** * @dev Universe parameters structure. * @param name Name of the universe. * @param paymentTokens Array of universe payment tokens. * @param paymentTokensRegistry Mapping from address of payment token to its enablement status. */ struct Universe { string name; EnumerableSetUpgradeable.AddressSet paymentTokens; mapping(address => bool) paymentTokensRegistry; } /** * @dev ACL contract address. */ IACL internal _aclContract; /** * @dev Universe token address. */ IUniverseToken internal _universeToken; /** * @dev Universe token base URI. */ string internal _baseURI; /** * @dev Mapping from token ID to the Universe structure. */ mapping(uint256 => Universe) internal _universes; }