// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.11; // ============ External Imports ============ import "@openzeppelin/contracts/utils/structs/EnumerableMap.sol"; // extends EnumerableMap with uint256 => bytes32 type // modelled after https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.0/contracts/utils/structs/EnumerableMap.sol library EnumerableMapExtended { using EnumerableMap for EnumerableMap.Bytes32ToBytes32Map; struct UintToBytes32Map { EnumerableMap.Bytes32ToBytes32Map _inner; } // ============ Library Functions ============ function keys(UintToBytes32Map storage map) internal view returns (bytes32[] storage) { return map._inner._keys._inner._values; } function set( UintToBytes32Map storage map, uint256 key, bytes32 value ) internal { map._inner.set(bytes32(key), value); } function get(UintToBytes32Map storage map, uint256 key) internal view returns (bytes32) { return map._inner.get(bytes32(key)); } function remove(UintToBytes32Map storage map, uint256 key) internal returns (bool) { return map._inner.remove(bytes32(key)); } function contains(UintToBytes32Map storage map, uint256 key) internal view returns (bool) { return map._inner.contains(bytes32(key)); } function length(UintToBytes32Map storage map) internal view returns (uint256) { return map._inner.length(); } function at(UintToBytes32Map storage map, uint256 index) internal view returns (uint256, bytes32) { (bytes32 key, bytes32 value) = map._inner.at(index); return (uint256(key), value); } }