sig
  type domain_cons =
      WPDMatcher of string
    | WSLBD of Protein.Abstract.SLBD.initstate
    | WLID of Protein.Abstract.LID.lidfunc * int
    | WBMD of int
    | WLBDR of int * Protein.Abstract.LBDR.initstate *
        Protein.Abstract.LBDR.extremity_arrangement *
        ((int array * int array) * (int array * int array))
    | WLBDE of int * Protein.Abstract.LBDE.initstate *
        Protein.Abstract.LBDE.extraction
  and domain_config = string * Protein.Wizard.domain_cons
  and ifident =
      WRepress
    | WRepress1
    | WRepress2
    | WMatcher
    | WMatcherMult of int
    | WBound
    | WBound1
    | WBound2
    | WPermuteIn
    | WPermuteOut
    | WInput
    | WOutput
    | WInputMult of int
    | WOutputMult of int
  and conn_link =
    (string * Protein.Wizard.ifident) * (string * Protein.Wizard.ifident)
  and conn_value =
      WIBool of bool
    | WIInt of int
    | WIString of string
    | WIMatcher of string
  and connection_config =
    Protein.Wizard.conn_link * Protein.Wizard.conn_value
  and config = {
    domains : Protein.Wizard.domain_config list;
    connections : Protein.Wizard.connection_config list;
  } 
  val make : Protein.Wizard.config -> Protein.Abstract.t
end