// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import {ERC4907AUpgradeable} from './ERC4907AUpgradeable.sol'; library ERC4907AStorage { struct Layout { // Mapping from token ID to user info. // // Bits Layout: // - [0..159] `user` // - [160..223] `expires` mapping(uint256 => uint256) _packedUserInfo; } bytes32 internal constant STORAGE_SLOT = keccak256('ERC721A.contracts.storage.ERC4907A'); function layout() internal pure returns (Layout storage l) { bytes32 slot = STORAGE_SLOT; assembly { l.slot := slot } } }