sig
  module type Job =
    sig
      type job
      type result
      val add_result :
        string ->
        Parry_common.Job.result ->
        Parry_common.Job.job -> Parry_common.Job.result
      val depth : Parry_common.Job.job -> int
      val signature_size : int
      val timeout : float
      val ping : float
      val html_result : Buffer.t -> Parry_common.Job.result -> unit
      val html_job : Buffer.t -> Parry_common.Job.job -> unit
    end
  type 'j server_message = Finished | Die | Job of bool * '| Ack
  type ('r, 'j) client_message =
      GetJob of int
    | NewJobs of int * 'j * 'j * 'j list * 'r list
    | JobDone of int * 'j * 'r list
    | Alive of int
  val print_server : 'Parry_common.server_message -> string
  val print_client : ('a, 'b) Parry_common.client_message -> string
  val blank_key : Cryptokit.RSA.key
  val sha : Cryptokit.hash
end