sig
  type auth
  val auth : user:string -> unit -> (B0_github.auth, string) Stdlib.result
  type content_type = string
  type v3_body =
      [ `Empty
      | `Json of B0_web.Jsong.t
      | `Other of B0_github.content_type * string ]
  val req_json_v3 :
    ?headers:B0_web.Http.headers ->
    B0_web.Http.t ->
    B0_github.auth ->
    path:string ->
    B0_web.Http.meth ->
    B0_github.v3_body -> (B0_web.Json.t, string) Stdlib.result
  val query_v4 :
    B0_web.Http.t ->
    B0_github.auth -> string -> (B0_web.Json.t, string) Stdlib.result
  module Repo :
    sig
      type t
      val v : owner:string -> string -> B0_github.Repo.t
      val owner : B0_github.Repo.t -> string
      val name : B0_github.Repo.t -> string
      val req_json_v3 :
        ?headers:B0_web.Http.headers ->
        B0_web.Http.t ->
        B0_github.auth ->
        B0_github.Repo.t ->
        path:string ->
        B0_web.Http.meth ->
        B0_github.v3_body -> (B0_web.Json.t, string) Stdlib.result
      val query_v4 :
        B0_web.Http.t ->
        B0_github.auth ->
        B0_github.Repo.t -> string -> (B0_web.Json.t, string) Stdlib.result
    end
  module Issue :
    sig
      type num = int
      type uri = string
      type t
      val number : B0_github.Issue.t -> B0_github.Issue.num
      val title : B0_github.Issue.t -> string
      val body : B0_github.Issue.t -> string
      val url : B0_github.Issue.t -> string
      val pp : B0_github.Issue.t B0_std.Fmt.t
      val pp_short : B0_github.Issue.t B0_std.Fmt.t
      val list :
        B0_web.Http.t ->
        B0_github.auth ->
        B0_github.Repo.t ->
        (int * B0_github.Issue.t list, string) Stdlib.result
      val create :
        B0_web.Http.t ->
        B0_github.auth ->
        B0_github.Repo.t ->
        title:string ->
        body:string ->
        unit ->
        (B0_github.Issue.num * B0_github.Issue.uri, string) Stdlib.result
      val close :
        B0_web.Http.t ->
        B0_github.auth ->
        B0_github.Repo.t ->
        B0_github.Issue.num ->
        (B0_github.Issue.num * B0_github.Issue.uri, string) Stdlib.result
    end
  module Release :
    sig
      type t
      val id : B0_github.Release.t -> int
      val tag_name : B0_github.Release.t -> string
      val body : B0_github.Release.t -> string
      val html_url : B0_github.Release.t -> string
      val assets_url : B0_github.Release.t -> string
      val pp : B0_github.Release.t B0_std.Fmt.t
      val pp_short : B0_github.Release.t B0_std.Fmt.t
      val create :
        B0_web.Http.t ->
        B0_github.auth ->
        B0_github.Repo.t ->
        tag_name:string ->
        body:string -> unit -> (B0_github.Release.t, string) Stdlib.result
      val get :
        B0_web.Http.t ->
        B0_github.auth ->
        B0_github.Repo.t ->
        tag_name:string ->
        unit -> (B0_github.Release.t, string) Stdlib.result
      val upload_asset :
        B0_web.Http.t ->
        B0_github.auth ->
        B0_github.Repo.t ->
        B0_github.Release.t ->
        content_type:string ->
        name:string -> string -> (unit, string) Stdlib.result
    end
  module Pages :
    sig
      type update
      val update :
        ?follow_symlinks:bool ->
        src:B0_std.Fpath.t option -> B0_std.Fpath.t -> B0_github.Pages.update
      val nojekyll : B0_github.Pages.update
      val default_branch : B0_vcs.Git.branch
      val commit_updates :
        ?allow_hardlinks:bool ->
        ?log:B0_std.Log.level ->
        ?branch:B0_vcs.Git.branch ->
        B0_vcs.t ->
        amend:bool ->
        force:bool ->
        remote:B0_vcs.Git.remote ->
        msg:string ->
        B0_github.Pages.update list -> (bool, string) Stdlib.result
    end
end