sig
  external setGlobalVolume : volume:float -> unit
    = "caml_sfListener_setGlobalVolume"
  external getGlobalVolume : unit -> float
    = "caml_sfListener_getGlobalVolume"
  external setPosition : pos:float * float * float -> unit
    = "caml_sfListener_setPosition"
  external setPosition3 : posX:float -> posY:float -> posZ:float -> unit
    = "caml_sfListener_setPosition3"
  external getPosition : unit -> float * float * float
    = "caml_sfListener_getPosition"
  external setDirection : orientation:float * float * float -> unit
    = "caml_sfListener_setDirection"
  external setDirection3 : dirX:float -> dirY:float -> dirZ:float -> unit
    = "caml_sfListener_setDirection3"
  external getDirection : unit -> float * float * float
    = "caml_sfListener_getDirection"
  external setUpVector : vector:float * float * float -> unit
    = "caml_sfListener_setUpVector"
  external setUpVector3 : vecX:float -> vecY:float -> vecZ:float -> unit
    = "caml_sfListener_setUpVector3"
  external getUpVector : unit -> float * float * float
    = "caml_sfListener_getUpVector"
end