sig
  val lines_of : string -> string BatEnum.t
  val write_lines : string -> string BatEnum.t -> unit
  val size_of : string -> int
  val size_of_big : string -> Int64.t
  type permission
  val default_permission : BatFile.permission
  val user_read : BatFile.permission
  val user_write : BatFile.permission
  val user_exec : BatFile.permission
  val group_read : BatFile.permission
  val group_write : BatFile.permission
  val group_exec : BatFile.permission
  val other_read : BatFile.permission
  val other_write : BatFile.permission
  val other_exec : BatFile.permission
  val perm : BatFile.permission list -> BatFile.permission
  val unix_perm : int -> BatFile.permission
  val set_permissions : string -> BatFile.permission -> unit
  val chmod : string -> BatFile.permission -> unit
  type open_in_flag = [ `create | `excl | `mmap | `nonblock | `text ]
  val open_in :
    ?mode:BatFile.open_in_flag list ->
    ?perm:BatFile.permission -> string -> BatInnerIO.input
  val with_file_in :
    ?mode:BatFile.open_in_flag list ->
    ?perm:BatFile.permission -> string -> (BatInnerIO.input -> 'a) -> 'a
  type open_out_flag =
      [ `append | `create | `excl | `nonblock | `text | `trunc ]
  val open_out :
    ?mode:BatFile.open_out_flag list ->
    ?perm:BatFile.permission -> string -> unit BatInnerIO.output
  val with_file_out :
    ?mode:BatFile.open_out_flag list ->
    ?perm:BatFile.permission ->
    string -> (unit BatInnerIO.output -> 'a) -> 'a
  type open_temporary_out_flag =
      [ `append
      | `create
      | `delete_on_exit
      | `excl
      | `nonblock
      | `text
      | `trunc ]
  val open_temporary_out :
    ?mode:BatFile.open_temporary_out_flag list ->
    ?perm:BatFile.permission ->
    ?prefix:string ->
    ?suffix:string -> unit -> unit BatInnerIO.output * string
  val with_temporary_out :
    ?mode:BatFile.open_temporary_out_flag list ->
    ?perm:BatFile.permission ->
    ?prefix:string ->
    ?suffix:string -> (unit BatInnerIO.output -> string -> 'a) -> 'a
end