sig
  module Result :
    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
end