module Protocol_version = struct
  (* TODO *)
  (* libtool version format *)
  let current = 0
  let revision = 0
  let age = 0
  let v = Fmt.str "%d:%d:%d"
end

(* -- Ptime -- *)

let ptime_to_int64_us p = Int64.of_float (1_000_000. *. Ptime.to_float_s p)

let ptime_of_span_exn span =
  match Ptime.of_span span with
  | None -> Fmt.failwith "Ptime.of_span: not in the range [min;max]"
  | Some p -> p

let ptime_add_span_exn p span =
  match Ptime.add_span p span with
  | None -> Fmt.failwith "Ptime.add_span: not in the range [min;max]"
  | Some v -> v

(* -- *** -- *)

(* TODO bin
   - no [Bin.of_string] ? *)
let bin_of_string bin s =
  let v = Bin.decode bin s (ref 0) in
  Ok v
