This file is automatically generated by a target in the build system. Do not modify it by hand.

`type (-'hierarchy, -'rw) t````constraint 'rw = [> Core.read ]`
`type ('hierarchy, 'rw) message``= ('hierarchy, 'rw) t```
`val sexp_of_t : _ ‑> _ ‑> (_, _) t ‑> Core.Sexp.t`
`type ('hierarchy, 'rw) t_no_exn``= ('hierarchy, 'rw) t```
`val sexp_of_t_no_exn : _ ‑> _ ‑> (_, _) t_no_exn ‑> Core.Sexp.t`
`val to_iobuf : (_, 'rw) t ‑> ('rw, Core.Iobuf.no_seek) Core.Iobuf.t`
`module R : sig ... end`
`module Message_type_and_errors : sig ... end`
`val get_message_type : ([> Core.read ], _) Core.Iobuf.t ‑> Message_type_and_errors.packed`
`val of_iobuf : ('rw, _) Core.Iobuf.t ‑> trusted:'ty Message_type_and_errors.t ‑> ('ty, 'rw) t`

`of_iobuf` must be fed a message type that comes from a call to `get_message_type` on the same window, otherwise it may cause segfaults or nonsensical reads.

`val of_iobuf_exn : ('rw, _) Core.Iobuf.t ‑> 'ty Message_type_and_errors.t ‑> ('ty, 'rw) t`
`module New_single : sig ... end`
`module New_group : sig ... end`
`module New_group_point : sig ... end`
`module End_of_header : sig ... end`
`module Epoch : sig ... end`
`module Unpacked : sig ... end`
`val num_bytes_needed_for_message_length : int`
`val num_bytes_in_message : ([> Core.read ], _) Core.Iobuf.t ‑> int`

Assuming the iobuf starts at a message, returns its length or raise if the window doesn't contain `num_bytes_needed_for_message_length` bytes.

`val skip_message : ([> Core.read ], Core.Iobuf.seek) Core.Iobuf.t ‑> unit`

Equivalent to `Iobuf.advance buf (num_bytes_in_message buf)`

`val buffer_contains_full_message : ([> Core.read ], _) Core.Iobuf.t ‑> bool`
`val of_unpacked : Unpacked.t ‑> (_, _) Core.Iobuf.t`
`val to_unpacked : ([> Core.read ], _) Core.Iobuf.t ‑> Unpacked.t R.t`
`val to_unpacked_exn : ([> Core.read ], _) Core.Iobuf.t ‑> Unpacked.t`