interface ViewStorageAccessible {
    /**
     * @dev Same as `simulateDelegatecall` on StorageAccessible. Marked as view so that it can be called from external contracts
     * that want to run simulations from within view functions. Will revert if the invoked simulation attempts to change state.
     */
    function simulateDelegatecall(
        address targetContract,
        bytes memory calldataPayload
    ) external view returns (bytes memory);

    /**
     * @dev Same as `getStorageAt` on StorageAccessible. This method allows reading aribtrary ranges of storage.
     */
    function getStorageAt(uint256 offset, uint256 length)
        external
        view
        returns (bytes memory);
}
/// @title ViewStorageAccessible - Interface on top of StorageAccessible base class to allow simulations from view functions
function getStorageAt(uint256 offset, uint256 length)
    external
    view
    returns (bytes memory);

/**
 * @dev Same as `getStorageAt` on StorageAccessible. This method allows reading aribtrary ranges of storage.
 */