sig
  type keyspec = Short | Long1 | Long2
  type parsetype = Gnu | Caml
  val set : '-> bool
  val clear : '-> bool
  val store : '-> '-> 'a
  type 'a option_parameters = {
    default : 'a;
    specs :
      (string * string list * string * string option * 'Parseopt.action)
      list;
    to_string : '-> string;
    keyspecs : Parseopt.keyspec list;
    usage_prefix : string;
    usage_suffix : string;
    parsetype : Parseopt.parsetype;
    is_option : string -> bool;
    dashdash : bool;
    helpkeys : string list;
    helpfieldwidths : int * int * int;
    keepgoing : bool;
  }
  and 'a action_parameters = {
    options : 'a;
    args : string list;
    option_parameters : 'Parseopt.option_parameters;
  }
  and 'a action =
      Action of ('Parseopt.action_parameters -> 'a)
    | Conversion of ('Parseopt.action_parameters -> string -> 'a)
    | Handler of ('Parseopt.action_parameters -> 'a * string list)
  val set' : ('-> 'a) -> 'Parseopt.action_parameters -> 'a * string list
  val conversion' :
    ('-> string -> 'a) -> 'Parseopt.action_parameters -> 'a * string list
  val option_defaults : unit Parseopt.option_parameters
  exception MissingArgument of string
  exception UnknownOption of string
  exception ConversionFailure of string * string * string
  val help : 'Parseopt.option_parameters -> unit
  val usage : 'Parseopt.option_parameters -> unit
  val parse :
    'Parseopt.option_parameters -> string list -> 'a * string list
  val parse_argv : 'Parseopt.option_parameters -> 'a * string list
end