// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.13; import "@equilibria/root/number/types/PackedFixed18.sol"; import "./Accumulator.sol"; /// @dev PackedAccumulator type struct PackedAccumulator { /// @dev maker accumulator per share PackedFixed18 maker; /// @dev taker accumulator per share PackedFixed18 taker; } using PackedAccumulatorLib for PackedAccumulator global; /** * @title PackedAccumulatorLib * @dev A packed version of the Accumulator which takes up a single storage slot using `PackedFixed18` values. * @notice Library for the packed Accumulator type. */ library PackedAccumulatorLib { /** * @notice Creates an accumulator from a packed accumulator * @param self packed accumulator * @return New accumulator */ function unpack(PackedAccumulator memory self) internal pure returns (Accumulator memory) { return Accumulator({maker: self.maker.unpack(), taker: self.taker.unpack()}); } }