type point = (int * int)
type point' = (source int * source int)

val initCanvas : point -> point -> point' -> signal unit
val moveCursor : point' -> point -> point -> point -> transaction unit
val onMouseMove : (point -> transaction unit) -> transaction unit
val onClick : (point -> transaction unit) -> transaction unit
val onMouseDown : (point -> transaction unit) -> transaction unit
val onMouseUp : (point -> transaction unit) -> transaction unit
val onTouchMove : (point -> transaction unit) -> transaction unit
val onTouch : (point -> transaction unit) -> transaction unit
val onTouchStart : (point -> transaction unit) -> transaction unit
val onTouchEnd : (point -> transaction unit) -> transaction unit
val nullifyHandler : string -> transaction unit
