sig
  type 'a typ
  val void : unit typ
  val char : char typ
  val schar : int typ
  val short : int typ
  val int : int typ
  val long : Signed.long typ
  val llong : Signed.llong typ
  val nativeint : nativeint typ
  val int8_t : int typ
  val int16_t : int typ
  val int32_t : int32 typ
  val int64_t : int64 typ
  module Intptr : Signed.S
  val intptr_t : Intptr.t typ
  module Ptrdiff : Signed.S
  val ptrdiff_t : Ptrdiff.t typ
  val camlint : int typ
  val uchar : Unsigned.uchar typ
  val bool : bool typ
  val uint8_t : Unsigned.uint8 typ
  val uint16_t : Unsigned.uint16 typ
  val uint32_t : Unsigned.uint32 typ
  val uint64_t : Unsigned.uint64 typ
  val size_t : Unsigned.size_t typ
  val ushort : Unsigned.ushort typ
  val sint : Signed.sint typ
  val uint : Unsigned.uint typ
  val ulong : Unsigned.ulong typ
  val ullong : Unsigned.ullong typ
  module Uintptr : Unsigned.S
  val uintptr_t : Uintptr.t typ
  val float : float typ
  val double : float typ
  val ldouble : LDouble.t typ
  val complex32 : Complex.t typ
  val complex64 : Complex.t typ
  val complexld : ComplexL.t typ
  val ptr : 'a typ -> 'Ctypes_static.ptr typ
  val ptr_opt : 'a typ -> 'Ctypes_static.ptr option typ
  val string : string typ
  val string_opt : string option typ
  val ocaml_string : string Ctypes_static.ocaml typ
  val ocaml_bytes : Bytes.t Ctypes_static.ocaml typ
  val array : int -> 'a typ -> 'Ctypes_static.carray typ
  val bigarray :
    < ba_repr : 'b; bigarray : 'bigarray; carray : 'c; dims : 'dims;
      element : 'a; layout : Bigarray.c_layout >
    Ctypes_static.bigarray_class ->
    'dims -> ('a, 'b) Bigarray.kind -> 'bigarray typ
  val fortran_bigarray :
    < ba_repr : 'b; bigarray : 'bigarray; carray : 'c; dims : 'dims;
      element : 'a; layout : Bigarray.fortran_layout >
    Ctypes_static.bigarray_class ->
    'dims -> ('a, 'b) Bigarray.kind -> 'bigarray typ
  val typ_of_bigarray_kind : ('a, 'b) Bigarray.kind -> 'a typ
  type ('a, 't) field
  val structure : string -> 'Ctypes_static.structure typ
  val union : string -> 'Ctypes_static.union typ
  val field :
    ('s, [< `Struct | `Union ] as 'b) Ctypes_static.structured typ ->
    string -> 'a typ -> ('a, ('s, 'b) Ctypes_static.structured) field
  val seal : ('a, [< `Struct | `Union ]) Ctypes_static.structured typ -> unit
  val view :
    ?format_typ:((Format.formatter -> unit) -> Format.formatter -> unit) ->
    ?format:(Format.formatter -> '-> unit) ->
    read:('-> 'b) -> write:('-> 'a) -> 'a typ -> 'b typ
  val typedef : 'a typ -> string -> 'a typ
  val abstract :
    name:string -> size:int -> alignment:int -> 'Ctypes_static.abstract typ
  val lift_typ : 'Ctypes_static.typ -> 'a typ
  type 'a fn = 'Ctypes_static.fn
  val ( @-> ) : 'a typ -> 'b fn -> ('-> 'b) fn
  val returning : 'a typ -> 'a fn
  type 'a static_funptr = 'Ctypes_static.static_funptr
  val static_funptr : 'a fn -> 'Ctypes_static.static_funptr typ
  type 'a const
  val constant : string -> 'a typ -> 'Cstubs_structs.TYPE.const
  val enum :
    string ->
    ?typedef:bool ->
    ?unexpected:(int64 -> 'a) ->
    ('a * int64 Cstubs_structs.TYPE.const) list -> 'a typ
end