sig
  val yaml_get_version_string : unit -> string
  val yaml_get_version : unit -> int * int * int
  type yaml_version_directive = int * int
  type yaml_tag_directive = string * string
  type yaml_encoding =
      YAML_ANY_ENCODING
    | YAML_UTF8_ENCODING
    | YAML_UTF16LE_ENCODING
    | YAML_UTF16BE_ENCODING
  type yaml_break =
      YAML_ANY_BREAK
    | YAML_CR_BREAK
    | YAML_LN_BREAK
    | YAML_CRLN_BREAK
  type yaml_error_type =
      YAML_NO_ERROR
    | YAML_MEMORY_ERROR
    | YAML_READER_ERROR
    | YAML_SCANNER_ERROR
    | YAML_PARSER_ERROR
    | YAML_COMPOSER_ERROR
    | YAML_WRITER_ERROR
    | YAML_EMITTER_ERROR
  exception YamlError of Yaml.yaml_error_type * string
  type yaml_mark = int * int * int
  type yaml_scalar_style =
      YAML_ANY_SCALAR_STYLE
    | YAML_PLAIN_SCALAR_STYLE
    | YAML_SINGLE_QUOTED_SCALAR_STYLE
    | YAML_DOUBLE_QUOTED_SCALAR_STYLE
    | YAML_LITERAL_SCALAR_STYLE
    | YAML_FOLDED_SCALAR_STYLE
  type yaml_sequence_style =
      YAML_ANY_SEQUENCE_STYLE
    | YAML_BLOCK_SEQUENCE_STYLE
    | YAML_FLOW_SEQUENCE_STYLE
  type yaml_mapping_style =
      YAML_ANY_MAPPING_STYLE
    | YAML_BLOCK_MAPPING_STYLE
    | YAML_FLOW_MAPPING_STYLE
  type yaml_event =
      YAML_NO_EVENT
    | YAML_STREAM_START_EVENT of Yaml.yaml_encoding
    | YAML_STREAM_END_EVENT
    | YAML_DOCUMENT_START_EVENT of Yaml.yaml_version_directive option *
        Yaml.yaml_tag_directive list * bool
    | YAML_DOCUMENT_END_EVENT of bool
    | YAML_ALIAS_EVENT of string
    | YAML_SCALAR_EVENT of string * string * string * bool * bool *
        Yaml.yaml_scalar_style
    | YAML_SEQUENCE_START_EVENT of string * string * bool *
        Yaml.yaml_sequence_style
    | YAML_SEQUENCE_END_EVENT
    | YAML_MAPPING_START_EVENT of string * string * bool *
        Yaml.yaml_mapping_style
    | YAML_MAPPING_END_EVENT
  type yaml_event_with_mark =
      Yaml.yaml_event * Yaml.yaml_mark * Yaml.yaml_mark
  val yaml_null_tag : string
  val yaml_bool_tag : string
  val yaml_str_tag : string
  val yaml_int_tag : string
  val yaml_float_tag : string
  val yaml_timestamp_tag : string
  val yaml_seq_tag : string
  val yaml_map_tag : string
  val yaml_default_scalar_tag : string
  val yaml_default_sequence_tag : string
  val yaml_default_mapping_tag : string
  type yaml_read_handler = string -> int -> int -> int
  type yaml_parser
  val yaml_parser_initialize : Yaml.yaml_read_handler -> Yaml.yaml_parser
  val yaml_parser_set_encoding :
    Yaml.yaml_parser -> Yaml.yaml_encoding -> unit
  val yaml_parser_parse : Yaml.yaml_parser -> Yaml.yaml_event_with_mark
  val yaml_parser_problem_mark : Yaml.yaml_parser -> Yaml.yaml_mark
  type yaml_write_handler = string -> int -> int -> unit
  type yaml_emitter
  val yaml_emitter_initialize : Yaml.yaml_write_handler -> Yaml.yaml_emitter
  val yaml_emitter_set_canonical : Yaml.yaml_emitter -> bool -> unit
  val yaml_emitter_set_indent : Yaml.yaml_emitter -> int -> unit
  val yaml_emitter_set_width : Yaml.yaml_emitter -> int -> unit
  val yaml_emitter_set_unicode : Yaml.yaml_emitter -> bool -> unit
  val yaml_emitter_set_break : Yaml.yaml_emitter -> Yaml.yaml_break -> unit
  val yaml_emitter_emit : Yaml.yaml_emitter -> Yaml.yaml_event -> unit
  val yaml_emitter_flush : Yaml.yaml_emitter -> unit
end