sig
  type point = float * float * float
  type iccbased = {
    icc_n : int;
    icc_alternate : Pdfspace.t;
    icc_range : float array;
    icc_metadata : Pdf.pdfobject option;
    icc_stream : Pdf.pdfobject;
  }
  and t =
      DeviceGray
    | DeviceRGB
    | DeviceCMYK
    | CalGray of Pdfspace.point * Pdfspace.point * float
    | CalRGB of Pdfspace.point * Pdfspace.point * float array * float array
    | Lab of Pdfspace.point * Pdfspace.point * float array
    | ICCBased of Pdfspace.iccbased
    | Indexed of Pdfspace.t * (int, int list) Stdlib.Hashtbl.t
    | Pattern
    | PatternWithBaseColourspace of Pdfspace.t
    | Separation of string * Pdfspace.t * Pdffun.t
    | DeviceN of string array * Pdfspace.t * Pdffun.t * Pdf.pdfobject
  val string_of_colourspace : Pdfspace.t -> string
  val name_of_colourspace : Pdfspace.t -> string option
  val read_colourspace :
    Pdf.t -> Pdf.pdfobject -> Pdf.pdfobject -> Pdfspace.t
  val write_colourspace : Pdf.t -> Pdfspace.t -> Pdf.pdfobject
end