sig
  module Version :
    sig
      type t = { major : int; minor : int; }
      val major :
        (GapiPagespeedonlineV1Model.Result.Version.t, int) GapiLens.t
      val minor :
        (GapiPagespeedonlineV1Model.Result.Version.t, int) GapiLens.t
      val empty : GapiPagespeedonlineV1Model.Result.Version.t
      val render :
        GapiPagespeedonlineV1Model.Result.Version.t ->
        GapiJson.json_data_model list
      val parse :
        GapiPagespeedonlineV1Model.Result.Version.t ->
        GapiJson.json_data_model ->
        GapiPagespeedonlineV1Model.Result.Version.t
    end
  module Screenshot :
    sig
      type t = {
        data : string;
        height : int;
        mime_type : string;
        width : int;
      }
      val data :
        (GapiPagespeedonlineV1Model.Result.Screenshot.t, string) GapiLens.t
      val height :
        (GapiPagespeedonlineV1Model.Result.Screenshot.t, int) GapiLens.t
      val mime_type :
        (GapiPagespeedonlineV1Model.Result.Screenshot.t, string) GapiLens.t
      val width :
        (GapiPagespeedonlineV1Model.Result.Screenshot.t, int) GapiLens.t
      val empty : GapiPagespeedonlineV1Model.Result.Screenshot.t
      val render :
        GapiPagespeedonlineV1Model.Result.Screenshot.t ->
        GapiJson.json_data_model list
      val parse :
        GapiPagespeedonlineV1Model.Result.Screenshot.t ->
        GapiJson.json_data_model ->
        GapiPagespeedonlineV1Model.Result.Screenshot.t
    end
  module PageStats :
    sig
      type t = {
        cssResponseBytes : int64;
        flashResponseBytes : int64;
        htmlResponseBytes : int64;
        imageResponseBytes : int64;
        javascriptResponseBytes : int64;
        numberCssResources : int;
        numberHosts : int;
        numberJsResources : int;
        numberResources : int;
        numberStaticResources : int;
        otherResponseBytes : int64;
        textResponseBytes : int64;
        totalRequestBytes : int64;
      }
      val cssResponseBytes :
        (GapiPagespeedonlineV1Model.Result.PageStats.t, int64) GapiLens.t
      val flashResponseBytes :
        (GapiPagespeedonlineV1Model.Result.PageStats.t, int64) GapiLens.t
      val htmlResponseBytes :
        (GapiPagespeedonlineV1Model.Result.PageStats.t, int64) GapiLens.t
      val imageResponseBytes :
        (GapiPagespeedonlineV1Model.Result.PageStats.t, int64) GapiLens.t
      val javascriptResponseBytes :
        (GapiPagespeedonlineV1Model.Result.PageStats.t, int64) GapiLens.t
      val numberCssResources :
        (GapiPagespeedonlineV1Model.Result.PageStats.t, int) GapiLens.t
      val numberHosts :
        (GapiPagespeedonlineV1Model.Result.PageStats.t, int) GapiLens.t
      val numberJsResources :
        (GapiPagespeedonlineV1Model.Result.PageStats.t, int) GapiLens.t
      val numberResources :
        (GapiPagespeedonlineV1Model.Result.PageStats.t, int) GapiLens.t
      val numberStaticResources :
        (GapiPagespeedonlineV1Model.Result.PageStats.t, int) GapiLens.t
      val otherResponseBytes :
        (GapiPagespeedonlineV1Model.Result.PageStats.t, int64) GapiLens.t
      val textResponseBytes :
        (GapiPagespeedonlineV1Model.Result.PageStats.t, int64) GapiLens.t
      val totalRequestBytes :
        (GapiPagespeedonlineV1Model.Result.PageStats.t, int64) GapiLens.t
      val empty : GapiPagespeedonlineV1Model.Result.PageStats.t
      val render :
        GapiPagespeedonlineV1Model.Result.PageStats.t ->
        GapiJson.json_data_model list
      val parse :
        GapiPagespeedonlineV1Model.Result.PageStats.t ->
        GapiJson.json_data_model ->
        GapiPagespeedonlineV1Model.Result.PageStats.t
    end
  module FormattedResults :
    sig
      module RuleResults :
        sig
          module UrlBlocks :
            sig
              module Urls :
                sig
                  module Result :
                    sig
                      module Args :
                        sig
                          type t = { _type : string; value : string; }
                          val _type :
                            (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Result.Args.t,
                             string)
                            GapiLens.t
                          val value :
                            (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Result.Args.t,
                             string)
                            GapiLens.t
                          val empty :
                            GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Result.Args.t
                          val render :
                            GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Result.Args.t ->
                            GapiJson.json_data_model list
                          val parse :
                            GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Result.Args.t ->
                            GapiJson.json_data_model ->
                            GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Result.Args.t
                        end
                      type t = {
                        args :
                          GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Result.Args.t
                          list;
                        format : string;
                      }
                      val args :
                        (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Result.t,
                         GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Result.Args.t
                         list)
                        GapiLens.t
                      val format :
                        (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Result.t,
                         string)
                        GapiLens.t
                      val empty :
                        GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Result.t
                      val render :
                        GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Result.t ->
                        GapiJson.json_data_model list
                      val parse :
                        GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Result.t ->
                        GapiJson.json_data_model ->
                        GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Result.t
                    end
                  module Details :
                    sig
                      module Args :
                        sig
                          type t = { _type : string; value : string; }
                          val _type :
                            (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Details.Args.t,
                             string)
                            GapiLens.t
                          val value :
                            (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Details.Args.t,
                             string)
                            GapiLens.t
                          val empty :
                            GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Details.Args.t
                          val render :
                            GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Details.Args.t ->
                            GapiJson.json_data_model list
                          val parse :
                            GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Details.Args.t ->
                            GapiJson.json_data_model ->
                            GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Details.Args.t
                        end
                      type t = {
                        args :
                          GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Details.Args.t
                          list;
                        format : string;
                      }
                      val args :
                        (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Details.t,
                         GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Details.Args.t
                         list)
                        GapiLens.t
                      val format :
                        (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Details.t,
                         string)
                        GapiLens.t
                      val empty :
                        GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Details.t
                      val render :
                        GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Details.t ->
                        GapiJson.json_data_model list
                      val parse :
                        GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Details.t ->
                        GapiJson.json_data_model ->
                        GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Details.t
                    end
                  type t = {
                    details :
                      GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Details.t
                      list;
                    result :
                      GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Result.t;
                  }
                  val details :
                    (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.t,
                     GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Details.t
                     list)
                    GapiLens.t
                  val result :
                    (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.t,
                     GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.Result.t)
                    GapiLens.t
                  val empty :
                    GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.t
                  val render :
                    GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.t ->
                    GapiJson.json_data_model list
                  val parse :
                    GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.t ->
                    GapiJson.json_data_model ->
                    GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.t
                end
              module Header :
                sig
                  module Args :
                    sig
                      type t = { _type : string; value : string; }
                      val _type :
                        (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Header.Args.t,
                         string)
                        GapiLens.t
                      val value :
                        (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Header.Args.t,
                         string)
                        GapiLens.t
                      val empty :
                        GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Header.Args.t
                      val render :
                        GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Header.Args.t ->
                        GapiJson.json_data_model list
                      val parse :
                        GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Header.Args.t ->
                        GapiJson.json_data_model ->
                        GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Header.Args.t
                    end
                  type t = {
                    args :
                      GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Header.Args.t
                      list;
                    format : string;
                  }
                  val args :
                    (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Header.t,
                     GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Header.Args.t
                     list)
                    GapiLens.t
                  val format :
                    (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Header.t,
                     string)
                    GapiLens.t
                  val empty :
                    GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Header.t
                  val render :
                    GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Header.t ->
                    GapiJson.json_data_model list
                  val parse :
                    GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Header.t ->
                    GapiJson.json_data_model ->
                    GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Header.t
                end
              type t = {
                header :
                  GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Header.t;
                urls :
                  GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.t
                  list;
              }
              val header :
                (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.t,
                 GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Header.t)
                GapiLens.t
              val urls :
                (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.t,
                 GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.Urls.t
                 list)
                GapiLens.t
              val empty :
                GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.t
              val render :
                GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.t ->
                GapiJson.json_data_model list
              val parse :
                GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.t ->
                GapiJson.json_data_model ->
                GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.t
            end
          type t = {
            localizedRuleName : string;
            ruleImpact : float;
            urlBlocks :
              GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.t
              list;
          }
          val localizedRuleName :
            (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.t,
             string)
            GapiLens.t
          val ruleImpact :
            (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.t,
             float)
            GapiLens.t
          val urlBlocks :
            (GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.t,
             GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.UrlBlocks.t
             list)
            GapiLens.t
          val empty :
            GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.t
          val render :
            GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.t ->
            GapiJson.json_data_model list
          val parse :
            GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.t ->
            GapiJson.json_data_model ->
            GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.t
        end
      type t = {
        locale : string;
        ruleResults :
          (string *
           GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.t)
          list;
      }
      val locale :
        (GapiPagespeedonlineV1Model.Result.FormattedResults.t, string)
        GapiLens.t
      val ruleResults :
        (GapiPagespeedonlineV1Model.Result.FormattedResults.t,
         (string *
          GapiPagespeedonlineV1Model.Result.FormattedResults.RuleResults.t)
         list)
        GapiLens.t
      val empty : GapiPagespeedonlineV1Model.Result.FormattedResults.t
      val render :
        GapiPagespeedonlineV1Model.Result.FormattedResults.t ->
        GapiJson.json_data_model list
      val parse :
        GapiPagespeedonlineV1Model.Result.FormattedResults.t ->
        GapiJson.json_data_model ->
        GapiPagespeedonlineV1Model.Result.FormattedResults.t
    end
  type t = {
    formattedResults : GapiPagespeedonlineV1Model.Result.FormattedResults.t;
    id : string;
    invalidRules : string list;
    kind : string;
    pageStats : GapiPagespeedonlineV1Model.Result.PageStats.t;
    responseCode : int;
    score : int;
    screenshot : GapiPagespeedonlineV1Model.Result.Screenshot.t;
    title : string;
    version : GapiPagespeedonlineV1Model.Result.Version.t;
  }
  val formattedResults :
    (GapiPagespeedonlineV1Model.Result.t,
     GapiPagespeedonlineV1Model.Result.FormattedResults.t)
    GapiLens.t
  val id : (GapiPagespeedonlineV1Model.Result.t, string) GapiLens.t
  val invalidRules :
    (GapiPagespeedonlineV1Model.Result.t, string list) GapiLens.t
  val kind : (GapiPagespeedonlineV1Model.Result.t, string) GapiLens.t
  val pageStats :
    (GapiPagespeedonlineV1Model.Result.t,
     GapiPagespeedonlineV1Model.Result.PageStats.t)
    GapiLens.t
  val responseCode : (GapiPagespeedonlineV1Model.Result.t, int) GapiLens.t
  val score : (GapiPagespeedonlineV1Model.Result.t, int) GapiLens.t
  val screenshot :
    (GapiPagespeedonlineV1Model.Result.t,
     GapiPagespeedonlineV1Model.Result.Screenshot.t)
    GapiLens.t
  val title : (GapiPagespeedonlineV1Model.Result.t, string) GapiLens.t
  val version :
    (GapiPagespeedonlineV1Model.Result.t,
     GapiPagespeedonlineV1Model.Result.Version.t)
    GapiLens.t
  val empty : GapiPagespeedonlineV1Model.Result.t
  val render :
    GapiPagespeedonlineV1Model.Result.t -> GapiJson.json_data_model list
  val parse :
    GapiPagespeedonlineV1Model.Result.t ->
    GapiJson.json_data_model -> GapiPagespeedonlineV1Model.Result.t
  val to_data_model :
    GapiPagespeedonlineV1Model.Result.t -> GapiJson.json_data_model
  val of_data_model :
    GapiJson.json_data_model -> GapiPagespeedonlineV1Model.Result.t
end