sig
  class type t =
    object ('a)
      method addEvents : 'b Js.t -> unit Js.meth
      method addListener :
        'c Js.t ->
        'd Js.callback Js.optdef ->
        'e Js.t Js.optdef -> 'f Js.t Js.optdef -> 'g Js.t Js.meth
      method addManagedListener :
        'h Js.t ->
        'i Js.t ->
        'j Js.callback Js.optdef ->
        'k Js.t Js.optdef -> 'l Js.t Js.optdef -> 'm Js.t Js.meth
      method beginEdit : unit Js.meth
      method callParent : 'n Js.t -> 'o Js.t Js.meth
      method callSuper : 'p Js.t -> 'q Js.t Js.meth
      method cancelEdit : unit Js.meth
      method clearListeners : unit Js.meth
      method clearManagedListeners : unit Js.meth
      method commit :
        bool Js.t Js.optdef ->
        Js.js_string Js.t Js.js_array Js.t Js.optdef -> unit Js.meth
      method copy : Js.js_string Js.t Js.optdef -> 'a Js.t Js.meth
      method destroy : 'r Js.t -> 'a Js.t Js.meth
      method dirty : bool Js.t Js.readonly_prop
      method editing : bool Js.t Js.readonly_prop
      method enableBubble : 's Js.t -> unit Js.meth
      method endEdit :
        bool Js.t Js.optdef ->
        Js.js_string Js.t Js.js_array Js.t Js.optdef -> unit Js.meth
      method fields : Ext_util_MixedCollection.t Js.t Js.prop
      method fireEvent : Js.js_string Js.t -> 't Js.t -> bool Js.t Js.meth
      method fireEventArgs :
        Js.js_string Js.t -> 'u Js.t Js.js_array Js.t -> bool Js.t Js.meth
      method get : Js.js_string Js.t -> 'v Js.t Js.meth
      method getAssociatedData : 'w Js.t Js.meth
      method getChanges : 'x Js.t Js.meth
      method getData : bool Js.t -> 'y Js.t Js.meth
      method getId : 'z Js.t Js.meth
      method getInitialConfig :
        Js.js_string Js.t Js.optdef -> 'a1 Js.t Js.meth
      method getProxy : 'b1 Js.t Js.meth
      method hasListener : Js.js_string Js.t -> bool Js.t Js.meth
      method hasListeners : 'c1 Js.t Js.readonly_prop
      method initConfig : 'd1 Js.t -> 'a Js.t Js.meth
      method isModel : bool Js.t Js.prop
      method isModified : Js.js_string Js.t -> bool Js.t Js.meth
      method isObservable : bool Js.t Js.prop
      method isValid : bool Js.t Js.meth
      method join : 'e1 Js.t -> unit Js.meth
      method modified : 'f1 Js.t Js.prop
      method mon :
        'g1 Js.t ->
        'h1 Js.t ->
        'i1 Js.callback Js.optdef ->
        'j1 Js.t Js.optdef -> 'k1 Js.t Js.optdef -> 'l1 Js.t Js.meth
      method mun :
        'm1 Js.t ->
        'n1 Js.t ->
        'o1 Js.callback Js.optdef -> 'p1 Js.t Js.optdef -> unit Js.meth
      method on :
        'q1 Js.t ->
        'r1 Js.callback Js.optdef ->
        's1 Js.t Js.optdef -> 't1 Js.t Js.optdef -> 'u1 Js.t Js.meth
      method phantom : bool Js.t Js.prop
      method raw : 'v1 Js.t Js.prop
      method reject : bool Js.t Js.optdef -> unit Js.meth
      method relayEvents :
        'w1 Js.t ->
        Js.js_string Js.t Js.js_array Js.t ->
        Js.js_string Js.t Js.optdef -> 'x1 Js.t Js.meth
      method removeListener :
        Js.js_string Js.t ->
        'y1 Js.callback -> 'z1 Js.t Js.optdef -> unit Js.meth
      method removeManagedListener :
        'a2 Js.t ->
        'b2 Js.t ->
        'c2 Js.callback Js.optdef -> 'd2 Js.t Js.optdef -> unit Js.meth
      method resumeEvent : Js.js_string Js.t -> unit Js.meth
      method resumeEvents : unit Js.meth
      method save : 'e2 Js.t Js.optdef -> 'a Js.t Js.meth
      method self : Ext_Class.t Js.t Js.prop
      method set :
        'f2 Js.t -> 'g2 Js.t -> Js.js_string Js.t Js.js_array Js.t Js.meth
      method setDirty : unit Js.meth
      method setId : 'h2 Js.t -> unit Js.meth
      method setProxy : 'i2 Js.t -> 'j2 Js.t Js.meth
      method statics : Ext_Class.t Js.t Js.meth
      method store : 'k2 Js.t Js.prop
      method stores : 'l2 Js.js_array Js.t Js.prop
      method suspendEvent : Js.js_string Js.t -> unit Js.meth
      method suspendEvents : bool Js.t -> unit Js.meth
      method un :
        Js.js_string Js.t ->
        'm2 Js.callback -> 'n2 Js.t Js.optdef -> unit Js.meth
      method unjoin : 'o2 Js.t -> unit Js.meth
      method validate : Ext_data_Errors.t Js.t Js.meth
    end
  class type configs =
    object
      method associations : 'a Js.t Js.js_array Js.t Js.prop
      method belongsTo : 'b Js.t Js.prop
      method clientIdProperty : Js.js_string Js.t Js.prop
      method defaultProxyType : Js.js_string Js.t Js.prop
      method fields : 'c Js.t Js.prop
      method hasMany : 'd Js.t Js.prop
      method idProperty : 'e Js.t Js.prop
      method idgen : 'f Js.t Js.prop
      method listeners : 'g Js.t Js.prop
      method proxy : 'h Js.t Js.prop
      method validations : 'i Js.t Js.js_array Js.t Js.prop
    end
  class type events =
    object
      method idchanged :
        (Ext_data_Model.t Js.t -> 'a Js.t -> 'b Js.t -> 'c Js.t -> unit)
        Js.callback Js.writeonly_prop
    end
  class type statics =
    object
      method _COMMIT : Js.js_string Js.t Js.prop
      method _EDIT : Js.js_string Js.t Js.prop
      method _REJECT : Js.js_string Js.t Js.prop
      method addMembers : 'a Js.t -> unit Js.meth
      method addStatics : 'b Js.t -> 'c Js.t Js.meth
      method capture :
        'd Js.t -> 'e Js.callback -> 'f Js.t Js.optdef -> unit Js.meth
      method create : 'g Js.t Js.meth
      method createAlias : 'h Js.t -> 'i Js.t -> unit Js.meth
      method getFields : Ext_data_Field.t Js.js_array Js.t Js.meth
      method getName : Js.js_string Js.t Js.meth
      method getProxy : 'j Js.t Js.meth
      method id : 'k Js.t -> Js.js_string Js.t Js.meth
      method load : 'l Js.t -> 'm Js.t Js.optdef -> unit Js.meth
      method observe : 'n Js.callback -> 'o Js.t -> unit Js.meth
      method releaseCapture : 'p Js.t -> unit Js.meth
      method setFields : 'q Js.t -> 'r Js.t -> 's Js.t -> unit Js.meth
      method setProxy : 't Js.t -> 'u Js.t Js.meth
    end
  val get_static : unit -> Ext_data_Model.statics Js.t
  val static : Ext_data_Model.statics Js.t
  val getFields : unit -> Ext_data_Field.t Js.js_array Js.t
  val getProxy : unit -> 'a Js.t
  val id : 'a Js.t -> Js.js_string Js.t
  val load : 'a Js.t -> 'b Js.t Js.optdef -> unit
  val setFields : 'a Js.t -> 'b Js.t -> 'c Js.t -> unit
  val setProxy : 'a Js.t -> 'b Js.t
  val of_configs : Ext_data_Model.configs Js.t -> Ext_data_Model.t Js.t
  val to_configs : Ext_data_Model.t Js.t -> Ext_data_Model.configs Js.t
end