github.com/GoogleCloudPlatform/testgrid@v0.0.174/web/src/gen/pb/api/v1/data.ts (about)

     1  // @generated by protobuf-ts 2.8.3 with parameter long_type_string
     2  // @generated from protobuf file "pb/api/v1/data.proto" (package "testgrid.api.v1", syntax proto3)
     3  // tslint:disable
     4  import { ServiceType } from "@protobuf-ts/runtime-rpc";
     5  import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
     6  import type { IBinaryWriter } from "@protobuf-ts/runtime";
     7  import { WireType } from "@protobuf-ts/runtime";
     8  import type { BinaryReadOptions } from "@protobuf-ts/runtime";
     9  import type { IBinaryReader } from "@protobuf-ts/runtime";
    10  import { UnknownFieldHandler } from "@protobuf-ts/runtime";
    11  import type { PartialMessage } from "@protobuf-ts/runtime";
    12  import { reflectionMergePartial } from "@protobuf-ts/runtime";
    13  import { MESSAGE_TYPE } from "@protobuf-ts/runtime";
    14  import { MessageType } from "@protobuf-ts/runtime";
    15  import { TestInfo_Trend } from "../../summary/summary";
    16  import { AlertInfo } from "../../state/state";
    17  import { Timestamp } from "../../../google/protobuf/timestamp";
    18  import { Notification } from "../../config/config";
    19  /**
    20   * @generated from protobuf message testgrid.api.v1.ListDashboardsRequest
    21   */
    22  export interface ListDashboardsRequest {
    23      /**
    24       * @generated from protobuf field: string scope = 1;
    25       */
    26      scope: string;
    27  }
    28  /**
    29   * @generated from protobuf message testgrid.api.v1.ListDashboardsResponse
    30   */
    31  export interface ListDashboardsResponse {
    32      /**
    33       * @generated from protobuf field: repeated testgrid.api.v1.DashboardResource dashboards = 1;
    34       */
    35      dashboards: DashboardResource[];
    36  }
    37  /**
    38   * @generated from protobuf message testgrid.api.v1.ListDashboardGroupsRequest
    39   */
    40  export interface ListDashboardGroupsRequest {
    41      /**
    42       * @generated from protobuf field: string scope = 1;
    43       */
    44      scope: string;
    45  }
    46  /**
    47   * @generated from protobuf message testgrid.api.v1.ListDashboardGroupsResponse
    48   */
    49  export interface ListDashboardGroupsResponse {
    50      /**
    51       * @generated from protobuf field: repeated testgrid.api.v1.Resource dashboard_groups = 1;
    52       */
    53      dashboardGroups: Resource[];
    54  }
    55  /**
    56   * @generated from protobuf message testgrid.api.v1.ListDashboardTabsRequest
    57   */
    58  export interface ListDashboardTabsRequest {
    59      /**
    60       * @generated from protobuf field: string scope = 1;
    61       */
    62      scope: string;
    63      /**
    64       * @generated from protobuf field: string dashboard = 2;
    65       */
    66      dashboard: string;
    67  }
    68  /**
    69   * @generated from protobuf message testgrid.api.v1.ListDashboardTabsResponse
    70   */
    71  export interface ListDashboardTabsResponse {
    72      /**
    73       * @generated from protobuf field: repeated testgrid.api.v1.Resource dashboard_tabs = 1;
    74       */
    75      dashboardTabs: Resource[];
    76  }
    77  /**
    78   * @generated from protobuf message testgrid.api.v1.GetDashboardRequest
    79   */
    80  export interface GetDashboardRequest {
    81      /**
    82       * @generated from protobuf field: string scope = 1;
    83       */
    84      scope: string;
    85      /**
    86       * @generated from protobuf field: string dashboard = 2;
    87       */
    88      dashboard: string;
    89  }
    90  /**
    91   * @generated from protobuf message testgrid.api.v1.GetDashboardResponse
    92   */
    93  export interface GetDashboardResponse {
    94      /**
    95       * A list of notifications attached to this dashboard.
    96       * This is displayed on any dashboard tab in this dashboard.
    97       *
    98       * @generated from protobuf field: repeated testgrid.config.Notification notifications = 1;
    99       */
   100      notifications: Notification[];
   101      /**
   102       * Control which tab is displayed when first opening a dashboard.
   103       * Defaults to Summary
   104       *
   105       * @generated from protobuf field: string default_tab = 2;
   106       */
   107      defaultTab: string;
   108      /**
   109       * Controls whether to suppress highlighting of failing tabs.
   110       *
   111       * @generated from protobuf field: bool suppress_failing_tabs = 3;
   112       */
   113      suppressFailingTabs: boolean;
   114      /**
   115       * Controls whether to apply special highlighting to result header columns for
   116       * the current day.
   117       *
   118       * @generated from protobuf field: bool highlight_today = 4;
   119       */
   120      highlightToday: boolean;
   121  }
   122  /**
   123   * @generated from protobuf message testgrid.api.v1.GetDashboardGroupRequest
   124   */
   125  export interface GetDashboardGroupRequest {
   126      /**
   127       * @generated from protobuf field: string scope = 1;
   128       */
   129      scope: string;
   130      /**
   131       * @generated from protobuf field: string dashboard_group = 2;
   132       */
   133      dashboardGroup: string;
   134  }
   135  /**
   136   * @generated from protobuf message testgrid.api.v1.GetDashboardGroupResponse
   137   */
   138  export interface GetDashboardGroupResponse {
   139      /**
   140       * @generated from protobuf field: repeated testgrid.api.v1.Resource dashboards = 1;
   141       */
   142      dashboards: Resource[];
   143  }
   144  /**
   145   * @generated from protobuf message testgrid.api.v1.ListHeadersRequest
   146   */
   147  export interface ListHeadersRequest {
   148      /**
   149       * @generated from protobuf field: string scope = 1;
   150       */
   151      scope: string;
   152      /**
   153       * @generated from protobuf field: string dashboard = 2;
   154       */
   155      dashboard: string;
   156      /**
   157       * @generated from protobuf field: string tab = 3;
   158       */
   159      tab: string;
   160  }
   161  /**
   162   * @generated from protobuf message testgrid.api.v1.ListHeadersResponse
   163   */
   164  export interface ListHeadersResponse {
   165      /**
   166       * @generated from protobuf field: repeated testgrid.api.v1.ListHeadersResponse.Header headers = 1;
   167       */
   168      headers: ListHeadersResponse_Header[];
   169  }
   170  /**
   171   * @generated from protobuf message testgrid.api.v1.ListHeadersResponse.Header
   172   */
   173  export interface ListHeadersResponse_Header {
   174      /**
   175       * Unique instance of the job, typically BUILD_NUMBER from prow or a guid
   176       *
   177       * @generated from protobuf field: string build = 1;
   178       */
   179      build: string;
   180      /**
   181       * Name associated with the column (such as the run/invocation ID). No two
   182       * columns should have the same build_id and name. The name field allows the
   183       * display of multiple columns with the same build_id.
   184       *
   185       * @generated from protobuf field: string name = 2;
   186       */
   187      name: string;
   188      /**
   189       * When the build started running
   190       *
   191       * @generated from protobuf field: google.protobuf.Timestamp started = 3;
   192       */
   193      started?: Timestamp;
   194      /**
   195       * Additional custom headers like commit, image used, etc.
   196       *
   197       * @generated from protobuf field: repeated string extra = 4;
   198       */
   199      extra: string[];
   200      /**
   201       * Custom hotlist ids.
   202       *
   203       * @generated from protobuf field: string hotlist_ids = 5;
   204       */
   205      hotlistIds: string;
   206  }
   207  /**
   208   * @generated from protobuf message testgrid.api.v1.ListRowsRequest
   209   */
   210  export interface ListRowsRequest {
   211      /**
   212       * @generated from protobuf field: string scope = 1;
   213       */
   214      scope: string;
   215      /**
   216       * @generated from protobuf field: string dashboard = 2;
   217       */
   218      dashboard: string;
   219      /**
   220       * @generated from protobuf field: string tab = 3;
   221       */
   222      tab: string;
   223  }
   224  /**
   225   * @generated from protobuf message testgrid.api.v1.ListRowsResponse
   226   */
   227  export interface ListRowsResponse {
   228      /**
   229       * @generated from protobuf field: repeated testgrid.api.v1.ListRowsResponse.Row rows = 1;
   230       */
   231      rows: ListRowsResponse_Row[];
   232  }
   233  /**
   234   * @generated from protobuf message testgrid.api.v1.ListRowsResponse.Row
   235   */
   236  export interface ListRowsResponse_Row {
   237      /**
   238       * Display name of the test case
   239       *
   240       * @generated from protobuf field: string name = 1;
   241       */
   242      name: string;
   243      /**
   244       * Historical results of the test case. Unencoded.
   245       *
   246       * @generated from protobuf field: repeated testgrid.api.v1.ListRowsResponse.Cell cells = 2;
   247       */
   248      cells: ListRowsResponse_Cell[];
   249      /**
   250       * Issue or Bug IDs associated with the test case
   251       *
   252       * @generated from protobuf field: repeated string issues = 3;
   253       */
   254      issues: string[];
   255      /**
   256       * Alert associated with the test case
   257       *
   258       * @generated from protobuf field: testgrid.state.AlertInfo alert = 4;
   259       */
   260      alert?: AlertInfo;
   261  }
   262  /**
   263   * @generated from protobuf message testgrid.api.v1.ListRowsResponse.Cell
   264   */
   265  export interface ListRowsResponse_Cell {
   266      /**
   267       * @generated from protobuf field: int32 result = 1;
   268       */
   269      result: number;
   270      /**
   271       * @generated from protobuf field: string cell_id = 2;
   272       */
   273      cellId: string;
   274      /**
   275       * @generated from protobuf field: string message = 3;
   276       */
   277      message: string;
   278      /**
   279       * @generated from protobuf field: string icon = 4;
   280       */
   281      icon: string;
   282  }
   283  /**
   284   * A Resource is a REST resource, often returned by a LIST command
   285   * It includes the name of the resource and a link to the resource
   286   *
   287   * @generated from protobuf message testgrid.api.v1.Resource
   288   */
   289  export interface Resource {
   290      /**
   291       * @generated from protobuf field: string name = 1;
   292       */
   293      name: string;
   294      /**
   295       * @generated from protobuf field: string link = 2;
   296       */
   297      link: string;
   298  }
   299  /**
   300   * A DashboardResource is a REST resource for a dashboard
   301   * It includes the name of the resource, a link, and a dashboard group to which it belongs
   302   *
   303   * @generated from protobuf message testgrid.api.v1.DashboardResource
   304   */
   305  export interface DashboardResource {
   306      /**
   307       * @generated from protobuf field: string name = 1;
   308       */
   309      name: string;
   310      /**
   311       * @generated from protobuf field: string link = 2;
   312       */
   313      link: string;
   314      /**
   315       * Dashboard group to which the dashboard belongs to.
   316       * Empty if dashboard doesn't belong to any group.
   317       *
   318       * @generated from protobuf field: string dashboard_group_name = 3;
   319       */
   320      dashboardGroupName: string;
   321  }
   322  /**
   323   * @generated from protobuf message testgrid.api.v1.ListTabSummariesRequest
   324   */
   325  export interface ListTabSummariesRequest {
   326      /**
   327       * Scope defines the GCS bucket to read the results from.
   328       *
   329       * @generated from protobuf field: string scope = 1;
   330       */
   331      scope: string;
   332      /**
   333       * Name of the dashboard to fetch tab summaries for.
   334       *
   335       * @generated from protobuf field: string dashboard = 2;
   336       */
   337      dashboard: string;
   338  }
   339  /**
   340   * @generated from protobuf message testgrid.api.v1.ListTabSummariesResponse
   341   */
   342  export interface ListTabSummariesResponse {
   343      /**
   344       * List of tab summaries.
   345       *
   346       * @generated from protobuf field: repeated testgrid.api.v1.TabSummary tab_summaries = 1;
   347       */
   348      tabSummaries: TabSummary[];
   349  }
   350  /**
   351   * @generated from protobuf message testgrid.api.v1.GetTabSummaryRequest
   352   */
   353  export interface GetTabSummaryRequest {
   354      /**
   355       * Scope defines the GCS bucket to read the results from.
   356       *
   357       * @generated from protobuf field: string scope = 1;
   358       */
   359      scope: string;
   360      /**
   361       * Name of the dashboard to fetch tab summaries for.
   362       *
   363       * @generated from protobuf field: string dashboard = 2;
   364       */
   365      dashboard: string;
   366      /**
   367       * Name of the particular tab to fetch the summary for.
   368       *
   369       * @generated from protobuf field: string tab = 3;
   370       */
   371      tab: string;
   372  }
   373  /**
   374   * @generated from protobuf message testgrid.api.v1.GetTabSummaryResponse
   375   */
   376  export interface GetTabSummaryResponse {
   377      /**
   378       * Summary for the tab
   379       *
   380       * @generated from protobuf field: testgrid.api.v1.TabSummary tab_summary = 1;
   381       */
   382      tabSummary?: TabSummary;
   383  }
   384  /**
   385   * @generated from protobuf message testgrid.api.v1.ListDashboardSummariesRequest
   386   */
   387  export interface ListDashboardSummariesRequest {
   388      /**
   389       * Scope defines the GCS bucket to read the results from.
   390       *
   391       * @generated from protobuf field: string scope = 1;
   392       */
   393      scope: string;
   394      /**
   395       * Name of the dashboard group to fetch dashboard summaries for.
   396       *
   397       * @generated from protobuf field: string dashboard_group = 2;
   398       */
   399      dashboardGroup: string;
   400  }
   401  /**
   402   * @generated from protobuf message testgrid.api.v1.ListDashboardSummariesResponse
   403   */
   404  export interface ListDashboardSummariesResponse {
   405      /**
   406       * List of dashboard summaries.
   407       *
   408       * @generated from protobuf field: repeated testgrid.api.v1.DashboardSummary dashboard_summaries = 1;
   409       */
   410      dashboardSummaries: DashboardSummary[];
   411  }
   412  /**
   413   * @generated from protobuf message testgrid.api.v1.GetDashboardSummaryRequest
   414   */
   415  export interface GetDashboardSummaryRequest {
   416      /**
   417       * Scope defines the GCS bucket to read the results from.
   418       *
   419       * @generated from protobuf field: string scope = 1;
   420       */
   421      scope: string;
   422      /**
   423       * Name of the dashboard to fetch the summary for.
   424       *
   425       * @generated from protobuf field: string dashboard = 2;
   426       */
   427      dashboard: string;
   428  }
   429  /**
   430   * @generated from protobuf message testgrid.api.v1.GetDashboardSummaryResponse
   431   */
   432  export interface GetDashboardSummaryResponse {
   433      /**
   434       * Summary for the dashboard.
   435       *
   436       * @generated from protobuf field: testgrid.api.v1.DashboardSummary dashboard_summary = 1;
   437       */
   438      dashboardSummary?: DashboardSummary;
   439  }
   440  /**
   441   * Summary for a particular tab.
   442   * Contains the info required to render tab summary in UI.
   443   *
   444   * @generated from protobuf message testgrid.api.v1.TabSummary
   445   */
   446  export interface TabSummary {
   447      /**
   448       * The name of the dashboard this tab belongs to.
   449       *
   450       * @generated from protobuf field: string dashboard_name = 1;
   451       */
   452      dashboardName: string;
   453      /**
   454       * The name of the tab.
   455       *
   456       * @generated from protobuf field: string tab_name = 2;
   457       */
   458      tabName: string;
   459      /**
   460       * Overall status for the dashboard tab (e.g. PASSING, FAILING, etc.)
   461       *
   462       * @generated from protobuf field: string overall_status = 3;
   463       */
   464      overallStatus: string;
   465      /**
   466       * Summary of the status for this dashboard tab.
   467       *
   468       * @generated from protobuf field: string detailed_status_message = 4;
   469       */
   470      detailedStatusMessage: string;
   471      /**
   472       * Timestamp at which tests last ran.
   473       *
   474       * @generated from protobuf field: google.protobuf.Timestamp last_run_timestamp = 5;
   475       */
   476      lastRunTimestamp?: Timestamp;
   477      /**
   478       * Timestamp at which the test group was last updated.
   479       *
   480       * @generated from protobuf field: google.protobuf.Timestamp last_update_timestamp = 6;
   481       */
   482      lastUpdateTimestamp?: Timestamp;
   483      /**
   484       * The ID for the latest passing build.
   485       *
   486       * @generated from protobuf field: string latest_passing_build = 7;
   487       */
   488      latestPassingBuild: string;
   489      /**
   490       * Summarized info on the failing tests.
   491       * In this case, any test which raised an alert and did not suppress it is considered failing.
   492       *
   493       * @generated from protobuf field: testgrid.api.v1.FailuresSummary failures_summary = 8;
   494       */
   495      failuresSummary?: FailuresSummary;
   496      /**
   497       * Summarized info on the tab's healthiness.
   498       *
   499       * @generated from protobuf field: testgrid.api.v1.HealthinessSummary healthiness_summary = 9;
   500       */
   501      healthinessSummary?: HealthinessSummary;
   502  }
   503  /**
   504   * Summarized representation of data from failing test summaries.
   505   * Will be rendered in failures summary component within tab summary.
   506   *
   507   * @generated from protobuf message testgrid.api.v1.FailuresSummary
   508   */
   509  export interface FailuresSummary {
   510      /**
   511       * Top failing tests by fail count.
   512       *
   513       * @generated from protobuf field: repeated testgrid.api.v1.FailingTestInfo top_failing_tests = 1;
   514       */
   515      topFailingTests: FailingTestInfo[];
   516      /**
   517       * Aggregated stats across all failing tests.
   518       *
   519       * @generated from protobuf field: testgrid.api.v1.FailureStats failure_stats = 2;
   520       */
   521      failureStats?: FailureStats;
   522  }
   523  /**
   524   * Subset of data from FailingTestSummary defined in summary.proto.
   525   *
   526   * @generated from protobuf message testgrid.api.v1.FailingTestInfo
   527   */
   528  export interface FailingTestInfo {
   529      /**
   530       * Name of the failing test.
   531       *
   532       * @generated from protobuf field: string display_name = 1;
   533       */
   534      displayName: string;
   535      /**
   536       * number of times the test has failed.
   537       *
   538       * @generated from protobuf field: int32 fail_count = 2;
   539       */
   540      failCount: number;
   541      /**
   542       * Timestamp for the last cycle in which the test passed.
   543       *
   544       * @generated from protobuf field: google.protobuf.Timestamp pass_timestamp = 3;
   545       */
   546      passTimestamp?: Timestamp;
   547      /**
   548       * Timestamp for the first cycle in which the test failed.
   549       *
   550       * @generated from protobuf field: google.protobuf.Timestamp fail_timestamp = 4;
   551       */
   552      failTimestamp?: Timestamp;
   553  }
   554  /**
   555   * Aggregate stats across all failing tests.
   556   *
   557   * @generated from protobuf message testgrid.api.v1.FailureStats
   558   */
   559  export interface FailureStats {
   560      /**
   561       * Number of failing tests for the tab.
   562       *
   563       * @generated from protobuf field: int32 num_failing_tests = 1;
   564       */
   565      numFailingTests: number;
   566  }
   567  /**
   568   * Summarized representation of data from tab's HealthinessInfo.
   569   * Will be rendered in healthiness summary component within tab summary.
   570   *
   571   * @generated from protobuf message testgrid.api.v1.HealthinessSummary
   572   */
   573  export interface HealthinessSummary {
   574      /**
   575       * Top flaky tests (with flakiness > 0) by the current flakiness %.
   576       *
   577       * @generated from protobuf field: repeated testgrid.api.v1.FlakyTestInfo top_flaky_tests = 1;
   578       */
   579      topFlakyTests: FlakyTestInfo[];
   580      /**
   581       * Aggregated healthiness stats for the tab.
   582       *
   583       * @generated from protobuf field: testgrid.api.v1.HealthinessStats healthiness_stats = 2;
   584       */
   585      healthinessStats?: HealthinessStats;
   586  }
   587  /**
   588   * Subset of data from HealthinessInfo.TestInfo defined in summary.proto.
   589   *
   590   * @generated from protobuf message testgrid.api.v1.FlakyTestInfo
   591   */
   592  export interface FlakyTestInfo {
   593      /**
   594       * Name of the flaky test.
   595       *
   596       * @generated from protobuf field: string display_name = 1;
   597       */
   598      displayName: string;
   599      /**
   600       * The flakiness of the test, in % measured out of 100
   601       *
   602       * @generated from protobuf field: float flakiness = 2;
   603       */
   604      flakiness: number;
   605      /**
   606       * The change of flakiness based on the last interval's flakiness
   607       * The interval is set by each tab's config, with a default of 7 days.
   608       *
   609       * @generated from protobuf field: testgrid.summary.TestInfo.Trend change = 3;
   610       */
   611      change: TestInfo_Trend;
   612  }
   613  /**
   614   * Aggregated healthiness stats across the tab.
   615   *
   616   * @generated from protobuf message testgrid.api.v1.HealthinessStats
   617   */
   618  export interface HealthinessStats {
   619      /**
   620       * The start of the time frame that the analysis was run for.
   621       *
   622       * @generated from protobuf field: google.protobuf.Timestamp start = 1;
   623       */
   624      start?: Timestamp;
   625      /**
   626       * The end of the time frame that the analysis was run for.
   627       *
   628       * @generated from protobuf field: google.protobuf.Timestamp end = 2;
   629       */
   630      end?: Timestamp;
   631      /**
   632       * Number of flaky tests in the tab.
   633       *
   634       * @generated from protobuf field: int32 num_flaky_tests = 3;
   635       */
   636      numFlakyTests: number;
   637      /**
   638       * Average flakiness for the current analysis interval.
   639       *
   640       * @generated from protobuf field: float average_flakiness = 4;
   641       */
   642      averageFlakiness: number;
   643      /**
   644       * Average flakiness for the previous analysis interval.
   645       *
   646       * @generated from protobuf field: float previous_flakiness = 5;
   647       */
   648      previousFlakiness: number;
   649  }
   650  /**
   651   * Summary for a particular dashboard.
   652   * Contains the info required to render dashboard summary in UI (done in the dashboard group view).
   653   *
   654   * @generated from protobuf message testgrid.api.v1.DashboardSummary
   655   */
   656  export interface DashboardSummary {
   657      /**
   658       * Name of the dashboard.
   659       *
   660       * @generated from protobuf field: string name = 1;
   661       */
   662      name: string;
   663      /**
   664       * Overall status of the dashboard.
   665       * Will be calculated based on the presence and importance of underlying tabs.
   666       *
   667       * @generated from protobuf field: string overall_status = 2;
   668       */
   669      overallStatus: string;
   670      /**
   671       * Count of the tabs by status.
   672       *
   673       * @generated from protobuf field: map<string, int32> tab_status_count = 3;
   674       */
   675      tabStatusCount: {
   676          [key: string]: number;
   677      };
   678  }
   679  // @generated message type with reflection information, may provide speed optimized methods
   680  class ListDashboardsRequest$Type extends MessageType<ListDashboardsRequest> {
   681      constructor() {
   682          super("testgrid.api.v1.ListDashboardsRequest", [
   683              { no: 1, name: "scope", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
   684          ]);
   685      }
   686      create(value?: PartialMessage<ListDashboardsRequest>): ListDashboardsRequest {
   687          const message = { scope: "" };
   688          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
   689          if (value !== undefined)
   690              reflectionMergePartial<ListDashboardsRequest>(this, message, value);
   691          return message;
   692      }
   693      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListDashboardsRequest): ListDashboardsRequest {
   694          let message = target ?? this.create(), end = reader.pos + length;
   695          while (reader.pos < end) {
   696              let [fieldNo, wireType] = reader.tag();
   697              switch (fieldNo) {
   698                  case /* string scope */ 1:
   699                      message.scope = reader.string();
   700                      break;
   701                  default:
   702                      let u = options.readUnknownField;
   703                      if (u === "throw")
   704                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
   705                      let d = reader.skip(wireType);
   706                      if (u !== false)
   707                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
   708              }
   709          }
   710          return message;
   711      }
   712      internalBinaryWrite(message: ListDashboardsRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
   713          /* string scope = 1; */
   714          if (message.scope !== "")
   715              writer.tag(1, WireType.LengthDelimited).string(message.scope);
   716          let u = options.writeUnknownFields;
   717          if (u !== false)
   718              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
   719          return writer;
   720      }
   721  }
   722  /**
   723   * @generated MessageType for protobuf message testgrid.api.v1.ListDashboardsRequest
   724   */
   725  export const ListDashboardsRequest = new ListDashboardsRequest$Type();
   726  // @generated message type with reflection information, may provide speed optimized methods
   727  class ListDashboardsResponse$Type extends MessageType<ListDashboardsResponse> {
   728      constructor() {
   729          super("testgrid.api.v1.ListDashboardsResponse", [
   730              { no: 1, name: "dashboards", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => DashboardResource }
   731          ]);
   732      }
   733      create(value?: PartialMessage<ListDashboardsResponse>): ListDashboardsResponse {
   734          const message = { dashboards: [] };
   735          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
   736          if (value !== undefined)
   737              reflectionMergePartial<ListDashboardsResponse>(this, message, value);
   738          return message;
   739      }
   740      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListDashboardsResponse): ListDashboardsResponse {
   741          let message = target ?? this.create(), end = reader.pos + length;
   742          while (reader.pos < end) {
   743              let [fieldNo, wireType] = reader.tag();
   744              switch (fieldNo) {
   745                  case /* repeated testgrid.api.v1.DashboardResource dashboards */ 1:
   746                      message.dashboards.push(DashboardResource.internalBinaryRead(reader, reader.uint32(), options));
   747                      break;
   748                  default:
   749                      let u = options.readUnknownField;
   750                      if (u === "throw")
   751                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
   752                      let d = reader.skip(wireType);
   753                      if (u !== false)
   754                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
   755              }
   756          }
   757          return message;
   758      }
   759      internalBinaryWrite(message: ListDashboardsResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
   760          /* repeated testgrid.api.v1.DashboardResource dashboards = 1; */
   761          for (let i = 0; i < message.dashboards.length; i++)
   762              DashboardResource.internalBinaryWrite(message.dashboards[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
   763          let u = options.writeUnknownFields;
   764          if (u !== false)
   765              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
   766          return writer;
   767      }
   768  }
   769  /**
   770   * @generated MessageType for protobuf message testgrid.api.v1.ListDashboardsResponse
   771   */
   772  export const ListDashboardsResponse = new ListDashboardsResponse$Type();
   773  // @generated message type with reflection information, may provide speed optimized methods
   774  class ListDashboardGroupsRequest$Type extends MessageType<ListDashboardGroupsRequest> {
   775      constructor() {
   776          super("testgrid.api.v1.ListDashboardGroupsRequest", [
   777              { no: 1, name: "scope", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
   778          ]);
   779      }
   780      create(value?: PartialMessage<ListDashboardGroupsRequest>): ListDashboardGroupsRequest {
   781          const message = { scope: "" };
   782          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
   783          if (value !== undefined)
   784              reflectionMergePartial<ListDashboardGroupsRequest>(this, message, value);
   785          return message;
   786      }
   787      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListDashboardGroupsRequest): ListDashboardGroupsRequest {
   788          let message = target ?? this.create(), end = reader.pos + length;
   789          while (reader.pos < end) {
   790              let [fieldNo, wireType] = reader.tag();
   791              switch (fieldNo) {
   792                  case /* string scope */ 1:
   793                      message.scope = reader.string();
   794                      break;
   795                  default:
   796                      let u = options.readUnknownField;
   797                      if (u === "throw")
   798                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
   799                      let d = reader.skip(wireType);
   800                      if (u !== false)
   801                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
   802              }
   803          }
   804          return message;
   805      }
   806      internalBinaryWrite(message: ListDashboardGroupsRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
   807          /* string scope = 1; */
   808          if (message.scope !== "")
   809              writer.tag(1, WireType.LengthDelimited).string(message.scope);
   810          let u = options.writeUnknownFields;
   811          if (u !== false)
   812              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
   813          return writer;
   814      }
   815  }
   816  /**
   817   * @generated MessageType for protobuf message testgrid.api.v1.ListDashboardGroupsRequest
   818   */
   819  export const ListDashboardGroupsRequest = new ListDashboardGroupsRequest$Type();
   820  // @generated message type with reflection information, may provide speed optimized methods
   821  class ListDashboardGroupsResponse$Type extends MessageType<ListDashboardGroupsResponse> {
   822      constructor() {
   823          super("testgrid.api.v1.ListDashboardGroupsResponse", [
   824              { no: 1, name: "dashboard_groups", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => Resource }
   825          ]);
   826      }
   827      create(value?: PartialMessage<ListDashboardGroupsResponse>): ListDashboardGroupsResponse {
   828          const message = { dashboardGroups: [] };
   829          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
   830          if (value !== undefined)
   831              reflectionMergePartial<ListDashboardGroupsResponse>(this, message, value);
   832          return message;
   833      }
   834      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListDashboardGroupsResponse): ListDashboardGroupsResponse {
   835          let message = target ?? this.create(), end = reader.pos + length;
   836          while (reader.pos < end) {
   837              let [fieldNo, wireType] = reader.tag();
   838              switch (fieldNo) {
   839                  case /* repeated testgrid.api.v1.Resource dashboard_groups */ 1:
   840                      message.dashboardGroups.push(Resource.internalBinaryRead(reader, reader.uint32(), options));
   841                      break;
   842                  default:
   843                      let u = options.readUnknownField;
   844                      if (u === "throw")
   845                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
   846                      let d = reader.skip(wireType);
   847                      if (u !== false)
   848                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
   849              }
   850          }
   851          return message;
   852      }
   853      internalBinaryWrite(message: ListDashboardGroupsResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
   854          /* repeated testgrid.api.v1.Resource dashboard_groups = 1; */
   855          for (let i = 0; i < message.dashboardGroups.length; i++)
   856              Resource.internalBinaryWrite(message.dashboardGroups[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
   857          let u = options.writeUnknownFields;
   858          if (u !== false)
   859              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
   860          return writer;
   861      }
   862  }
   863  /**
   864   * @generated MessageType for protobuf message testgrid.api.v1.ListDashboardGroupsResponse
   865   */
   866  export const ListDashboardGroupsResponse = new ListDashboardGroupsResponse$Type();
   867  // @generated message type with reflection information, may provide speed optimized methods
   868  class ListDashboardTabsRequest$Type extends MessageType<ListDashboardTabsRequest> {
   869      constructor() {
   870          super("testgrid.api.v1.ListDashboardTabsRequest", [
   871              { no: 1, name: "scope", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
   872              { no: 2, name: "dashboard", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
   873          ]);
   874      }
   875      create(value?: PartialMessage<ListDashboardTabsRequest>): ListDashboardTabsRequest {
   876          const message = { scope: "", dashboard: "" };
   877          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
   878          if (value !== undefined)
   879              reflectionMergePartial<ListDashboardTabsRequest>(this, message, value);
   880          return message;
   881      }
   882      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListDashboardTabsRequest): ListDashboardTabsRequest {
   883          let message = target ?? this.create(), end = reader.pos + length;
   884          while (reader.pos < end) {
   885              let [fieldNo, wireType] = reader.tag();
   886              switch (fieldNo) {
   887                  case /* string scope */ 1:
   888                      message.scope = reader.string();
   889                      break;
   890                  case /* string dashboard */ 2:
   891                      message.dashboard = reader.string();
   892                      break;
   893                  default:
   894                      let u = options.readUnknownField;
   895                      if (u === "throw")
   896                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
   897                      let d = reader.skip(wireType);
   898                      if (u !== false)
   899                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
   900              }
   901          }
   902          return message;
   903      }
   904      internalBinaryWrite(message: ListDashboardTabsRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
   905          /* string scope = 1; */
   906          if (message.scope !== "")
   907              writer.tag(1, WireType.LengthDelimited).string(message.scope);
   908          /* string dashboard = 2; */
   909          if (message.dashboard !== "")
   910              writer.tag(2, WireType.LengthDelimited).string(message.dashboard);
   911          let u = options.writeUnknownFields;
   912          if (u !== false)
   913              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
   914          return writer;
   915      }
   916  }
   917  /**
   918   * @generated MessageType for protobuf message testgrid.api.v1.ListDashboardTabsRequest
   919   */
   920  export const ListDashboardTabsRequest = new ListDashboardTabsRequest$Type();
   921  // @generated message type with reflection information, may provide speed optimized methods
   922  class ListDashboardTabsResponse$Type extends MessageType<ListDashboardTabsResponse> {
   923      constructor() {
   924          super("testgrid.api.v1.ListDashboardTabsResponse", [
   925              { no: 1, name: "dashboard_tabs", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => Resource }
   926          ]);
   927      }
   928      create(value?: PartialMessage<ListDashboardTabsResponse>): ListDashboardTabsResponse {
   929          const message = { dashboardTabs: [] };
   930          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
   931          if (value !== undefined)
   932              reflectionMergePartial<ListDashboardTabsResponse>(this, message, value);
   933          return message;
   934      }
   935      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListDashboardTabsResponse): ListDashboardTabsResponse {
   936          let message = target ?? this.create(), end = reader.pos + length;
   937          while (reader.pos < end) {
   938              let [fieldNo, wireType] = reader.tag();
   939              switch (fieldNo) {
   940                  case /* repeated testgrid.api.v1.Resource dashboard_tabs */ 1:
   941                      message.dashboardTabs.push(Resource.internalBinaryRead(reader, reader.uint32(), options));
   942                      break;
   943                  default:
   944                      let u = options.readUnknownField;
   945                      if (u === "throw")
   946                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
   947                      let d = reader.skip(wireType);
   948                      if (u !== false)
   949                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
   950              }
   951          }
   952          return message;
   953      }
   954      internalBinaryWrite(message: ListDashboardTabsResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
   955          /* repeated testgrid.api.v1.Resource dashboard_tabs = 1; */
   956          for (let i = 0; i < message.dashboardTabs.length; i++)
   957              Resource.internalBinaryWrite(message.dashboardTabs[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
   958          let u = options.writeUnknownFields;
   959          if (u !== false)
   960              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
   961          return writer;
   962      }
   963  }
   964  /**
   965   * @generated MessageType for protobuf message testgrid.api.v1.ListDashboardTabsResponse
   966   */
   967  export const ListDashboardTabsResponse = new ListDashboardTabsResponse$Type();
   968  // @generated message type with reflection information, may provide speed optimized methods
   969  class GetDashboardRequest$Type extends MessageType<GetDashboardRequest> {
   970      constructor() {
   971          super("testgrid.api.v1.GetDashboardRequest", [
   972              { no: 1, name: "scope", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
   973              { no: 2, name: "dashboard", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
   974          ]);
   975      }
   976      create(value?: PartialMessage<GetDashboardRequest>): GetDashboardRequest {
   977          const message = { scope: "", dashboard: "" };
   978          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
   979          if (value !== undefined)
   980              reflectionMergePartial<GetDashboardRequest>(this, message, value);
   981          return message;
   982      }
   983      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetDashboardRequest): GetDashboardRequest {
   984          let message = target ?? this.create(), end = reader.pos + length;
   985          while (reader.pos < end) {
   986              let [fieldNo, wireType] = reader.tag();
   987              switch (fieldNo) {
   988                  case /* string scope */ 1:
   989                      message.scope = reader.string();
   990                      break;
   991                  case /* string dashboard */ 2:
   992                      message.dashboard = reader.string();
   993                      break;
   994                  default:
   995                      let u = options.readUnknownField;
   996                      if (u === "throw")
   997                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
   998                      let d = reader.skip(wireType);
   999                      if (u !== false)
  1000                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  1001              }
  1002          }
  1003          return message;
  1004      }
  1005      internalBinaryWrite(message: GetDashboardRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  1006          /* string scope = 1; */
  1007          if (message.scope !== "")
  1008              writer.tag(1, WireType.LengthDelimited).string(message.scope);
  1009          /* string dashboard = 2; */
  1010          if (message.dashboard !== "")
  1011              writer.tag(2, WireType.LengthDelimited).string(message.dashboard);
  1012          let u = options.writeUnknownFields;
  1013          if (u !== false)
  1014              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  1015          return writer;
  1016      }
  1017  }
  1018  /**
  1019   * @generated MessageType for protobuf message testgrid.api.v1.GetDashboardRequest
  1020   */
  1021  export const GetDashboardRequest = new GetDashboardRequest$Type();
  1022  // @generated message type with reflection information, may provide speed optimized methods
  1023  class GetDashboardResponse$Type extends MessageType<GetDashboardResponse> {
  1024      constructor() {
  1025          super("testgrid.api.v1.GetDashboardResponse", [
  1026              { no: 1, name: "notifications", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => Notification },
  1027              { no: 2, name: "default_tab", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  1028              { no: 3, name: "suppress_failing_tabs", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
  1029              { no: 4, name: "highlight_today", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }
  1030          ]);
  1031      }
  1032      create(value?: PartialMessage<GetDashboardResponse>): GetDashboardResponse {
  1033          const message = { notifications: [], defaultTab: "", suppressFailingTabs: false, highlightToday: false };
  1034          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  1035          if (value !== undefined)
  1036              reflectionMergePartial<GetDashboardResponse>(this, message, value);
  1037          return message;
  1038      }
  1039      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetDashboardResponse): GetDashboardResponse {
  1040          let message = target ?? this.create(), end = reader.pos + length;
  1041          while (reader.pos < end) {
  1042              let [fieldNo, wireType] = reader.tag();
  1043              switch (fieldNo) {
  1044                  case /* repeated testgrid.config.Notification notifications */ 1:
  1045                      message.notifications.push(Notification.internalBinaryRead(reader, reader.uint32(), options));
  1046                      break;
  1047                  case /* string default_tab */ 2:
  1048                      message.defaultTab = reader.string();
  1049                      break;
  1050                  case /* bool suppress_failing_tabs */ 3:
  1051                      message.suppressFailingTabs = reader.bool();
  1052                      break;
  1053                  case /* bool highlight_today */ 4:
  1054                      message.highlightToday = reader.bool();
  1055                      break;
  1056                  default:
  1057                      let u = options.readUnknownField;
  1058                      if (u === "throw")
  1059                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  1060                      let d = reader.skip(wireType);
  1061                      if (u !== false)
  1062                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  1063              }
  1064          }
  1065          return message;
  1066      }
  1067      internalBinaryWrite(message: GetDashboardResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  1068          /* repeated testgrid.config.Notification notifications = 1; */
  1069          for (let i = 0; i < message.notifications.length; i++)
  1070              Notification.internalBinaryWrite(message.notifications[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
  1071          /* string default_tab = 2; */
  1072          if (message.defaultTab !== "")
  1073              writer.tag(2, WireType.LengthDelimited).string(message.defaultTab);
  1074          /* bool suppress_failing_tabs = 3; */
  1075          if (message.suppressFailingTabs !== false)
  1076              writer.tag(3, WireType.Varint).bool(message.suppressFailingTabs);
  1077          /* bool highlight_today = 4; */
  1078          if (message.highlightToday !== false)
  1079              writer.tag(4, WireType.Varint).bool(message.highlightToday);
  1080          let u = options.writeUnknownFields;
  1081          if (u !== false)
  1082              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  1083          return writer;
  1084      }
  1085  }
  1086  /**
  1087   * @generated MessageType for protobuf message testgrid.api.v1.GetDashboardResponse
  1088   */
  1089  export const GetDashboardResponse = new GetDashboardResponse$Type();
  1090  // @generated message type with reflection information, may provide speed optimized methods
  1091  class GetDashboardGroupRequest$Type extends MessageType<GetDashboardGroupRequest> {
  1092      constructor() {
  1093          super("testgrid.api.v1.GetDashboardGroupRequest", [
  1094              { no: 1, name: "scope", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  1095              { no: 2, name: "dashboard_group", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
  1096          ]);
  1097      }
  1098      create(value?: PartialMessage<GetDashboardGroupRequest>): GetDashboardGroupRequest {
  1099          const message = { scope: "", dashboardGroup: "" };
  1100          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  1101          if (value !== undefined)
  1102              reflectionMergePartial<GetDashboardGroupRequest>(this, message, value);
  1103          return message;
  1104      }
  1105      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetDashboardGroupRequest): GetDashboardGroupRequest {
  1106          let message = target ?? this.create(), end = reader.pos + length;
  1107          while (reader.pos < end) {
  1108              let [fieldNo, wireType] = reader.tag();
  1109              switch (fieldNo) {
  1110                  case /* string scope */ 1:
  1111                      message.scope = reader.string();
  1112                      break;
  1113                  case /* string dashboard_group */ 2:
  1114                      message.dashboardGroup = reader.string();
  1115                      break;
  1116                  default:
  1117                      let u = options.readUnknownField;
  1118                      if (u === "throw")
  1119                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  1120                      let d = reader.skip(wireType);
  1121                      if (u !== false)
  1122                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  1123              }
  1124          }
  1125          return message;
  1126      }
  1127      internalBinaryWrite(message: GetDashboardGroupRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  1128          /* string scope = 1; */
  1129          if (message.scope !== "")
  1130              writer.tag(1, WireType.LengthDelimited).string(message.scope);
  1131          /* string dashboard_group = 2; */
  1132          if (message.dashboardGroup !== "")
  1133              writer.tag(2, WireType.LengthDelimited).string(message.dashboardGroup);
  1134          let u = options.writeUnknownFields;
  1135          if (u !== false)
  1136              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  1137          return writer;
  1138      }
  1139  }
  1140  /**
  1141   * @generated MessageType for protobuf message testgrid.api.v1.GetDashboardGroupRequest
  1142   */
  1143  export const GetDashboardGroupRequest = new GetDashboardGroupRequest$Type();
  1144  // @generated message type with reflection information, may provide speed optimized methods
  1145  class GetDashboardGroupResponse$Type extends MessageType<GetDashboardGroupResponse> {
  1146      constructor() {
  1147          super("testgrid.api.v1.GetDashboardGroupResponse", [
  1148              { no: 1, name: "dashboards", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => Resource }
  1149          ]);
  1150      }
  1151      create(value?: PartialMessage<GetDashboardGroupResponse>): GetDashboardGroupResponse {
  1152          const message = { dashboards: [] };
  1153          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  1154          if (value !== undefined)
  1155              reflectionMergePartial<GetDashboardGroupResponse>(this, message, value);
  1156          return message;
  1157      }
  1158      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetDashboardGroupResponse): GetDashboardGroupResponse {
  1159          let message = target ?? this.create(), end = reader.pos + length;
  1160          while (reader.pos < end) {
  1161              let [fieldNo, wireType] = reader.tag();
  1162              switch (fieldNo) {
  1163                  case /* repeated testgrid.api.v1.Resource dashboards */ 1:
  1164                      message.dashboards.push(Resource.internalBinaryRead(reader, reader.uint32(), options));
  1165                      break;
  1166                  default:
  1167                      let u = options.readUnknownField;
  1168                      if (u === "throw")
  1169                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  1170                      let d = reader.skip(wireType);
  1171                      if (u !== false)
  1172                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  1173              }
  1174          }
  1175          return message;
  1176      }
  1177      internalBinaryWrite(message: GetDashboardGroupResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  1178          /* repeated testgrid.api.v1.Resource dashboards = 1; */
  1179          for (let i = 0; i < message.dashboards.length; i++)
  1180              Resource.internalBinaryWrite(message.dashboards[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
  1181          let u = options.writeUnknownFields;
  1182          if (u !== false)
  1183              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  1184          return writer;
  1185      }
  1186  }
  1187  /**
  1188   * @generated MessageType for protobuf message testgrid.api.v1.GetDashboardGroupResponse
  1189   */
  1190  export const GetDashboardGroupResponse = new GetDashboardGroupResponse$Type();
  1191  // @generated message type with reflection information, may provide speed optimized methods
  1192  class ListHeadersRequest$Type extends MessageType<ListHeadersRequest> {
  1193      constructor() {
  1194          super("testgrid.api.v1.ListHeadersRequest", [
  1195              { no: 1, name: "scope", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  1196              { no: 2, name: "dashboard", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  1197              { no: 3, name: "tab", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
  1198          ]);
  1199      }
  1200      create(value?: PartialMessage<ListHeadersRequest>): ListHeadersRequest {
  1201          const message = { scope: "", dashboard: "", tab: "" };
  1202          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  1203          if (value !== undefined)
  1204              reflectionMergePartial<ListHeadersRequest>(this, message, value);
  1205          return message;
  1206      }
  1207      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListHeadersRequest): ListHeadersRequest {
  1208          let message = target ?? this.create(), end = reader.pos + length;
  1209          while (reader.pos < end) {
  1210              let [fieldNo, wireType] = reader.tag();
  1211              switch (fieldNo) {
  1212                  case /* string scope */ 1:
  1213                      message.scope = reader.string();
  1214                      break;
  1215                  case /* string dashboard */ 2:
  1216                      message.dashboard = reader.string();
  1217                      break;
  1218                  case /* string tab */ 3:
  1219                      message.tab = reader.string();
  1220                      break;
  1221                  default:
  1222                      let u = options.readUnknownField;
  1223                      if (u === "throw")
  1224                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  1225                      let d = reader.skip(wireType);
  1226                      if (u !== false)
  1227                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  1228              }
  1229          }
  1230          return message;
  1231      }
  1232      internalBinaryWrite(message: ListHeadersRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  1233          /* string scope = 1; */
  1234          if (message.scope !== "")
  1235              writer.tag(1, WireType.LengthDelimited).string(message.scope);
  1236          /* string dashboard = 2; */
  1237          if (message.dashboard !== "")
  1238              writer.tag(2, WireType.LengthDelimited).string(message.dashboard);
  1239          /* string tab = 3; */
  1240          if (message.tab !== "")
  1241              writer.tag(3, WireType.LengthDelimited).string(message.tab);
  1242          let u = options.writeUnknownFields;
  1243          if (u !== false)
  1244              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  1245          return writer;
  1246      }
  1247  }
  1248  /**
  1249   * @generated MessageType for protobuf message testgrid.api.v1.ListHeadersRequest
  1250   */
  1251  export const ListHeadersRequest = new ListHeadersRequest$Type();
  1252  // @generated message type with reflection information, may provide speed optimized methods
  1253  class ListHeadersResponse$Type extends MessageType<ListHeadersResponse> {
  1254      constructor() {
  1255          super("testgrid.api.v1.ListHeadersResponse", [
  1256              { no: 1, name: "headers", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => ListHeadersResponse_Header }
  1257          ]);
  1258      }
  1259      create(value?: PartialMessage<ListHeadersResponse>): ListHeadersResponse {
  1260          const message = { headers: [] };
  1261          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  1262          if (value !== undefined)
  1263              reflectionMergePartial<ListHeadersResponse>(this, message, value);
  1264          return message;
  1265      }
  1266      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListHeadersResponse): ListHeadersResponse {
  1267          let message = target ?? this.create(), end = reader.pos + length;
  1268          while (reader.pos < end) {
  1269              let [fieldNo, wireType] = reader.tag();
  1270              switch (fieldNo) {
  1271                  case /* repeated testgrid.api.v1.ListHeadersResponse.Header headers */ 1:
  1272                      message.headers.push(ListHeadersResponse_Header.internalBinaryRead(reader, reader.uint32(), options));
  1273                      break;
  1274                  default:
  1275                      let u = options.readUnknownField;
  1276                      if (u === "throw")
  1277                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  1278                      let d = reader.skip(wireType);
  1279                      if (u !== false)
  1280                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  1281              }
  1282          }
  1283          return message;
  1284      }
  1285      internalBinaryWrite(message: ListHeadersResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  1286          /* repeated testgrid.api.v1.ListHeadersResponse.Header headers = 1; */
  1287          for (let i = 0; i < message.headers.length; i++)
  1288              ListHeadersResponse_Header.internalBinaryWrite(message.headers[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
  1289          let u = options.writeUnknownFields;
  1290          if (u !== false)
  1291              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  1292          return writer;
  1293      }
  1294  }
  1295  /**
  1296   * @generated MessageType for protobuf message testgrid.api.v1.ListHeadersResponse
  1297   */
  1298  export const ListHeadersResponse = new ListHeadersResponse$Type();
  1299  // @generated message type with reflection information, may provide speed optimized methods
  1300  class ListHeadersResponse_Header$Type extends MessageType<ListHeadersResponse_Header> {
  1301      constructor() {
  1302          super("testgrid.api.v1.ListHeadersResponse.Header", [
  1303              { no: 1, name: "build", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  1304              { no: 2, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  1305              { no: 3, name: "started", kind: "message", T: () => Timestamp },
  1306              { no: 4, name: "extra", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ },
  1307              { no: 5, name: "hotlist_ids", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
  1308          ]);
  1309      }
  1310      create(value?: PartialMessage<ListHeadersResponse_Header>): ListHeadersResponse_Header {
  1311          const message = { build: "", name: "", extra: [], hotlistIds: "" };
  1312          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  1313          if (value !== undefined)
  1314              reflectionMergePartial<ListHeadersResponse_Header>(this, message, value);
  1315          return message;
  1316      }
  1317      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListHeadersResponse_Header): ListHeadersResponse_Header {
  1318          let message = target ?? this.create(), end = reader.pos + length;
  1319          while (reader.pos < end) {
  1320              let [fieldNo, wireType] = reader.tag();
  1321              switch (fieldNo) {
  1322                  case /* string build */ 1:
  1323                      message.build = reader.string();
  1324                      break;
  1325                  case /* string name */ 2:
  1326                      message.name = reader.string();
  1327                      break;
  1328                  case /* google.protobuf.Timestamp started */ 3:
  1329                      message.started = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.started);
  1330                      break;
  1331                  case /* repeated string extra */ 4:
  1332                      message.extra.push(reader.string());
  1333                      break;
  1334                  case /* string hotlist_ids */ 5:
  1335                      message.hotlistIds = reader.string();
  1336                      break;
  1337                  default:
  1338                      let u = options.readUnknownField;
  1339                      if (u === "throw")
  1340                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  1341                      let d = reader.skip(wireType);
  1342                      if (u !== false)
  1343                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  1344              }
  1345          }
  1346          return message;
  1347      }
  1348      internalBinaryWrite(message: ListHeadersResponse_Header, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  1349          /* string build = 1; */
  1350          if (message.build !== "")
  1351              writer.tag(1, WireType.LengthDelimited).string(message.build);
  1352          /* string name = 2; */
  1353          if (message.name !== "")
  1354              writer.tag(2, WireType.LengthDelimited).string(message.name);
  1355          /* google.protobuf.Timestamp started = 3; */
  1356          if (message.started)
  1357              Timestamp.internalBinaryWrite(message.started, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
  1358          /* repeated string extra = 4; */
  1359          for (let i = 0; i < message.extra.length; i++)
  1360              writer.tag(4, WireType.LengthDelimited).string(message.extra[i]);
  1361          /* string hotlist_ids = 5; */
  1362          if (message.hotlistIds !== "")
  1363              writer.tag(5, WireType.LengthDelimited).string(message.hotlistIds);
  1364          let u = options.writeUnknownFields;
  1365          if (u !== false)
  1366              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  1367          return writer;
  1368      }
  1369  }
  1370  /**
  1371   * @generated MessageType for protobuf message testgrid.api.v1.ListHeadersResponse.Header
  1372   */
  1373  export const ListHeadersResponse_Header = new ListHeadersResponse_Header$Type();
  1374  // @generated message type with reflection information, may provide speed optimized methods
  1375  class ListRowsRequest$Type extends MessageType<ListRowsRequest> {
  1376      constructor() {
  1377          super("testgrid.api.v1.ListRowsRequest", [
  1378              { no: 1, name: "scope", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  1379              { no: 2, name: "dashboard", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  1380              { no: 3, name: "tab", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
  1381          ]);
  1382      }
  1383      create(value?: PartialMessage<ListRowsRequest>): ListRowsRequest {
  1384          const message = { scope: "", dashboard: "", tab: "" };
  1385          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  1386          if (value !== undefined)
  1387              reflectionMergePartial<ListRowsRequest>(this, message, value);
  1388          return message;
  1389      }
  1390      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListRowsRequest): ListRowsRequest {
  1391          let message = target ?? this.create(), end = reader.pos + length;
  1392          while (reader.pos < end) {
  1393              let [fieldNo, wireType] = reader.tag();
  1394              switch (fieldNo) {
  1395                  case /* string scope */ 1:
  1396                      message.scope = reader.string();
  1397                      break;
  1398                  case /* string dashboard */ 2:
  1399                      message.dashboard = reader.string();
  1400                      break;
  1401                  case /* string tab */ 3:
  1402                      message.tab = reader.string();
  1403                      break;
  1404                  default:
  1405                      let u = options.readUnknownField;
  1406                      if (u === "throw")
  1407                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  1408                      let d = reader.skip(wireType);
  1409                      if (u !== false)
  1410                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  1411              }
  1412          }
  1413          return message;
  1414      }
  1415      internalBinaryWrite(message: ListRowsRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  1416          /* string scope = 1; */
  1417          if (message.scope !== "")
  1418              writer.tag(1, WireType.LengthDelimited).string(message.scope);
  1419          /* string dashboard = 2; */
  1420          if (message.dashboard !== "")
  1421              writer.tag(2, WireType.LengthDelimited).string(message.dashboard);
  1422          /* string tab = 3; */
  1423          if (message.tab !== "")
  1424              writer.tag(3, WireType.LengthDelimited).string(message.tab);
  1425          let u = options.writeUnknownFields;
  1426          if (u !== false)
  1427              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  1428          return writer;
  1429      }
  1430  }
  1431  /**
  1432   * @generated MessageType for protobuf message testgrid.api.v1.ListRowsRequest
  1433   */
  1434  export const ListRowsRequest = new ListRowsRequest$Type();
  1435  // @generated message type with reflection information, may provide speed optimized methods
  1436  class ListRowsResponse$Type extends MessageType<ListRowsResponse> {
  1437      constructor() {
  1438          super("testgrid.api.v1.ListRowsResponse", [
  1439              { no: 1, name: "rows", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => ListRowsResponse_Row }
  1440          ]);
  1441      }
  1442      create(value?: PartialMessage<ListRowsResponse>): ListRowsResponse {
  1443          const message = { rows: [] };
  1444          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  1445          if (value !== undefined)
  1446              reflectionMergePartial<ListRowsResponse>(this, message, value);
  1447          return message;
  1448      }
  1449      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListRowsResponse): ListRowsResponse {
  1450          let message = target ?? this.create(), end = reader.pos + length;
  1451          while (reader.pos < end) {
  1452              let [fieldNo, wireType] = reader.tag();
  1453              switch (fieldNo) {
  1454                  case /* repeated testgrid.api.v1.ListRowsResponse.Row rows */ 1:
  1455                      message.rows.push(ListRowsResponse_Row.internalBinaryRead(reader, reader.uint32(), options));
  1456                      break;
  1457                  default:
  1458                      let u = options.readUnknownField;
  1459                      if (u === "throw")
  1460                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  1461                      let d = reader.skip(wireType);
  1462                      if (u !== false)
  1463                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  1464              }
  1465          }
  1466          return message;
  1467      }
  1468      internalBinaryWrite(message: ListRowsResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  1469          /* repeated testgrid.api.v1.ListRowsResponse.Row rows = 1; */
  1470          for (let i = 0; i < message.rows.length; i++)
  1471              ListRowsResponse_Row.internalBinaryWrite(message.rows[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
  1472          let u = options.writeUnknownFields;
  1473          if (u !== false)
  1474              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  1475          return writer;
  1476      }
  1477  }
  1478  /**
  1479   * @generated MessageType for protobuf message testgrid.api.v1.ListRowsResponse
  1480   */
  1481  export const ListRowsResponse = new ListRowsResponse$Type();
  1482  // @generated message type with reflection information, may provide speed optimized methods
  1483  class ListRowsResponse_Row$Type extends MessageType<ListRowsResponse_Row> {
  1484      constructor() {
  1485          super("testgrid.api.v1.ListRowsResponse.Row", [
  1486              { no: 1, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  1487              { no: 2, name: "cells", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => ListRowsResponse_Cell },
  1488              { no: 3, name: "issues", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ },
  1489              { no: 4, name: "alert", kind: "message", T: () => AlertInfo }
  1490          ]);
  1491      }
  1492      create(value?: PartialMessage<ListRowsResponse_Row>): ListRowsResponse_Row {
  1493          const message = { name: "", cells: [], issues: [] };
  1494          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  1495          if (value !== undefined)
  1496              reflectionMergePartial<ListRowsResponse_Row>(this, message, value);
  1497          return message;
  1498      }
  1499      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListRowsResponse_Row): ListRowsResponse_Row {
  1500          let message = target ?? this.create(), end = reader.pos + length;
  1501          while (reader.pos < end) {
  1502              let [fieldNo, wireType] = reader.tag();
  1503              switch (fieldNo) {
  1504                  case /* string name */ 1:
  1505                      message.name = reader.string();
  1506                      break;
  1507                  case /* repeated testgrid.api.v1.ListRowsResponse.Cell cells */ 2:
  1508                      message.cells.push(ListRowsResponse_Cell.internalBinaryRead(reader, reader.uint32(), options));
  1509                      break;
  1510                  case /* repeated string issues */ 3:
  1511                      message.issues.push(reader.string());
  1512                      break;
  1513                  case /* testgrid.state.AlertInfo alert */ 4:
  1514                      message.alert = AlertInfo.internalBinaryRead(reader, reader.uint32(), options, message.alert);
  1515                      break;
  1516                  default:
  1517                      let u = options.readUnknownField;
  1518                      if (u === "throw")
  1519                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  1520                      let d = reader.skip(wireType);
  1521                      if (u !== false)
  1522                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  1523              }
  1524          }
  1525          return message;
  1526      }
  1527      internalBinaryWrite(message: ListRowsResponse_Row, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  1528          /* string name = 1; */
  1529          if (message.name !== "")
  1530              writer.tag(1, WireType.LengthDelimited).string(message.name);
  1531          /* repeated testgrid.api.v1.ListRowsResponse.Cell cells = 2; */
  1532          for (let i = 0; i < message.cells.length; i++)
  1533              ListRowsResponse_Cell.internalBinaryWrite(message.cells[i], writer.tag(2, WireType.LengthDelimited).fork(), options).join();
  1534          /* repeated string issues = 3; */
  1535          for (let i = 0; i < message.issues.length; i++)
  1536              writer.tag(3, WireType.LengthDelimited).string(message.issues[i]);
  1537          /* testgrid.state.AlertInfo alert = 4; */
  1538          if (message.alert)
  1539              AlertInfo.internalBinaryWrite(message.alert, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
  1540          let u = options.writeUnknownFields;
  1541          if (u !== false)
  1542              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  1543          return writer;
  1544      }
  1545  }
  1546  /**
  1547   * @generated MessageType for protobuf message testgrid.api.v1.ListRowsResponse.Row
  1548   */
  1549  export const ListRowsResponse_Row = new ListRowsResponse_Row$Type();
  1550  // @generated message type with reflection information, may provide speed optimized methods
  1551  class ListRowsResponse_Cell$Type extends MessageType<ListRowsResponse_Cell> {
  1552      constructor() {
  1553          super("testgrid.api.v1.ListRowsResponse.Cell", [
  1554              { no: 1, name: "result", kind: "scalar", T: 5 /*ScalarType.INT32*/ },
  1555              { no: 2, name: "cell_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  1556              { no: 3, name: "message", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  1557              { no: 4, name: "icon", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
  1558          ]);
  1559      }
  1560      create(value?: PartialMessage<ListRowsResponse_Cell>): ListRowsResponse_Cell {
  1561          const message = { result: 0, cellId: "", message: "", icon: "" };
  1562          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  1563          if (value !== undefined)
  1564              reflectionMergePartial<ListRowsResponse_Cell>(this, message, value);
  1565          return message;
  1566      }
  1567      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListRowsResponse_Cell): ListRowsResponse_Cell {
  1568          let message = target ?? this.create(), end = reader.pos + length;
  1569          while (reader.pos < end) {
  1570              let [fieldNo, wireType] = reader.tag();
  1571              switch (fieldNo) {
  1572                  case /* int32 result */ 1:
  1573                      message.result = reader.int32();
  1574                      break;
  1575                  case /* string cell_id */ 2:
  1576                      message.cellId = reader.string();
  1577                      break;
  1578                  case /* string message */ 3:
  1579                      message.message = reader.string();
  1580                      break;
  1581                  case /* string icon */ 4:
  1582                      message.icon = reader.string();
  1583                      break;
  1584                  default:
  1585                      let u = options.readUnknownField;
  1586                      if (u === "throw")
  1587                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  1588                      let d = reader.skip(wireType);
  1589                      if (u !== false)
  1590                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  1591              }
  1592          }
  1593          return message;
  1594      }
  1595      internalBinaryWrite(message: ListRowsResponse_Cell, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  1596          /* int32 result = 1; */
  1597          if (message.result !== 0)
  1598              writer.tag(1, WireType.Varint).int32(message.result);
  1599          /* string cell_id = 2; */
  1600          if (message.cellId !== "")
  1601              writer.tag(2, WireType.LengthDelimited).string(message.cellId);
  1602          /* string message = 3; */
  1603          if (message.message !== "")
  1604              writer.tag(3, WireType.LengthDelimited).string(message.message);
  1605          /* string icon = 4; */
  1606          if (message.icon !== "")
  1607              writer.tag(4, WireType.LengthDelimited).string(message.icon);
  1608          let u = options.writeUnknownFields;
  1609          if (u !== false)
  1610              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  1611          return writer;
  1612      }
  1613  }
  1614  /**
  1615   * @generated MessageType for protobuf message testgrid.api.v1.ListRowsResponse.Cell
  1616   */
  1617  export const ListRowsResponse_Cell = new ListRowsResponse_Cell$Type();
  1618  // @generated message type with reflection information, may provide speed optimized methods
  1619  class Resource$Type extends MessageType<Resource> {
  1620      constructor() {
  1621          super("testgrid.api.v1.Resource", [
  1622              { no: 1, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  1623              { no: 2, name: "link", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
  1624          ]);
  1625      }
  1626      create(value?: PartialMessage<Resource>): Resource {
  1627          const message = { name: "", link: "" };
  1628          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  1629          if (value !== undefined)
  1630              reflectionMergePartial<Resource>(this, message, value);
  1631          return message;
  1632      }
  1633      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Resource): Resource {
  1634          let message = target ?? this.create(), end = reader.pos + length;
  1635          while (reader.pos < end) {
  1636              let [fieldNo, wireType] = reader.tag();
  1637              switch (fieldNo) {
  1638                  case /* string name */ 1:
  1639                      message.name = reader.string();
  1640                      break;
  1641                  case /* string link */ 2:
  1642                      message.link = reader.string();
  1643                      break;
  1644                  default:
  1645                      let u = options.readUnknownField;
  1646                      if (u === "throw")
  1647                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  1648                      let d = reader.skip(wireType);
  1649                      if (u !== false)
  1650                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  1651              }
  1652          }
  1653          return message;
  1654      }
  1655      internalBinaryWrite(message: Resource, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  1656          /* string name = 1; */
  1657          if (message.name !== "")
  1658              writer.tag(1, WireType.LengthDelimited).string(message.name);
  1659          /* string link = 2; */
  1660          if (message.link !== "")
  1661              writer.tag(2, WireType.LengthDelimited).string(message.link);
  1662          let u = options.writeUnknownFields;
  1663          if (u !== false)
  1664              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  1665          return writer;
  1666      }
  1667  }
  1668  /**
  1669   * @generated MessageType for protobuf message testgrid.api.v1.Resource
  1670   */
  1671  export const Resource = new Resource$Type();
  1672  // @generated message type with reflection information, may provide speed optimized methods
  1673  class DashboardResource$Type extends MessageType<DashboardResource> {
  1674      constructor() {
  1675          super("testgrid.api.v1.DashboardResource", [
  1676              { no: 1, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  1677              { no: 2, name: "link", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  1678              { no: 3, name: "dashboard_group_name", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
  1679          ]);
  1680      }
  1681      create(value?: PartialMessage<DashboardResource>): DashboardResource {
  1682          const message = { name: "", link: "", dashboardGroupName: "" };
  1683          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  1684          if (value !== undefined)
  1685              reflectionMergePartial<DashboardResource>(this, message, value);
  1686          return message;
  1687      }
  1688      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DashboardResource): DashboardResource {
  1689          let message = target ?? this.create(), end = reader.pos + length;
  1690          while (reader.pos < end) {
  1691              let [fieldNo, wireType] = reader.tag();
  1692              switch (fieldNo) {
  1693                  case /* string name */ 1:
  1694                      message.name = reader.string();
  1695                      break;
  1696                  case /* string link */ 2:
  1697                      message.link = reader.string();
  1698                      break;
  1699                  case /* string dashboard_group_name */ 3:
  1700                      message.dashboardGroupName = reader.string();
  1701                      break;
  1702                  default:
  1703                      let u = options.readUnknownField;
  1704                      if (u === "throw")
  1705                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  1706                      let d = reader.skip(wireType);
  1707                      if (u !== false)
  1708                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  1709              }
  1710          }
  1711          return message;
  1712      }
  1713      internalBinaryWrite(message: DashboardResource, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  1714          /* string name = 1; */
  1715          if (message.name !== "")
  1716              writer.tag(1, WireType.LengthDelimited).string(message.name);
  1717          /* string link = 2; */
  1718          if (message.link !== "")
  1719              writer.tag(2, WireType.LengthDelimited).string(message.link);
  1720          /* string dashboard_group_name = 3; */
  1721          if (message.dashboardGroupName !== "")
  1722              writer.tag(3, WireType.LengthDelimited).string(message.dashboardGroupName);
  1723          let u = options.writeUnknownFields;
  1724          if (u !== false)
  1725              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  1726          return writer;
  1727      }
  1728  }
  1729  /**
  1730   * @generated MessageType for protobuf message testgrid.api.v1.DashboardResource
  1731   */
  1732  export const DashboardResource = new DashboardResource$Type();
  1733  // @generated message type with reflection information, may provide speed optimized methods
  1734  class ListTabSummariesRequest$Type extends MessageType<ListTabSummariesRequest> {
  1735      constructor() {
  1736          super("testgrid.api.v1.ListTabSummariesRequest", [
  1737              { no: 1, name: "scope", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  1738              { no: 2, name: "dashboard", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
  1739          ]);
  1740      }
  1741      create(value?: PartialMessage<ListTabSummariesRequest>): ListTabSummariesRequest {
  1742          const message = { scope: "", dashboard: "" };
  1743          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  1744          if (value !== undefined)
  1745              reflectionMergePartial<ListTabSummariesRequest>(this, message, value);
  1746          return message;
  1747      }
  1748      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListTabSummariesRequest): ListTabSummariesRequest {
  1749          let message = target ?? this.create(), end = reader.pos + length;
  1750          while (reader.pos < end) {
  1751              let [fieldNo, wireType] = reader.tag();
  1752              switch (fieldNo) {
  1753                  case /* string scope */ 1:
  1754                      message.scope = reader.string();
  1755                      break;
  1756                  case /* string dashboard */ 2:
  1757                      message.dashboard = reader.string();
  1758                      break;
  1759                  default:
  1760                      let u = options.readUnknownField;
  1761                      if (u === "throw")
  1762                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  1763                      let d = reader.skip(wireType);
  1764                      if (u !== false)
  1765                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  1766              }
  1767          }
  1768          return message;
  1769      }
  1770      internalBinaryWrite(message: ListTabSummariesRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  1771          /* string scope = 1; */
  1772          if (message.scope !== "")
  1773              writer.tag(1, WireType.LengthDelimited).string(message.scope);
  1774          /* string dashboard = 2; */
  1775          if (message.dashboard !== "")
  1776              writer.tag(2, WireType.LengthDelimited).string(message.dashboard);
  1777          let u = options.writeUnknownFields;
  1778          if (u !== false)
  1779              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  1780          return writer;
  1781      }
  1782  }
  1783  /**
  1784   * @generated MessageType for protobuf message testgrid.api.v1.ListTabSummariesRequest
  1785   */
  1786  export const ListTabSummariesRequest = new ListTabSummariesRequest$Type();
  1787  // @generated message type with reflection information, may provide speed optimized methods
  1788  class ListTabSummariesResponse$Type extends MessageType<ListTabSummariesResponse> {
  1789      constructor() {
  1790          super("testgrid.api.v1.ListTabSummariesResponse", [
  1791              { no: 1, name: "tab_summaries", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => TabSummary }
  1792          ]);
  1793      }
  1794      create(value?: PartialMessage<ListTabSummariesResponse>): ListTabSummariesResponse {
  1795          const message = { tabSummaries: [] };
  1796          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  1797          if (value !== undefined)
  1798              reflectionMergePartial<ListTabSummariesResponse>(this, message, value);
  1799          return message;
  1800      }
  1801      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListTabSummariesResponse): ListTabSummariesResponse {
  1802          let message = target ?? this.create(), end = reader.pos + length;
  1803          while (reader.pos < end) {
  1804              let [fieldNo, wireType] = reader.tag();
  1805              switch (fieldNo) {
  1806                  case /* repeated testgrid.api.v1.TabSummary tab_summaries */ 1:
  1807                      message.tabSummaries.push(TabSummary.internalBinaryRead(reader, reader.uint32(), options));
  1808                      break;
  1809                  default:
  1810                      let u = options.readUnknownField;
  1811                      if (u === "throw")
  1812                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  1813                      let d = reader.skip(wireType);
  1814                      if (u !== false)
  1815                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  1816              }
  1817          }
  1818          return message;
  1819      }
  1820      internalBinaryWrite(message: ListTabSummariesResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  1821          /* repeated testgrid.api.v1.TabSummary tab_summaries = 1; */
  1822          for (let i = 0; i < message.tabSummaries.length; i++)
  1823              TabSummary.internalBinaryWrite(message.tabSummaries[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
  1824          let u = options.writeUnknownFields;
  1825          if (u !== false)
  1826              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  1827          return writer;
  1828      }
  1829  }
  1830  /**
  1831   * @generated MessageType for protobuf message testgrid.api.v1.ListTabSummariesResponse
  1832   */
  1833  export const ListTabSummariesResponse = new ListTabSummariesResponse$Type();
  1834  // @generated message type with reflection information, may provide speed optimized methods
  1835  class GetTabSummaryRequest$Type extends MessageType<GetTabSummaryRequest> {
  1836      constructor() {
  1837          super("testgrid.api.v1.GetTabSummaryRequest", [
  1838              { no: 1, name: "scope", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  1839              { no: 2, name: "dashboard", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  1840              { no: 3, name: "tab", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
  1841          ]);
  1842      }
  1843      create(value?: PartialMessage<GetTabSummaryRequest>): GetTabSummaryRequest {
  1844          const message = { scope: "", dashboard: "", tab: "" };
  1845          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  1846          if (value !== undefined)
  1847              reflectionMergePartial<GetTabSummaryRequest>(this, message, value);
  1848          return message;
  1849      }
  1850      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetTabSummaryRequest): GetTabSummaryRequest {
  1851          let message = target ?? this.create(), end = reader.pos + length;
  1852          while (reader.pos < end) {
  1853              let [fieldNo, wireType] = reader.tag();
  1854              switch (fieldNo) {
  1855                  case /* string scope */ 1:
  1856                      message.scope = reader.string();
  1857                      break;
  1858                  case /* string dashboard */ 2:
  1859                      message.dashboard = reader.string();
  1860                      break;
  1861                  case /* string tab */ 3:
  1862                      message.tab = reader.string();
  1863                      break;
  1864                  default:
  1865                      let u = options.readUnknownField;
  1866                      if (u === "throw")
  1867                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  1868                      let d = reader.skip(wireType);
  1869                      if (u !== false)
  1870                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  1871              }
  1872          }
  1873          return message;
  1874      }
  1875      internalBinaryWrite(message: GetTabSummaryRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  1876          /* string scope = 1; */
  1877          if (message.scope !== "")
  1878              writer.tag(1, WireType.LengthDelimited).string(message.scope);
  1879          /* string dashboard = 2; */
  1880          if (message.dashboard !== "")
  1881              writer.tag(2, WireType.LengthDelimited).string(message.dashboard);
  1882          /* string tab = 3; */
  1883          if (message.tab !== "")
  1884              writer.tag(3, WireType.LengthDelimited).string(message.tab);
  1885          let u = options.writeUnknownFields;
  1886          if (u !== false)
  1887              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  1888          return writer;
  1889      }
  1890  }
  1891  /**
  1892   * @generated MessageType for protobuf message testgrid.api.v1.GetTabSummaryRequest
  1893   */
  1894  export const GetTabSummaryRequest = new GetTabSummaryRequest$Type();
  1895  // @generated message type with reflection information, may provide speed optimized methods
  1896  class GetTabSummaryResponse$Type extends MessageType<GetTabSummaryResponse> {
  1897      constructor() {
  1898          super("testgrid.api.v1.GetTabSummaryResponse", [
  1899              { no: 1, name: "tab_summary", kind: "message", T: () => TabSummary }
  1900          ]);
  1901      }
  1902      create(value?: PartialMessage<GetTabSummaryResponse>): GetTabSummaryResponse {
  1903          const message = {};
  1904          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  1905          if (value !== undefined)
  1906              reflectionMergePartial<GetTabSummaryResponse>(this, message, value);
  1907          return message;
  1908      }
  1909      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetTabSummaryResponse): GetTabSummaryResponse {
  1910          let message = target ?? this.create(), end = reader.pos + length;
  1911          while (reader.pos < end) {
  1912              let [fieldNo, wireType] = reader.tag();
  1913              switch (fieldNo) {
  1914                  case /* testgrid.api.v1.TabSummary tab_summary */ 1:
  1915                      message.tabSummary = TabSummary.internalBinaryRead(reader, reader.uint32(), options, message.tabSummary);
  1916                      break;
  1917                  default:
  1918                      let u = options.readUnknownField;
  1919                      if (u === "throw")
  1920                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  1921                      let d = reader.skip(wireType);
  1922                      if (u !== false)
  1923                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  1924              }
  1925          }
  1926          return message;
  1927      }
  1928      internalBinaryWrite(message: GetTabSummaryResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  1929          /* testgrid.api.v1.TabSummary tab_summary = 1; */
  1930          if (message.tabSummary)
  1931              TabSummary.internalBinaryWrite(message.tabSummary, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
  1932          let u = options.writeUnknownFields;
  1933          if (u !== false)
  1934              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  1935          return writer;
  1936      }
  1937  }
  1938  /**
  1939   * @generated MessageType for protobuf message testgrid.api.v1.GetTabSummaryResponse
  1940   */
  1941  export const GetTabSummaryResponse = new GetTabSummaryResponse$Type();
  1942  // @generated message type with reflection information, may provide speed optimized methods
  1943  class ListDashboardSummariesRequest$Type extends MessageType<ListDashboardSummariesRequest> {
  1944      constructor() {
  1945          super("testgrid.api.v1.ListDashboardSummariesRequest", [
  1946              { no: 1, name: "scope", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  1947              { no: 2, name: "dashboard_group", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
  1948          ]);
  1949      }
  1950      create(value?: PartialMessage<ListDashboardSummariesRequest>): ListDashboardSummariesRequest {
  1951          const message = { scope: "", dashboardGroup: "" };
  1952          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  1953          if (value !== undefined)
  1954              reflectionMergePartial<ListDashboardSummariesRequest>(this, message, value);
  1955          return message;
  1956      }
  1957      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListDashboardSummariesRequest): ListDashboardSummariesRequest {
  1958          let message = target ?? this.create(), end = reader.pos + length;
  1959          while (reader.pos < end) {
  1960              let [fieldNo, wireType] = reader.tag();
  1961              switch (fieldNo) {
  1962                  case /* string scope */ 1:
  1963                      message.scope = reader.string();
  1964                      break;
  1965                  case /* string dashboard_group */ 2:
  1966                      message.dashboardGroup = reader.string();
  1967                      break;
  1968                  default:
  1969                      let u = options.readUnknownField;
  1970                      if (u === "throw")
  1971                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  1972                      let d = reader.skip(wireType);
  1973                      if (u !== false)
  1974                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  1975              }
  1976          }
  1977          return message;
  1978      }
  1979      internalBinaryWrite(message: ListDashboardSummariesRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  1980          /* string scope = 1; */
  1981          if (message.scope !== "")
  1982              writer.tag(1, WireType.LengthDelimited).string(message.scope);
  1983          /* string dashboard_group = 2; */
  1984          if (message.dashboardGroup !== "")
  1985              writer.tag(2, WireType.LengthDelimited).string(message.dashboardGroup);
  1986          let u = options.writeUnknownFields;
  1987          if (u !== false)
  1988              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  1989          return writer;
  1990      }
  1991  }
  1992  /**
  1993   * @generated MessageType for protobuf message testgrid.api.v1.ListDashboardSummariesRequest
  1994   */
  1995  export const ListDashboardSummariesRequest = new ListDashboardSummariesRequest$Type();
  1996  // @generated message type with reflection information, may provide speed optimized methods
  1997  class ListDashboardSummariesResponse$Type extends MessageType<ListDashboardSummariesResponse> {
  1998      constructor() {
  1999          super("testgrid.api.v1.ListDashboardSummariesResponse", [
  2000              { no: 1, name: "dashboard_summaries", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => DashboardSummary }
  2001          ]);
  2002      }
  2003      create(value?: PartialMessage<ListDashboardSummariesResponse>): ListDashboardSummariesResponse {
  2004          const message = { dashboardSummaries: [] };
  2005          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  2006          if (value !== undefined)
  2007              reflectionMergePartial<ListDashboardSummariesResponse>(this, message, value);
  2008          return message;
  2009      }
  2010      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListDashboardSummariesResponse): ListDashboardSummariesResponse {
  2011          let message = target ?? this.create(), end = reader.pos + length;
  2012          while (reader.pos < end) {
  2013              let [fieldNo, wireType] = reader.tag();
  2014              switch (fieldNo) {
  2015                  case /* repeated testgrid.api.v1.DashboardSummary dashboard_summaries */ 1:
  2016                      message.dashboardSummaries.push(DashboardSummary.internalBinaryRead(reader, reader.uint32(), options));
  2017                      break;
  2018                  default:
  2019                      let u = options.readUnknownField;
  2020                      if (u === "throw")
  2021                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  2022                      let d = reader.skip(wireType);
  2023                      if (u !== false)
  2024                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  2025              }
  2026          }
  2027          return message;
  2028      }
  2029      internalBinaryWrite(message: ListDashboardSummariesResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  2030          /* repeated testgrid.api.v1.DashboardSummary dashboard_summaries = 1; */
  2031          for (let i = 0; i < message.dashboardSummaries.length; i++)
  2032              DashboardSummary.internalBinaryWrite(message.dashboardSummaries[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
  2033          let u = options.writeUnknownFields;
  2034          if (u !== false)
  2035              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  2036          return writer;
  2037      }
  2038  }
  2039  /**
  2040   * @generated MessageType for protobuf message testgrid.api.v1.ListDashboardSummariesResponse
  2041   */
  2042  export const ListDashboardSummariesResponse = new ListDashboardSummariesResponse$Type();
  2043  // @generated message type with reflection information, may provide speed optimized methods
  2044  class GetDashboardSummaryRequest$Type extends MessageType<GetDashboardSummaryRequest> {
  2045      constructor() {
  2046          super("testgrid.api.v1.GetDashboardSummaryRequest", [
  2047              { no: 1, name: "scope", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  2048              { no: 2, name: "dashboard", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
  2049          ]);
  2050      }
  2051      create(value?: PartialMessage<GetDashboardSummaryRequest>): GetDashboardSummaryRequest {
  2052          const message = { scope: "", dashboard: "" };
  2053          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  2054          if (value !== undefined)
  2055              reflectionMergePartial<GetDashboardSummaryRequest>(this, message, value);
  2056          return message;
  2057      }
  2058      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetDashboardSummaryRequest): GetDashboardSummaryRequest {
  2059          let message = target ?? this.create(), end = reader.pos + length;
  2060          while (reader.pos < end) {
  2061              let [fieldNo, wireType] = reader.tag();
  2062              switch (fieldNo) {
  2063                  case /* string scope */ 1:
  2064                      message.scope = reader.string();
  2065                      break;
  2066                  case /* string dashboard */ 2:
  2067                      message.dashboard = reader.string();
  2068                      break;
  2069                  default:
  2070                      let u = options.readUnknownField;
  2071                      if (u === "throw")
  2072                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  2073                      let d = reader.skip(wireType);
  2074                      if (u !== false)
  2075                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  2076              }
  2077          }
  2078          return message;
  2079      }
  2080      internalBinaryWrite(message: GetDashboardSummaryRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  2081          /* string scope = 1; */
  2082          if (message.scope !== "")
  2083              writer.tag(1, WireType.LengthDelimited).string(message.scope);
  2084          /* string dashboard = 2; */
  2085          if (message.dashboard !== "")
  2086              writer.tag(2, WireType.LengthDelimited).string(message.dashboard);
  2087          let u = options.writeUnknownFields;
  2088          if (u !== false)
  2089              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  2090          return writer;
  2091      }
  2092  }
  2093  /**
  2094   * @generated MessageType for protobuf message testgrid.api.v1.GetDashboardSummaryRequest
  2095   */
  2096  export const GetDashboardSummaryRequest = new GetDashboardSummaryRequest$Type();
  2097  // @generated message type with reflection information, may provide speed optimized methods
  2098  class GetDashboardSummaryResponse$Type extends MessageType<GetDashboardSummaryResponse> {
  2099      constructor() {
  2100          super("testgrid.api.v1.GetDashboardSummaryResponse", [
  2101              { no: 1, name: "dashboard_summary", kind: "message", T: () => DashboardSummary }
  2102          ]);
  2103      }
  2104      create(value?: PartialMessage<GetDashboardSummaryResponse>): GetDashboardSummaryResponse {
  2105          const message = {};
  2106          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  2107          if (value !== undefined)
  2108              reflectionMergePartial<GetDashboardSummaryResponse>(this, message, value);
  2109          return message;
  2110      }
  2111      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetDashboardSummaryResponse): GetDashboardSummaryResponse {
  2112          let message = target ?? this.create(), end = reader.pos + length;
  2113          while (reader.pos < end) {
  2114              let [fieldNo, wireType] = reader.tag();
  2115              switch (fieldNo) {
  2116                  case /* testgrid.api.v1.DashboardSummary dashboard_summary */ 1:
  2117                      message.dashboardSummary = DashboardSummary.internalBinaryRead(reader, reader.uint32(), options, message.dashboardSummary);
  2118                      break;
  2119                  default:
  2120                      let u = options.readUnknownField;
  2121                      if (u === "throw")
  2122                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  2123                      let d = reader.skip(wireType);
  2124                      if (u !== false)
  2125                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  2126              }
  2127          }
  2128          return message;
  2129      }
  2130      internalBinaryWrite(message: GetDashboardSummaryResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  2131          /* testgrid.api.v1.DashboardSummary dashboard_summary = 1; */
  2132          if (message.dashboardSummary)
  2133              DashboardSummary.internalBinaryWrite(message.dashboardSummary, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
  2134          let u = options.writeUnknownFields;
  2135          if (u !== false)
  2136              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  2137          return writer;
  2138      }
  2139  }
  2140  /**
  2141   * @generated MessageType for protobuf message testgrid.api.v1.GetDashboardSummaryResponse
  2142   */
  2143  export const GetDashboardSummaryResponse = new GetDashboardSummaryResponse$Type();
  2144  // @generated message type with reflection information, may provide speed optimized methods
  2145  class TabSummary$Type extends MessageType<TabSummary> {
  2146      constructor() {
  2147          super("testgrid.api.v1.TabSummary", [
  2148              { no: 1, name: "dashboard_name", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  2149              { no: 2, name: "tab_name", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  2150              { no: 3, name: "overall_status", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  2151              { no: 4, name: "detailed_status_message", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  2152              { no: 5, name: "last_run_timestamp", kind: "message", T: () => Timestamp },
  2153              { no: 6, name: "last_update_timestamp", kind: "message", T: () => Timestamp },
  2154              { no: 7, name: "latest_passing_build", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  2155              { no: 8, name: "failures_summary", kind: "message", T: () => FailuresSummary },
  2156              { no: 9, name: "healthiness_summary", kind: "message", T: () => HealthinessSummary }
  2157          ]);
  2158      }
  2159      create(value?: PartialMessage<TabSummary>): TabSummary {
  2160          const message = { dashboardName: "", tabName: "", overallStatus: "", detailedStatusMessage: "", latestPassingBuild: "" };
  2161          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  2162          if (value !== undefined)
  2163              reflectionMergePartial<TabSummary>(this, message, value);
  2164          return message;
  2165      }
  2166      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: TabSummary): TabSummary {
  2167          let message = target ?? this.create(), end = reader.pos + length;
  2168          while (reader.pos < end) {
  2169              let [fieldNo, wireType] = reader.tag();
  2170              switch (fieldNo) {
  2171                  case /* string dashboard_name */ 1:
  2172                      message.dashboardName = reader.string();
  2173                      break;
  2174                  case /* string tab_name */ 2:
  2175                      message.tabName = reader.string();
  2176                      break;
  2177                  case /* string overall_status */ 3:
  2178                      message.overallStatus = reader.string();
  2179                      break;
  2180                  case /* string detailed_status_message */ 4:
  2181                      message.detailedStatusMessage = reader.string();
  2182                      break;
  2183                  case /* google.protobuf.Timestamp last_run_timestamp */ 5:
  2184                      message.lastRunTimestamp = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.lastRunTimestamp);
  2185                      break;
  2186                  case /* google.protobuf.Timestamp last_update_timestamp */ 6:
  2187                      message.lastUpdateTimestamp = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.lastUpdateTimestamp);
  2188                      break;
  2189                  case /* string latest_passing_build */ 7:
  2190                      message.latestPassingBuild = reader.string();
  2191                      break;
  2192                  case /* testgrid.api.v1.FailuresSummary failures_summary */ 8:
  2193                      message.failuresSummary = FailuresSummary.internalBinaryRead(reader, reader.uint32(), options, message.failuresSummary);
  2194                      break;
  2195                  case /* testgrid.api.v1.HealthinessSummary healthiness_summary */ 9:
  2196                      message.healthinessSummary = HealthinessSummary.internalBinaryRead(reader, reader.uint32(), options, message.healthinessSummary);
  2197                      break;
  2198                  default:
  2199                      let u = options.readUnknownField;
  2200                      if (u === "throw")
  2201                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  2202                      let d = reader.skip(wireType);
  2203                      if (u !== false)
  2204                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  2205              }
  2206          }
  2207          return message;
  2208      }
  2209      internalBinaryWrite(message: TabSummary, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  2210          /* string dashboard_name = 1; */
  2211          if (message.dashboardName !== "")
  2212              writer.tag(1, WireType.LengthDelimited).string(message.dashboardName);
  2213          /* string tab_name = 2; */
  2214          if (message.tabName !== "")
  2215              writer.tag(2, WireType.LengthDelimited).string(message.tabName);
  2216          /* string overall_status = 3; */
  2217          if (message.overallStatus !== "")
  2218              writer.tag(3, WireType.LengthDelimited).string(message.overallStatus);
  2219          /* string detailed_status_message = 4; */
  2220          if (message.detailedStatusMessage !== "")
  2221              writer.tag(4, WireType.LengthDelimited).string(message.detailedStatusMessage);
  2222          /* google.protobuf.Timestamp last_run_timestamp = 5; */
  2223          if (message.lastRunTimestamp)
  2224              Timestamp.internalBinaryWrite(message.lastRunTimestamp, writer.tag(5, WireType.LengthDelimited).fork(), options).join();
  2225          /* google.protobuf.Timestamp last_update_timestamp = 6; */
  2226          if (message.lastUpdateTimestamp)
  2227              Timestamp.internalBinaryWrite(message.lastUpdateTimestamp, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
  2228          /* string latest_passing_build = 7; */
  2229          if (message.latestPassingBuild !== "")
  2230              writer.tag(7, WireType.LengthDelimited).string(message.latestPassingBuild);
  2231          /* testgrid.api.v1.FailuresSummary failures_summary = 8; */
  2232          if (message.failuresSummary)
  2233              FailuresSummary.internalBinaryWrite(message.failuresSummary, writer.tag(8, WireType.LengthDelimited).fork(), options).join();
  2234          /* testgrid.api.v1.HealthinessSummary healthiness_summary = 9; */
  2235          if (message.healthinessSummary)
  2236              HealthinessSummary.internalBinaryWrite(message.healthinessSummary, writer.tag(9, WireType.LengthDelimited).fork(), options).join();
  2237          let u = options.writeUnknownFields;
  2238          if (u !== false)
  2239              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  2240          return writer;
  2241      }
  2242  }
  2243  /**
  2244   * @generated MessageType for protobuf message testgrid.api.v1.TabSummary
  2245   */
  2246  export const TabSummary = new TabSummary$Type();
  2247  // @generated message type with reflection information, may provide speed optimized methods
  2248  class FailuresSummary$Type extends MessageType<FailuresSummary> {
  2249      constructor() {
  2250          super("testgrid.api.v1.FailuresSummary", [
  2251              { no: 1, name: "top_failing_tests", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => FailingTestInfo },
  2252              { no: 2, name: "failure_stats", kind: "message", T: () => FailureStats }
  2253          ]);
  2254      }
  2255      create(value?: PartialMessage<FailuresSummary>): FailuresSummary {
  2256          const message = { topFailingTests: [] };
  2257          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  2258          if (value !== undefined)
  2259              reflectionMergePartial<FailuresSummary>(this, message, value);
  2260          return message;
  2261      }
  2262      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: FailuresSummary): FailuresSummary {
  2263          let message = target ?? this.create(), end = reader.pos + length;
  2264          while (reader.pos < end) {
  2265              let [fieldNo, wireType] = reader.tag();
  2266              switch (fieldNo) {
  2267                  case /* repeated testgrid.api.v1.FailingTestInfo top_failing_tests */ 1:
  2268                      message.topFailingTests.push(FailingTestInfo.internalBinaryRead(reader, reader.uint32(), options));
  2269                      break;
  2270                  case /* testgrid.api.v1.FailureStats failure_stats */ 2:
  2271                      message.failureStats = FailureStats.internalBinaryRead(reader, reader.uint32(), options, message.failureStats);
  2272                      break;
  2273                  default:
  2274                      let u = options.readUnknownField;
  2275                      if (u === "throw")
  2276                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  2277                      let d = reader.skip(wireType);
  2278                      if (u !== false)
  2279                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  2280              }
  2281          }
  2282          return message;
  2283      }
  2284      internalBinaryWrite(message: FailuresSummary, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  2285          /* repeated testgrid.api.v1.FailingTestInfo top_failing_tests = 1; */
  2286          for (let i = 0; i < message.topFailingTests.length; i++)
  2287              FailingTestInfo.internalBinaryWrite(message.topFailingTests[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
  2288          /* testgrid.api.v1.FailureStats failure_stats = 2; */
  2289          if (message.failureStats)
  2290              FailureStats.internalBinaryWrite(message.failureStats, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
  2291          let u = options.writeUnknownFields;
  2292          if (u !== false)
  2293              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  2294          return writer;
  2295      }
  2296  }
  2297  /**
  2298   * @generated MessageType for protobuf message testgrid.api.v1.FailuresSummary
  2299   */
  2300  export const FailuresSummary = new FailuresSummary$Type();
  2301  // @generated message type with reflection information, may provide speed optimized methods
  2302  class FailingTestInfo$Type extends MessageType<FailingTestInfo> {
  2303      constructor() {
  2304          super("testgrid.api.v1.FailingTestInfo", [
  2305              { no: 1, name: "display_name", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  2306              { no: 2, name: "fail_count", kind: "scalar", T: 5 /*ScalarType.INT32*/ },
  2307              { no: 3, name: "pass_timestamp", kind: "message", T: () => Timestamp },
  2308              { no: 4, name: "fail_timestamp", kind: "message", T: () => Timestamp }
  2309          ]);
  2310      }
  2311      create(value?: PartialMessage<FailingTestInfo>): FailingTestInfo {
  2312          const message = { displayName: "", failCount: 0 };
  2313          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  2314          if (value !== undefined)
  2315              reflectionMergePartial<FailingTestInfo>(this, message, value);
  2316          return message;
  2317      }
  2318      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: FailingTestInfo): FailingTestInfo {
  2319          let message = target ?? this.create(), end = reader.pos + length;
  2320          while (reader.pos < end) {
  2321              let [fieldNo, wireType] = reader.tag();
  2322              switch (fieldNo) {
  2323                  case /* string display_name */ 1:
  2324                      message.displayName = reader.string();
  2325                      break;
  2326                  case /* int32 fail_count */ 2:
  2327                      message.failCount = reader.int32();
  2328                      break;
  2329                  case /* google.protobuf.Timestamp pass_timestamp */ 3:
  2330                      message.passTimestamp = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.passTimestamp);
  2331                      break;
  2332                  case /* google.protobuf.Timestamp fail_timestamp */ 4:
  2333                      message.failTimestamp = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.failTimestamp);
  2334                      break;
  2335                  default:
  2336                      let u = options.readUnknownField;
  2337                      if (u === "throw")
  2338                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  2339                      let d = reader.skip(wireType);
  2340                      if (u !== false)
  2341                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  2342              }
  2343          }
  2344          return message;
  2345      }
  2346      internalBinaryWrite(message: FailingTestInfo, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  2347          /* string display_name = 1; */
  2348          if (message.displayName !== "")
  2349              writer.tag(1, WireType.LengthDelimited).string(message.displayName);
  2350          /* int32 fail_count = 2; */
  2351          if (message.failCount !== 0)
  2352              writer.tag(2, WireType.Varint).int32(message.failCount);
  2353          /* google.protobuf.Timestamp pass_timestamp = 3; */
  2354          if (message.passTimestamp)
  2355              Timestamp.internalBinaryWrite(message.passTimestamp, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
  2356          /* google.protobuf.Timestamp fail_timestamp = 4; */
  2357          if (message.failTimestamp)
  2358              Timestamp.internalBinaryWrite(message.failTimestamp, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
  2359          let u = options.writeUnknownFields;
  2360          if (u !== false)
  2361              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  2362          return writer;
  2363      }
  2364  }
  2365  /**
  2366   * @generated MessageType for protobuf message testgrid.api.v1.FailingTestInfo
  2367   */
  2368  export const FailingTestInfo = new FailingTestInfo$Type();
  2369  // @generated message type with reflection information, may provide speed optimized methods
  2370  class FailureStats$Type extends MessageType<FailureStats> {
  2371      constructor() {
  2372          super("testgrid.api.v1.FailureStats", [
  2373              { no: 1, name: "num_failing_tests", kind: "scalar", T: 5 /*ScalarType.INT32*/ }
  2374          ]);
  2375      }
  2376      create(value?: PartialMessage<FailureStats>): FailureStats {
  2377          const message = { numFailingTests: 0 };
  2378          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  2379          if (value !== undefined)
  2380              reflectionMergePartial<FailureStats>(this, message, value);
  2381          return message;
  2382      }
  2383      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: FailureStats): FailureStats {
  2384          let message = target ?? this.create(), end = reader.pos + length;
  2385          while (reader.pos < end) {
  2386              let [fieldNo, wireType] = reader.tag();
  2387              switch (fieldNo) {
  2388                  case /* int32 num_failing_tests */ 1:
  2389                      message.numFailingTests = reader.int32();
  2390                      break;
  2391                  default:
  2392                      let u = options.readUnknownField;
  2393                      if (u === "throw")
  2394                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  2395                      let d = reader.skip(wireType);
  2396                      if (u !== false)
  2397                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  2398              }
  2399          }
  2400          return message;
  2401      }
  2402      internalBinaryWrite(message: FailureStats, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  2403          /* int32 num_failing_tests = 1; */
  2404          if (message.numFailingTests !== 0)
  2405              writer.tag(1, WireType.Varint).int32(message.numFailingTests);
  2406          let u = options.writeUnknownFields;
  2407          if (u !== false)
  2408              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  2409          return writer;
  2410      }
  2411  }
  2412  /**
  2413   * @generated MessageType for protobuf message testgrid.api.v1.FailureStats
  2414   */
  2415  export const FailureStats = new FailureStats$Type();
  2416  // @generated message type with reflection information, may provide speed optimized methods
  2417  class HealthinessSummary$Type extends MessageType<HealthinessSummary> {
  2418      constructor() {
  2419          super("testgrid.api.v1.HealthinessSummary", [
  2420              { no: 1, name: "top_flaky_tests", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => FlakyTestInfo },
  2421              { no: 2, name: "healthiness_stats", kind: "message", T: () => HealthinessStats }
  2422          ]);
  2423      }
  2424      create(value?: PartialMessage<HealthinessSummary>): HealthinessSummary {
  2425          const message = { topFlakyTests: [] };
  2426          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  2427          if (value !== undefined)
  2428              reflectionMergePartial<HealthinessSummary>(this, message, value);
  2429          return message;
  2430      }
  2431      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: HealthinessSummary): HealthinessSummary {
  2432          let message = target ?? this.create(), end = reader.pos + length;
  2433          while (reader.pos < end) {
  2434              let [fieldNo, wireType] = reader.tag();
  2435              switch (fieldNo) {
  2436                  case /* repeated testgrid.api.v1.FlakyTestInfo top_flaky_tests */ 1:
  2437                      message.topFlakyTests.push(FlakyTestInfo.internalBinaryRead(reader, reader.uint32(), options));
  2438                      break;
  2439                  case /* testgrid.api.v1.HealthinessStats healthiness_stats */ 2:
  2440                      message.healthinessStats = HealthinessStats.internalBinaryRead(reader, reader.uint32(), options, message.healthinessStats);
  2441                      break;
  2442                  default:
  2443                      let u = options.readUnknownField;
  2444                      if (u === "throw")
  2445                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  2446                      let d = reader.skip(wireType);
  2447                      if (u !== false)
  2448                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  2449              }
  2450          }
  2451          return message;
  2452      }
  2453      internalBinaryWrite(message: HealthinessSummary, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  2454          /* repeated testgrid.api.v1.FlakyTestInfo top_flaky_tests = 1; */
  2455          for (let i = 0; i < message.topFlakyTests.length; i++)
  2456              FlakyTestInfo.internalBinaryWrite(message.topFlakyTests[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
  2457          /* testgrid.api.v1.HealthinessStats healthiness_stats = 2; */
  2458          if (message.healthinessStats)
  2459              HealthinessStats.internalBinaryWrite(message.healthinessStats, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
  2460          let u = options.writeUnknownFields;
  2461          if (u !== false)
  2462              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  2463          return writer;
  2464      }
  2465  }
  2466  /**
  2467   * @generated MessageType for protobuf message testgrid.api.v1.HealthinessSummary
  2468   */
  2469  export const HealthinessSummary = new HealthinessSummary$Type();
  2470  // @generated message type with reflection information, may provide speed optimized methods
  2471  class FlakyTestInfo$Type extends MessageType<FlakyTestInfo> {
  2472      constructor() {
  2473          super("testgrid.api.v1.FlakyTestInfo", [
  2474              { no: 1, name: "display_name", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  2475              { no: 2, name: "flakiness", kind: "scalar", T: 2 /*ScalarType.FLOAT*/ },
  2476              { no: 3, name: "change", kind: "enum", T: () => ["testgrid.summary.TestInfo.Trend", TestInfo_Trend] }
  2477          ]);
  2478      }
  2479      create(value?: PartialMessage<FlakyTestInfo>): FlakyTestInfo {
  2480          const message = { displayName: "", flakiness: 0, change: 0 };
  2481          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  2482          if (value !== undefined)
  2483              reflectionMergePartial<FlakyTestInfo>(this, message, value);
  2484          return message;
  2485      }
  2486      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: FlakyTestInfo): FlakyTestInfo {
  2487          let message = target ?? this.create(), end = reader.pos + length;
  2488          while (reader.pos < end) {
  2489              let [fieldNo, wireType] = reader.tag();
  2490              switch (fieldNo) {
  2491                  case /* string display_name */ 1:
  2492                      message.displayName = reader.string();
  2493                      break;
  2494                  case /* float flakiness */ 2:
  2495                      message.flakiness = reader.float();
  2496                      break;
  2497                  case /* testgrid.summary.TestInfo.Trend change */ 3:
  2498                      message.change = reader.int32();
  2499                      break;
  2500                  default:
  2501                      let u = options.readUnknownField;
  2502                      if (u === "throw")
  2503                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  2504                      let d = reader.skip(wireType);
  2505                      if (u !== false)
  2506                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  2507              }
  2508          }
  2509          return message;
  2510      }
  2511      internalBinaryWrite(message: FlakyTestInfo, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  2512          /* string display_name = 1; */
  2513          if (message.displayName !== "")
  2514              writer.tag(1, WireType.LengthDelimited).string(message.displayName);
  2515          /* float flakiness = 2; */
  2516          if (message.flakiness !== 0)
  2517              writer.tag(2, WireType.Bit32).float(message.flakiness);
  2518          /* testgrid.summary.TestInfo.Trend change = 3; */
  2519          if (message.change !== 0)
  2520              writer.tag(3, WireType.Varint).int32(message.change);
  2521          let u = options.writeUnknownFields;
  2522          if (u !== false)
  2523              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  2524          return writer;
  2525      }
  2526  }
  2527  /**
  2528   * @generated MessageType for protobuf message testgrid.api.v1.FlakyTestInfo
  2529   */
  2530  export const FlakyTestInfo = new FlakyTestInfo$Type();
  2531  // @generated message type with reflection information, may provide speed optimized methods
  2532  class HealthinessStats$Type extends MessageType<HealthinessStats> {
  2533      constructor() {
  2534          super("testgrid.api.v1.HealthinessStats", [
  2535              { no: 1, name: "start", kind: "message", T: () => Timestamp },
  2536              { no: 2, name: "end", kind: "message", T: () => Timestamp },
  2537              { no: 3, name: "num_flaky_tests", kind: "scalar", T: 5 /*ScalarType.INT32*/ },
  2538              { no: 4, name: "average_flakiness", kind: "scalar", T: 2 /*ScalarType.FLOAT*/ },
  2539              { no: 5, name: "previous_flakiness", kind: "scalar", T: 2 /*ScalarType.FLOAT*/ }
  2540          ]);
  2541      }
  2542      create(value?: PartialMessage<HealthinessStats>): HealthinessStats {
  2543          const message = { numFlakyTests: 0, averageFlakiness: 0, previousFlakiness: 0 };
  2544          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  2545          if (value !== undefined)
  2546              reflectionMergePartial<HealthinessStats>(this, message, value);
  2547          return message;
  2548      }
  2549      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: HealthinessStats): HealthinessStats {
  2550          let message = target ?? this.create(), end = reader.pos + length;
  2551          while (reader.pos < end) {
  2552              let [fieldNo, wireType] = reader.tag();
  2553              switch (fieldNo) {
  2554                  case /* google.protobuf.Timestamp start */ 1:
  2555                      message.start = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.start);
  2556                      break;
  2557                  case /* google.protobuf.Timestamp end */ 2:
  2558                      message.end = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.end);
  2559                      break;
  2560                  case /* int32 num_flaky_tests */ 3:
  2561                      message.numFlakyTests = reader.int32();
  2562                      break;
  2563                  case /* float average_flakiness */ 4:
  2564                      message.averageFlakiness = reader.float();
  2565                      break;
  2566                  case /* float previous_flakiness */ 5:
  2567                      message.previousFlakiness = reader.float();
  2568                      break;
  2569                  default:
  2570                      let u = options.readUnknownField;
  2571                      if (u === "throw")
  2572                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  2573                      let d = reader.skip(wireType);
  2574                      if (u !== false)
  2575                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  2576              }
  2577          }
  2578          return message;
  2579      }
  2580      internalBinaryWrite(message: HealthinessStats, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  2581          /* google.protobuf.Timestamp start = 1; */
  2582          if (message.start)
  2583              Timestamp.internalBinaryWrite(message.start, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
  2584          /* google.protobuf.Timestamp end = 2; */
  2585          if (message.end)
  2586              Timestamp.internalBinaryWrite(message.end, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
  2587          /* int32 num_flaky_tests = 3; */
  2588          if (message.numFlakyTests !== 0)
  2589              writer.tag(3, WireType.Varint).int32(message.numFlakyTests);
  2590          /* float average_flakiness = 4; */
  2591          if (message.averageFlakiness !== 0)
  2592              writer.tag(4, WireType.Bit32).float(message.averageFlakiness);
  2593          /* float previous_flakiness = 5; */
  2594          if (message.previousFlakiness !== 0)
  2595              writer.tag(5, WireType.Bit32).float(message.previousFlakiness);
  2596          let u = options.writeUnknownFields;
  2597          if (u !== false)
  2598              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  2599          return writer;
  2600      }
  2601  }
  2602  /**
  2603   * @generated MessageType for protobuf message testgrid.api.v1.HealthinessStats
  2604   */
  2605  export const HealthinessStats = new HealthinessStats$Type();
  2606  // @generated message type with reflection information, may provide speed optimized methods
  2607  class DashboardSummary$Type extends MessageType<DashboardSummary> {
  2608      constructor() {
  2609          super("testgrid.api.v1.DashboardSummary", [
  2610              { no: 1, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  2611              { no: 2, name: "overall_status", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
  2612              { no: 3, name: "tab_status_count", kind: "map", K: 9 /*ScalarType.STRING*/, V: { kind: "scalar", T: 5 /*ScalarType.INT32*/ } }
  2613          ]);
  2614      }
  2615      create(value?: PartialMessage<DashboardSummary>): DashboardSummary {
  2616          const message = { name: "", overallStatus: "", tabStatusCount: {} };
  2617          globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
  2618          if (value !== undefined)
  2619              reflectionMergePartial<DashboardSummary>(this, message, value);
  2620          return message;
  2621      }
  2622      internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DashboardSummary): DashboardSummary {
  2623          let message = target ?? this.create(), end = reader.pos + length;
  2624          while (reader.pos < end) {
  2625              let [fieldNo, wireType] = reader.tag();
  2626              switch (fieldNo) {
  2627                  case /* string name */ 1:
  2628                      message.name = reader.string();
  2629                      break;
  2630                  case /* string overall_status */ 2:
  2631                      message.overallStatus = reader.string();
  2632                      break;
  2633                  case /* map<string, int32> tab_status_count */ 3:
  2634                      this.binaryReadMap3(message.tabStatusCount, reader, options);
  2635                      break;
  2636                  default:
  2637                      let u = options.readUnknownField;
  2638                      if (u === "throw")
  2639                          throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
  2640                      let d = reader.skip(wireType);
  2641                      if (u !== false)
  2642                          (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
  2643              }
  2644          }
  2645          return message;
  2646      }
  2647      private binaryReadMap3(map: DashboardSummary["tabStatusCount"], reader: IBinaryReader, options: BinaryReadOptions): void {
  2648          let len = reader.uint32(), end = reader.pos + len, key: keyof DashboardSummary["tabStatusCount"] | undefined, val: DashboardSummary["tabStatusCount"][any] | undefined;
  2649          while (reader.pos < end) {
  2650              let [fieldNo, wireType] = reader.tag();
  2651              switch (fieldNo) {
  2652                  case 1:
  2653                      key = reader.string();
  2654                      break;
  2655                  case 2:
  2656                      val = reader.int32();
  2657                      break;
  2658                  default: throw new globalThis.Error("unknown map entry field for field testgrid.api.v1.DashboardSummary.tab_status_count");
  2659              }
  2660          }
  2661          map[key ?? ""] = val ?? 0;
  2662      }
  2663      internalBinaryWrite(message: DashboardSummary, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
  2664          /* string name = 1; */
  2665          if (message.name !== "")
  2666              writer.tag(1, WireType.LengthDelimited).string(message.name);
  2667          /* string overall_status = 2; */
  2668          if (message.overallStatus !== "")
  2669              writer.tag(2, WireType.LengthDelimited).string(message.overallStatus);
  2670          /* map<string, int32> tab_status_count = 3; */
  2671          for (let k of Object.keys(message.tabStatusCount))
  2672              writer.tag(3, WireType.LengthDelimited).fork().tag(1, WireType.LengthDelimited).string(k).tag(2, WireType.Varint).int32(message.tabStatusCount[k]).join();
  2673          let u = options.writeUnknownFields;
  2674          if (u !== false)
  2675              (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
  2676          return writer;
  2677      }
  2678  }
  2679  /**
  2680   * @generated MessageType for protobuf message testgrid.api.v1.DashboardSummary
  2681   */
  2682  export const DashboardSummary = new DashboardSummary$Type();
  2683  /**
  2684   * @generated ServiceType for protobuf service testgrid.api.v1.TestGridData
  2685   */
  2686  export const TestGridData = new ServiceType("testgrid.api.v1.TestGridData", [
  2687      { name: "ListDashboards", options: {}, I: ListDashboardsRequest, O: ListDashboardsResponse },
  2688      { name: "ListDashboardGroups", options: {}, I: ListDashboardGroupsRequest, O: ListDashboardGroupsResponse },
  2689      { name: "ListDashboardTabs", options: {}, I: ListDashboardTabsRequest, O: ListDashboardTabsResponse },
  2690      { name: "GetDashboard", options: {}, I: GetDashboardRequest, O: GetDashboardResponse },
  2691      { name: "GetDashboardGroup", options: {}, I: GetDashboardGroupRequest, O: GetDashboardGroupResponse },
  2692      { name: "ListHeaders", options: {}, I: ListHeadersRequest, O: ListHeadersResponse },
  2693      { name: "ListRows", options: {}, I: ListRowsRequest, O: ListRowsResponse },
  2694      { name: "ListTabSummaries", options: {}, I: ListTabSummariesRequest, O: ListTabSummariesResponse },
  2695      { name: "GetTabSummary", options: {}, I: GetTabSummaryRequest, O: GetTabSummaryResponse },
  2696      { name: "ListDashboardSummaries", options: {}, I: ListDashboardSummariesRequest, O: ListDashboardSummariesResponse },
  2697      { name: "GetDashboardSummary", options: {}, I: GetDashboardSummaryRequest, O: GetDashboardSummaryResponse }
  2698  ]);