sig
  type ocgusage = {
    ocg_creatorinfo : (string * string) option;
    ocg_language : (string * string option) option;
    ocg_export : string option;
    ocg_zoom_min : float option;
    ocg_zoom_max : float option;
    ocg_print_subtype : string option;
    ocg_print_printstate : string option;
    ocg_viewstate : string option;
    ocg_user : (string * string list) option;
    ocg_page_element_subtype : string option;
  }
  type ocg = {
    ocg_name : string;
    ocg_intent : string list;
    ocg_usage : Pdfocg.ocgusage option;
  }
  type ocgstate = OCG_ON | OCG_OFF | OCG_Unchanged
  type ocglistmode = OCG_AllPages | OCG_VisiblePages
  type ocgevent = OCG_View | OCG_Print | OCG_Export
  type ocgappdict = {
    ocg_event : Pdfocg.ocgevent;
    ocg_ocgs : int list;
    ocg_category : string list;
  }
  type ocgconfig = {
    ocgconfig_name : string option;
    ocgconfig_creator : string option;
    ocgconfig_basestate : Pdfocg.ocgstate;
    ocgconfig_on : int list;
    ocgconfig_off : int list;
    ocgconfig_intent : string list;
    ocgconfig_usage_application_dictionaries : Pdfocg.ocgappdict list;
    ocgconfig_order : (string option * int list) list option;
    ocgconfig_listmode : Pdfocg.ocglistmode;
    ocgconfig_rbgroups : int list list option;
    ocgconfig_locked : int list;
  }
  type t = {
    ocgs : (int * Pdfocg.ocg) list;
    ocg_default_config : Pdfocg.ocgconfig;
    ocg_configs : Pdfocg.ocgconfig list;
  }
  val read_ocg : Pdf.t -> Pdfocg.t option
  val write_ocg : Pdf.t -> Pdfocg.t -> unit
end