`sig
type substring = string * int * int
and t = Cf_message.substring list
val normalize : Cf_message.t -> Cf_message.t
val create : string -> Cf_message.t
val length : Cf_message.t -> int
val contents : Cf_message.t -> string
val copy : Cf_message.t -> Cf_message.t
val flatten : Cf_message.t -> Cf_message.t
val split : pos:int -> Cf_message.t -> Cf_message.t * Cf_message.t
val truncate : pos:int -> Cf_message.t -> Cf_message.t
val shift : pos:int -> Cf_message.t -> Cf_message.t
val insert : pos:int -> m:Cf_message.t -> Cf_message.t -> Cf_message.t
val push :
Cf_message.t ->
Cf_message.substring Cf_deque.t -> Cf_message.substring Cf_deque.t
val pop :
len:int ->
Cf_message.substring Cf_deque.t ->
Cf_message.t * Cf_message.substring Cf_deque.t
val shiftq :
len:int ->
Cf_message.substring Cf_deque.t -> Cf_message.substring Cf_deque.t
val drain : Cf_message.substring Cf_deque.t -> Cf_message.t
val drain_seq : ?x:exn -> Cf_message.substring Cf_deque.t -> char Cf_seq.t
val to_seq : ?x:exn -> Cf_message.t -> char Cf_seq.t
val to_function : ?x:exn -> Cf_message.t -> unit -> char
val unsafe_push :
Cf_message.t ->
Cf_message.substring Cf_deque.t -> Cf_message.substring Cf_deque.t
val unsafe_shift1 : Cf_message.t -> Cf_message.t
val unsafe_to_seq : ?x:exn -> Cf_message.t -> char Cf_seq.t
val unsafe_to_function : ?x:exn -> Cf_message.t -> unit -> char
end`