sig
  type response_category = Response_t.response_category
  type json = Yojson.Basic.json
  type response =
    Response_t.response = {
    abstract : string;
    abstract_text : string;
    abstract_source : string;
    abstract_url : string;
    image : string;
    heading : string;
    answer : string;
    answer_type : string;
    definition : string;
    definition_source : string;
    definition_url : string;
    related_topics : Response_j.json list;
    results : Response_j.json list;
    typ : Response_j.response_category;
    redirect : string;
  }
  type icon =
    Response_t.icon = {
    url : string;
    height : Response_j.json;
    width : Response_j.json;
  }
  val write_response_category :
    Bi_outbuf.t -> Response_j.response_category -> unit
  val string_of_response_category :
    ?len:int -> Response_j.response_category -> string
  val read_response_category :
    Yojson.Safe.lexer_state -> Lexing.lexbuf -> Response_j.response_category
  val response_category_of_string : string -> Response_j.response_category
  val write_json : Bi_outbuf.t -> Response_j.json -> unit
  val string_of_json : ?len:int -> Response_j.json -> string
  val read_json : Yojson.Safe.lexer_state -> Lexing.lexbuf -> Response_j.json
  val json_of_string : string -> Response_j.json
  val write_response : Bi_outbuf.t -> Response_j.response -> unit
  val string_of_response : ?len:int -> Response_j.response -> string
  val read_response :
    Yojson.Safe.lexer_state -> Lexing.lexbuf -> Response_j.response
  val response_of_string : string -> Response_j.response
  val write_icon : Bi_outbuf.t -> Response_j.icon -> unit
  val string_of_icon : ?len:int -> Response_j.icon -> string
  val read_icon : Yojson.Safe.lexer_state -> Lexing.lexbuf -> Response_j.icon
  val icon_of_string : string -> Response_j.icon
end