type nonrec t =
  | Rgb 
type nonrec t =
  | Rgb 
type nonrec t =
  | White of grayscale 
  | Black of grayscale 
  | Rgb of int * int * int 
  | Rgba of int * int * int * int 
type nonrec t =
  | Rgb of {
  r: int ;
  g: int ;
  b: int } 
  | Rgba of {
  r: int ;
  g: int ;
  b: int ;
  a: int } 
  | JsColor of < gradient: int   >  
  | JsColor of < gradient: int   >  
  | JsColor of < gradient: int   >  
  | JsColor of < gradient: int [@attr ]  >  
  | JsColor of < gradient: int   >  * color 
  | JsColor of < gradient: int   >  * color 
  | JsColor of < gradient: int   >  * < hex: string   >  * int 
  | JsColor of < gradient: int [@attr ]  >  * < hex: string [@attr ]  >  *
  int 
  | JsT of < .. >  
  | JsT of < gradient: int   ;.. >  
  | JsT of < gradient: int   ;.. >  
  | JsT of < gradient: int [@attr ]  ;.. >  
  | JsT of < gradient: int  ;hex: string   ;.. >  *
  < gradient: int  ;hex: string   ;.. >  
  | JsT of < gradient: int [@attr ] ;hex: string [@attr ]  ;.. >  *
  < gradient: int [@attr ] ;hex: string [@attr ]  ;.. >  
type nonrec t =
  | Rgb: t 
type nonrec t =
  | Rgb: t 
type nonrec t =
  | White: grayscale -> t 
  | Black: grayscale -> t 
  | Rgb: int * int * int -> t 
  | Rgba: int * int * int * int -> t 
type nonrec t =
  | Rgb: {
  r: int ;
  g: int ;
  b: int } -> t 
  | Rgba: {
  r: int ;
  g: int ;
  b: int ;
  a: int } -> t 
  | JsColor: < gradient: int   >  -> t 
  | JsColor: < gradient: int   >  -> t 
  | JsColor: < gradient: int   >  -> t 
  | JsColor: < gradient: int   >  -> t 
  | JsColor: < gradient: int [@attr ]  >  -> t 
  | JsColor: < gradient: int   >  * color -> t 
  | JsColor: < gradient: int   >  * color -> t 
  | JsColor: < gradient: int   >  * < hex: string   >  * int -> t 
  | JsT: < .. >  -> t 
  | JsT: < gradient: int   ;.. >  -> t 
  | JsT: < gradient: int [@attr ]  ;.. >  -> t 
  | JsT: < gradient: int   ;.. >  -> t 
  | JsT: < gradient: int [@attr ]  ;.. >  -> t 
  | JsT: < gradient: int   ;.. >  -> t 
  | JsT: < gradient: int  ;hex: string   ;.. >  *
  < gradient: int  ;hex: string   ;.. >  -> t 
  | JsT: < gradient: int [@attr ] ;hex: string [@attr ]  ;.. >  *
  < gradient: int [@attr ] ;hex: string [@attr ]  ;.. >  -> t 
type nonrec t =
  | EmptyColor [@attr ]
  | White: grayscale -> ((t)[@onGadt ]) [@onConstr ]
type nonrec (_, 'value) node =
  | Root: {
  mutable value: 'value ;
  mutable updatedTime: float } -> (root, 'value) node 
  | Derived:
  {
  mutable cachedValue: 'value ;
  parent: (_, 'value) node ;
  root: (root, 'value) node ;
  updateF: 'value -> 'value (a:1) ;
  mutable updatedTime: float } -> (derived, 'value) node 
type nonrec delta =
  | Compute of (< blocked_ids: unit   >  -> unit (a:1)) 
type nonrec queryDelta =
  | Compute of (< blocked_ids: unit   >  -> unit (a:1)) 
  | Compute of (< blocked_ids: unit   >  -> unit (a:1)) *
  (< allowed_ids: unit   >  -> unit (a:1)) 