sig
  type t
  type line_style = Solid | Dotted of (int * int)
  type line
  type border
  type shadow
  type gradient
  type background =
      Image of Bogue.Image.t
    | Solid of Bogue.Draw.color
    | Gradient of Bogue.Style.gradient
  val create :
    ?background:Bogue.Style.background ->
    ?border:Bogue.Style.border ->
    ?shadow:Bogue.Style.shadow -> unit -> Bogue.Style.t
  val empty : Bogue.Style.t
  val of_bg : Bogue.Style.background -> Bogue.Style.t
  val of_border : Bogue.Style.border -> Bogue.Style.t
  val of_shadow : Bogue.Style.shadow -> Bogue.Style.t
  val with_bg : Bogue.Style.background -> Bogue.Style.t -> Bogue.Style.t
  val with_border : Bogue.Style.border -> Bogue.Style.t -> Bogue.Style.t
  val with_shadow : Bogue.Style.shadow -> Bogue.Style.t -> Bogue.Style.t
  val theme_bg : Bogue.Style.background
  val color_bg : Bogue.Draw.color -> Bogue.Style.background
  val opaque_bg : Bogue.Draw.rgb -> Bogue.Style.background
  val image_bg : Bogue.Image.t -> Bogue.Style.background
  val gradient :
    ?angle:float -> Bogue.Draw.color list -> Bogue.Style.background
  val hgradient : Bogue.Draw.color list -> Bogue.Style.background
  val vgradient : Bogue.Draw.color list -> Bogue.Style.background
  val mk_line :
    ?color:Bogue.Draw.color ->
    ?width:int -> ?style:Bogue.Style.line_style -> unit -> Bogue.Style.line
  val mk_border : ?radius:int -> Bogue.Style.line -> Bogue.Style.border
  val mk_shadow :
    ?offset:int * int ->
    ?size:int -> ?width:int -> ?radius:int -> unit -> Bogue.Style.shadow
end