sig
  val cast : 'Gobject.obj -> Gtk.spin_button Gtk.obj
  module P :
    sig
      val adjustment :
        ([> `spinbutton ], Gtk.adjustment Gtk.obj) Gobject.property
      val climb_rate : ([> `spinbutton ], float) Gobject.property
      val digits : ([> `spinbutton ], int) Gobject.property
      val numeric : ([> `spinbutton ], bool) Gobject.property
      val snap_to_ticks : ([> `spinbutton ], bool) Gobject.property
      val update_policy :
        ([> `spinbutton ], GtkEnums.spin_button_update_policy)
        Gobject.property
      val value : ([> `spinbutton ], float) Gobject.property
      val wrap : ([> `spinbutton ], bool) Gobject.property
    end
  module S :
    sig
      val change_value :
        ([> `spinbutton ], GtkEnums.scroll_type -> unit) GtkSignal.t
      val input : ([> `spinbutton ], unit -> int) GtkSignal.t
      val output : ([> `spinbutton ], unit -> bool) GtkSignal.t
      val value_changed : ([> `spinbutton ], unit -> unit) GtkSignal.t
      val wrapped : ([> `spinbutton ], unit -> unit) GtkSignal.t
    end
  val create : Gtk.spin_button Gobject.param list -> Gtk.spin_button Gtk.obj
  external spin : [> `spinbutton ] Gtk.obj -> Gtk.Tags.spin_type -> unit
    = "ml_gtk_spin_button_spin"
  external update : [> `spinbutton ] Gtk.obj -> unit
    = "ml_gtk_spin_button_update"
  val make_params :
    cont:(([> `spinbutton ] as 'a) Gobject.param list -> 'b) ->
    'Gobject.param list ->
    ?adjustment:Gtk.adjustment Gtk.obj ->
    ?rate:float ->
    ?digits:int ->
    ?numeric:bool ->
    ?snap_to_ticks:bool ->
    ?update_policy:GtkEnums.spin_button_update_policy ->
    ?value:float -> ?wrap:bool -> 'b
  val get_value_as_int : [> `spinbutton ] Gobject.obj -> int
end