sig
  module Error :
    sig
      type t =
        File_tail.Error.t =
          File_replaced
        | File_shrank
        | Read_failed of exn
        | Stat_failed of exn
      val to_string_hum : t -> string
      val sexp_of_t : t -> Sexplib.Sexp.t
    end
  module Warning :
    sig
      type t =
        File_tail.Warning.t =
          Did_not_reach_eof_for of Core.Std.Time.Span.t
        | Reached_eof
        | Delayed_due_to_null_reads_for of Core.Std.Time.Span.t
        | No_longer_delayed_due_to_null_reads
      val to_string_hum : t -> string
      val sexp_of_t : t -> Sexplib.Sexp.t
    end
  module Update :
    sig
      type t =
        File_tail.Update.t =
          Data of string
        | Warning of string * Warning.t
        | Error of string * Error.t
      val to_string_hum : t -> string
      val sexp_of_t : t -> Sexplib.Sexp.t
    end
  val create :
    ?read_buf_len:int ->
    ?read_delay:Core.Std.Time.Span.t ->
    ?retry_null_reads:bool ->
    ?break_on_lines:bool ->
    ?ignore_inode_change:bool ->
    ?start_at:[ `Beginning | `End | `Pos of Core.Std.Int64.t ] ->
    ?eof_latency_tolerance:Core.Std.Time.Span.t ->
    ?null_read_tolerance:Core.Std.Time.Span.t ->
    string -> Update.t Import.Pipe.Reader.t
  val ounit_tests : unit -> OUnit.test
end