sig
  type ('a, 'b, 'c) t = ('a, 'b, 'c) Bigarray.Array3.t
  val create :
    ('a, 'b) BatBigarray.kind ->
    'BatBigarray.layout ->
    int -> int -> int -> ('a, 'b, 'c) BatBigarray.Array3.t
  external dim1 : ('a, 'b, 'c) BatBigarray.Array3.t -> int = "%caml_ba_dim_1"
  external dim2 : ('a, 'b, 'c) BatBigarray.Array3.t -> int = "%caml_ba_dim_2"
  external dim3 : ('a, 'b, 'c) BatBigarray.Array3.t -> int = "%caml_ba_dim_3"
  external kind :
    ('a, 'b, 'c) BatBigarray.Array3.t -> ('a, 'b) BatBigarray.kind
    = "caml_ba_kind"
  external layout :
    ('a, 'b, 'c) BatBigarray.Array3.t -> 'BatBigarray.layout
    = "caml_ba_layout"
  val change_layout :
    ('a, 'b, 'c) BatBigarray.Array3.t ->
    'BatBigarray.layout -> ('a, 'b, 'd) BatBigarray.Array3.t
  val size_in_bytes : ('a, 'b, 'c) BatBigarray.Array3.t -> int
  external get : ('a, 'b, 'c) BatBigarray.Array3.t -> int -> int -> int -> 'a
    = "%caml_ba_ref_3"
  external set :
    ('a, 'b, 'c) BatBigarray.Array3.t -> int -> int -> int -> '-> unit
    = "%caml_ba_set_3"
  external sub_left :
    ('a, 'b, BatBigarray.c_layout) BatBigarray.Array3.t ->
    int -> int -> ('a, 'b, BatBigarray.c_layout) BatBigarray.Array3.t
    = "caml_ba_sub"
  external sub_right :
    ('a, 'b, BatBigarray.fortran_layout) BatBigarray.Array3.t ->
    int -> int -> ('a, 'b, BatBigarray.fortran_layout) BatBigarray.Array3.t
    = "caml_ba_sub"
  val slice_left_1 :
    ('a, 'b, BatBigarray.c_layout) BatBigarray.Array3.t ->
    int -> int -> ('a, 'b, BatBigarray.c_layout) BatBigarray.Array1.t
  val slice_right_1 :
    ('a, 'b, BatBigarray.fortran_layout) BatBigarray.Array3.t ->
    int -> int -> ('a, 'b, BatBigarray.fortran_layout) BatBigarray.Array1.t
  val slice_left_2 :
    ('a, 'b, BatBigarray.c_layout) BatBigarray.Array3.t ->
    int -> ('a, 'b, BatBigarray.c_layout) BatBigarray.Array2.t
  val slice_right_2 :
    ('a, 'b, BatBigarray.fortran_layout) BatBigarray.Array3.t ->
    int -> ('a, 'b, BatBigarray.fortran_layout) BatBigarray.Array2.t
  external blit :
    ('a, 'b, 'c) BatBigarray.Array3.t ->
    ('a, 'b, 'c) BatBigarray.Array3.t -> unit = "caml_ba_blit"
  external fill : ('a, 'b, 'c) BatBigarray.Array3.t -> '-> unit
    = "caml_ba_fill"
  val of_array :
    ('a, 'b) BatBigarray.kind ->
    'BatBigarray.layout ->
    'a array array array -> ('a, 'b, 'c) BatBigarray.Array3.t
  val map_file :
    Unix.file_descr ->
    ?pos:int64 ->
    ('a, 'b) BatBigarray.kind ->
    'BatBigarray.layout ->
    bool -> int -> int -> int -> ('a, 'b, 'c) BatBigarray.Array3.t
  val enum : ('a, 'b, 'c) BatBigarray.Array3.t -> 'BatEnum.t
  val map :
    ('-> 'b) ->
    ('b, 'c) Bigarray.kind ->
    ('a, 'd, 'e) BatBigarray.Array3.t -> ('b, 'c, 'e) BatBigarray.Array3.t
  val mapijk :
    (int -> int -> int -> '-> 'b) ->
    ('b, 'c) Bigarray.kind ->
    ('a, 'd, 'e) BatBigarray.Array3.t -> ('b, 'c, 'e) BatBigarray.Array3.t
  val modify : ('-> 'a) -> ('a, 'b, 'c) BatBigarray.Array3.t -> unit
  val modifyijk :
    (int -> int -> int -> '-> 'a) ->
    ('a, 'b, 'c) BatBigarray.Array3.t -> unit
  val to_array : ('a, 'b, 'c) BatBigarray.Array3.t -> 'a array array array
  external unsafe_get :
    ('a, 'b, 'c) BatBigarray.Array3.t -> int -> int -> int -> 'a
    = "%caml_ba_unsafe_ref_3"
  external unsafe_set :
    ('a, 'b, 'c) BatBigarray.Array3.t -> int -> int -> int -> '-> unit
    = "%caml_ba_unsafe_set_3"
end