functor (M : Sqlexpr_concurrency.THREAD->
  sig
    type ('a, 'b) statement = {
      sql_statement : string;
      stmt_id : string option;
      directive : (Sqlexpr_sqlite.st -> 'b) -> Sqlexpr_sqlite.st -> 'a;
    }
    type ('a, 'b, 'c) expression = {
      statement : ('a, 'c) Sqlexpr_sqlite.Make.statement;
      get_data : int * (Sqlite3.Data.t array -> 'b);
    }
    exception Error of exn
    exception Sqlite_error of string * Sqlite3.Rc.t
    val open_db : string -> Sqlexpr_sqlite.db
    val close_db : Sqlexpr_sqlite.db -> unit
    val sqlite_db : Sqlexpr_sqlite.db -> Sqlite3.db
    val execute :
      Sqlexpr_sqlite.db -> ('a, unit M.t) Sqlexpr_sqlite.Make.statement -> 'a
    val insert :
      Sqlexpr_sqlite.db ->
      ('a, int64 M.t) Sqlexpr_sqlite.Make.statement -> 'a
    val select :
      Sqlexpr_sqlite.db ->
      ('a, 'M.t, 'b list M.t) Sqlexpr_sqlite.Make.expression -> 'a
    val select_f :
      Sqlexpr_sqlite.db ->
      ('-> 'M.t) ->
      ('c, 'a, 'b list M.t) Sqlexpr_sqlite.Make.expression -> 'c
    val select_one :
      Sqlexpr_sqlite.db ->
      ('a, 'M.t, 'M.t) Sqlexpr_sqlite.Make.expression -> 'a
    val transaction :
      Sqlexpr_sqlite.db -> (Sqlexpr_sqlite.db -> 'M.t) -> 'M.t
    val fold :
      Sqlexpr_sqlite.db ->
      ('-> '-> 'M.t) ->
      '-> ('c, 'b, 'M.t) Sqlexpr_sqlite.Make.expression -> 'c
    val iter :
      Sqlexpr_sqlite.db ->
      ('-> unit M.t) ->
      ('b, 'a, unit M.t) Sqlexpr_sqlite.Make.expression -> 'b
    module Directives :
      sig
        type ('a, 'b) directive =
            (Sqlexpr_sqlite.st -> 'b) -> Sqlexpr_sqlite.st -> 'a
        val literal :
          string -> ('a, 'a) Sqlexpr_sqlite.Make.Directives.directive
        val int : (int -> 'a, 'a) Sqlexpr_sqlite.Make.Directives.directive
        val text :
          (string -> 'a, 'a) Sqlexpr_sqlite.Make.Directives.directive
        val blob :
          (string -> 'a, 'a) Sqlexpr_sqlite.Make.Directives.directive
        val float :
          (float -> 'a, 'a) Sqlexpr_sqlite.Make.Directives.directive
        val int32 :
          (int32 -> 'a, 'a) Sqlexpr_sqlite.Make.Directives.directive
        val int64 :
          (int64 -> 'a, 'a) Sqlexpr_sqlite.Make.Directives.directive
        val bool : (bool -> 'a, 'a) Sqlexpr_sqlite.Make.Directives.directive
        val any :
          (('-> string) -> '-> 'b, 'b)
          Sqlexpr_sqlite.Make.Directives.directive
        val maybe_int :
          (int option -> 'a, 'a) Sqlexpr_sqlite.Make.Directives.directive
        val maybe_text :
          (string option -> 'a, 'a) Sqlexpr_sqlite.Make.Directives.directive
        val maybe_blob :
          (string option -> 'a, 'a) Sqlexpr_sqlite.Make.Directives.directive
        val maybe_float :
          (float option -> 'a, 'a) Sqlexpr_sqlite.Make.Directives.directive
        val maybe_int32 :
          (int32 option -> 'a, 'a) Sqlexpr_sqlite.Make.Directives.directive
        val maybe_int64 :
          (int64 option -> 'a, 'a) Sqlexpr_sqlite.Make.Directives.directive
        val maybe_bool :
          (bool option -> 'a, 'a) Sqlexpr_sqlite.Make.Directives.directive
        val maybe_any :
          (('-> string) -> 'a option -> 'b, 'b)
          Sqlexpr_sqlite.Make.Directives.directive
      end
    module Conversion :
      sig
        val text : Sqlite3.Data.t -> string M.t
        val blob : Sqlite3.Data.t -> string M.t
        val int : Sqlite3.Data.t -> int M.t
        val int32 : Sqlite3.Data.t -> int32 M.t
        val int64 : Sqlite3.Data.t -> int64 M.t
        val float : Sqlite3.Data.t -> float M.t
        val bool : Sqlite3.Data.t -> bool M.t
        val maybe :
          (Sqlite3.Data.t -> 'M.t) -> Sqlite3.Data.t -> 'a option M.t
        val maybe_text : Sqlite3.Data.t -> string option M.t
        val maybe_blob : Sqlite3.Data.t -> string option M.t
        val maybe_int : Sqlite3.Data.t -> int option M.t
        val maybe_int32 : Sqlite3.Data.t -> int32 option M.t
        val maybe_int64 : Sqlite3.Data.t -> int64 option M.t
        val maybe_float : Sqlite3.Data.t -> float option M.t
        val maybe_bool : Sqlite3.Data.t -> bool option M.t
      end
  end