sig
  val create :
    ?name:string ->
    ?background:Tk.color ->
    ?borderwidth:int ->
    ?closeenough:float ->
    ?confine:bool ->
    ?cursor:Tk.cursor ->
    ?height:int ->
    ?highlightbackground:Tk.color ->
    ?highlightcolor:Tk.color ->
    ?highlightthickness:int ->
    ?insertbackground:Tk.color ->
    ?insertborderwidth:int ->
    ?insertofftime:int ->
    ?insertontime:int ->
    ?insertwidth:int ->
    ?relief:Tk.relief ->
    ?scrollregion:int * int * int * int ->
    ?selectbackground:Tk.color ->
    ?selectborderwidth:int ->
    ?selectforeground:Tk.color ->
    ?takefocus:bool ->
    ?width:int ->
    ?xscrollcommand:(first:float -> last:float -> unit) ->
    ?xscrollincrement:int ->
    ?yscrollcommand:(first:float -> last:float -> unit) ->
    ?yscrollincrement:int -> 'Widget.widget -> Widget.canvas Widget.widget
  val addtag :
    Widget.canvas Widget.widget ->
    tag:string -> specs:Tk.searchSpec list -> unit
  val bbox :
    Widget.canvas Widget.widget -> Tk.tagOrId list -> int * int * int * int
  val canvasx : x:int -> ?spacing:int -> Widget.canvas Widget.widget -> float
  val canvasy : y:int -> ?spacing:int -> Widget.canvas Widget.widget -> float
  val configure :
    ?background:Tk.color ->
    ?borderwidth:int ->
    ?closeenough:float ->
    ?confine:bool ->
    ?cursor:Tk.cursor ->
    ?height:int ->
    ?highlightbackground:Tk.color ->
    ?highlightcolor:Tk.color ->
    ?highlightthickness:int ->
    ?insertbackground:Tk.color ->
    ?insertborderwidth:int ->
    ?insertofftime:int ->
    ?insertontime:int ->
    ?insertwidth:int ->
    ?relief:Tk.relief ->
    ?scrollregion:int * int * int * int ->
    ?selectbackground:Tk.color ->
    ?selectborderwidth:int ->
    ?selectforeground:Tk.color ->
    ?takefocus:bool ->
    ?width:int ->
    ?xscrollcommand:(first:float -> last:float -> unit) ->
    ?xscrollincrement:int ->
    ?yscrollcommand:(first:float -> last:float -> unit) ->
    ?yscrollincrement:int -> Widget.canvas Widget.widget -> unit
  val configure_arc :
    ?dash:string ->
    ?extent:float ->
    ?fill:Tk.color ->
    ?outline:Tk.color ->
    ?outlinestipple:Tk.bitmap ->
    ?start:float ->
    ?stipple:Tk.bitmap ->
    ?style:Tk.arcStyle ->
    ?tags:string list ->
    ?width:int -> Widget.canvas Widget.widget -> Tk.tagOrId -> unit
  val configure_bitmap :
    ?anchor:Tk.anchor ->
    ?background:Tk.color ->
    ?bitmap:Tk.bitmap ->
    ?foreground:Tk.color ->
    ?tags:string list -> Widget.canvas Widget.widget -> Tk.tagOrId -> unit
  val configure_get : Widget.canvas Widget.widget -> string
  val configure_image :
    ?anchor:Tk.anchor ->
    ?image:[< Tk.image ] ->
    ?tags:string list -> Widget.canvas Widget.widget -> Tk.tagOrId -> unit
  val configure_line :
    ?arrow:Tk.arrowStyle ->
    ?arrowshape:int * int * int ->
    ?capstyle:Tk.capStyle ->
    ?dash:string ->
    ?fill:Tk.color ->
    ?joinstyle:Tk.joinStyle ->
    ?smooth:bool ->
    ?splinesteps:int ->
    ?stipple:Tk.bitmap ->
    ?tags:string list ->
    ?width:int -> Widget.canvas Widget.widget -> Tk.tagOrId -> unit
  val configure_oval :
    ?dash:string ->
    ?fill:Tk.color ->
    ?outline:Tk.color ->
    ?stipple:Tk.bitmap ->
    ?tags:string list ->
    ?width:int -> Widget.canvas Widget.widget -> Tk.tagOrId -> unit
  val configure_polygon :
    ?dash:string ->
    ?fill:Tk.color ->
    ?outline:Tk.color ->
    ?smooth:bool ->
    ?splinesteps:int ->
    ?stipple:Tk.bitmap ->
    ?tags:string list ->
    ?width:int -> Widget.canvas Widget.widget -> Tk.tagOrId -> unit
  val configure_rectangle :
    ?dash:string ->
    ?fill:Tk.color ->
    ?outline:Tk.color ->
    ?stipple:Tk.bitmap ->
    ?tags:string list ->
    ?width:int -> Widget.canvas Widget.widget -> Tk.tagOrId -> unit
  val configure_text :
    ?anchor:Tk.anchor ->
    ?fill:Tk.color ->
    ?font:string ->
    ?justify:Tk.justification ->
    ?state:Tk.canvasTextState ->
    ?stipple:Tk.bitmap ->
    ?tags:string list ->
    ?text:string ->
    ?width:int -> Widget.canvas Widget.widget -> Tk.tagOrId -> unit
  val configure_window :
    ?anchor:Tk.anchor ->
    ?dash:string ->
    ?height:int ->
    ?tags:string list ->
    ?width:int ->
    ?window:'Widget.widget ->
    Widget.canvas Widget.widget -> Tk.tagOrId -> unit
  val coords_get : Widget.canvas Widget.widget -> Tk.tagOrId -> float list
  val coords_set :
    Widget.canvas Widget.widget -> Tk.tagOrId -> xys:(int * int) list -> unit
  val create_arc :
    x1:int ->
    y1:int ->
    x2:int ->
    y2:int ->
    ?dash:string ->
    ?extent:float ->
    ?fill:Tk.color ->
    ?outline:Tk.color ->
    ?outlinestipple:Tk.bitmap ->
    ?start:float ->
    ?stipple:Tk.bitmap ->
    ?style:Tk.arcStyle ->
    ?tags:string list ->
    ?width:int -> Widget.canvas Widget.widget -> Tk.tagOrId
  val create_bitmap :
    x:int ->
    y:int ->
    ?anchor:Tk.anchor ->
    ?background:Tk.color ->
    ?bitmap:Tk.bitmap ->
    ?foreground:Tk.color ->
    ?tags:string list -> Widget.canvas Widget.widget -> Tk.tagOrId
  val create_image :
    x:int ->
    y:int ->
    ?anchor:Tk.anchor ->
    ?image:[< Tk.image ] ->
    ?tags:string list -> Widget.canvas Widget.widget -> Tk.tagOrId
  val create_line :
    xys:(int * int) list ->
    ?arrow:Tk.arrowStyle ->
    ?arrowshape:int * int * int ->
    ?capstyle:Tk.capStyle ->
    ?dash:string ->
    ?fill:Tk.color ->
    ?joinstyle:Tk.joinStyle ->
    ?smooth:bool ->
    ?splinesteps:int ->
    ?stipple:Tk.bitmap ->
    ?tags:string list ->
    ?width:int -> Widget.canvas Widget.widget -> Tk.tagOrId
  val create_oval :
    x1:int ->
    y1:int ->
    x2:int ->
    y2:int ->
    ?dash:string ->
    ?fill:Tk.color ->
    ?outline:Tk.color ->
    ?stipple:Tk.bitmap ->
    ?tags:string list ->
    ?width:int -> Widget.canvas Widget.widget -> Tk.tagOrId
  val create_polygon :
    xys:(int * int) list ->
    ?dash:string ->
    ?fill:Tk.color ->
    ?outline:Tk.color ->
    ?smooth:bool ->
    ?splinesteps:int ->
    ?stipple:Tk.bitmap ->
    ?tags:string list ->
    ?width:int -> Widget.canvas Widget.widget -> Tk.tagOrId
  val create_rectangle :
    x1:int ->
    y1:int ->
    x2:int ->
    y2:int ->
    ?dash:string ->
    ?fill:Tk.color ->
    ?outline:Tk.color ->
    ?stipple:Tk.bitmap ->
    ?tags:string list ->
    ?width:int -> Widget.canvas Widget.widget -> Tk.tagOrId
  val create_text :
    x:int ->
    y:int ->
    ?anchor:Tk.anchor ->
    ?fill:Tk.color ->
    ?font:string ->
    ?justify:Tk.justification ->
    ?state:Tk.canvasTextState ->
    ?stipple:Tk.bitmap ->
    ?tags:string list ->
    ?text:string -> ?width:int -> Widget.canvas Widget.widget -> Tk.tagOrId
  val create_window :
    x:int ->
    y:int ->
    ?anchor:Tk.anchor ->
    ?dash:string ->
    ?height:int ->
    ?tags:string list ->
    ?width:int ->
    ?window:'Widget.widget -> Widget.canvas Widget.widget -> Tk.tagOrId
  val dchars :
    Widget.canvas Widget.widget ->
    Tk.tagOrId -> first:Tk.canvas_index -> last:Tk.canvas_index -> unit
  val delete : Widget.canvas Widget.widget -> Tk.tagOrId list -> unit
  val dtag : Widget.canvas Widget.widget -> Tk.tagOrId -> tag:string -> unit
  val find :
    Widget.canvas Widget.widget ->
    specs:Tk.searchSpec list -> Tk.tagOrId list
  val focus : Widget.canvas Widget.widget -> Tk.tagOrId -> unit
  val focus_get : Widget.canvas Widget.widget -> Tk.tagOrId
  val focus_reset : Widget.canvas Widget.widget -> unit
  val gettags : Widget.canvas Widget.widget -> Tk.tagOrId -> string list
  val icursor :
    Widget.canvas Widget.widget ->
    Tk.tagOrId -> index:Tk.canvas_index -> unit
  val index :
    Widget.canvas Widget.widget -> Tk.tagOrId -> index:Tk.canvas_index -> int
  val insert :
    Widget.canvas Widget.widget ->
    Tk.tagOrId -> before:Tk.canvas_index -> text:string -> unit
  val itemconfigure_get : Widget.canvas Widget.widget -> Tk.tagOrId -> string
  val lower :
    ?below:Tk.tagOrId -> Widget.canvas Widget.widget -> Tk.tagOrId -> unit
  val move :
    Widget.canvas Widget.widget -> Tk.tagOrId -> x:int -> y:int -> unit
  val postscript :
    ?colormode:Tk.colorMode ->
    ?file:string ->
    ?height:int ->
    ?pageanchor:Tk.anchor ->
    ?pageheight:int ->
    ?pagewidth:int ->
    ?pagex:int ->
    ?pagey:int ->
    ?rotate:bool ->
    ?width:int -> ?x:int -> ?y:int -> Widget.canvas Widget.widget -> string
  val raise :
    ?above:Tk.tagOrId -> Widget.canvas Widget.widget -> Tk.tagOrId -> unit
  val scale :
    Widget.canvas Widget.widget ->
    Tk.tagOrId ->
    xorigin:int -> yorigin:int -> xscale:float -> yscale:float -> unit
  val scan_dragto : Widget.canvas Widget.widget -> x:int -> y:int -> unit
  val scan_mark : Widget.canvas Widget.widget -> x:int -> y:int -> unit
  val select_adjust :
    Widget.canvas Widget.widget ->
    Tk.tagOrId -> index:Tk.canvas_index -> unit
  val select_clear : Widget.canvas Widget.widget -> unit
  val select_from :
    Widget.canvas Widget.widget ->
    Tk.tagOrId -> index:Tk.canvas_index -> unit
  val select_item : Widget.canvas Widget.widget -> Tk.tagOrId
  val select_to :
    Widget.canvas Widget.widget ->
    Tk.tagOrId -> index:Tk.canvas_index -> unit
  val typeof : Widget.canvas Widget.widget -> Tk.tagOrId -> Tk.canvasItem
  val xview : Widget.canvas Widget.widget -> scroll:Tk.scrollValue -> unit
  val xview_get : Widget.canvas Widget.widget -> float * float
  val yview : Widget.canvas Widget.widget -> scroll:Tk.scrollValue -> unit
  val yview_get : Widget.canvas Widget.widget -> float * float
  val bind :
    events:Tk.event list ->
    ?extend:bool ->
    ?breakable:bool ->
    ?fields:Tk.eventField list ->
    ?action:(Tk.eventInfo -> unit) ->
    Widget.canvas Widget.widget -> Tk.tagOrId -> unit
end