sig
  val cast :
    'Gobject.obj -> GtkSourceView3_types.source_undo_manager Gobject.obj
  module S :
    sig
      val can_redo_changed :
        ([> `sourceundomanager ], unit -> unit) GtkSignal.t
      val can_undo_changed :
        ([> `sourceundomanager ], unit -> unit) GtkSignal.t
    end
  val create :
    GtkSourceView3_types.source_undo_manager Gobject.param list ->
    GtkSourceView3_types.source_undo_manager Gobject.obj
  external can_undo : [> `sourceundomanager ] Gobject.obj -> bool
    = "ml_gtk_source_undo_manager_can_undo"
  external can_redo : [> `sourceundomanager ] Gobject.obj -> bool
    = "ml_gtk_source_undo_manager_can_redo"
  external undo : [> `sourceundomanager ] Gobject.obj -> unit
    = "ml_gtk_source_undo_manager_undo"
  external redo : [> `sourceundomanager ] Gobject.obj -> unit
    = "ml_gtk_source_undo_manager_redo"
  external begin_not_undoable_action :
    [> `sourceundomanager ] Gobject.obj -> unit
    = "ml_gtk_source_undo_manager_begin_not_undoable_action"
  external end_not_undoable_action :
    [> `sourceundomanager ] Gobject.obj -> unit
    = "ml_gtk_source_undo_manager_end_not_undoable_action"
  external can_undo_changed : [> `sourceundomanager ] Gobject.obj -> unit
    = "ml_gtk_source_undo_manager_can_undo_changed"
  external can_redo_changed : [> `sourceundomanager ] Gobject.obj -> unit
    = "ml_gtk_source_undo_manager_can_redo_changed"
end