diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/.eslintignore b/owl-bot-staging/google-cloud-policytroubleshooter-iam/.eslintignore
new file mode 100644
index 00000000000..cfc348ec4d1
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/.eslintignore
@@ -0,0 +1,7 @@
+**/node_modules
+**/.coverage
+build/
+docs/
+protos/
+system-test/
+samples/generated/
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/.eslintrc.json b/owl-bot-staging/google-cloud-policytroubleshooter-iam/.eslintrc.json
new file mode 100644
index 00000000000..78215349546
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/.eslintrc.json
@@ -0,0 +1,3 @@
+{
+ "extends": "./node_modules/gts"
+}
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/.gitattributes b/owl-bot-staging/google-cloud-policytroubleshooter-iam/.gitattributes
new file mode 100644
index 00000000000..33739cb74e4
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/.gitattributes
@@ -0,0 +1,4 @@
+*.ts text eol=lf
+*.js text eol=lf
+protos/* linguist-generated
+**/api-extractor.json linguist-language=JSON-with-Comments
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/.gitignore b/owl-bot-staging/google-cloud-policytroubleshooter-iam/.gitignore
new file mode 100644
index 00000000000..d4f03a0df2e
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/.gitignore
@@ -0,0 +1,14 @@
+**/*.log
+**/node_modules
+/.coverage
+/coverage
+/.nyc_output
+/docs/
+/out/
+/build/
+system-test/secrets.js
+system-test/*key.json
+*.lock
+.DS_Store
+package-lock.json
+__pycache__
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/.jsdoc.js b/owl-bot-staging/google-cloud-policytroubleshooter-iam/.jsdoc.js
new file mode 100644
index 00000000000..339bd1d5721
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/.jsdoc.js
@@ -0,0 +1,55 @@
+// Copyright 2026 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// ** This file is automatically generated by gapic-generator-typescript. **
+// ** https://github.com/googleapis/gapic-generator-typescript **
+// ** All changes to this file may be overwritten. **
+
+'use strict';
+
+module.exports = {
+ opts: {
+ readme: './README.md',
+ package: './package.json',
+ template: './node_modules/jsdoc-fresh',
+ recurse: true,
+ verbose: true,
+ destination: './docs/'
+ },
+ plugins: [
+ 'plugins/markdown',
+ 'jsdoc-region-tag'
+ ],
+ source: {
+ excludePattern: '(^|\\/|\\\\)[._]',
+ include: [
+ 'build/src',
+ 'protos'
+ ],
+ includePattern: '\\.js$'
+ },
+ templates: {
+ copyright: 'Copyright 2026 Google LLC',
+ includeDate: false,
+ sourceFiles: false,
+ systemName: '@google-cloud/policy-troubleshooter-iam',
+ theme: 'lumen',
+ default: {
+ outputSourceFiles: false
+ }
+ },
+ markdown: {
+ idInHeadings: true
+ }
+};
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/.mocharc.js b/owl-bot-staging/google-cloud-policytroubleshooter-iam/.mocharc.js
new file mode 100644
index 00000000000..5eb34e86c87
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/.mocharc.js
@@ -0,0 +1,33 @@
+// Copyright 2026 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// ** This file is automatically generated by gapic-generator-typescript. **
+// ** https://github.com/googleapis/gapic-generator-typescript **
+// ** All changes to this file may be overwritten. **
+
+const config = {
+ "enable-source-maps": true,
+ "throw-deprecation": true,
+ "timeout": 10000
+}
+if (process.env.MOCHA_THROW_DEPRECATION === 'false') {
+ delete config['throw-deprecation'];
+}
+if (process.env.MOCHA_REPORTER) {
+ config.reporter = process.env.MOCHA_REPORTER;
+}
+if (process.env.MOCHA_REPORTER_OUTPUT) {
+ config['reporter-option'] = `output=${process.env.MOCHA_REPORTER_OUTPUT}`;
+}
+module.exports = config
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/.nycrc b/owl-bot-staging/google-cloud-policytroubleshooter-iam/.nycrc
new file mode 100644
index 00000000000..81a95fc94b0
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/.nycrc
@@ -0,0 +1,24 @@
+{
+ "report-dir": "./.coverage",
+ "reporter": ["text", "lcov"],
+ "exclude": [
+ "**/*-test",
+ "**/.coverage",
+ "**/apis",
+ "**/benchmark",
+ "**/conformance",
+ "**/docs",
+ "**/samples",
+ "**/scripts",
+ "**/protos",
+ "**/test",
+ "**/*.d.ts",
+ ".jsdoc.js",
+ "**/.jsdoc.js",
+ "karma.conf.js",
+ "webpack-tests.config.js",
+ "webpack.config.js"
+ ],
+ "exclude-after-remap": false,
+ "all": true
+}
\ No newline at end of file
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/.prettierignore b/owl-bot-staging/google-cloud-policytroubleshooter-iam/.prettierignore
new file mode 100644
index 00000000000..9340ad9b86d
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/.prettierignore
@@ -0,0 +1,6 @@
+**/node_modules
+**/coverage
+test/fixtures
+build/
+docs/
+protos/
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/.prettierrc.js b/owl-bot-staging/google-cloud-policytroubleshooter-iam/.prettierrc.js
new file mode 100644
index 00000000000..7649ee3c254
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/.prettierrc.js
@@ -0,0 +1,22 @@
+// Copyright 2026 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// ** This file is automatically generated by gapic-generator-typescript. **
+// ** https://github.com/googleapis/gapic-generator-typescript **
+// ** All changes to this file may be overwritten. **
+
+
+module.exports = {
+ ...require('gts/.prettierrc.json')
+}
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/CODE_OF_CONDUCT.md b/owl-bot-staging/google-cloud-policytroubleshooter-iam/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000000..2add2547a81
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/CODE_OF_CONDUCT.md
@@ -0,0 +1,94 @@
+
+# Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to making participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, gender identity and expression, level of
+experience, education, socio-economic status, nationality, personal appearance,
+race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or
+ advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic
+ address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, or to ban temporarily or permanently any
+contributor for other behaviors that they deem inappropriate, threatening,
+offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community. Examples of
+representing a project or community include using an official project e-mail
+address, posting via an official social media account, or acting as an appointed
+representative at an online or offline event. Representation of a project may be
+further defined and clarified by project maintainers.
+
+This Code of Conduct also applies outside the project spaces when the Project
+Steward has a reasonable belief that an individual's behavior may have a
+negative impact on the project or its community.
+
+## Conflict Resolution
+
+We do not believe that all conflict is bad; healthy debate and disagreement
+often yield positive results. However, it is never okay to be disrespectful or
+to engage in behavior that violates the project’s code of conduct.
+
+If you see someone violating the code of conduct, you are encouraged to address
+the behavior directly with those involved. Many issues can be resolved quickly
+and easily, and this gives people more control over the outcome of their
+dispute. If you are unable to resolve the matter for any reason, or if the
+behavior is threatening or harassing, report it. We are dedicated to providing
+an environment where participants feel welcome and safe.
+
+Reports should be directed to *googleapis-stewards@google.com*, the
+Project Steward(s) for *Google Cloud Client Libraries*. It is the Project Steward’s duty to
+receive and address reported violations of the code of conduct. They will then
+work with a committee consisting of representatives from the Open Source
+Programs Office and the Google Open Source Strategy team. If for any reason you
+are uncomfortable reaching out to the Project Steward, please email
+opensource@google.com.
+
+We will investigate every complaint, but you may not receive a direct response.
+We will use our discretion in determining when and how to follow up on reported
+incidents, which may range from not taking action to permanent expulsion from
+the project and project-sponsored spaces. We will notify the accused of the
+report and provide them an opportunity to discuss it before any action is taken.
+The identity of the reporter will be omitted from the details of the report
+supplied to the accused. In potentially harmful situations, such as ongoing
+harassment or threats to anyone's safety, we may take action without notice.
+
+## Attribution
+
+This Code of Conduct is adapted from the Contributor Covenant, version 1.4,
+available at
+https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
\ No newline at end of file
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/CONTRIBUTING.md b/owl-bot-staging/google-cloud-policytroubleshooter-iam/CONTRIBUTING.md
new file mode 100644
index 00000000000..0486f724a95
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/CONTRIBUTING.md
@@ -0,0 +1,76 @@
+# How to become a contributor and submit your own code
+
+**Table of contents**
+
+* [Contributor License Agreements](#contributor-license-agreements)
+* [Contributing a patch](#contributing-a-patch)
+* [Running the tests](#running-the-tests)
+* [Releasing the library](#releasing-the-library)
+
+## Contributor License Agreements
+
+We'd love to accept your sample apps and patches! Before we can take them, we
+have to jump a couple of legal hurdles.
+
+Please fill out either the individual or corporate Contributor License Agreement
+(CLA).
+
+ * If you are an individual writing original source code and you're sure you
+ own the intellectual property, then you'll need to sign an [individual CLA](https://developers.google.com/open-source/cla/individual).
+ * If you work for a company that wants to allow you to contribute your work,
+ then you'll need to sign a [corporate CLA](https://developers.google.com/open-source/cla/corporate).
+
+Follow either of the two links above to access the appropriate CLA and
+instructions for how to sign and return it. Once we receive it, we'll be able to
+accept your pull requests.
+
+## Contributing A Patch
+
+1. Submit an issue describing your proposed change to the repo in question.
+1. The repo owner will respond to your issue promptly.
+1. If your proposed change is accepted, and you haven't already done so, sign a
+ Contributor License Agreement (see details above).
+1. Fork the desired repo, develop and test your code changes.
+1. Ensure that your code adheres to the existing style in the code to which
+ you are contributing.
+1. Ensure that your code has an appropriate set of tests which all pass.
+1. Title your pull request following [Conventional Commits](https://www.conventionalcommits.org/) styling.
+1. Submit a pull request.
+
+### Before you begin
+
+1. [Select or create a Cloud Platform project][projects].
+1. [Enable billing for your project][billing].
+1. [Enable the Iam API][enable_api].
+1. [Set up authentication with a service account][auth] so you can access the
+ API from your local workstation.
+
+
+## Running the tests
+
+1. [Prepare your environment for Node.js setup][setup].
+
+1. Install dependencies:
+
+ npm install
+
+1. Run the tests:
+
+ # Run unit tests.
+ npm test
+
+ # Run sample integration tests.
+ npm run samples-test
+
+ # Run all system tests.
+ npm run system-test
+
+1. Lint (and maybe fix) any changes:
+
+ npm run fix
+
+[setup]: https://cloud.google.com/nodejs/docs/setup
+[projects]: https://console.cloud.google.com/project
+[billing]: https://support.google.com/cloud/answer/6293499#enable-billing
+[enable_api]: https://console.cloud.google.com/flows/enableapi?apiid=policytroubleshooter.googleapis.com
+[auth]: https://cloud.google.com/docs/authentication/getting-started
\ No newline at end of file
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/LICENSE b/owl-bot-staging/google-cloud-policytroubleshooter-iam/LICENSE
new file mode 100644
index 00000000000..d6456956733
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/README.md b/owl-bot-staging/google-cloud-policytroubleshooter-iam/README.md
new file mode 100644
index 00000000000..923d93966ba
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/README.md
@@ -0,0 +1,116 @@
+[//]: # "This README.md file is auto-generated, all changes to this file will be lost."
+[//]: # "The comments you see below are used to generate those parts of the template in later states."
+
+
+# [Policy Troubleshooter API: Nodejs Client][homepage]
+
+This library is considered to be in **preview**. This means it is still a
+work-in-progress and under active development. Any release is subject to
+backwards-incompatible changes at any time.
+
+[](https://www.npmjs.org/package/@google-cloud/policy-troubleshooter-iam)
+
+Policy Troubleshooter API client for Node.js
+
+[//]: # "partials.introduction"
+
+A comprehensive list of changes in each version may be found in
+[the CHANGELOG][homepage_changelog].
+
+* [Policy Troubleshooter API Nodejs Client API Reference](https://cloud.google.com/nodejs/docs/reference/iam/latest)
+* [Policy Troubleshooter API Documentation](https://cloud.google.com/policy-intelligence/docs/troubleshoot-access)
+
+Read more about the client libraries for Cloud APIs, including the older
+Google APIs Client Libraries, in [Client Libraries Explained][explained].
+
+[explained]: https://cloud.google.com/apis/docs/client-libraries-explained
+
+**Table of contents:**
+
+* [Quickstart](#quickstart)
+ * [Before you begin](#before-you-begin)
+ * [Installing the client library](#installing-the-client-library)
+
+* [Versioning](#versioning)
+* [Contributing](#contributing)
+* [License](#license)
+
+## Quickstart
+### Before you begin
+
+1. [Select or create a Cloud Platform project][projects].
+1. [Enable billing for your project][billing].
+1. [Enable the Policy Troubleshooter API API][enable_api].
+1. [Set up authentication][auth] so you can access the
+ API from your local workstation.
+### Installing the client library
+
+```bash
+npm install @google-cloud/policy-troubleshooter-iam
+```
+
+[//]: # "partials.body"
+
+## Samples
+
+Samples are in the [`samples/`][homepage_samples] directory. Each sample's `README.md` has instructions for running its sample.
+
+| Sample | Source Code |
+| --------------------------- | --------------------------------- |
+| troubleshoot iam policy | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-policytroubleshooter-iam/samples/generated/v3/policy_troubleshooter.troubleshoot_iam_policy.js) |
+| cloud | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-policytroubleshooter-iam/samples/generated/v3/snippet_metadata_google.cloud.policytroubleshooter.iam.v3.json) |
+| troubleshoot iam policy | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-policytroubleshooter-iam/samples/generated/v3beta/policy_troubleshooter.troubleshoot_iam_policy.js) |
+| cloud | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-policytroubleshooter-iam/samples/generated/v3beta/snippet_metadata_google.cloud.policytroubleshooter.iam.v3beta.json) |
+
+
+## Supported Node.js Versions
+
+Our client libraries follow the [Node.js release schedule](https://github.com/nodejs/release#release-schedule).
+Libraries are compatible with all current _active_ and _maintenance_ versions of
+Node.js.
+If you are using an end-of-life version of Node.js, we recommend that you update
+as soon as possible to an actively supported LTS version.
+
+Google's client libraries support legacy versions of Node.js runtimes on a
+best-efforts basis with the following warnings:
+
+* Legacy versions are not tested in continuous integration.
+* Some security patches and features cannot be backported.
+* Dependencies cannot be kept up-to-date.
+
+Client libraries targeting some end-of-life versions of Node.js are available, and
+can be installed through npm [dist-tags](https://docs.npmjs.com/cli/dist-tag).
+The dist-tags follow the naming convention `legacy-(version)`.
+For example, `npm install @google-cloud/policy-troubleshooter-iam@legacy-8` installs client libraries
+for versions compatible with Node.js 8.
+
+## Versioning
+
+This library follows [Semantic Versioning](http://semver.org/).
+
+More Information: [Google Cloud Platform Launch Stages][launch_stages]
+
+[launch_stages]: https://cloud.google.com/terms/launch-stages
+
+## Contributing
+
+Contributions welcome! See the [Contributing Guide](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-policytroubleshooter-iam/CONTRIBUTING.md).
+
+Please note that this `README.md`
+and a variety of configuration files in this repository (including `.nycrc` and `tsconfig.json`)
+are generated from a central template.
+
+## License
+
+Apache Version 2.0
+
+See [LICENSE](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-policytroubleshooter-iam/LICENSE)
+
+[shell_img]: https://gstatic.com/cloudssh/images/open-btn.png
+[projects]: https://console.cloud.google.com/project
+[billing]: https://support.google.com/cloud/answer/6293499#enable-billing
+[enable_api]: https://console.cloud.google.com/flows/enableapi?apiid=policytroubleshooter.googleapis.com
+[auth]: https://cloud.google.com/docs/authentication/external/set-up-adc-local
+[homepage_samples]: https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-policytroubleshooter-iam/samples
+[homepage_changelog]: https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-policytroubleshooter-iam/CHANGELOG.md
+[homepage]: https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-policytroubleshooter-iam
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/cloud/policytroubleshooter/iam/v3/troubleshooter.proto b/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/cloud/policytroubleshooter/iam/v3/troubleshooter.proto
new file mode 100644
index 00000000000..5b9eb58213d
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/cloud/policytroubleshooter/iam/v3/troubleshooter.proto
@@ -0,0 +1,757 @@
+// Copyright 2025 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.cloud.policytroubleshooter.iam.v3;
+
+import "google/api/annotations.proto";
+import "google/api/client.proto";
+import "google/api/field_behavior.proto";
+import "google/iam/v1/policy.proto";
+import "google/iam/v2/policy.proto";
+import "google/protobuf/struct.proto";
+import "google/protobuf/timestamp.proto";
+import "google/rpc/status.proto";
+import "google/type/expr.proto";
+
+option cc_enable_arenas = true;
+option csharp_namespace = "Google.Cloud.PolicyTroubleshooter.Iam.V3";
+option go_package = "cloud.google.com/go/policytroubleshooter/iam/apiv3/iampb;iampb";
+option java_multiple_files = true;
+option java_outer_classname = "TroubleshooterProto";
+option java_package = "com.google.cloud.policytroubleshooter.iam.v3";
+option php_namespace = "Google\\Cloud\\PolicyTroubleshooter\\Iam\\V3";
+option ruby_package = "Google::Cloud::PolicyTroubleshooter::Iam::V3";
+
+// IAM Policy Troubleshooter service.
+//
+// This service helps you troubleshoot access issues for Google Cloud resources.
+service PolicyTroubleshooter {
+ option (google.api.default_host) = "policytroubleshooter.googleapis.com";
+ option (google.api.oauth_scopes) =
+ "https://www.googleapis.com/auth/cloud-platform";
+
+ // Checks whether a principal has a specific permission for a specific
+ // resource, and explains why the principal does or doesn't have that
+ // permission.
+ rpc TroubleshootIamPolicy(TroubleshootIamPolicyRequest)
+ returns (TroubleshootIamPolicyResponse) {
+ option (google.api.http) = {
+ post: "/v3/iam:troubleshoot"
+ body: "*"
+ };
+ }
+}
+
+// Whether IAM allow policies gives the principal the permission.
+enum AllowAccessState {
+ // Not specified.
+ ALLOW_ACCESS_STATE_UNSPECIFIED = 0;
+
+ // The allow policy gives the principal the permission.
+ ALLOW_ACCESS_STATE_GRANTED = 1;
+
+ // The allow policy doesn't give the principal the permission.
+ ALLOW_ACCESS_STATE_NOT_GRANTED = 2;
+
+ // The allow policy gives the principal the permission if a condition
+ // expression evaluate to `true`. However, the sender of the request didn't
+ // provide enough context for Policy Troubleshooter to evaluate the condition
+ // expression.
+ ALLOW_ACCESS_STATE_UNKNOWN_CONDITIONAL = 3;
+
+ // The sender of the request doesn't have access to all of the allow policies
+ // that Policy Troubleshooter needs to evaluate the principal's access.
+ ALLOW_ACCESS_STATE_UNKNOWN_INFO = 4;
+}
+
+// Whether IAM deny policies deny the principal the permission.
+enum DenyAccessState {
+ // Not specified.
+ DENY_ACCESS_STATE_UNSPECIFIED = 0;
+
+ // The deny policy denies the principal the permission.
+ DENY_ACCESS_STATE_DENIED = 1;
+
+ // The deny policy doesn't deny the principal the permission.
+ DENY_ACCESS_STATE_NOT_DENIED = 2;
+
+ // The deny policy denies the principal the permission if a condition
+ // expression evaluates to `true`. However, the sender of the request didn't
+ // provide enough context for Policy Troubleshooter to evaluate the condition
+ // expression.
+ DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL = 3;
+
+ // The sender of the request does not have access to all of the deny policies
+ // that Policy Troubleshooter needs to evaluate the principal's access.
+ DENY_ACCESS_STATE_UNKNOWN_INFO = 4;
+}
+
+// Whether a role includes a specific permission.
+enum RolePermissionInclusionState {
+ // Not specified.
+ ROLE_PERMISSION_INCLUSION_STATE_UNSPECIFIED = 0;
+
+ // The permission is included in the role.
+ ROLE_PERMISSION_INCLUDED = 1;
+
+ // The permission is not included in the role.
+ ROLE_PERMISSION_NOT_INCLUDED = 2;
+
+ // The sender of the request is not allowed to access the role definition.
+ ROLE_PERMISSION_UNKNOWN_INFO = 3;
+}
+
+// Whether the permission in the request matches the permission in the policy.
+enum PermissionPatternMatchingState {
+ // Not specified.
+ PERMISSION_PATTERN_MATCHING_STATE_UNSPECIFIED = 0;
+
+ // The permission in the request matches the permission in the policy.
+ PERMISSION_PATTERN_MATCHED = 1;
+
+ // The permission in the request matches the permission in the policy.
+ PERMISSION_PATTERN_NOT_MATCHED = 2;
+}
+
+// Whether the principal in the request matches the principal in the policy.
+enum MembershipMatchingState {
+ // Not specified.
+ MEMBERSHIP_MATCHING_STATE_UNSPECIFIED = 0;
+
+ // The principal in the request matches the principal in the policy. The
+ // principal can be included directly or indirectly:
+ //
+ // * A principal is included directly if that principal is listed in the
+ // role binding.
+ // * A principal is included indirectly if that principal is in a Google
+ // group, Google Workspace account, or Cloud Identity domain that is listed
+ // in the policy.
+ MEMBERSHIP_MATCHED = 1;
+
+ // The principal in the request doesn't match the principal in the policy.
+ MEMBERSHIP_NOT_MATCHED = 2;
+
+ // The principal in the policy is a group or domain, and the sender of the
+ // request doesn't have permission to view whether the principal in the
+ // request is a member of the group or domain.
+ MEMBERSHIP_UNKNOWN_INFO = 3;
+
+ // The principal is an unsupported type.
+ MEMBERSHIP_UNKNOWN_UNSUPPORTED = 4;
+}
+
+// The extent to which a single data point contributes to an overall
+// determination.
+enum HeuristicRelevance {
+ // Not specified.
+ HEURISTIC_RELEVANCE_UNSPECIFIED = 0;
+
+ // The data point has a limited effect on the result. Changing the data point
+ // is unlikely to affect the overall determination.
+ HEURISTIC_RELEVANCE_NORMAL = 1;
+
+ // The data point has a strong effect on the result. Changing the data point
+ // is likely to affect the overall determination.
+ HEURISTIC_RELEVANCE_HIGH = 2;
+}
+
+// Request for
+// [TroubleshootIamPolicy][google.cloud.policytroubleshooter.iam.v3.PolicyTroubleshooter.TroubleshootIamPolicy].
+message TroubleshootIamPolicyRequest {
+ // The information to use for checking whether a principal has a permission
+ // for a resource.
+ AccessTuple access_tuple = 1;
+}
+
+// Response for
+// [TroubleshootIamPolicy][google.cloud.policytroubleshooter.iam.v3.PolicyTroubleshooter.TroubleshootIamPolicy].
+message TroubleshootIamPolicyResponse {
+ // Whether the principal has the permission on the resource.
+ enum OverallAccessState {
+ // Not specified.
+ OVERALL_ACCESS_STATE_UNSPECIFIED = 0;
+
+ // The principal has the permission.
+ CAN_ACCESS = 1;
+
+ // The principal doesn't have the permission.
+ CANNOT_ACCESS = 2;
+
+ // The principal might have the permission, but the sender can't access all
+ // of the information needed to fully evaluate the principal's access.
+ UNKNOWN_INFO = 3;
+
+ // The principal might have the permission, but Policy Troubleshooter can't
+ // fully evaluate the principal's access because the sender didn't provide
+ // the required context to evaluate the condition.
+ UNKNOWN_CONDITIONAL = 4;
+ }
+
+ // Indicates whether the principal has the specified permission for the
+ // specified resource, based on evaluating all types of the applicable IAM
+ // policies.
+ OverallAccessState overall_access_state = 1;
+
+ // The access tuple from the request, including any provided context used to
+ // evaluate the condition.
+ AccessTuple access_tuple = 2;
+
+ // An explanation of how the applicable IAM allow policies affect the final
+ // access state.
+ AllowPolicyExplanation allow_policy_explanation = 3;
+
+ // An explanation of how the applicable IAM deny policies affect the final
+ // access state.
+ DenyPolicyExplanation deny_policy_explanation = 4;
+}
+
+// Information about the principal, resource, and permission to check.
+message AccessTuple {
+ // Required. The email address of the principal whose access you want to
+ // check. For example, `alice@example.com` or
+ // `my-service-account@my-project.iam.gserviceaccount.com`.
+ //
+ // The principal must be a Google Account or a service account. Other types of
+ // principals are not supported.
+ string principal = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The full resource name that identifies the resource. For example,
+ // `//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance`.
+ //
+ // For examples of full resource names for Google Cloud services, see
+ // https://cloud.google.com/iam/help/troubleshooter/full-resource-names.
+ string full_resource_name = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The IAM permission to check for, either in the `v1` permission
+ // format or the `v2` permission format.
+ //
+ // For a complete list of IAM permissions in the `v1` format, see
+ // https://cloud.google.com/iam/help/permissions/reference.
+ //
+ // For a list of IAM permissions in the `v2` format, see
+ // https://cloud.google.com/iam/help/deny/supported-permissions.
+ //
+ // For a complete list of predefined IAM roles and the permissions in each
+ // role, see https://cloud.google.com/iam/help/roles/reference.
+ string permission = 3 [(google.api.field_behavior) = REQUIRED];
+
+ // Output only. The permission that Policy Troubleshooter checked for, in
+ // the `v2` format.
+ string permission_fqdn = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Optional. Additional context for the request, such as the request time or
+ // IP address. This context allows Policy Troubleshooter to troubleshoot
+ // conditional role bindings and deny rules.
+ ConditionContext condition_context = 5
+ [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Additional context for troubleshooting conditional role bindings and deny
+// rules.
+message ConditionContext {
+ // Core attributes for a resource. A resource is an
+ // addressable (named) entity provided by the destination service. For
+ // example, a Compute Engine instance.
+ message Resource {
+ // The name of the service that this resource belongs to, such as
+ // `compute.googleapis.com`. The service name might not match the DNS
+ // hostname that actually serves the request.
+ //
+ // For a full list of resource service values, see
+ // https://cloud.google.com/iam/help/conditions/resource-services
+ string service = 1;
+
+ // The stable identifier (name) of a resource on the `service`. A resource
+ // can be logically identified as `//{resource.service}/{resource.name}`.
+ // Unlike the resource URI, the resource name doesn't contain any protocol
+ // and version information.
+ //
+ // For a list of full resource name formats, see
+ // https://cloud.google.com/iam/help/troubleshooter/full-resource-names
+ string name = 2;
+
+ // The type of the resource, in the format `{service}/{kind}`.
+ //
+ // For a full list of resource type values, see
+ // https://cloud.google.com/iam/help/conditions/resource-types
+ string type = 3;
+ }
+
+ // This message defines attributes for a node that handles a network request.
+ // The node can be either a service or an application that sends, forwards,
+ // or receives the request. Service peers should fill in
+ // `principal` and `labels` as appropriate.
+ message Peer {
+ // The IPv4 or IPv6 address of the peer.
+ string ip = 1;
+
+ // The network port of the peer.
+ int64 port = 2;
+ }
+
+ // This message defines attributes for an HTTP request. If the actual
+ // request is not an HTTP request, the runtime system should try to map
+ // the actual request to an equivalent HTTP request.
+ message Request {
+ // Optional. The timestamp when the destination service receives the first
+ // byte of the request.
+ google.protobuf.Timestamp receive_time = 1
+ [(google.api.field_behavior) = OPTIONAL];
+ }
+
+ // A tag that applies to a resource during policy evaluation. Tags can be
+ // either directly bound to a resource or inherited from its ancestor.
+ // `EffectiveTag` contains the `name` and `namespaced_name` of the tag value
+ // and tag key, with additional fields of `inherited` to indicate the
+ // inheritance status of the effective tag.
+ message EffectiveTag {
+ // Output only. Resource name for TagValue in the format `tagValues/456`.
+ string tag_value = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The namespaced name of the TagValue. Can be in the form
+ // `{organization_id}/{tag_key_short_name}/{tag_value_short_name}` or
+ // `{project_id}/{tag_key_short_name}/{tag_value_short_name}` or
+ // `{project_number}/{tag_key_short_name}/{tag_value_short_name}`.
+ string namespaced_tag_value = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The name of the TagKey, in the format `tagKeys/{id}`, such
+ // as `tagKeys/123`.
+ string tag_key = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The namespaced name of the TagKey. Can be in the form
+ // `{organization_id}/{tag_key_short_name}` or
+ // `{project_id}/{tag_key_short_name}` or
+ // `{project_number}/{tag_key_short_name}`.
+ string namespaced_tag_key = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // The parent name of the tag key.
+ // Must be in the format `organizations/{organization_id}` or
+ // `projects/{project_number}`
+ string tag_key_parent_name = 6;
+
+ // Output only. Indicates the inheritance status of a tag value
+ // attached to the given resource. If the tag value is inherited from one of
+ // the resource's ancestors, inherited will be true. If false, then the tag
+ // value is directly attached to the resource, inherited will be false.
+ bool inherited = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
+ }
+
+ // Represents a target resource that is involved with a network activity.
+ // If multiple resources are involved with an activity, this must be the
+ // primary one.
+ Resource resource = 1;
+
+ // The destination of a network activity, such as accepting a TCP connection.
+ // In a multi-hop network activity, the destination represents the receiver of
+ // the last hop.
+ Peer destination = 2;
+
+ // Represents a network request, such as an HTTP request.
+ Request request = 3;
+
+ // Output only. The effective tags on the resource. The effective tags are
+ // fetched during troubleshooting.
+ repeated EffectiveTag effective_tags = 4
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+}
+
+// Details about how the relevant IAM allow policies affect the final access
+// state.
+message AllowPolicyExplanation {
+ // Indicates whether the principal has the specified permission for the
+ // specified resource, based on evaluating all applicable IAM allow policies.
+ AllowAccessState allow_access_state = 1;
+
+ // List of IAM allow policies that were evaluated to check the principal's
+ // permissions, with annotations to indicate how each policy contributed to
+ // the final result.
+ //
+ // The list of policies includes the policy for the resource itself, as well
+ // as allow policies that are inherited from higher levels of the resource
+ // hierarchy, including the organization, the folder, and the project.
+ //
+ // To learn more about the resource hierarchy, see
+ // https://cloud.google.com/iam/help/resource-hierarchy.
+ repeated ExplainedAllowPolicy explained_policies = 2;
+
+ // The relevance of the allow policy type to the overall access state.
+ HeuristicRelevance relevance = 3;
+}
+
+// Details about how a specific IAM allow policy contributed to the final access
+// state.
+message ExplainedAllowPolicy {
+ // Required. Indicates whether _this policy_ provides the specified permission
+ // to the specified principal for the specified resource.
+ //
+ // This field does _not_ indicate whether the principal actually has the
+ // permission for the resource. There might be another policy that overrides
+ // this policy. To determine whether the principal actually has the
+ // permission, use the `overall_access_state` field in the
+ // [TroubleshootIamPolicyResponse][google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse].
+ AllowAccessState allow_access_state = 1
+ [(google.api.field_behavior) = REQUIRED];
+
+ // The full resource name that identifies the resource. For example,
+ // `//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance`.
+ //
+ // If the sender of the request does not have access to the policy, this field
+ // is omitted.
+ //
+ // For examples of full resource names for Google Cloud services, see
+ // https://cloud.google.com/iam/help/troubleshooter/full-resource-names.
+ string full_resource_name = 2;
+
+ // Details about how each role binding in the policy affects the principal's
+ // ability, or inability, to use the permission for the resource. The order of
+ // the role bindings matches the role binding order in the policy.
+ //
+ // If the sender of the request does not have access to the policy, this field
+ // is omitted.
+ repeated AllowBindingExplanation binding_explanations = 3;
+
+ // The relevance of this policy to the overall access state in the
+ // [TroubleshootIamPolicyResponse][google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse].
+ //
+ // If the sender of the request does not have access to the policy, this field
+ // is omitted.
+ HeuristicRelevance relevance = 4;
+
+ // The IAM allow policy attached to the resource.
+ //
+ // If the sender of the request does not have access to the policy, this field
+ // is empty.
+ google.iam.v1.Policy policy = 5;
+}
+
+// Details about how a role binding in an allow policy affects a principal's
+// ability to use a permission.
+message AllowBindingExplanation {
+ // Details about whether the role binding includes the principal.
+ message AnnotatedAllowMembership {
+ // Indicates whether the role binding includes the principal.
+ MembershipMatchingState membership = 1;
+
+ // The relevance of the principal's status to the overall determination for
+ // the role binding.
+ HeuristicRelevance relevance = 2;
+ }
+
+ // Required. Indicates whether _this role binding_ gives the specified
+ // permission to the specified principal on the specified resource.
+ //
+ // This field does _not_ indicate whether the principal actually has the
+ // permission on the resource. There might be another role binding that
+ // overrides this role binding. To determine whether the principal actually
+ // has the permission, use the `overall_access_state` field in the
+ // [TroubleshootIamPolicyResponse][google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse].
+ AllowAccessState allow_access_state = 1
+ [(google.api.field_behavior) = REQUIRED];
+
+ // The role that this role binding grants. For example,
+ // `roles/compute.admin`.
+ //
+ // For a complete list of predefined IAM roles, as well as the permissions in
+ // each role, see https://cloud.google.com/iam/help/roles/reference.
+ string role = 2;
+
+ // Indicates whether the role granted by this role binding contains the
+ // specified permission.
+ RolePermissionInclusionState role_permission = 3;
+
+ // The relevance of the permission's existence, or nonexistence, in the role
+ // to the overall determination for the entire policy.
+ HeuristicRelevance role_permission_relevance = 4;
+
+ // The combined result of all memberships. Indicates if the principal is
+ // included in any role binding, either directly or indirectly.
+ AnnotatedAllowMembership combined_membership = 5;
+
+ // Indicates whether each role binding includes the principal specified in the
+ // request, either directly or indirectly. Each key identifies a principal in
+ // the role binding, and each value indicates whether the principal in the
+ // role binding includes the principal in the request.
+ //
+ // For example, suppose that a role binding includes the following principals:
+ //
+ // * `user:alice@example.com`
+ // * `group:product-eng@example.com`
+ //
+ // You want to troubleshoot access for `user:bob@example.com`. This user is a
+ // member of the group `group:product-eng@example.com`.
+ //
+ // For the first principal in the role binding, the key is
+ // `user:alice@example.com`, and the `membership` field in the value is set to
+ // `NOT_INCLUDED`.
+ //
+ // For the second principal in the role binding, the key is
+ // `group:product-eng@example.com`, and the `membership` field in the value is
+ // set to `INCLUDED`.
+ map memberships = 6;
+
+ // The relevance of this role binding to the overall determination for the
+ // entire policy.
+ HeuristicRelevance relevance = 7;
+
+ // A condition expression that specifies when the role binding grants access.
+ //
+ // To learn about IAM Conditions, see
+ // https://cloud.google.com/iam/help/conditions/overview.
+ google.type.Expr condition = 8;
+
+ // Condition evaluation state for this role binding.
+ ConditionExplanation condition_explanation = 9;
+}
+
+// Details about how the relevant IAM deny policies affect the final access
+// state.
+message DenyPolicyExplanation {
+ // Indicates whether the principal is denied the specified permission for
+ // the specified resource, based on evaluating all applicable IAM deny
+ // policies.
+ DenyAccessState deny_access_state = 1;
+
+ // List of resources with IAM deny policies that were evaluated to check the
+ // principal's denied permissions, with annotations to indicate how each
+ // policy contributed to the final result.
+ //
+ // The list of resources includes the policy for the resource itself, as well
+ // as policies that are inherited from higher levels of the resource
+ // hierarchy, including the organization, the folder, and the project. The
+ // order of the resources starts from the resource and climbs up the resource
+ // hierarchy.
+ //
+ // To learn more about the resource hierarchy, see
+ // https://cloud.google.com/iam/help/resource-hierarchy.
+ repeated ExplainedDenyResource explained_resources = 2;
+
+ // The relevance of the deny policy result to the overall access state.
+ HeuristicRelevance relevance = 3;
+
+ // Indicates whether the permission to troubleshoot is supported in deny
+ // policies.
+ bool permission_deniable = 4;
+}
+
+// Details about how a specific resource contributed to the deny policy
+// evaluation.
+message ExplainedDenyResource {
+ // Required. Indicates whether any policies attached to _this resource_ deny
+ // the specific permission to the specified principal for the specified
+ // resource.
+ //
+ // This field does _not_ indicate whether the principal actually has the
+ // permission for the resource. There might be another policy that overrides
+ // this policy. To determine whether the principal actually has the
+ // permission, use the `overall_access_state` field in the
+ // [TroubleshootIamPolicyResponse][google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse].
+ DenyAccessState deny_access_state = 1
+ [(google.api.field_behavior) = REQUIRED];
+
+ // The full resource name that identifies the resource. For example,
+ // `//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance`.
+ //
+ // If the sender of the request does not have access to the policy, this field
+ // is omitted.
+ //
+ // For examples of full resource names for Google Cloud services, see
+ // https://cloud.google.com/iam/help/troubleshooter/full-resource-names.
+ string full_resource_name = 2;
+
+ // List of IAM deny policies that were evaluated to check the principal's
+ // denied permissions, with annotations to indicate how each policy
+ // contributed to the final result.
+ repeated ExplainedDenyPolicy explained_policies = 3;
+
+ // The relevance of this policy to the overall access state in the
+ // [TroubleshootIamPolicyResponse][google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse].
+ //
+ // If the sender of the request does not have access to the policy, this field
+ // is omitted.
+ HeuristicRelevance relevance = 4;
+}
+
+// Details about how a specific IAM deny policy [Policy][google.iam.v2.Policy]
+// contributed to the access check.
+message ExplainedDenyPolicy {
+ // Required. Indicates whether _this policy_ denies the specified permission
+ // to the specified principal for the specified resource.
+ //
+ // This field does _not_ indicate whether the principal actually has the
+ // permission for the resource. There might be another policy that overrides
+ // this policy. To determine whether the principal actually has the
+ // permission, use the `overall_access_state` field in the
+ // [TroubleshootIamPolicyResponse][google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse].
+ DenyAccessState deny_access_state = 1
+ [(google.api.field_behavior) = REQUIRED];
+
+ // The IAM deny policy attached to the resource.
+ //
+ // If the sender of the request does not have access to the policy, this field
+ // is omitted.
+ google.iam.v2.Policy policy = 2;
+
+ // Details about how each rule in the policy affects the principal's inability
+ // to use the permission for the resource. The order of the deny rule matches
+ // the order of the rules in the deny policy.
+ //
+ // If the sender of the request does not have access to the policy, this field
+ // is omitted.
+ repeated DenyRuleExplanation rule_explanations = 3;
+
+ // The relevance of this policy to the overall access state in the
+ // [TroubleshootIamPolicyResponse][google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse].
+ //
+ // If the sender of the request does not have access to the policy, this field
+ // is omitted.
+ HeuristicRelevance relevance = 4;
+}
+
+// Details about how a deny rule in a deny policy affects a principal's ability
+// to use a permission.
+message DenyRuleExplanation {
+ // Details about whether the permission in the request is denied by the
+ // deny rule.
+ message AnnotatedPermissionMatching {
+ // Indicates whether the permission in the request is denied by the deny
+ // rule.
+ PermissionPatternMatchingState permission_matching_state = 1;
+
+ // The relevance of the permission status to the overall determination for
+ // the rule.
+ HeuristicRelevance relevance = 2;
+ }
+
+ // Details about whether the principal in the request is listed as a denied
+ // principal in the deny rule, either directly or through membership in a
+ // principal set.
+ message AnnotatedDenyPrincipalMatching {
+ // Indicates whether the principal is listed as a denied principal in the
+ // deny rule, either directly or through membership in a principal set.
+ MembershipMatchingState membership = 1;
+
+ // The relevance of the principal's status to the overall determination for
+ // the role binding.
+ HeuristicRelevance relevance = 2;
+ }
+
+ // Required. Indicates whether _this rule_ denies the specified permission to
+ // the specified principal for the specified resource.
+ //
+ // This field does _not_ indicate whether the principal is actually denied on
+ // the permission for the resource. There might be another rule that overrides
+ // this rule. To determine whether the principal actually has the permission,
+ // use the `overall_access_state` field in the
+ // [TroubleshootIamPolicyResponse][google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse].
+ DenyAccessState deny_access_state = 1
+ [(google.api.field_behavior) = REQUIRED];
+
+ // Indicates whether the permission in the request is listed as a denied
+ // permission in the deny rule.
+ AnnotatedPermissionMatching combined_denied_permission = 2;
+
+ // Lists all denied permissions in the deny rule and indicates whether each
+ // permission matches the permission in the request.
+ //
+ // Each key identifies a denied permission in the rule, and each value
+ // indicates whether the denied permission matches the permission in the
+ // request.
+ map denied_permissions = 3;
+
+ // Indicates whether the permission in the request is listed as an exception
+ // permission in the deny rule.
+ AnnotatedPermissionMatching combined_exception_permission = 4;
+
+ // Lists all exception permissions in the deny rule and indicates whether each
+ // permission matches the permission in the request.
+ //
+ // Each key identifies a exception permission in the rule, and each value
+ // indicates whether the exception permission matches the permission in the
+ // request.
+ map exception_permissions = 5;
+
+ // Indicates whether the principal is listed as a denied principal in the
+ // deny rule, either directly or through membership in a principal set.
+ AnnotatedDenyPrincipalMatching combined_denied_principal = 6;
+
+ // Lists all denied principals in the deny rule and indicates whether each
+ // principal matches the principal in the request, either directly or through
+ // membership in a principal set.
+ //
+ // Each key identifies a denied principal in the rule, and each value
+ // indicates whether the denied principal matches the principal in the
+ // request.
+ map denied_principals = 7;
+
+ // Indicates whether the principal is listed as an exception principal in the
+ // deny rule, either directly or through membership in a principal set.
+ AnnotatedDenyPrincipalMatching combined_exception_principal = 8;
+
+ // Lists all exception principals in the deny rule and indicates whether each
+ // principal matches the principal in the request, either directly or through
+ // membership in a principal set.
+ //
+ // Each key identifies a exception principal in the rule, and each value
+ // indicates whether the exception principal matches the principal in the
+ // request.
+ map exception_principals = 9;
+
+ // The relevance of this role binding to the overall determination for the
+ // entire policy.
+ HeuristicRelevance relevance = 10;
+
+ // A condition expression that specifies when the deny rule denies the
+ // principal access.
+ //
+ // To learn about IAM Conditions, see
+ // https://cloud.google.com/iam/help/conditions/overview.
+ google.type.Expr condition = 11;
+
+ // Condition evaluation state for this role binding.
+ ConditionExplanation condition_explanation = 12;
+}
+
+// Explanation for how a condition affects a principal's access
+message ConditionExplanation {
+ // Evaluated state of a condition expression.
+ message EvaluationState {
+ // Start position of an expression in the condition, by character.
+ int32 start = 1;
+
+ // End position of an expression in the condition, by character,
+ // end included, for example: the end position of the first part of
+ // `a==b || c==d` would be 4.
+ int32 end = 2;
+
+ // Value of this expression.
+ google.protobuf.Value value = 3;
+
+ // Any errors that prevented complete evaluation of the condition
+ // expression.
+ repeated google.rpc.Status errors = 4;
+ }
+
+ // Value of the condition.
+ google.protobuf.Value value = 1;
+
+ // Any errors that prevented complete evaluation of the condition expression.
+ repeated google.rpc.Status errors = 3;
+
+ // The value of each statement of the condition expression. The value can be
+ // `true`, `false`, or `null`. The value is `null` if the statement can't be
+ // evaluated.
+ repeated EvaluationState evaluation_states = 2;
+}
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/cloud/policytroubleshooter/iam/v3beta/troubleshooter.proto b/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/cloud/policytroubleshooter/iam/v3beta/troubleshooter.proto
new file mode 100644
index 00000000000..01245b41df8
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/cloud/policytroubleshooter/iam/v3beta/troubleshooter.proto
@@ -0,0 +1,754 @@
+// Copyright 2025 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.cloud.policytroubleshooter.iam.v3beta;
+
+import "google/api/annotations.proto";
+import "google/api/client.proto";
+import "google/api/field_behavior.proto";
+import "google/iam/v1/policy.proto";
+import "google/iam/v2/policy.proto";
+import "google/protobuf/struct.proto";
+import "google/protobuf/timestamp.proto";
+import "google/rpc/status.proto";
+import "google/type/expr.proto";
+
+option cc_enable_arenas = true;
+option go_package = "cloud.google.com/go/policytroubleshooter/iam/apiv3beta/iampb;iampb";
+option java_multiple_files = true;
+option java_outer_classname = "TroubleshooterProto";
+option java_package = "com.google.cloud.policytroubleshooter.iam.v3beta";
+
+// IAM Policy Troubleshooter service.
+//
+// This service helps you troubleshoot access issues for Google Cloud resources.
+service PolicyTroubleshooter {
+ option (google.api.default_host) = "policytroubleshooter.googleapis.com";
+ option (google.api.oauth_scopes) =
+ "https://www.googleapis.com/auth/cloud-platform";
+
+ // Checks whether a principal has a specific permission for a specific
+ // resource, and explains why the principal does or doesn't have that
+ // permission.
+ rpc TroubleshootIamPolicy(TroubleshootIamPolicyRequest)
+ returns (TroubleshootIamPolicyResponse) {
+ option (google.api.http) = {
+ post: "/v3beta/iam:troubleshoot"
+ body: "*"
+ };
+ }
+}
+
+// Whether IAM allow policies gives the principal the permission.
+enum AllowAccessState {
+ // Not specified.
+ ALLOW_ACCESS_STATE_UNSPECIFIED = 0;
+
+ // The allow policy gives the principal the permission.
+ ALLOW_ACCESS_STATE_GRANTED = 1;
+
+ // The allow policy doesn't give the principal the permission.
+ ALLOW_ACCESS_STATE_NOT_GRANTED = 2;
+
+ // The allow policy gives the principal the permission if a condition
+ // expression evaluate to `true`. However, the sender of the request didn't
+ // provide enough context for Policy Troubleshooter to evaluate the condition
+ // expression.
+ ALLOW_ACCESS_STATE_UNKNOWN_CONDITIONAL = 3;
+
+ // The sender of the request doesn't have access to all of the allow policies
+ // that Policy Troubleshooter needs to evaluate the principal's access.
+ ALLOW_ACCESS_STATE_UNKNOWN_INFO = 4;
+}
+
+// Whether IAM deny policies deny the principal the permission.
+enum DenyAccessState {
+ // Not specified.
+ DENY_ACCESS_STATE_UNSPECIFIED = 0;
+
+ // The deny policy denies the principal the permission.
+ DENY_ACCESS_STATE_DENIED = 1;
+
+ // The deny policy doesn't deny the principal the permission.
+ DENY_ACCESS_STATE_NOT_DENIED = 2;
+
+ // The deny policy denies the principal the permission if a condition
+ // expression evaluates to `true`. However, the sender of the request didn't
+ // provide enough context for Policy Troubleshooter to evaluate the condition
+ // expression.
+ DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL = 3;
+
+ // The sender of the request does not have access to all of the deny policies
+ // that Policy Troubleshooter needs to evaluate the principal's access.
+ DENY_ACCESS_STATE_UNKNOWN_INFO = 4;
+}
+
+// Whether a role includes a specific permission.
+enum RolePermissionInclusionState {
+ // Not specified.
+ ROLE_PERMISSION_INCLUSION_STATE_UNSPECIFIED = 0;
+
+ // The permission is included in the role.
+ ROLE_PERMISSION_INCLUDED = 1;
+
+ // The permission is not included in the role.
+ ROLE_PERMISSION_NOT_INCLUDED = 2;
+
+ // The sender of the request is not allowed to access the role definition.
+ ROLE_PERMISSION_UNKNOWN_INFO = 3;
+}
+
+// Whether the permission in the request matches the permission in the policy.
+enum PermissionPatternMatchingState {
+ // Not specified.
+ PERMISSION_PATTERN_MATCHING_STATE_UNSPECIFIED = 0;
+
+ // The permission in the request matches the permission in the policy.
+ PERMISSION_PATTERN_MATCHED = 1;
+
+ // The permission in the request matches the permission in the policy.
+ PERMISSION_PATTERN_NOT_MATCHED = 2;
+}
+
+// Whether the principal in the request matches the principal in the policy.
+enum MembershipMatchingState {
+ // Not specified.
+ MEMBERSHIP_MATCHING_STATE_UNSPECIFIED = 0;
+
+ // The principal in the request matches the principal in the policy. The
+ // principal can be included directly or indirectly:
+ //
+ // * A principal is included directly if that principal is listed in the
+ // role binding.
+ // * A principal is included indirectly if that principal is in a Google
+ // group, Google Workspace account, or Cloud Identity domain that is listed
+ // in the policy.
+ MEMBERSHIP_MATCHED = 1;
+
+ // The principal in the request doesn't match the principal in the policy.
+ MEMBERSHIP_NOT_MATCHED = 2;
+
+ // The principal in the policy is a group or domain, and the sender of the
+ // request doesn't have permission to view whether the principal in the
+ // request is a member of the group or domain.
+ MEMBERSHIP_UNKNOWN_INFO = 3;
+
+ // The principal is an unsupported type.
+ MEMBERSHIP_UNKNOWN_UNSUPPORTED = 4;
+}
+
+// The extent to which a single data point contributes to an overall
+// determination.
+enum HeuristicRelevance {
+ // Not specified.
+ HEURISTIC_RELEVANCE_UNSPECIFIED = 0;
+
+ // The data point has a limited effect on the result. Changing the data point
+ // is unlikely to affect the overall determination.
+ HEURISTIC_RELEVANCE_NORMAL = 1;
+
+ // The data point has a strong effect on the result. Changing the data point
+ // is likely to affect the overall determination.
+ HEURISTIC_RELEVANCE_HIGH = 2;
+}
+
+// Request for
+// [TroubleshootIamPolicy][google.cloud.policytroubleshooter.iam.v3beta.PolicyTroubleshooter.TroubleshootIamPolicy].
+message TroubleshootIamPolicyRequest {
+ // The information to use for checking whether a principal has a permission
+ // for a resource.
+ AccessTuple access_tuple = 1;
+}
+
+// Response for
+// [TroubleshootIamPolicy][google.cloud.policytroubleshooter.iam.v3beta.PolicyTroubleshooter.TroubleshootIamPolicy].
+message TroubleshootIamPolicyResponse {
+ // Whether the principal has the permission on the resource.
+ enum OverallAccessState {
+ // Not specified.
+ OVERALL_ACCESS_STATE_UNSPECIFIED = 0;
+
+ // The principal has the permission.
+ CAN_ACCESS = 1;
+
+ // The principal doesn't have the permission.
+ CANNOT_ACCESS = 2;
+
+ // The principal might have the permission, but the sender can't access all
+ // of the information needed to fully evaluate the principal's access.
+ UNKNOWN_INFO = 3;
+
+ // The principal might have the permission, but Policy Troubleshooter can't
+ // fully evaluate the principal's access because the sender didn't provide
+ // the required context to evaluate the condition.
+ UNKNOWN_CONDITIONAL = 4;
+ }
+
+ // Indicates whether the principal has the specified permission for the
+ // specified resource, based on evaluating all types of the applicable IAM
+ // policies.
+ OverallAccessState overall_access_state = 1;
+
+ // The access tuple from the request, including any provided context used to
+ // evaluate the condition.
+ AccessTuple access_tuple = 2;
+
+ // An explanation of how the applicable IAM allow policies affect the final
+ // access state.
+ AllowPolicyExplanation allow_policy_explanation = 3;
+
+ // An explanation of how the applicable IAM deny policies affect the final
+ // access state.
+ DenyPolicyExplanation deny_policy_explanation = 4;
+}
+
+// Information about the principal, resource, and permission to check.
+message AccessTuple {
+ // Required. The email address of the principal whose access you want to
+ // check. For example, `alice@example.com` or
+ // `my-service-account@my-project.iam.gserviceaccount.com`.
+ //
+ // The principal must be a Google Account or a service account. Other types of
+ // principals are not supported.
+ string principal = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The full resource name that identifies the resource. For example,
+ // `//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance`.
+ //
+ // For examples of full resource names for Google Cloud services, see
+ // https://cloud.google.com/iam/help/troubleshooter/full-resource-names.
+ string full_resource_name = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The IAM permission to check for, either in the `v1` permission
+ // format or the `v2` permission format.
+ //
+ // For a complete list of IAM permissions in the `v1` format, see
+ // https://cloud.google.com/iam/help/permissions/reference.
+ //
+ // For a list of IAM permissions in the `v2` format, see
+ // https://cloud.google.com/iam/help/deny/supported-permissions.
+ //
+ // For a complete list of predefined IAM roles and the permissions in each
+ // role, see https://cloud.google.com/iam/help/roles/reference.
+ string permission = 3 [(google.api.field_behavior) = REQUIRED];
+
+ // Output only. The permission that Policy Troubleshooter checked for, in
+ // the `v2` format.
+ string permission_fqdn = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Optional. Additional context for the request, such as the request time or
+ // IP address. This context allows Policy Troubleshooter to troubleshoot
+ // conditional role bindings and deny rules.
+ ConditionContext condition_context = 5
+ [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Additional context for troubleshooting conditional role bindings and deny
+// rules.
+message ConditionContext {
+ // Core attributes for a resource. A resource is an
+ // addressable (named) entity provided by the destination service. For
+ // example, a Compute Engine instance.
+ message Resource {
+ // The name of the service that this resource belongs to, such as
+ // `compute.googleapis.com`. The service name might not match the DNS
+ // hostname that actually serves the request.
+ //
+ // For a full list of resource service values, see
+ // https://cloud.google.com/iam/help/conditions/resource-services
+ string service = 1;
+
+ // The stable identifier (name) of a resource on the `service`. A resource
+ // can be logically identified as `//{resource.service}/{resource.name}`.
+ // Unlike the resource URI, the resource name doesn't contain any protocol
+ // and version information.
+ //
+ // For a list of full resource name formats, see
+ // https://cloud.google.com/iam/help/troubleshooter/full-resource-names
+ string name = 2;
+
+ // The type of the resource, in the format `{service}/{kind}`.
+ //
+ // For a full list of resource type values, see
+ // https://cloud.google.com/iam/help/conditions/resource-types
+ string type = 3;
+ }
+
+ // This message defines attributes for a node that handles a network request.
+ // The node can be either a service or an application that sends, forwards,
+ // or receives the request. Service peers should fill in
+ // `principal` and `labels` as appropriate.
+ message Peer {
+ // The IPv4 or IPv6 address of the peer.
+ string ip = 1;
+
+ // The network port of the peer.
+ int64 port = 2;
+ }
+
+ // This message defines attributes for an HTTP request. If the actual
+ // request is not an HTTP request, the runtime system should try to map
+ // the actual request to an equivalent HTTP request.
+ message Request {
+ // Optional. The timestamp when the destination service receives the first
+ // byte of the request.
+ google.protobuf.Timestamp receive_time = 1
+ [(google.api.field_behavior) = OPTIONAL];
+ }
+
+ // A tag that applies to a resource during policy evaluation. Tags can be
+ // either directly bound to a resource or inherited from its ancestor.
+ // `EffectiveTag` contains the `name` and `namespaced_name` of the tag value
+ // and tag key, with additional fields of `inherited` to indicate the
+ // inheritance status of the effective tag.
+ message EffectiveTag {
+ // Output only. Resource name for TagValue in the format `tagValues/456`.
+ string tag_value = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The namespaced name of the TagValue. Can be in the form
+ // `{organization_id}/{tag_key_short_name}/{tag_value_short_name}` or
+ // `{project_id}/{tag_key_short_name}/{tag_value_short_name}` or
+ // `{project_number}/{tag_key_short_name}/{tag_value_short_name}`.
+ string namespaced_tag_value = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The name of the TagKey, in the format `tagKeys/{id}`, such
+ // as `tagKeys/123`.
+ string tag_key = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The namespaced name of the TagKey. Can be in the form
+ // `{organization_id}/{tag_key_short_name}` or
+ // `{project_id}/{tag_key_short_name}` or
+ // `{project_number}/{tag_key_short_name}`.
+ string namespaced_tag_key = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // The parent name of the tag key.
+ // Must be in the format `organizations/{organization_id}` or
+ // `projects/{project_number}`
+ string tag_key_parent_name = 6;
+
+ // Output only. Indicates the inheritance status of a tag value
+ // attached to the given resource. If the tag value is inherited from one of
+ // the resource's ancestors, inherited will be true. If false, then the tag
+ // value is directly attached to the resource, inherited will be false.
+ bool inherited = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
+ }
+
+ // Represents a target resource that is involved with a network activity.
+ // If multiple resources are involved with an activity, this must be the
+ // primary one.
+ Resource resource = 1;
+
+ // The destination of a network activity, such as accepting a TCP connection.
+ // In a multi-hop network activity, the destination represents the receiver of
+ // the last hop.
+ Peer destination = 2;
+
+ // Represents a network request, such as an HTTP request.
+ Request request = 3;
+
+ // Output only. The effective tags on the resource. The effective tags are
+ // fetched during troubleshooting.
+ repeated EffectiveTag effective_tags = 4
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+}
+
+// Details about how the relevant IAM allow policies affect the final access
+// state.
+message AllowPolicyExplanation {
+ // Indicates whether the principal has the specified permission for the
+ // specified resource, based on evaluating all applicable IAM allow policies.
+ AllowAccessState allow_access_state = 1;
+
+ // List of IAM allow policies that were evaluated to check the principal's
+ // permissions, with annotations to indicate how each policy contributed to
+ // the final result.
+ //
+ // The list of policies includes the policy for the resource itself, as well
+ // as allow policies that are inherited from higher levels of the resource
+ // hierarchy, including the organization, the folder, and the project.
+ //
+ // To learn more about the resource hierarchy, see
+ // https://cloud.google.com/iam/help/resource-hierarchy.
+ repeated ExplainedAllowPolicy explained_policies = 2;
+
+ // The relevance of the allow policy type to the overall access state.
+ HeuristicRelevance relevance = 3;
+}
+
+// Details about how a specific IAM allow policy contributed to the final access
+// state.
+message ExplainedAllowPolicy {
+ // Required. Indicates whether _this policy_ provides the specified permission
+ // to the specified principal for the specified resource.
+ //
+ // This field does _not_ indicate whether the principal actually has the
+ // permission for the resource. There might be another policy that overrides
+ // this policy. To determine whether the principal actually has the
+ // permission, use the `overall_access_state` field in the
+ // [TroubleshootIamPolicyResponse][google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse].
+ AllowAccessState allow_access_state = 1
+ [(google.api.field_behavior) = REQUIRED];
+
+ // The full resource name that identifies the resource. For example,
+ // `//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance`.
+ //
+ // If the sender of the request does not have access to the policy, this field
+ // is omitted.
+ //
+ // For examples of full resource names for Google Cloud services, see
+ // https://cloud.google.com/iam/help/troubleshooter/full-resource-names.
+ string full_resource_name = 2;
+
+ // Details about how each role binding in the policy affects the principal's
+ // ability, or inability, to use the permission for the resource. The order of
+ // the role bindings matches the role binding order in the policy.
+ //
+ // If the sender of the request does not have access to the policy, this field
+ // is omitted.
+ repeated AllowBindingExplanation binding_explanations = 3;
+
+ // The relevance of this policy to the overall access state in the
+ // [TroubleshootIamPolicyResponse][google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse].
+ //
+ // If the sender of the request does not have access to the policy, this field
+ // is omitted.
+ HeuristicRelevance relevance = 4;
+
+ // The IAM allow policy attached to the resource.
+ //
+ // If the sender of the request does not have access to the policy, this field
+ // is empty.
+ google.iam.v1.Policy policy = 5;
+}
+
+// Details about how a role binding in an allow policy affects a principal's
+// ability to use a permission.
+message AllowBindingExplanation {
+ // Details about whether the role binding includes the principal.
+ message AnnotatedAllowMembership {
+ // Indicates whether the role binding includes the principal.
+ MembershipMatchingState membership = 1;
+
+ // The relevance of the principal's status to the overall determination for
+ // the role binding.
+ HeuristicRelevance relevance = 2;
+ }
+
+ // Required. Indicates whether _this role binding_ gives the specified
+ // permission to the specified principal on the specified resource.
+ //
+ // This field does _not_ indicate whether the principal actually has the
+ // permission on the resource. There might be another role binding that
+ // overrides this role binding. To determine whether the principal actually
+ // has the permission, use the `overall_access_state` field in the
+ // [TroubleshootIamPolicyResponse][google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse].
+ AllowAccessState allow_access_state = 1
+ [(google.api.field_behavior) = REQUIRED];
+
+ // The role that this role binding grants. For example,
+ // `roles/compute.admin`.
+ //
+ // For a complete list of predefined IAM roles, as well as the permissions in
+ // each role, see https://cloud.google.com/iam/help/roles/reference.
+ string role = 2;
+
+ // Indicates whether the role granted by this role binding contains the
+ // specified permission.
+ RolePermissionInclusionState role_permission = 3;
+
+ // The relevance of the permission's existence, or nonexistence, in the role
+ // to the overall determination for the entire policy.
+ HeuristicRelevance role_permission_relevance = 4;
+
+ // The combined result of all memberships. Indicates if the principal is
+ // included in any role binding, either directly or indirectly.
+ AnnotatedAllowMembership combined_membership = 5;
+
+ // Indicates whether each role binding includes the principal specified in the
+ // request, either directly or indirectly. Each key identifies a principal in
+ // the role binding, and each value indicates whether the principal in the
+ // role binding includes the principal in the request.
+ //
+ // For example, suppose that a role binding includes the following principals:
+ //
+ // * `user:alice@example.com`
+ // * `group:product-eng@example.com`
+ //
+ // You want to troubleshoot access for `user:bob@example.com`. This user is a
+ // member of the group `group:product-eng@example.com`.
+ //
+ // For the first principal in the role binding, the key is
+ // `user:alice@example.com`, and the `membership` field in the value is set to
+ // `NOT_INCLUDED`.
+ //
+ // For the second principal in the role binding, the key is
+ // `group:product-eng@example.com`, and the `membership` field in the value is
+ // set to `INCLUDED`.
+ map memberships = 6;
+
+ // The relevance of this role binding to the overall determination for the
+ // entire policy.
+ HeuristicRelevance relevance = 7;
+
+ // A condition expression that specifies when the role binding grants access.
+ //
+ // To learn about IAM Conditions, see
+ // https://cloud.google.com/iam/help/conditions/overview.
+ google.type.Expr condition = 8;
+
+ // Condition evaluation state for this role binding.
+ ConditionExplanation condition_explanation = 9;
+}
+
+// Details about how the relevant IAM deny policies affect the final access
+// state.
+message DenyPolicyExplanation {
+ // Indicates whether the principal is denied the specified permission for
+ // the specified resource, based on evaluating all applicable IAM deny
+ // policies.
+ DenyAccessState deny_access_state = 1;
+
+ // List of resources with IAM deny policies that were evaluated to check the
+ // principal's denied permissions, with annotations to indicate how each
+ // policy contributed to the final result.
+ //
+ // The list of resources includes the policy for the resource itself, as well
+ // as policies that are inherited from higher levels of the resource
+ // hierarchy, including the organization, the folder, and the project. The
+ // order of the resources starts from the resource and climbs up the resource
+ // hierarchy.
+ //
+ // To learn more about the resource hierarchy, see
+ // https://cloud.google.com/iam/help/resource-hierarchy.
+ repeated ExplainedDenyResource explained_resources = 2;
+
+ // The relevance of the deny policy result to the overall access state.
+ HeuristicRelevance relevance = 3;
+
+ // Indicates whether the permission to troubleshoot is supported in deny
+ // policies.
+ bool permission_deniable = 4;
+}
+
+// Details about how a specific resource contributed to the deny policy
+// evaluation.
+message ExplainedDenyResource {
+ // Required. Indicates whether any policies attached to _this resource_ deny
+ // the specific permission to the specified principal for the specified
+ // resource.
+ //
+ // This field does _not_ indicate whether the principal actually has the
+ // permission for the resource. There might be another policy that overrides
+ // this policy. To determine whether the principal actually has the
+ // permission, use the `overall_access_state` field in the
+ // [TroubleshootIamPolicyResponse][google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse].
+ DenyAccessState deny_access_state = 1
+ [(google.api.field_behavior) = REQUIRED];
+
+ // The full resource name that identifies the resource. For example,
+ // `//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance`.
+ //
+ // If the sender of the request does not have access to the policy, this field
+ // is omitted.
+ //
+ // For examples of full resource names for Google Cloud services, see
+ // https://cloud.google.com/iam/help/troubleshooter/full-resource-names.
+ string full_resource_name = 2;
+
+ // List of IAM deny policies that were evaluated to check the principal's
+ // denied permissions, with annotations to indicate how each policy
+ // contributed to the final result.
+ repeated ExplainedDenyPolicy explained_policies = 3;
+
+ // The relevance of this policy to the overall access state in the
+ // [TroubleshootIamPolicyResponse][google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse].
+ //
+ // If the sender of the request does not have access to the policy, this field
+ // is omitted.
+ HeuristicRelevance relevance = 4;
+}
+
+// Details about how a specific IAM deny policy [Policy][google.iam.v2.Policy]
+// contributed to the access check.
+message ExplainedDenyPolicy {
+ // Required. Indicates whether _this policy_ denies the specified permission
+ // to the specified principal for the specified resource.
+ //
+ // This field does _not_ indicate whether the principal actually has the
+ // permission for the resource. There might be another policy that overrides
+ // this policy. To determine whether the principal actually has the
+ // permission, use the `overall_access_state` field in the
+ // [TroubleshootIamPolicyResponse][google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse].
+ DenyAccessState deny_access_state = 1
+ [(google.api.field_behavior) = REQUIRED];
+
+ // The IAM deny policy attached to the resource.
+ //
+ // If the sender of the request does not have access to the policy, this field
+ // is omitted.
+ google.iam.v2.Policy policy = 2;
+
+ // Details about how each rule in the policy affects the principal's inability
+ // to use the permission for the resource. The order of the deny rule matches
+ // the order of the rules in the deny policy.
+ //
+ // If the sender of the request does not have access to the policy, this field
+ // is omitted.
+ repeated DenyRuleExplanation rule_explanations = 3;
+
+ // The relevance of this policy to the overall access state in the
+ // [TroubleshootIamPolicyResponse][google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse].
+ //
+ // If the sender of the request does not have access to the policy, this field
+ // is omitted.
+ HeuristicRelevance relevance = 4;
+}
+
+// Details about how a deny rule in a deny policy affects a principal's ability
+// to use a permission.
+message DenyRuleExplanation {
+ // Details about whether the permission in the request is denied by the
+ // deny rule.
+ message AnnotatedPermissionMatching {
+ // Indicates whether the permission in the request is denied by the deny
+ // rule.
+ PermissionPatternMatchingState permission_matching_state = 1;
+
+ // The relevance of the permission status to the overall determination for
+ // the rule.
+ HeuristicRelevance relevance = 2;
+ }
+
+ // Details about whether the principal in the request is listed as a denied
+ // principal in the deny rule, either directly or through membership in a
+ // principal set.
+ message AnnotatedDenyPrincipalMatching {
+ // Indicates whether the principal is listed as a denied principal in the
+ // deny rule, either directly or through membership in a principal set.
+ MembershipMatchingState membership = 1;
+
+ // The relevance of the principal's status to the overall determination for
+ // the role binding.
+ HeuristicRelevance relevance = 2;
+ }
+
+ // Required. Indicates whether _this rule_ denies the specified permission to
+ // the specified principal for the specified resource.
+ //
+ // This field does _not_ indicate whether the principal is actually denied on
+ // the permission for the resource. There might be another rule that overrides
+ // this rule. To determine whether the principal actually has the permission,
+ // use the `overall_access_state` field in the
+ // [TroubleshootIamPolicyResponse][google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse].
+ DenyAccessState deny_access_state = 1
+ [(google.api.field_behavior) = REQUIRED];
+
+ // Indicates whether the permission in the request is listed as a denied
+ // permission in the deny rule.
+ AnnotatedPermissionMatching combined_denied_permission = 2;
+
+ // Lists all denied permissions in the deny rule and indicates whether each
+ // permission matches the permission in the request.
+ //
+ // Each key identifies a denied permission in the rule, and each value
+ // indicates whether the denied permission matches the permission in the
+ // request.
+ map denied_permissions = 3;
+
+ // Indicates whether the permission in the request is listed as an exception
+ // permission in the deny rule.
+ AnnotatedPermissionMatching combined_exception_permission = 4;
+
+ // Lists all exception permissions in the deny rule and indicates whether each
+ // permission matches the permission in the request.
+ //
+ // Each key identifies a exception permission in the rule, and each value
+ // indicates whether the exception permission matches the permission in the
+ // request.
+ map exception_permissions = 5;
+
+ // Indicates whether the principal is listed as a denied principal in the
+ // deny rule, either directly or through membership in a principal set.
+ AnnotatedDenyPrincipalMatching combined_denied_principal = 6;
+
+ // Lists all denied principals in the deny rule and indicates whether each
+ // principal matches the principal in the request, either directly or through
+ // membership in a principal set.
+ //
+ // Each key identifies a denied principal in the rule, and each value
+ // indicates whether the denied principal matches the principal in the
+ // request.
+ map denied_principals = 7;
+
+ // Indicates whether the principal is listed as an exception principal in the
+ // deny rule, either directly or through membership in a principal set.
+ AnnotatedDenyPrincipalMatching combined_exception_principal = 8;
+
+ // Lists all exception principals in the deny rule and indicates whether each
+ // principal matches the principal in the request, either directly or through
+ // membership in a principal set.
+ //
+ // Each key identifies a exception principal in the rule, and each value
+ // indicates whether the exception principal matches the principal in the
+ // request.
+ map exception_principals = 9;
+
+ // The relevance of this role binding to the overall determination for the
+ // entire policy.
+ HeuristicRelevance relevance = 10;
+
+ // A condition expression that specifies when the deny rule denies the
+ // principal access.
+ //
+ // To learn about IAM Conditions, see
+ // https://cloud.google.com/iam/help/conditions/overview.
+ google.type.Expr condition = 11;
+
+ // Condition evaluation state for this role binding.
+ ConditionExplanation condition_explanation = 12;
+}
+
+// Explanation for how a condition affects a principal's access
+message ConditionExplanation {
+ // Evaluated state of a condition expression.
+ message EvaluationState {
+ // Start position of an expression in the condition, by character.
+ int32 start = 1;
+
+ // End position of an expression in the condition, by character,
+ // end included, for example: the end position of the first part of
+ // `a==b || c==d` would be 4.
+ int32 end = 2;
+
+ // Value of this expression.
+ google.protobuf.Value value = 3;
+
+ // Any errors that prevented complete evaluation of the condition
+ // expression.
+ repeated google.rpc.Status errors = 4;
+ }
+
+ // Value of the condition.
+ google.protobuf.Value value = 1;
+
+ // Any errors that prevented complete evaluation of the condition expression.
+ repeated google.rpc.Status errors = 3;
+
+ // The value of each statement of the condition expression. The value can be
+ // `true`, `false`, or `null`. The value is `null` if the statement can't be
+ // evaluated.
+ repeated EvaluationState evaluation_states = 2;
+}
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/iam/v1/policy.proto b/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/iam/v1/policy.proto
new file mode 100644
index 00000000000..b5eac03c442
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/iam/v1/policy.proto
@@ -0,0 +1,410 @@
+// Copyright 2025 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.iam.v1;
+
+import "google/type/expr.proto";
+
+option cc_enable_arenas = true;
+option csharp_namespace = "Google.Cloud.Iam.V1";
+option go_package = "cloud.google.com/go/iam/apiv1/iampb;iampb";
+option java_multiple_files = true;
+option java_outer_classname = "PolicyProto";
+option java_package = "com.google.iam.v1";
+option php_namespace = "Google\\Cloud\\Iam\\V1";
+
+// An Identity and Access Management (IAM) policy, which specifies access
+// controls for Google Cloud resources.
+//
+//
+// A `Policy` is a collection of `bindings`. A `binding` binds one or more
+// `members`, or principals, to a single `role`. Principals can be user
+// accounts, service accounts, Google groups, and domains (such as G Suite). A
+// `role` is a named list of permissions; each `role` can be an IAM predefined
+// role or a user-created custom role.
+//
+// For some types of Google Cloud resources, a `binding` can also specify a
+// `condition`, which is a logical expression that allows access to a resource
+// only if the expression evaluates to `true`. A condition can add constraints
+// based on attributes of the request, the resource, or both. To learn which
+// resources support conditions in their IAM policies, see the
+// [IAM
+// documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
+//
+// **JSON example:**
+//
+// ```
+// {
+// "bindings": [
+// {
+// "role": "roles/resourcemanager.organizationAdmin",
+// "members": [
+// "user:mike@example.com",
+// "group:admins@example.com",
+// "domain:google.com",
+// "serviceAccount:my-project-id@appspot.gserviceaccount.com"
+// ]
+// },
+// {
+// "role": "roles/resourcemanager.organizationViewer",
+// "members": [
+// "user:eve@example.com"
+// ],
+// "condition": {
+// "title": "expirable access",
+// "description": "Does not grant access after Sep 2020",
+// "expression": "request.time <
+// timestamp('2020-10-01T00:00:00.000Z')",
+// }
+// }
+// ],
+// "etag": "BwWWja0YfJA=",
+// "version": 3
+// }
+// ```
+//
+// **YAML example:**
+//
+// ```
+// bindings:
+// - members:
+// - user:mike@example.com
+// - group:admins@example.com
+// - domain:google.com
+// - serviceAccount:my-project-id@appspot.gserviceaccount.com
+// role: roles/resourcemanager.organizationAdmin
+// - members:
+// - user:eve@example.com
+// role: roles/resourcemanager.organizationViewer
+// condition:
+// title: expirable access
+// description: Does not grant access after Sep 2020
+// expression: request.time < timestamp('2020-10-01T00:00:00.000Z')
+// etag: BwWWja0YfJA=
+// version: 3
+// ```
+//
+// For a description of IAM and its features, see the
+// [IAM documentation](https://cloud.google.com/iam/docs/).
+message Policy {
+ // Specifies the format of the policy.
+ //
+ // Valid values are `0`, `1`, and `3`. Requests that specify an invalid value
+ // are rejected.
+ //
+ // Any operation that affects conditional role bindings must specify version
+ // `3`. This requirement applies to the following operations:
+ //
+ // * Getting a policy that includes a conditional role binding
+ // * Adding a conditional role binding to a policy
+ // * Changing a conditional role binding in a policy
+ // * Removing any role binding, with or without a condition, from a policy
+ // that includes conditions
+ //
+ // **Important:** If you use IAM Conditions, you must include the `etag` field
+ // whenever you call `setIamPolicy`. If you omit this field, then IAM allows
+ // you to overwrite a version `3` policy with a version `1` policy, and all of
+ // the conditions in the version `3` policy are lost.
+ //
+ // If a policy does not include any conditions, operations on that policy may
+ // specify any valid version or leave the field unset.
+ //
+ // To learn which resources support conditions in their IAM policies, see the
+ // [IAM
+ // documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
+ int32 version = 1;
+
+ // Associates a list of `members`, or principals, with a `role`. Optionally,
+ // may specify a `condition` that determines how and when the `bindings` are
+ // applied. Each of the `bindings` must contain at least one principal.
+ //
+ // The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250
+ // of these principals can be Google groups. Each occurrence of a principal
+ // counts towards these limits. For example, if the `bindings` grant 50
+ // different roles to `user:alice@example.com`, and not to any other
+ // principal, then you can add another 1,450 principals to the `bindings` in
+ // the `Policy`.
+ repeated Binding bindings = 4;
+
+ // Specifies cloud audit logging configuration for this policy.
+ repeated AuditConfig audit_configs = 6;
+
+ // `etag` is used for optimistic concurrency control as a way to help
+ // prevent simultaneous updates of a policy from overwriting each other.
+ // It is strongly suggested that systems make use of the `etag` in the
+ // read-modify-write cycle to perform policy updates in order to avoid race
+ // conditions: An `etag` is returned in the response to `getIamPolicy`, and
+ // systems are expected to put that etag in the request to `setIamPolicy` to
+ // ensure that their change will be applied to the same version of the policy.
+ //
+ // **Important:** If you use IAM Conditions, you must include the `etag` field
+ // whenever you call `setIamPolicy`. If you omit this field, then IAM allows
+ // you to overwrite a version `3` policy with a version `1` policy, and all of
+ // the conditions in the version `3` policy are lost.
+ bytes etag = 3;
+}
+
+// Associates `members`, or principals, with a `role`.
+message Binding {
+ // Role that is assigned to the list of `members`, or principals.
+ // For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+ string role = 1;
+
+ // Specifies the principals requesting access for a Google Cloud resource.
+ // `members` can have the following values:
+ //
+ // * `allUsers`: A special identifier that represents anyone who is
+ // on the internet; with or without a Google account.
+ //
+ // * `allAuthenticatedUsers`: A special identifier that represents anyone
+ // who is authenticated with a Google account or a service account.
+ //
+ // * `user:{emailid}`: An email address that represents a specific Google
+ // account. For example, `alice@example.com` .
+ //
+ //
+ // * `serviceAccount:{emailid}`: An email address that represents a service
+ // account. For example, `my-other-app@appspot.gserviceaccount.com`.
+ //
+ // * `group:{emailid}`: An email address that represents a Google group.
+ // For example, `admins@example.com`.
+ //
+ // * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique
+ // identifier) representing a user that has been recently deleted. For
+ // example, `alice@example.com?uid=123456789012345678901`. If the user is
+ // recovered, this value reverts to `user:{emailid}` and the recovered user
+ // retains the role in the binding.
+ //
+ // * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus
+ // unique identifier) representing a service account that has been recently
+ // deleted. For example,
+ // `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
+ // If the service account is undeleted, this value reverts to
+ // `serviceAccount:{emailid}` and the undeleted service account retains the
+ // role in the binding.
+ //
+ // * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique
+ // identifier) representing a Google group that has been recently
+ // deleted. For example, `admins@example.com?uid=123456789012345678901`. If
+ // the group is recovered, this value reverts to `group:{emailid}` and the
+ // recovered group retains the role in the binding.
+ //
+ //
+ // * `domain:{domain}`: The G Suite domain (primary) that represents all the
+ // users of that domain. For example, `google.com` or `example.com`.
+ //
+ //
+ repeated string members = 2;
+
+ // The condition that is associated with this binding.
+ //
+ // If the condition evaluates to `true`, then this binding applies to the
+ // current request.
+ //
+ // If the condition evaluates to `false`, then this binding does not apply to
+ // the current request. However, a different role binding might grant the same
+ // role to one or more of the principals in this binding.
+ //
+ // To learn which resources support conditions in their IAM policies, see the
+ // [IAM
+ // documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
+ google.type.Expr condition = 3;
+}
+
+// Specifies the audit configuration for a service.
+// The configuration determines which permission types are logged, and what
+// identities, if any, are exempted from logging.
+// An AuditConfig must have one or more AuditLogConfigs.
+//
+// If there are AuditConfigs for both `allServices` and a specific service,
+// the union of the two AuditConfigs is used for that service: the log_types
+// specified in each AuditConfig are enabled, and the exempted_members in each
+// AuditLogConfig are exempted.
+//
+// Example Policy with multiple AuditConfigs:
+//
+// {
+// "audit_configs": [
+// {
+// "service": "allServices",
+// "audit_log_configs": [
+// {
+// "log_type": "DATA_READ",
+// "exempted_members": [
+// "user:jose@example.com"
+// ]
+// },
+// {
+// "log_type": "DATA_WRITE"
+// },
+// {
+// "log_type": "ADMIN_READ"
+// }
+// ]
+// },
+// {
+// "service": "sampleservice.googleapis.com",
+// "audit_log_configs": [
+// {
+// "log_type": "DATA_READ"
+// },
+// {
+// "log_type": "DATA_WRITE",
+// "exempted_members": [
+// "user:aliya@example.com"
+// ]
+// }
+// ]
+// }
+// ]
+// }
+//
+// For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ
+// logging. It also exempts `jose@example.com` from DATA_READ logging, and
+// `aliya@example.com` from DATA_WRITE logging.
+message AuditConfig {
+ // Specifies a service that will be enabled for audit logging.
+ // For example, `storage.googleapis.com`, `cloudsql.googleapis.com`.
+ // `allServices` is a special value that covers all services.
+ string service = 1;
+
+ // The configuration for logging of each type of permission.
+ repeated AuditLogConfig audit_log_configs = 3;
+}
+
+// Provides the configuration for logging a type of permissions.
+// Example:
+//
+// {
+// "audit_log_configs": [
+// {
+// "log_type": "DATA_READ",
+// "exempted_members": [
+// "user:jose@example.com"
+// ]
+// },
+// {
+// "log_type": "DATA_WRITE"
+// }
+// ]
+// }
+//
+// This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting
+// jose@example.com from DATA_READ logging.
+message AuditLogConfig {
+ // The list of valid permission types for which logging can be configured.
+ // Admin writes are always logged, and are not configurable.
+ enum LogType {
+ // Default case. Should never be this.
+ LOG_TYPE_UNSPECIFIED = 0;
+
+ // Admin reads. Example: CloudIAM getIamPolicy
+ ADMIN_READ = 1;
+
+ // Data writes. Example: CloudSQL Users create
+ DATA_WRITE = 2;
+
+ // Data reads. Example: CloudSQL Users list
+ DATA_READ = 3;
+ }
+
+ // The log type that this config enables.
+ LogType log_type = 1;
+
+ // Specifies the identities that do not cause logging for this type of
+ // permission.
+ // Follows the same format of
+ // [Binding.members][google.iam.v1.Binding.members].
+ repeated string exempted_members = 2;
+}
+
+// The difference delta between two policies.
+message PolicyDelta {
+ // The delta for Bindings between two policies.
+ repeated BindingDelta binding_deltas = 1;
+
+ // The delta for AuditConfigs between two policies.
+ repeated AuditConfigDelta audit_config_deltas = 2;
+}
+
+// One delta entry for Binding. Each individual change (only one member in each
+// entry) to a binding will be a separate entry.
+message BindingDelta {
+ // The type of action performed on a Binding in a policy.
+ enum Action {
+ // Unspecified.
+ ACTION_UNSPECIFIED = 0;
+
+ // Addition of a Binding.
+ ADD = 1;
+
+ // Removal of a Binding.
+ REMOVE = 2;
+ }
+
+ // The action that was performed on a Binding.
+ // Required
+ Action action = 1;
+
+ // Role that is assigned to `members`.
+ // For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+ // Required
+ string role = 2;
+
+ // A single identity requesting access for a Google Cloud resource.
+ // Follows the same format of Binding.members.
+ // Required
+ string member = 3;
+
+ // The condition that is associated with this binding.
+ google.type.Expr condition = 4;
+}
+
+// One delta entry for AuditConfig. Each individual change (only one
+// exempted_member in each entry) to a AuditConfig will be a separate entry.
+message AuditConfigDelta {
+ // The type of action performed on an audit configuration in a policy.
+ enum Action {
+ // Unspecified.
+ ACTION_UNSPECIFIED = 0;
+
+ // Addition of an audit configuration.
+ ADD = 1;
+
+ // Removal of an audit configuration.
+ REMOVE = 2;
+ }
+
+ // The action that was performed on an audit configuration in a policy.
+ // Required
+ Action action = 1;
+
+ // Specifies a service that was configured for Cloud Audit Logging.
+ // For example, `storage.googleapis.com`, `cloudsql.googleapis.com`.
+ // `allServices` is a special value that covers all services.
+ // Required
+ string service = 2;
+
+ // A single identity that is exempted from "data access" audit
+ // logging for the `service` specified above.
+ // Follows the same format of Binding.members.
+ string exempted_member = 3;
+
+ // Specifies the log_type that was be enabled. ADMIN_ACTIVITY is always
+ // enabled, and cannot be configured.
+ // Required
+ string log_type = 4;
+}
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/iam/v2/deny.proto b/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/iam/v2/deny.proto
new file mode 100644
index 00000000000..9d4dc4b5e23
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/iam/v2/deny.proto
@@ -0,0 +1,109 @@
+// Copyright 2025 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.iam.v2;
+
+import "google/type/expr.proto";
+
+option csharp_namespace = "Google.Cloud.Iam.V2";
+option go_package = "cloud.google.com/go/iam/apiv2/iampb;iampb";
+option java_multiple_files = true;
+option java_outer_classname = "DenyRuleProto";
+option java_package = "com.google.iam.v2";
+option php_namespace = "Google\\Cloud\\Iam\\V2";
+
+// A deny rule in an IAM deny policy.
+message DenyRule {
+ // The identities that are prevented from using one or more permissions on
+ // Google Cloud resources. This field can contain the following values:
+ //
+ // * `principalSet://goog/public:all`: A special identifier that represents
+ // any principal that is on the internet, even if they do not have a Google
+ // Account or are not logged in.
+ //
+ // * `principal://goog/subject/{email_id}`: A specific Google Account.
+ // Includes Gmail, Cloud Identity, and Google Workspace user accounts. For
+ // example, `principal://goog/subject/alice@example.com`.
+ //
+ // * `deleted:principal://goog/subject/{email_id}?uid={uid}`: A specific
+ // Google Account that was deleted recently. For example,
+ // `deleted:principal://goog/subject/alice@example.com?uid=1234567890`. If
+ // the Google Account is recovered, this identifier reverts to the standard
+ // identifier for a Google Account.
+ //
+ // * `principalSet://goog/group/{group_id}`: A Google group. For example,
+ // `principalSet://goog/group/admins@example.com`.
+ //
+ // * `deleted:principalSet://goog/group/{group_id}?uid={uid}`: A Google group
+ // that was deleted recently. For example,
+ // `deleted:principalSet://goog/group/admins@example.com?uid=1234567890`. If
+ // the Google group is restored, this identifier reverts to the standard
+ // identifier for a Google group.
+ //
+ // * `principal://iam.googleapis.com/projects/-/serviceAccounts/{service_account_id}`:
+ // A Google Cloud service account. For example,
+ // `principal://iam.googleapis.com/projects/-/serviceAccounts/my-service-account@iam.gserviceaccount.com`.
+ //
+ // * `deleted:principal://iam.googleapis.com/projects/-/serviceAccounts/{service_account_id}?uid={uid}`:
+ // A Google Cloud service account that was deleted recently. For example,
+ // `deleted:principal://iam.googleapis.com/projects/-/serviceAccounts/my-service-account@iam.gserviceaccount.com?uid=1234567890`.
+ // If the service account is undeleted, this identifier reverts to the
+ // standard identifier for a service account.
+ //
+ // * `principalSet://goog/cloudIdentityCustomerId/{customer_id}`: All of the
+ // principals associated with the specified Google Workspace or Cloud
+ // Identity customer ID. For example,
+ // `principalSet://goog/cloudIdentityCustomerId/C01Abc35`.
+ repeated string denied_principals = 1;
+
+ // The identities that are excluded from the deny rule, even if they are
+ // listed in the `denied_principals`. For example, you could add a Google
+ // group to the `denied_principals`, then exclude specific users who belong to
+ // that group.
+ //
+ // This field can contain the same values as the `denied_principals` field,
+ // excluding `principalSet://goog/public:all`, which represents all users on
+ // the internet.
+ repeated string exception_principals = 2;
+
+ // The permissions that are explicitly denied by this rule. Each permission
+ // uses the format `{service_fqdn}/{resource}.{verb}`, where `{service_fqdn}`
+ // is the fully qualified domain name for the service. For example,
+ // `iam.googleapis.com/roles.list`.
+ repeated string denied_permissions = 3;
+
+ // Specifies the permissions that this rule excludes from the set of denied
+ // permissions given by `denied_permissions`. If a permission appears in
+ // `denied_permissions` _and_ in `exception_permissions` then it will _not_ be
+ // denied.
+ //
+ // The excluded permissions can be specified using the same syntax as
+ // `denied_permissions`.
+ repeated string exception_permissions = 4;
+
+ // The condition that determines whether this deny rule applies to a request.
+ // If the condition expression evaluates to `true`, then the deny rule is
+ // applied; otherwise, the deny rule is not applied.
+ //
+ // Each deny rule is evaluated independently. If this deny rule does not apply
+ // to a request, other deny rules might still apply.
+ //
+ // The condition can use CEL functions that evaluate
+ // [resource
+ // tags](https://cloud.google.com/iam/help/conditions/resource-tags). Other
+ // functions and operators are not supported.
+ google.type.Expr denial_condition = 5;
+}
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/iam/v2/policy.proto b/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/iam/v2/policy.proto
new file mode 100644
index 00000000000..7b34d8259bc
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/iam/v2/policy.proto
@@ -0,0 +1,287 @@
+// Copyright 2025 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.iam.v2;
+
+import "google/api/annotations.proto";
+import "google/api/client.proto";
+import "google/api/field_behavior.proto";
+import "google/iam/v2/deny.proto";
+import "google/longrunning/operations.proto";
+import "google/protobuf/timestamp.proto";
+
+option csharp_namespace = "Google.Cloud.Iam.V2";
+option go_package = "cloud.google.com/go/iam/apiv2/iampb;iampb";
+option java_multiple_files = true;
+option java_outer_classname = "PolicyProto";
+option java_package = "com.google.iam.v2";
+option php_namespace = "Google\\Cloud\\Iam\\V2";
+
+// An interface for managing Identity and Access Management (IAM) policies.
+service Policies {
+ option (google.api.default_host) = "iam.googleapis.com";
+ option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
+
+ // Retrieves the policies of the specified kind that are attached to a
+ // resource.
+ //
+ // The response lists only policy metadata. In particular, policy rules are
+ // omitted.
+ rpc ListPolicies(ListPoliciesRequest) returns (ListPoliciesResponse) {
+ option (google.api.http) = {
+ get: "/v2/{parent=policies/*/*}"
+ };
+ option (google.api.method_signature) = "parent";
+ }
+
+ // Gets a policy.
+ rpc GetPolicy(GetPolicyRequest) returns (Policy) {
+ option (google.api.http) = {
+ get: "/v2/{name=policies/*/*/*}"
+ };
+ option (google.api.method_signature) = "name";
+ }
+
+ // Creates a policy.
+ rpc CreatePolicy(CreatePolicyRequest) returns (google.longrunning.Operation) {
+ option (google.api.http) = {
+ post: "/v2/{parent=policies/*/*}"
+ body: "policy"
+ };
+ option (google.api.method_signature) = "parent,policy,policy_id";
+ option (google.longrunning.operation_info) = {
+ response_type: "Policy"
+ metadata_type: "PolicyOperationMetadata"
+ };
+ }
+
+ // Updates the specified policy.
+ //
+ // You can update only the rules and the display name for the policy.
+ //
+ // To update a policy, you should use a read-modify-write loop:
+ //
+ // 1. Use [GetPolicy][google.iam.v2.Policies.GetPolicy] to read the current version of the policy.
+ // 2. Modify the policy as needed.
+ // 3. Use `UpdatePolicy` to write the updated policy.
+ //
+ // This pattern helps prevent conflicts between concurrent updates.
+ rpc UpdatePolicy(UpdatePolicyRequest) returns (google.longrunning.Operation) {
+ option (google.api.http) = {
+ put: "/v2/{policy.name=policies/*/*/*}"
+ body: "policy"
+ };
+ option (google.longrunning.operation_info) = {
+ response_type: "Policy"
+ metadata_type: "PolicyOperationMetadata"
+ };
+ }
+
+ // Deletes a policy. This action is permanent.
+ rpc DeletePolicy(DeletePolicyRequest) returns (google.longrunning.Operation) {
+ option (google.api.http) = {
+ delete: "/v2/{name=policies/*/*/*}"
+ };
+ option (google.api.method_signature) = "name";
+ option (google.longrunning.operation_info) = {
+ response_type: "Policy"
+ metadata_type: "PolicyOperationMetadata"
+ };
+ }
+}
+
+// Data for an IAM policy.
+message Policy {
+ // Immutable. The resource name of the `Policy`, which must be unique. Format:
+ // `policies/{attachment_point}/denypolicies/{policy_id}`
+ //
+ //
+ // The attachment point is identified by its URL-encoded full resource name,
+ // which means that the forward-slash character, `/`, must be written as
+ // `%2F`. For example,
+ // `policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies/my-deny-policy`.
+ //
+ // For organizations and folders, use the numeric ID in the full resource
+ // name. For projects, requests can use the alphanumeric or the numeric ID.
+ // Responses always contain the numeric ID.
+ string name = 1 [(google.api.field_behavior) = IMMUTABLE];
+
+ // Immutable. The globally unique ID of the `Policy`. Assigned automatically when the
+ // `Policy` is created.
+ string uid = 2 [(google.api.field_behavior) = IMMUTABLE];
+
+ // Output only. The kind of the `Policy`. Always contains the value `DenyPolicy`.
+ string kind = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // A user-specified description of the `Policy`. This value can be up to 63
+ // characters.
+ string display_name = 4;
+
+ // A key-value map to store arbitrary metadata for the `Policy`. Keys
+ // can be up to 63 characters. Values can be up to 255 characters.
+ map annotations = 5;
+
+ // An opaque tag that identifies the current version of the `Policy`. IAM uses
+ // this value to help manage concurrent updates, so they do not cause one
+ // update to be overwritten by another.
+ //
+ // If this field is present in a [CreatePolicy][] request, the value is
+ // ignored.
+ string etag = 6;
+
+ // Output only. The time when the `Policy` was created.
+ google.protobuf.Timestamp create_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The time when the `Policy` was last updated.
+ google.protobuf.Timestamp update_time = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The time when the `Policy` was deleted. Empty if the policy is not deleted.
+ google.protobuf.Timestamp delete_time = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // A list of rules that specify the behavior of the `Policy`. All of the rules
+ // should be of the `kind` specified in the `Policy`.
+ repeated PolicyRule rules = 10;
+
+ // Immutable. Specifies that this policy is managed by an authority and can only be
+ // modified by that authority. Usage is restricted.
+ string managing_authority = 11 [(google.api.field_behavior) = IMMUTABLE];
+}
+
+// A single rule in a `Policy`.
+message PolicyRule {
+ oneof kind {
+ // A rule for a deny policy.
+ DenyRule deny_rule = 2;
+ }
+
+ // A user-specified description of the rule. This value can be up to 256
+ // characters.
+ string description = 1;
+}
+
+// Request message for `ListPolicies`.
+message ListPoliciesRequest {
+ // Required. The resource that the policy is attached to, along with the kind of policy
+ // to list. Format:
+ // `policies/{attachment_point}/denypolicies`
+ //
+ //
+ // The attachment point is identified by its URL-encoded full resource name,
+ // which means that the forward-slash character, `/`, must be written as
+ // `%2F`. For example,
+ // `policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies`.
+ //
+ // For organizations and folders, use the numeric ID in the full resource
+ // name. For projects, you can use the alphanumeric or the numeric ID.
+ string parent = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // The maximum number of policies to return. IAM ignores this value and uses
+ // the value 1000.
+ int32 page_size = 2;
+
+ // A page token received in a [ListPoliciesResponse][google.iam.v2.ListPoliciesResponse]. Provide this token to
+ // retrieve the next page.
+ string page_token = 3;
+}
+
+// Response message for `ListPolicies`.
+message ListPoliciesResponse {
+ // Metadata for the policies that are attached to the resource.
+ repeated Policy policies = 1;
+
+ // A page token that you can use in a [ListPoliciesRequest][google.iam.v2.ListPoliciesRequest] to retrieve the
+ // next page. If this field is omitted, there are no additional pages.
+ string next_page_token = 2;
+}
+
+// Request message for `GetPolicy`.
+message GetPolicyRequest {
+ // Required. The resource name of the policy to retrieve. Format:
+ // `policies/{attachment_point}/denypolicies/{policy_id}`
+ //
+ //
+ // Use the URL-encoded full resource name, which means that the forward-slash
+ // character, `/`, must be written as `%2F`. For example,
+ // `policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies/my-policy`.
+ //
+ // For organizations and folders, use the numeric ID in the full resource
+ // name. For projects, you can use the alphanumeric or the numeric ID.
+ string name = 1 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Request message for `CreatePolicy`.
+message CreatePolicyRequest {
+ // Required. The resource that the policy is attached to, along with the kind of policy
+ // to create. Format: `policies/{attachment_point}/denypolicies`
+ //
+ //
+ // The attachment point is identified by its URL-encoded full resource name,
+ // which means that the forward-slash character, `/`, must be written as
+ // `%2F`. For example,
+ // `policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies`.
+ //
+ // For organizations and folders, use the numeric ID in the full resource
+ // name. For projects, you can use the alphanumeric or the numeric ID.
+ string parent = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The policy to create.
+ Policy policy = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // The ID to use for this policy, which will become the final component of
+ // the policy's resource name. The ID must contain 3 to 63 characters. It can
+ // contain lowercase letters and numbers, as well as dashes (`-`) and periods
+ // (`.`). The first character must be a lowercase letter.
+ string policy_id = 3;
+}
+
+// Request message for `UpdatePolicy`.
+message UpdatePolicyRequest {
+ // Required. The policy to update.
+ //
+ // To prevent conflicting updates, the `etag` value must match the value that
+ // is stored in IAM. If the `etag` values do not match, the request fails with
+ // a `409` error code and `ABORTED` status.
+ Policy policy = 1 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Request message for `DeletePolicy`.
+message DeletePolicyRequest {
+ // Required. The resource name of the policy to delete. Format:
+ // `policies/{attachment_point}/denypolicies/{policy_id}`
+ //
+ //
+ // Use the URL-encoded full resource name, which means that the forward-slash
+ // character, `/`, must be written as `%2F`. For example,
+ // `policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies/my-policy`.
+ //
+ // For organizations and folders, use the numeric ID in the full resource
+ // name. For projects, you can use the alphanumeric or the numeric ID.
+ string name = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Optional. The expected `etag` of the policy to delete. If the value does not match
+ // the value that is stored in IAM, the request fails with a `409` error code
+ // and `ABORTED` status.
+ //
+ // If you omit this field, the policy is deleted regardless of its current
+ // `etag`.
+ string etag = 2 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Metadata for long-running `Policy` operations.
+message PolicyOperationMetadata {
+ // Timestamp when the `google.longrunning.Operation` was created.
+ google.protobuf.Timestamp create_time = 1;
+}
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/rpc/status.proto b/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/rpc/status.proto
new file mode 100644
index 00000000000..dc14c9438ca
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/rpc/status.proto
@@ -0,0 +1,49 @@
+// Copyright 2025 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.rpc;
+
+import "google/protobuf/any.proto";
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/rpc/status;status";
+option java_multiple_files = true;
+option java_outer_classname = "StatusProto";
+option java_package = "com.google.rpc";
+option objc_class_prefix = "RPC";
+
+// The `Status` type defines a logical error model that is suitable for
+// different programming environments, including REST APIs and RPC APIs. It is
+// used by [gRPC](https://github.com/grpc). Each `Status` message contains
+// three pieces of data: error code, error message, and error details.
+//
+// You can find out more about this error model and how to work with it in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
+message Status {
+ // The status code, which should be an enum value of
+ // [google.rpc.Code][google.rpc.Code].
+ int32 code = 1;
+
+ // A developer-facing error message, which should be in English. Any
+ // user-facing error message should be localized and sent in the
+ // [google.rpc.Status.details][google.rpc.Status.details] field, or localized
+ // by the client.
+ string message = 2;
+
+ // A list of messages that carry the error details. There is a common set of
+ // message types for APIs to use.
+ repeated google.protobuf.Any details = 3;
+}
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/type/expr.proto b/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/type/expr.proto
new file mode 100644
index 00000000000..2fca5cda315
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/google/type/expr.proto
@@ -0,0 +1,73 @@
+// Copyright 2026 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.type;
+
+option go_package = "google.golang.org/genproto/googleapis/type/expr;expr";
+option java_multiple_files = true;
+option java_outer_classname = "ExprProto";
+option java_package = "com.google.type";
+option objc_class_prefix = "GTP";
+
+// Represents a textual expression in the Common Expression Language (CEL)
+// syntax. CEL is a C-like expression language. The syntax and semantics of CEL
+// are documented at https://github.com/google/cel-spec.
+//
+// Example (Comparison):
+//
+// title: "Summary size limit"
+// description: "Determines if a summary is less than 100 chars"
+// expression: "document.summary.size() < 100"
+//
+// Example (Equality):
+//
+// title: "Requestor is owner"
+// description: "Determines if requestor is the document owner"
+// expression: "document.owner == request.auth.claims.email"
+//
+// Example (Logic):
+//
+// title: "Public documents"
+// description: "Determine whether the document should be publicly visible"
+// expression: "document.type != 'private' && document.type != 'internal'"
+//
+// Example (Data Manipulation):
+//
+// title: "Notification string"
+// description: "Create a notification string with a timestamp."
+// expression: "'New message received at ' + string(document.create_time)"
+//
+// The exact variables and functions that may be referenced within an expression
+// are determined by the service that evaluates it. See the service
+// documentation for additional information.
+message Expr {
+ // Textual representation of an expression in Common Expression Language
+ // syntax.
+ string expression = 1;
+
+ // Optional. Title for the expression, i.e. a short string describing
+ // its purpose. This can be used e.g. in UIs which allow to enter the
+ // expression.
+ string title = 2;
+
+ // Optional. Description of the expression. This is a longer text which
+ // describes the expression, e.g. when hovered over it in a UI.
+ string description = 3;
+
+ // Optional. String indicating the location of the expression for error
+ // reporting, e.g. a file name and a position in the file.
+ string location = 4;
+}
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/protos.d.ts b/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/protos.d.ts
new file mode 100644
index 00000000000..b1d1b551ac3
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/protos.d.ts
@@ -0,0 +1,14815 @@
+// Copyright 2026 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import type {protobuf as $protobuf} from "google-gax";
+import Long = require("long");
+/** Namespace google. */
+export namespace google {
+
+ /** Namespace cloud. */
+ namespace cloud {
+
+ /** Namespace policytroubleshooter. */
+ namespace policytroubleshooter {
+
+ /** Namespace iam. */
+ namespace iam {
+
+ /** Namespace v3. */
+ namespace v3 {
+
+ /** Represents a PolicyTroubleshooter */
+ class PolicyTroubleshooter extends $protobuf.rpc.Service {
+
+ /**
+ * Constructs a new PolicyTroubleshooter service.
+ * @param rpcImpl RPC implementation
+ * @param [requestDelimited=false] Whether requests are length-delimited
+ * @param [responseDelimited=false] Whether responses are length-delimited
+ */
+ constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean);
+
+ /**
+ * Creates new PolicyTroubleshooter service using the specified rpc implementation.
+ * @param rpcImpl RPC implementation
+ * @param [requestDelimited=false] Whether requests are length-delimited
+ * @param [responseDelimited=false] Whether responses are length-delimited
+ * @returns RPC service. Useful where requests and/or responses are streamed.
+ */
+ public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): PolicyTroubleshooter;
+
+ /**
+ * Calls TroubleshootIamPolicy.
+ * @param request TroubleshootIamPolicyRequest message or plain object
+ * @param callback Node-style callback called with the error, if any, and TroubleshootIamPolicyResponse
+ */
+ public troubleshootIamPolicy(request: google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyRequest, callback: google.cloud.policytroubleshooter.iam.v3.PolicyTroubleshooter.TroubleshootIamPolicyCallback): void;
+
+ /**
+ * Calls TroubleshootIamPolicy.
+ * @param request TroubleshootIamPolicyRequest message or plain object
+ * @returns Promise
+ */
+ public troubleshootIamPolicy(request: google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyRequest): Promise;
+ }
+
+ namespace PolicyTroubleshooter {
+
+ /**
+ * Callback as used by {@link google.cloud.policytroubleshooter.iam.v3.PolicyTroubleshooter|troubleshootIamPolicy}.
+ * @param error Error, if any
+ * @param [response] TroubleshootIamPolicyResponse
+ */
+ type TroubleshootIamPolicyCallback = (error: (Error|null), response?: google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse) => void;
+ }
+
+ /** AllowAccessState enum. */
+ enum AllowAccessState {
+ ALLOW_ACCESS_STATE_UNSPECIFIED = 0,
+ ALLOW_ACCESS_STATE_GRANTED = 1,
+ ALLOW_ACCESS_STATE_NOT_GRANTED = 2,
+ ALLOW_ACCESS_STATE_UNKNOWN_CONDITIONAL = 3,
+ ALLOW_ACCESS_STATE_UNKNOWN_INFO = 4
+ }
+
+ /** DenyAccessState enum. */
+ enum DenyAccessState {
+ DENY_ACCESS_STATE_UNSPECIFIED = 0,
+ DENY_ACCESS_STATE_DENIED = 1,
+ DENY_ACCESS_STATE_NOT_DENIED = 2,
+ DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL = 3,
+ DENY_ACCESS_STATE_UNKNOWN_INFO = 4
+ }
+
+ /** RolePermissionInclusionState enum. */
+ enum RolePermissionInclusionState {
+ ROLE_PERMISSION_INCLUSION_STATE_UNSPECIFIED = 0,
+ ROLE_PERMISSION_INCLUDED = 1,
+ ROLE_PERMISSION_NOT_INCLUDED = 2,
+ ROLE_PERMISSION_UNKNOWN_INFO = 3
+ }
+
+ /** PermissionPatternMatchingState enum. */
+ enum PermissionPatternMatchingState {
+ PERMISSION_PATTERN_MATCHING_STATE_UNSPECIFIED = 0,
+ PERMISSION_PATTERN_MATCHED = 1,
+ PERMISSION_PATTERN_NOT_MATCHED = 2
+ }
+
+ /** MembershipMatchingState enum. */
+ enum MembershipMatchingState {
+ MEMBERSHIP_MATCHING_STATE_UNSPECIFIED = 0,
+ MEMBERSHIP_MATCHED = 1,
+ MEMBERSHIP_NOT_MATCHED = 2,
+ MEMBERSHIP_UNKNOWN_INFO = 3,
+ MEMBERSHIP_UNKNOWN_UNSUPPORTED = 4
+ }
+
+ /** HeuristicRelevance enum. */
+ enum HeuristicRelevance {
+ HEURISTIC_RELEVANCE_UNSPECIFIED = 0,
+ HEURISTIC_RELEVANCE_NORMAL = 1,
+ HEURISTIC_RELEVANCE_HIGH = 2
+ }
+
+ /** Properties of a TroubleshootIamPolicyRequest. */
+ interface ITroubleshootIamPolicyRequest {
+
+ /** TroubleshootIamPolicyRequest accessTuple */
+ accessTuple?: (google.cloud.policytroubleshooter.iam.v3.IAccessTuple|null);
+ }
+
+ /** Represents a TroubleshootIamPolicyRequest. */
+ class TroubleshootIamPolicyRequest implements ITroubleshootIamPolicyRequest {
+
+ /**
+ * Constructs a new TroubleshootIamPolicyRequest.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyRequest);
+
+ /** TroubleshootIamPolicyRequest accessTuple. */
+ public accessTuple?: (google.cloud.policytroubleshooter.iam.v3.IAccessTuple|null);
+
+ /**
+ * Creates a new TroubleshootIamPolicyRequest instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns TroubleshootIamPolicyRequest instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyRequest): google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest;
+
+ /**
+ * Encodes the specified TroubleshootIamPolicyRequest message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest.verify|verify} messages.
+ * @param message TroubleshootIamPolicyRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified TroubleshootIamPolicyRequest message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest.verify|verify} messages.
+ * @param message TroubleshootIamPolicyRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a TroubleshootIamPolicyRequest message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns TroubleshootIamPolicyRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest;
+
+ /**
+ * Decodes a TroubleshootIamPolicyRequest message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns TroubleshootIamPolicyRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest;
+
+ /**
+ * Verifies a TroubleshootIamPolicyRequest message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a TroubleshootIamPolicyRequest message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns TroubleshootIamPolicyRequest
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest;
+
+ /**
+ * Creates a plain object from a TroubleshootIamPolicyRequest message. Also converts values to other types if specified.
+ * @param message TroubleshootIamPolicyRequest
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this TroubleshootIamPolicyRequest to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for TroubleshootIamPolicyRequest
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a TroubleshootIamPolicyResponse. */
+ interface ITroubleshootIamPolicyResponse {
+
+ /** TroubleshootIamPolicyResponse overallAccessState */
+ overallAccessState?: (google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse.OverallAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse.OverallAccessState|null);
+
+ /** TroubleshootIamPolicyResponse accessTuple */
+ accessTuple?: (google.cloud.policytroubleshooter.iam.v3.IAccessTuple|null);
+
+ /** TroubleshootIamPolicyResponse allowPolicyExplanation */
+ allowPolicyExplanation?: (google.cloud.policytroubleshooter.iam.v3.IAllowPolicyExplanation|null);
+
+ /** TroubleshootIamPolicyResponse denyPolicyExplanation */
+ denyPolicyExplanation?: (google.cloud.policytroubleshooter.iam.v3.IDenyPolicyExplanation|null);
+ }
+
+ /** Represents a TroubleshootIamPolicyResponse. */
+ class TroubleshootIamPolicyResponse implements ITroubleshootIamPolicyResponse {
+
+ /**
+ * Constructs a new TroubleshootIamPolicyResponse.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyResponse);
+
+ /** TroubleshootIamPolicyResponse overallAccessState. */
+ public overallAccessState: (google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse.OverallAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse.OverallAccessState);
+
+ /** TroubleshootIamPolicyResponse accessTuple. */
+ public accessTuple?: (google.cloud.policytroubleshooter.iam.v3.IAccessTuple|null);
+
+ /** TroubleshootIamPolicyResponse allowPolicyExplanation. */
+ public allowPolicyExplanation?: (google.cloud.policytroubleshooter.iam.v3.IAllowPolicyExplanation|null);
+
+ /** TroubleshootIamPolicyResponse denyPolicyExplanation. */
+ public denyPolicyExplanation?: (google.cloud.policytroubleshooter.iam.v3.IDenyPolicyExplanation|null);
+
+ /**
+ * Creates a new TroubleshootIamPolicyResponse instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns TroubleshootIamPolicyResponse instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyResponse): google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse;
+
+ /**
+ * Encodes the specified TroubleshootIamPolicyResponse message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse.verify|verify} messages.
+ * @param message TroubleshootIamPolicyResponse message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyResponse, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified TroubleshootIamPolicyResponse message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse.verify|verify} messages.
+ * @param message TroubleshootIamPolicyResponse message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyResponse, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a TroubleshootIamPolicyResponse message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns TroubleshootIamPolicyResponse
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse;
+
+ /**
+ * Decodes a TroubleshootIamPolicyResponse message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns TroubleshootIamPolicyResponse
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse;
+
+ /**
+ * Verifies a TroubleshootIamPolicyResponse message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a TroubleshootIamPolicyResponse message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns TroubleshootIamPolicyResponse
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse;
+
+ /**
+ * Creates a plain object from a TroubleshootIamPolicyResponse message. Also converts values to other types if specified.
+ * @param message TroubleshootIamPolicyResponse
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this TroubleshootIamPolicyResponse to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for TroubleshootIamPolicyResponse
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace TroubleshootIamPolicyResponse {
+
+ /** OverallAccessState enum. */
+ enum OverallAccessState {
+ OVERALL_ACCESS_STATE_UNSPECIFIED = 0,
+ CAN_ACCESS = 1,
+ CANNOT_ACCESS = 2,
+ UNKNOWN_INFO = 3,
+ UNKNOWN_CONDITIONAL = 4
+ }
+ }
+
+ /** Properties of an AccessTuple. */
+ interface IAccessTuple {
+
+ /** AccessTuple principal */
+ principal?: (string|null);
+
+ /** AccessTuple fullResourceName */
+ fullResourceName?: (string|null);
+
+ /** AccessTuple permission */
+ permission?: (string|null);
+
+ /** AccessTuple permissionFqdn */
+ permissionFqdn?: (string|null);
+
+ /** AccessTuple conditionContext */
+ conditionContext?: (google.cloud.policytroubleshooter.iam.v3.IConditionContext|null);
+ }
+
+ /** Represents an AccessTuple. */
+ class AccessTuple implements IAccessTuple {
+
+ /**
+ * Constructs a new AccessTuple.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.IAccessTuple);
+
+ /** AccessTuple principal. */
+ public principal: string;
+
+ /** AccessTuple fullResourceName. */
+ public fullResourceName: string;
+
+ /** AccessTuple permission. */
+ public permission: string;
+
+ /** AccessTuple permissionFqdn. */
+ public permissionFqdn: string;
+
+ /** AccessTuple conditionContext. */
+ public conditionContext?: (google.cloud.policytroubleshooter.iam.v3.IConditionContext|null);
+
+ /**
+ * Creates a new AccessTuple instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns AccessTuple instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.IAccessTuple): google.cloud.policytroubleshooter.iam.v3.AccessTuple;
+
+ /**
+ * Encodes the specified AccessTuple message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.AccessTuple.verify|verify} messages.
+ * @param message AccessTuple message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.IAccessTuple, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified AccessTuple message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.AccessTuple.verify|verify} messages.
+ * @param message AccessTuple message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.IAccessTuple, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an AccessTuple message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns AccessTuple
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.AccessTuple;
+
+ /**
+ * Decodes an AccessTuple message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns AccessTuple
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.AccessTuple;
+
+ /**
+ * Verifies an AccessTuple message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an AccessTuple message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns AccessTuple
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.AccessTuple;
+
+ /**
+ * Creates a plain object from an AccessTuple message. Also converts values to other types if specified.
+ * @param message AccessTuple
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.AccessTuple, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this AccessTuple to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for AccessTuple
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a ConditionContext. */
+ interface IConditionContext {
+
+ /** ConditionContext resource */
+ resource?: (google.cloud.policytroubleshooter.iam.v3.ConditionContext.IResource|null);
+
+ /** ConditionContext destination */
+ destination?: (google.cloud.policytroubleshooter.iam.v3.ConditionContext.IPeer|null);
+
+ /** ConditionContext request */
+ request?: (google.cloud.policytroubleshooter.iam.v3.ConditionContext.IRequest|null);
+
+ /** ConditionContext effectiveTags */
+ effectiveTags?: (google.cloud.policytroubleshooter.iam.v3.ConditionContext.IEffectiveTag[]|null);
+ }
+
+ /** Represents a ConditionContext. */
+ class ConditionContext implements IConditionContext {
+
+ /**
+ * Constructs a new ConditionContext.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.IConditionContext);
+
+ /** ConditionContext resource. */
+ public resource?: (google.cloud.policytroubleshooter.iam.v3.ConditionContext.IResource|null);
+
+ /** ConditionContext destination. */
+ public destination?: (google.cloud.policytroubleshooter.iam.v3.ConditionContext.IPeer|null);
+
+ /** ConditionContext request. */
+ public request?: (google.cloud.policytroubleshooter.iam.v3.ConditionContext.IRequest|null);
+
+ /** ConditionContext effectiveTags. */
+ public effectiveTags: google.cloud.policytroubleshooter.iam.v3.ConditionContext.IEffectiveTag[];
+
+ /**
+ * Creates a new ConditionContext instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ConditionContext instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.IConditionContext): google.cloud.policytroubleshooter.iam.v3.ConditionContext;
+
+ /**
+ * Encodes the specified ConditionContext message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.verify|verify} messages.
+ * @param message ConditionContext message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.IConditionContext, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ConditionContext message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.verify|verify} messages.
+ * @param message ConditionContext message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.IConditionContext, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a ConditionContext message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ConditionContext
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.ConditionContext;
+
+ /**
+ * Decodes a ConditionContext message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ConditionContext
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.ConditionContext;
+
+ /**
+ * Verifies a ConditionContext message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a ConditionContext message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ConditionContext
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.ConditionContext;
+
+ /**
+ * Creates a plain object from a ConditionContext message. Also converts values to other types if specified.
+ * @param message ConditionContext
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.ConditionContext, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ConditionContext to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ConditionContext
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace ConditionContext {
+
+ /** Properties of a Resource. */
+ interface IResource {
+
+ /** Resource service */
+ service?: (string|null);
+
+ /** Resource name */
+ name?: (string|null);
+
+ /** Resource type */
+ type?: (string|null);
+ }
+
+ /** Represents a Resource. */
+ class Resource implements IResource {
+
+ /**
+ * Constructs a new Resource.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.ConditionContext.IResource);
+
+ /** Resource service. */
+ public service: string;
+
+ /** Resource name. */
+ public name: string;
+
+ /** Resource type. */
+ public type: string;
+
+ /**
+ * Creates a new Resource instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Resource instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.ConditionContext.IResource): google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource;
+
+ /**
+ * Encodes the specified Resource message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource.verify|verify} messages.
+ * @param message Resource message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.ConditionContext.IResource, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Resource message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource.verify|verify} messages.
+ * @param message Resource message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.ConditionContext.IResource, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a Resource message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Resource
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource;
+
+ /**
+ * Decodes a Resource message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Resource
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource;
+
+ /**
+ * Verifies a Resource message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a Resource message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Resource
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource;
+
+ /**
+ * Creates a plain object from a Resource message. Also converts values to other types if specified.
+ * @param message Resource
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Resource to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Resource
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a Peer. */
+ interface IPeer {
+
+ /** Peer ip */
+ ip?: (string|null);
+
+ /** Peer port */
+ port?: (number|Long|string|null);
+ }
+
+ /** Represents a Peer. */
+ class Peer implements IPeer {
+
+ /**
+ * Constructs a new Peer.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.ConditionContext.IPeer);
+
+ /** Peer ip. */
+ public ip: string;
+
+ /** Peer port. */
+ public port: (number|Long|string);
+
+ /**
+ * Creates a new Peer instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Peer instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.ConditionContext.IPeer): google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer;
+
+ /**
+ * Encodes the specified Peer message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer.verify|verify} messages.
+ * @param message Peer message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.ConditionContext.IPeer, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Peer message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer.verify|verify} messages.
+ * @param message Peer message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.ConditionContext.IPeer, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a Peer message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Peer
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer;
+
+ /**
+ * Decodes a Peer message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Peer
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer;
+
+ /**
+ * Verifies a Peer message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a Peer message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Peer
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer;
+
+ /**
+ * Creates a plain object from a Peer message. Also converts values to other types if specified.
+ * @param message Peer
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Peer to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Peer
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a Request. */
+ interface IRequest {
+
+ /** Request receiveTime */
+ receiveTime?: (google.protobuf.ITimestamp|null);
+ }
+
+ /** Represents a Request. */
+ class Request implements IRequest {
+
+ /**
+ * Constructs a new Request.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.ConditionContext.IRequest);
+
+ /** Request receiveTime. */
+ public receiveTime?: (google.protobuf.ITimestamp|null);
+
+ /**
+ * Creates a new Request instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Request instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.ConditionContext.IRequest): google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request;
+
+ /**
+ * Encodes the specified Request message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request.verify|verify} messages.
+ * @param message Request message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.ConditionContext.IRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Request message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request.verify|verify} messages.
+ * @param message Request message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.ConditionContext.IRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a Request message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Request
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request;
+
+ /**
+ * Decodes a Request message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Request
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request;
+
+ /**
+ * Verifies a Request message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a Request message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Request
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request;
+
+ /**
+ * Creates a plain object from a Request message. Also converts values to other types if specified.
+ * @param message Request
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Request to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Request
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an EffectiveTag. */
+ interface IEffectiveTag {
+
+ /** EffectiveTag tagValue */
+ tagValue?: (string|null);
+
+ /** EffectiveTag namespacedTagValue */
+ namespacedTagValue?: (string|null);
+
+ /** EffectiveTag tagKey */
+ tagKey?: (string|null);
+
+ /** EffectiveTag namespacedTagKey */
+ namespacedTagKey?: (string|null);
+
+ /** EffectiveTag tagKeyParentName */
+ tagKeyParentName?: (string|null);
+
+ /** EffectiveTag inherited */
+ inherited?: (boolean|null);
+ }
+
+ /** Represents an EffectiveTag. */
+ class EffectiveTag implements IEffectiveTag {
+
+ /**
+ * Constructs a new EffectiveTag.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.ConditionContext.IEffectiveTag);
+
+ /** EffectiveTag tagValue. */
+ public tagValue: string;
+
+ /** EffectiveTag namespacedTagValue. */
+ public namespacedTagValue: string;
+
+ /** EffectiveTag tagKey. */
+ public tagKey: string;
+
+ /** EffectiveTag namespacedTagKey. */
+ public namespacedTagKey: string;
+
+ /** EffectiveTag tagKeyParentName. */
+ public tagKeyParentName: string;
+
+ /** EffectiveTag inherited. */
+ public inherited: boolean;
+
+ /**
+ * Creates a new EffectiveTag instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns EffectiveTag instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.ConditionContext.IEffectiveTag): google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag;
+
+ /**
+ * Encodes the specified EffectiveTag message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag.verify|verify} messages.
+ * @param message EffectiveTag message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.ConditionContext.IEffectiveTag, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified EffectiveTag message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag.verify|verify} messages.
+ * @param message EffectiveTag message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.ConditionContext.IEffectiveTag, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an EffectiveTag message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns EffectiveTag
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag;
+
+ /**
+ * Decodes an EffectiveTag message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns EffectiveTag
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag;
+
+ /**
+ * Verifies an EffectiveTag message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an EffectiveTag message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns EffectiveTag
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag;
+
+ /**
+ * Creates a plain object from an EffectiveTag message. Also converts values to other types if specified.
+ * @param message EffectiveTag
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this EffectiveTag to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for EffectiveTag
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+
+ /** Properties of an AllowPolicyExplanation. */
+ interface IAllowPolicyExplanation {
+
+ /** AllowPolicyExplanation allowAccessState */
+ allowAccessState?: (google.cloud.policytroubleshooter.iam.v3.AllowAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3.AllowAccessState|null);
+
+ /** AllowPolicyExplanation explainedPolicies */
+ explainedPolicies?: (google.cloud.policytroubleshooter.iam.v3.IExplainedAllowPolicy[]|null);
+
+ /** AllowPolicyExplanation relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null);
+ }
+
+ /** Represents an AllowPolicyExplanation. */
+ class AllowPolicyExplanation implements IAllowPolicyExplanation {
+
+ /**
+ * Constructs a new AllowPolicyExplanation.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.IAllowPolicyExplanation);
+
+ /** AllowPolicyExplanation allowAccessState. */
+ public allowAccessState: (google.cloud.policytroubleshooter.iam.v3.AllowAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3.AllowAccessState);
+
+ /** AllowPolicyExplanation explainedPolicies. */
+ public explainedPolicies: google.cloud.policytroubleshooter.iam.v3.IExplainedAllowPolicy[];
+
+ /** AllowPolicyExplanation relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance);
+
+ /**
+ * Creates a new AllowPolicyExplanation instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns AllowPolicyExplanation instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.IAllowPolicyExplanation): google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation;
+
+ /**
+ * Encodes the specified AllowPolicyExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation.verify|verify} messages.
+ * @param message AllowPolicyExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.IAllowPolicyExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified AllowPolicyExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation.verify|verify} messages.
+ * @param message AllowPolicyExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.IAllowPolicyExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an AllowPolicyExplanation message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns AllowPolicyExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation;
+
+ /**
+ * Decodes an AllowPolicyExplanation message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns AllowPolicyExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation;
+
+ /**
+ * Verifies an AllowPolicyExplanation message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an AllowPolicyExplanation message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns AllowPolicyExplanation
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation;
+
+ /**
+ * Creates a plain object from an AllowPolicyExplanation message. Also converts values to other types if specified.
+ * @param message AllowPolicyExplanation
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this AllowPolicyExplanation to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for AllowPolicyExplanation
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an ExplainedAllowPolicy. */
+ interface IExplainedAllowPolicy {
+
+ /** ExplainedAllowPolicy allowAccessState */
+ allowAccessState?: (google.cloud.policytroubleshooter.iam.v3.AllowAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3.AllowAccessState|null);
+
+ /** ExplainedAllowPolicy fullResourceName */
+ fullResourceName?: (string|null);
+
+ /** ExplainedAllowPolicy bindingExplanations */
+ bindingExplanations?: (google.cloud.policytroubleshooter.iam.v3.IAllowBindingExplanation[]|null);
+
+ /** ExplainedAllowPolicy relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null);
+
+ /** ExplainedAllowPolicy policy */
+ policy?: (google.iam.v1.IPolicy|null);
+ }
+
+ /** Represents an ExplainedAllowPolicy. */
+ class ExplainedAllowPolicy implements IExplainedAllowPolicy {
+
+ /**
+ * Constructs a new ExplainedAllowPolicy.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.IExplainedAllowPolicy);
+
+ /** ExplainedAllowPolicy allowAccessState. */
+ public allowAccessState: (google.cloud.policytroubleshooter.iam.v3.AllowAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3.AllowAccessState);
+
+ /** ExplainedAllowPolicy fullResourceName. */
+ public fullResourceName: string;
+
+ /** ExplainedAllowPolicy bindingExplanations. */
+ public bindingExplanations: google.cloud.policytroubleshooter.iam.v3.IAllowBindingExplanation[];
+
+ /** ExplainedAllowPolicy relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance);
+
+ /** ExplainedAllowPolicy policy. */
+ public policy?: (google.iam.v1.IPolicy|null);
+
+ /**
+ * Creates a new ExplainedAllowPolicy instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ExplainedAllowPolicy instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.IExplainedAllowPolicy): google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy;
+
+ /**
+ * Encodes the specified ExplainedAllowPolicy message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy.verify|verify} messages.
+ * @param message ExplainedAllowPolicy message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.IExplainedAllowPolicy, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ExplainedAllowPolicy message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy.verify|verify} messages.
+ * @param message ExplainedAllowPolicy message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.IExplainedAllowPolicy, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an ExplainedAllowPolicy message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ExplainedAllowPolicy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy;
+
+ /**
+ * Decodes an ExplainedAllowPolicy message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ExplainedAllowPolicy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy;
+
+ /**
+ * Verifies an ExplainedAllowPolicy message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an ExplainedAllowPolicy message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ExplainedAllowPolicy
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy;
+
+ /**
+ * Creates a plain object from an ExplainedAllowPolicy message. Also converts values to other types if specified.
+ * @param message ExplainedAllowPolicy
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ExplainedAllowPolicy to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ExplainedAllowPolicy
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an AllowBindingExplanation. */
+ interface IAllowBindingExplanation {
+
+ /** AllowBindingExplanation allowAccessState */
+ allowAccessState?: (google.cloud.policytroubleshooter.iam.v3.AllowAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3.AllowAccessState|null);
+
+ /** AllowBindingExplanation role */
+ role?: (string|null);
+
+ /** AllowBindingExplanation rolePermission */
+ rolePermission?: (google.cloud.policytroubleshooter.iam.v3.RolePermissionInclusionState|keyof typeof google.cloud.policytroubleshooter.iam.v3.RolePermissionInclusionState|null);
+
+ /** AllowBindingExplanation rolePermissionRelevance */
+ rolePermissionRelevance?: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null);
+
+ /** AllowBindingExplanation combinedMembership */
+ combinedMembership?: (google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.IAnnotatedAllowMembership|null);
+
+ /** AllowBindingExplanation memberships */
+ memberships?: ({ [k: string]: google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.IAnnotatedAllowMembership }|null);
+
+ /** AllowBindingExplanation relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null);
+
+ /** AllowBindingExplanation condition */
+ condition?: (google.type.IExpr|null);
+
+ /** AllowBindingExplanation conditionExplanation */
+ conditionExplanation?: (google.cloud.policytroubleshooter.iam.v3.IConditionExplanation|null);
+ }
+
+ /** Represents an AllowBindingExplanation. */
+ class AllowBindingExplanation implements IAllowBindingExplanation {
+
+ /**
+ * Constructs a new AllowBindingExplanation.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.IAllowBindingExplanation);
+
+ /** AllowBindingExplanation allowAccessState. */
+ public allowAccessState: (google.cloud.policytroubleshooter.iam.v3.AllowAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3.AllowAccessState);
+
+ /** AllowBindingExplanation role. */
+ public role: string;
+
+ /** AllowBindingExplanation rolePermission. */
+ public rolePermission: (google.cloud.policytroubleshooter.iam.v3.RolePermissionInclusionState|keyof typeof google.cloud.policytroubleshooter.iam.v3.RolePermissionInclusionState);
+
+ /** AllowBindingExplanation rolePermissionRelevance. */
+ public rolePermissionRelevance: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance);
+
+ /** AllowBindingExplanation combinedMembership. */
+ public combinedMembership?: (google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.IAnnotatedAllowMembership|null);
+
+ /** AllowBindingExplanation memberships. */
+ public memberships: { [k: string]: google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.IAnnotatedAllowMembership };
+
+ /** AllowBindingExplanation relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance);
+
+ /** AllowBindingExplanation condition. */
+ public condition?: (google.type.IExpr|null);
+
+ /** AllowBindingExplanation conditionExplanation. */
+ public conditionExplanation?: (google.cloud.policytroubleshooter.iam.v3.IConditionExplanation|null);
+
+ /**
+ * Creates a new AllowBindingExplanation instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns AllowBindingExplanation instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.IAllowBindingExplanation): google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation;
+
+ /**
+ * Encodes the specified AllowBindingExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.verify|verify} messages.
+ * @param message AllowBindingExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.IAllowBindingExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified AllowBindingExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.verify|verify} messages.
+ * @param message AllowBindingExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.IAllowBindingExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an AllowBindingExplanation message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns AllowBindingExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation;
+
+ /**
+ * Decodes an AllowBindingExplanation message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns AllowBindingExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation;
+
+ /**
+ * Verifies an AllowBindingExplanation message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an AllowBindingExplanation message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns AllowBindingExplanation
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation;
+
+ /**
+ * Creates a plain object from an AllowBindingExplanation message. Also converts values to other types if specified.
+ * @param message AllowBindingExplanation
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this AllowBindingExplanation to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for AllowBindingExplanation
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace AllowBindingExplanation {
+
+ /** Properties of an AnnotatedAllowMembership. */
+ interface IAnnotatedAllowMembership {
+
+ /** AnnotatedAllowMembership membership */
+ membership?: (google.cloud.policytroubleshooter.iam.v3.MembershipMatchingState|keyof typeof google.cloud.policytroubleshooter.iam.v3.MembershipMatchingState|null);
+
+ /** AnnotatedAllowMembership relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null);
+ }
+
+ /** Represents an AnnotatedAllowMembership. */
+ class AnnotatedAllowMembership implements IAnnotatedAllowMembership {
+
+ /**
+ * Constructs a new AnnotatedAllowMembership.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.IAnnotatedAllowMembership);
+
+ /** AnnotatedAllowMembership membership. */
+ public membership: (google.cloud.policytroubleshooter.iam.v3.MembershipMatchingState|keyof typeof google.cloud.policytroubleshooter.iam.v3.MembershipMatchingState);
+
+ /** AnnotatedAllowMembership relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance);
+
+ /**
+ * Creates a new AnnotatedAllowMembership instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns AnnotatedAllowMembership instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.IAnnotatedAllowMembership): google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership;
+
+ /**
+ * Encodes the specified AnnotatedAllowMembership message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership.verify|verify} messages.
+ * @param message AnnotatedAllowMembership message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.IAnnotatedAllowMembership, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified AnnotatedAllowMembership message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership.verify|verify} messages.
+ * @param message AnnotatedAllowMembership message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.IAnnotatedAllowMembership, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an AnnotatedAllowMembership message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns AnnotatedAllowMembership
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership;
+
+ /**
+ * Decodes an AnnotatedAllowMembership message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns AnnotatedAllowMembership
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership;
+
+ /**
+ * Verifies an AnnotatedAllowMembership message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an AnnotatedAllowMembership message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns AnnotatedAllowMembership
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership;
+
+ /**
+ * Creates a plain object from an AnnotatedAllowMembership message. Also converts values to other types if specified.
+ * @param message AnnotatedAllowMembership
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this AnnotatedAllowMembership to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for AnnotatedAllowMembership
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+
+ /** Properties of a DenyPolicyExplanation. */
+ interface IDenyPolicyExplanation {
+
+ /** DenyPolicyExplanation denyAccessState */
+ denyAccessState?: (google.cloud.policytroubleshooter.iam.v3.DenyAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3.DenyAccessState|null);
+
+ /** DenyPolicyExplanation explainedResources */
+ explainedResources?: (google.cloud.policytroubleshooter.iam.v3.IExplainedDenyResource[]|null);
+
+ /** DenyPolicyExplanation relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null);
+
+ /** DenyPolicyExplanation permissionDeniable */
+ permissionDeniable?: (boolean|null);
+ }
+
+ /** Represents a DenyPolicyExplanation. */
+ class DenyPolicyExplanation implements IDenyPolicyExplanation {
+
+ /**
+ * Constructs a new DenyPolicyExplanation.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.IDenyPolicyExplanation);
+
+ /** DenyPolicyExplanation denyAccessState. */
+ public denyAccessState: (google.cloud.policytroubleshooter.iam.v3.DenyAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3.DenyAccessState);
+
+ /** DenyPolicyExplanation explainedResources. */
+ public explainedResources: google.cloud.policytroubleshooter.iam.v3.IExplainedDenyResource[];
+
+ /** DenyPolicyExplanation relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance);
+
+ /** DenyPolicyExplanation permissionDeniable. */
+ public permissionDeniable: boolean;
+
+ /**
+ * Creates a new DenyPolicyExplanation instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns DenyPolicyExplanation instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.IDenyPolicyExplanation): google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation;
+
+ /**
+ * Encodes the specified DenyPolicyExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation.verify|verify} messages.
+ * @param message DenyPolicyExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.IDenyPolicyExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified DenyPolicyExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation.verify|verify} messages.
+ * @param message DenyPolicyExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.IDenyPolicyExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a DenyPolicyExplanation message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns DenyPolicyExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation;
+
+ /**
+ * Decodes a DenyPolicyExplanation message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns DenyPolicyExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation;
+
+ /**
+ * Verifies a DenyPolicyExplanation message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a DenyPolicyExplanation message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns DenyPolicyExplanation
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation;
+
+ /**
+ * Creates a plain object from a DenyPolicyExplanation message. Also converts values to other types if specified.
+ * @param message DenyPolicyExplanation
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this DenyPolicyExplanation to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for DenyPolicyExplanation
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an ExplainedDenyResource. */
+ interface IExplainedDenyResource {
+
+ /** ExplainedDenyResource denyAccessState */
+ denyAccessState?: (google.cloud.policytroubleshooter.iam.v3.DenyAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3.DenyAccessState|null);
+
+ /** ExplainedDenyResource fullResourceName */
+ fullResourceName?: (string|null);
+
+ /** ExplainedDenyResource explainedPolicies */
+ explainedPolicies?: (google.cloud.policytroubleshooter.iam.v3.IExplainedDenyPolicy[]|null);
+
+ /** ExplainedDenyResource relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null);
+ }
+
+ /** Represents an ExplainedDenyResource. */
+ class ExplainedDenyResource implements IExplainedDenyResource {
+
+ /**
+ * Constructs a new ExplainedDenyResource.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.IExplainedDenyResource);
+
+ /** ExplainedDenyResource denyAccessState. */
+ public denyAccessState: (google.cloud.policytroubleshooter.iam.v3.DenyAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3.DenyAccessState);
+
+ /** ExplainedDenyResource fullResourceName. */
+ public fullResourceName: string;
+
+ /** ExplainedDenyResource explainedPolicies. */
+ public explainedPolicies: google.cloud.policytroubleshooter.iam.v3.IExplainedDenyPolicy[];
+
+ /** ExplainedDenyResource relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance);
+
+ /**
+ * Creates a new ExplainedDenyResource instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ExplainedDenyResource instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.IExplainedDenyResource): google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource;
+
+ /**
+ * Encodes the specified ExplainedDenyResource message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource.verify|verify} messages.
+ * @param message ExplainedDenyResource message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.IExplainedDenyResource, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ExplainedDenyResource message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource.verify|verify} messages.
+ * @param message ExplainedDenyResource message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.IExplainedDenyResource, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an ExplainedDenyResource message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ExplainedDenyResource
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource;
+
+ /**
+ * Decodes an ExplainedDenyResource message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ExplainedDenyResource
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource;
+
+ /**
+ * Verifies an ExplainedDenyResource message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an ExplainedDenyResource message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ExplainedDenyResource
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource;
+
+ /**
+ * Creates a plain object from an ExplainedDenyResource message. Also converts values to other types if specified.
+ * @param message ExplainedDenyResource
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ExplainedDenyResource to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ExplainedDenyResource
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an ExplainedDenyPolicy. */
+ interface IExplainedDenyPolicy {
+
+ /** ExplainedDenyPolicy denyAccessState */
+ denyAccessState?: (google.cloud.policytroubleshooter.iam.v3.DenyAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3.DenyAccessState|null);
+
+ /** ExplainedDenyPolicy policy */
+ policy?: (google.iam.v2.IPolicy|null);
+
+ /** ExplainedDenyPolicy ruleExplanations */
+ ruleExplanations?: (google.cloud.policytroubleshooter.iam.v3.IDenyRuleExplanation[]|null);
+
+ /** ExplainedDenyPolicy relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null);
+ }
+
+ /** Represents an ExplainedDenyPolicy. */
+ class ExplainedDenyPolicy implements IExplainedDenyPolicy {
+
+ /**
+ * Constructs a new ExplainedDenyPolicy.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.IExplainedDenyPolicy);
+
+ /** ExplainedDenyPolicy denyAccessState. */
+ public denyAccessState: (google.cloud.policytroubleshooter.iam.v3.DenyAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3.DenyAccessState);
+
+ /** ExplainedDenyPolicy policy. */
+ public policy?: (google.iam.v2.IPolicy|null);
+
+ /** ExplainedDenyPolicy ruleExplanations. */
+ public ruleExplanations: google.cloud.policytroubleshooter.iam.v3.IDenyRuleExplanation[];
+
+ /** ExplainedDenyPolicy relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance);
+
+ /**
+ * Creates a new ExplainedDenyPolicy instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ExplainedDenyPolicy instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.IExplainedDenyPolicy): google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy;
+
+ /**
+ * Encodes the specified ExplainedDenyPolicy message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy.verify|verify} messages.
+ * @param message ExplainedDenyPolicy message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.IExplainedDenyPolicy, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ExplainedDenyPolicy message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy.verify|verify} messages.
+ * @param message ExplainedDenyPolicy message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.IExplainedDenyPolicy, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an ExplainedDenyPolicy message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ExplainedDenyPolicy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy;
+
+ /**
+ * Decodes an ExplainedDenyPolicy message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ExplainedDenyPolicy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy;
+
+ /**
+ * Verifies an ExplainedDenyPolicy message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an ExplainedDenyPolicy message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ExplainedDenyPolicy
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy;
+
+ /**
+ * Creates a plain object from an ExplainedDenyPolicy message. Also converts values to other types if specified.
+ * @param message ExplainedDenyPolicy
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ExplainedDenyPolicy to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ExplainedDenyPolicy
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a DenyRuleExplanation. */
+ interface IDenyRuleExplanation {
+
+ /** DenyRuleExplanation denyAccessState */
+ denyAccessState?: (google.cloud.policytroubleshooter.iam.v3.DenyAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3.DenyAccessState|null);
+
+ /** DenyRuleExplanation combinedDeniedPermission */
+ combinedDeniedPermission?: (google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching|null);
+
+ /** DenyRuleExplanation deniedPermissions */
+ deniedPermissions?: ({ [k: string]: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching }|null);
+
+ /** DenyRuleExplanation combinedExceptionPermission */
+ combinedExceptionPermission?: (google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching|null);
+
+ /** DenyRuleExplanation exceptionPermissions */
+ exceptionPermissions?: ({ [k: string]: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching }|null);
+
+ /** DenyRuleExplanation combinedDeniedPrincipal */
+ combinedDeniedPrincipal?: (google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching|null);
+
+ /** DenyRuleExplanation deniedPrincipals */
+ deniedPrincipals?: ({ [k: string]: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching }|null);
+
+ /** DenyRuleExplanation combinedExceptionPrincipal */
+ combinedExceptionPrincipal?: (google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching|null);
+
+ /** DenyRuleExplanation exceptionPrincipals */
+ exceptionPrincipals?: ({ [k: string]: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching }|null);
+
+ /** DenyRuleExplanation relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null);
+
+ /** DenyRuleExplanation condition */
+ condition?: (google.type.IExpr|null);
+
+ /** DenyRuleExplanation conditionExplanation */
+ conditionExplanation?: (google.cloud.policytroubleshooter.iam.v3.IConditionExplanation|null);
+ }
+
+ /** Represents a DenyRuleExplanation. */
+ class DenyRuleExplanation implements IDenyRuleExplanation {
+
+ /**
+ * Constructs a new DenyRuleExplanation.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.IDenyRuleExplanation);
+
+ /** DenyRuleExplanation denyAccessState. */
+ public denyAccessState: (google.cloud.policytroubleshooter.iam.v3.DenyAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3.DenyAccessState);
+
+ /** DenyRuleExplanation combinedDeniedPermission. */
+ public combinedDeniedPermission?: (google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching|null);
+
+ /** DenyRuleExplanation deniedPermissions. */
+ public deniedPermissions: { [k: string]: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching };
+
+ /** DenyRuleExplanation combinedExceptionPermission. */
+ public combinedExceptionPermission?: (google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching|null);
+
+ /** DenyRuleExplanation exceptionPermissions. */
+ public exceptionPermissions: { [k: string]: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching };
+
+ /** DenyRuleExplanation combinedDeniedPrincipal. */
+ public combinedDeniedPrincipal?: (google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching|null);
+
+ /** DenyRuleExplanation deniedPrincipals. */
+ public deniedPrincipals: { [k: string]: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching };
+
+ /** DenyRuleExplanation combinedExceptionPrincipal. */
+ public combinedExceptionPrincipal?: (google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching|null);
+
+ /** DenyRuleExplanation exceptionPrincipals. */
+ public exceptionPrincipals: { [k: string]: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching };
+
+ /** DenyRuleExplanation relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance);
+
+ /** DenyRuleExplanation condition. */
+ public condition?: (google.type.IExpr|null);
+
+ /** DenyRuleExplanation conditionExplanation. */
+ public conditionExplanation?: (google.cloud.policytroubleshooter.iam.v3.IConditionExplanation|null);
+
+ /**
+ * Creates a new DenyRuleExplanation instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns DenyRuleExplanation instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.IDenyRuleExplanation): google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation;
+
+ /**
+ * Encodes the specified DenyRuleExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.verify|verify} messages.
+ * @param message DenyRuleExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.IDenyRuleExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified DenyRuleExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.verify|verify} messages.
+ * @param message DenyRuleExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.IDenyRuleExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a DenyRuleExplanation message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns DenyRuleExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation;
+
+ /**
+ * Decodes a DenyRuleExplanation message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns DenyRuleExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation;
+
+ /**
+ * Verifies a DenyRuleExplanation message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a DenyRuleExplanation message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns DenyRuleExplanation
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation;
+
+ /**
+ * Creates a plain object from a DenyRuleExplanation message. Also converts values to other types if specified.
+ * @param message DenyRuleExplanation
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this DenyRuleExplanation to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for DenyRuleExplanation
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace DenyRuleExplanation {
+
+ /** Properties of an AnnotatedPermissionMatching. */
+ interface IAnnotatedPermissionMatching {
+
+ /** AnnotatedPermissionMatching permissionMatchingState */
+ permissionMatchingState?: (google.cloud.policytroubleshooter.iam.v3.PermissionPatternMatchingState|keyof typeof google.cloud.policytroubleshooter.iam.v3.PermissionPatternMatchingState|null);
+
+ /** AnnotatedPermissionMatching relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null);
+ }
+
+ /** Represents an AnnotatedPermissionMatching. */
+ class AnnotatedPermissionMatching implements IAnnotatedPermissionMatching {
+
+ /**
+ * Constructs a new AnnotatedPermissionMatching.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching);
+
+ /** AnnotatedPermissionMatching permissionMatchingState. */
+ public permissionMatchingState: (google.cloud.policytroubleshooter.iam.v3.PermissionPatternMatchingState|keyof typeof google.cloud.policytroubleshooter.iam.v3.PermissionPatternMatchingState);
+
+ /** AnnotatedPermissionMatching relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance);
+
+ /**
+ * Creates a new AnnotatedPermissionMatching instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns AnnotatedPermissionMatching instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching): google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching;
+
+ /**
+ * Encodes the specified AnnotatedPermissionMatching message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.verify|verify} messages.
+ * @param message AnnotatedPermissionMatching message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified AnnotatedPermissionMatching message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.verify|verify} messages.
+ * @param message AnnotatedPermissionMatching message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an AnnotatedPermissionMatching message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns AnnotatedPermissionMatching
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching;
+
+ /**
+ * Decodes an AnnotatedPermissionMatching message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns AnnotatedPermissionMatching
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching;
+
+ /**
+ * Verifies an AnnotatedPermissionMatching message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an AnnotatedPermissionMatching message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns AnnotatedPermissionMatching
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching;
+
+ /**
+ * Creates a plain object from an AnnotatedPermissionMatching message. Also converts values to other types if specified.
+ * @param message AnnotatedPermissionMatching
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this AnnotatedPermissionMatching to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for AnnotatedPermissionMatching
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an AnnotatedDenyPrincipalMatching. */
+ interface IAnnotatedDenyPrincipalMatching {
+
+ /** AnnotatedDenyPrincipalMatching membership */
+ membership?: (google.cloud.policytroubleshooter.iam.v3.MembershipMatchingState|keyof typeof google.cloud.policytroubleshooter.iam.v3.MembershipMatchingState|null);
+
+ /** AnnotatedDenyPrincipalMatching relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null);
+ }
+
+ /** Represents an AnnotatedDenyPrincipalMatching. */
+ class AnnotatedDenyPrincipalMatching implements IAnnotatedDenyPrincipalMatching {
+
+ /**
+ * Constructs a new AnnotatedDenyPrincipalMatching.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching);
+
+ /** AnnotatedDenyPrincipalMatching membership. */
+ public membership: (google.cloud.policytroubleshooter.iam.v3.MembershipMatchingState|keyof typeof google.cloud.policytroubleshooter.iam.v3.MembershipMatchingState);
+
+ /** AnnotatedDenyPrincipalMatching relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance);
+
+ /**
+ * Creates a new AnnotatedDenyPrincipalMatching instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns AnnotatedDenyPrincipalMatching instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching): google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching;
+
+ /**
+ * Encodes the specified AnnotatedDenyPrincipalMatching message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.verify|verify} messages.
+ * @param message AnnotatedDenyPrincipalMatching message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified AnnotatedDenyPrincipalMatching message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.verify|verify} messages.
+ * @param message AnnotatedDenyPrincipalMatching message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an AnnotatedDenyPrincipalMatching message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns AnnotatedDenyPrincipalMatching
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching;
+
+ /**
+ * Decodes an AnnotatedDenyPrincipalMatching message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns AnnotatedDenyPrincipalMatching
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching;
+
+ /**
+ * Verifies an AnnotatedDenyPrincipalMatching message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an AnnotatedDenyPrincipalMatching message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns AnnotatedDenyPrincipalMatching
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching;
+
+ /**
+ * Creates a plain object from an AnnotatedDenyPrincipalMatching message. Also converts values to other types if specified.
+ * @param message AnnotatedDenyPrincipalMatching
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this AnnotatedDenyPrincipalMatching to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for AnnotatedDenyPrincipalMatching
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+
+ /** Properties of a ConditionExplanation. */
+ interface IConditionExplanation {
+
+ /** ConditionExplanation value */
+ value?: (google.protobuf.IValue|null);
+
+ /** ConditionExplanation errors */
+ errors?: (google.rpc.IStatus[]|null);
+
+ /** ConditionExplanation evaluationStates */
+ evaluationStates?: (google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.IEvaluationState[]|null);
+ }
+
+ /** Represents a ConditionExplanation. */
+ class ConditionExplanation implements IConditionExplanation {
+
+ /**
+ * Constructs a new ConditionExplanation.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.IConditionExplanation);
+
+ /** ConditionExplanation value. */
+ public value?: (google.protobuf.IValue|null);
+
+ /** ConditionExplanation errors. */
+ public errors: google.rpc.IStatus[];
+
+ /** ConditionExplanation evaluationStates. */
+ public evaluationStates: google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.IEvaluationState[];
+
+ /**
+ * Creates a new ConditionExplanation instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ConditionExplanation instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.IConditionExplanation): google.cloud.policytroubleshooter.iam.v3.ConditionExplanation;
+
+ /**
+ * Encodes the specified ConditionExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.verify|verify} messages.
+ * @param message ConditionExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.IConditionExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ConditionExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.verify|verify} messages.
+ * @param message ConditionExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.IConditionExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a ConditionExplanation message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ConditionExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.ConditionExplanation;
+
+ /**
+ * Decodes a ConditionExplanation message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ConditionExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.ConditionExplanation;
+
+ /**
+ * Verifies a ConditionExplanation message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a ConditionExplanation message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ConditionExplanation
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.ConditionExplanation;
+
+ /**
+ * Creates a plain object from a ConditionExplanation message. Also converts values to other types if specified.
+ * @param message ConditionExplanation
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.ConditionExplanation, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ConditionExplanation to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ConditionExplanation
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace ConditionExplanation {
+
+ /** Properties of an EvaluationState. */
+ interface IEvaluationState {
+
+ /** EvaluationState start */
+ start?: (number|null);
+
+ /** EvaluationState end */
+ end?: (number|null);
+
+ /** EvaluationState value */
+ value?: (google.protobuf.IValue|null);
+
+ /** EvaluationState errors */
+ errors?: (google.rpc.IStatus[]|null);
+ }
+
+ /** Represents an EvaluationState. */
+ class EvaluationState implements IEvaluationState {
+
+ /**
+ * Constructs a new EvaluationState.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.IEvaluationState);
+
+ /** EvaluationState start. */
+ public start: number;
+
+ /** EvaluationState end. */
+ public end: number;
+
+ /** EvaluationState value. */
+ public value?: (google.protobuf.IValue|null);
+
+ /** EvaluationState errors. */
+ public errors: google.rpc.IStatus[];
+
+ /**
+ * Creates a new EvaluationState instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns EvaluationState instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.IEvaluationState): google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState;
+
+ /**
+ * Encodes the specified EvaluationState message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState.verify|verify} messages.
+ * @param message EvaluationState message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.IEvaluationState, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified EvaluationState message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState.verify|verify} messages.
+ * @param message EvaluationState message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.IEvaluationState, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an EvaluationState message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns EvaluationState
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState;
+
+ /**
+ * Decodes an EvaluationState message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns EvaluationState
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState;
+
+ /**
+ * Verifies an EvaluationState message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an EvaluationState message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns EvaluationState
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState;
+
+ /**
+ * Creates a plain object from an EvaluationState message. Also converts values to other types if specified.
+ * @param message EvaluationState
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this EvaluationState to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for EvaluationState
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+ }
+
+ /** Namespace v3beta. */
+ namespace v3beta {
+
+ /** Represents a PolicyTroubleshooter */
+ class PolicyTroubleshooter extends $protobuf.rpc.Service {
+
+ /**
+ * Constructs a new PolicyTroubleshooter service.
+ * @param rpcImpl RPC implementation
+ * @param [requestDelimited=false] Whether requests are length-delimited
+ * @param [responseDelimited=false] Whether responses are length-delimited
+ */
+ constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean);
+
+ /**
+ * Creates new PolicyTroubleshooter service using the specified rpc implementation.
+ * @param rpcImpl RPC implementation
+ * @param [requestDelimited=false] Whether requests are length-delimited
+ * @param [responseDelimited=false] Whether responses are length-delimited
+ * @returns RPC service. Useful where requests and/or responses are streamed.
+ */
+ public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): PolicyTroubleshooter;
+
+ /**
+ * Calls TroubleshootIamPolicy.
+ * @param request TroubleshootIamPolicyRequest message or plain object
+ * @param callback Node-style callback called with the error, if any, and TroubleshootIamPolicyResponse
+ */
+ public troubleshootIamPolicy(request: google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyRequest, callback: google.cloud.policytroubleshooter.iam.v3beta.PolicyTroubleshooter.TroubleshootIamPolicyCallback): void;
+
+ /**
+ * Calls TroubleshootIamPolicy.
+ * @param request TroubleshootIamPolicyRequest message or plain object
+ * @returns Promise
+ */
+ public troubleshootIamPolicy(request: google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyRequest): Promise;
+ }
+
+ namespace PolicyTroubleshooter {
+
+ /**
+ * Callback as used by {@link google.cloud.policytroubleshooter.iam.v3beta.PolicyTroubleshooter|troubleshootIamPolicy}.
+ * @param error Error, if any
+ * @param [response] TroubleshootIamPolicyResponse
+ */
+ type TroubleshootIamPolicyCallback = (error: (Error|null), response?: google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse) => void;
+ }
+
+ /** AllowAccessState enum. */
+ enum AllowAccessState {
+ ALLOW_ACCESS_STATE_UNSPECIFIED = 0,
+ ALLOW_ACCESS_STATE_GRANTED = 1,
+ ALLOW_ACCESS_STATE_NOT_GRANTED = 2,
+ ALLOW_ACCESS_STATE_UNKNOWN_CONDITIONAL = 3,
+ ALLOW_ACCESS_STATE_UNKNOWN_INFO = 4
+ }
+
+ /** DenyAccessState enum. */
+ enum DenyAccessState {
+ DENY_ACCESS_STATE_UNSPECIFIED = 0,
+ DENY_ACCESS_STATE_DENIED = 1,
+ DENY_ACCESS_STATE_NOT_DENIED = 2,
+ DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL = 3,
+ DENY_ACCESS_STATE_UNKNOWN_INFO = 4
+ }
+
+ /** RolePermissionInclusionState enum. */
+ enum RolePermissionInclusionState {
+ ROLE_PERMISSION_INCLUSION_STATE_UNSPECIFIED = 0,
+ ROLE_PERMISSION_INCLUDED = 1,
+ ROLE_PERMISSION_NOT_INCLUDED = 2,
+ ROLE_PERMISSION_UNKNOWN_INFO = 3
+ }
+
+ /** PermissionPatternMatchingState enum. */
+ enum PermissionPatternMatchingState {
+ PERMISSION_PATTERN_MATCHING_STATE_UNSPECIFIED = 0,
+ PERMISSION_PATTERN_MATCHED = 1,
+ PERMISSION_PATTERN_NOT_MATCHED = 2
+ }
+
+ /** MembershipMatchingState enum. */
+ enum MembershipMatchingState {
+ MEMBERSHIP_MATCHING_STATE_UNSPECIFIED = 0,
+ MEMBERSHIP_MATCHED = 1,
+ MEMBERSHIP_NOT_MATCHED = 2,
+ MEMBERSHIP_UNKNOWN_INFO = 3,
+ MEMBERSHIP_UNKNOWN_UNSUPPORTED = 4
+ }
+
+ /** HeuristicRelevance enum. */
+ enum HeuristicRelevance {
+ HEURISTIC_RELEVANCE_UNSPECIFIED = 0,
+ HEURISTIC_RELEVANCE_NORMAL = 1,
+ HEURISTIC_RELEVANCE_HIGH = 2
+ }
+
+ /** Properties of a TroubleshootIamPolicyRequest. */
+ interface ITroubleshootIamPolicyRequest {
+
+ /** TroubleshootIamPolicyRequest accessTuple */
+ accessTuple?: (google.cloud.policytroubleshooter.iam.v3beta.IAccessTuple|null);
+ }
+
+ /** Represents a TroubleshootIamPolicyRequest. */
+ class TroubleshootIamPolicyRequest implements ITroubleshootIamPolicyRequest {
+
+ /**
+ * Constructs a new TroubleshootIamPolicyRequest.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyRequest);
+
+ /** TroubleshootIamPolicyRequest accessTuple. */
+ public accessTuple?: (google.cloud.policytroubleshooter.iam.v3beta.IAccessTuple|null);
+
+ /**
+ * Creates a new TroubleshootIamPolicyRequest instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns TroubleshootIamPolicyRequest instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyRequest): google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest;
+
+ /**
+ * Encodes the specified TroubleshootIamPolicyRequest message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest.verify|verify} messages.
+ * @param message TroubleshootIamPolicyRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified TroubleshootIamPolicyRequest message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest.verify|verify} messages.
+ * @param message TroubleshootIamPolicyRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a TroubleshootIamPolicyRequest message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns TroubleshootIamPolicyRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest;
+
+ /**
+ * Decodes a TroubleshootIamPolicyRequest message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns TroubleshootIamPolicyRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest;
+
+ /**
+ * Verifies a TroubleshootIamPolicyRequest message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a TroubleshootIamPolicyRequest message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns TroubleshootIamPolicyRequest
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest;
+
+ /**
+ * Creates a plain object from a TroubleshootIamPolicyRequest message. Also converts values to other types if specified.
+ * @param message TroubleshootIamPolicyRequest
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this TroubleshootIamPolicyRequest to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for TroubleshootIamPolicyRequest
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a TroubleshootIamPolicyResponse. */
+ interface ITroubleshootIamPolicyResponse {
+
+ /** TroubleshootIamPolicyResponse overallAccessState */
+ overallAccessState?: (google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse.OverallAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse.OverallAccessState|null);
+
+ /** TroubleshootIamPolicyResponse accessTuple */
+ accessTuple?: (google.cloud.policytroubleshooter.iam.v3beta.IAccessTuple|null);
+
+ /** TroubleshootIamPolicyResponse allowPolicyExplanation */
+ allowPolicyExplanation?: (google.cloud.policytroubleshooter.iam.v3beta.IAllowPolicyExplanation|null);
+
+ /** TroubleshootIamPolicyResponse denyPolicyExplanation */
+ denyPolicyExplanation?: (google.cloud.policytroubleshooter.iam.v3beta.IDenyPolicyExplanation|null);
+ }
+
+ /** Represents a TroubleshootIamPolicyResponse. */
+ class TroubleshootIamPolicyResponse implements ITroubleshootIamPolicyResponse {
+
+ /**
+ * Constructs a new TroubleshootIamPolicyResponse.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyResponse);
+
+ /** TroubleshootIamPolicyResponse overallAccessState. */
+ public overallAccessState: (google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse.OverallAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse.OverallAccessState);
+
+ /** TroubleshootIamPolicyResponse accessTuple. */
+ public accessTuple?: (google.cloud.policytroubleshooter.iam.v3beta.IAccessTuple|null);
+
+ /** TroubleshootIamPolicyResponse allowPolicyExplanation. */
+ public allowPolicyExplanation?: (google.cloud.policytroubleshooter.iam.v3beta.IAllowPolicyExplanation|null);
+
+ /** TroubleshootIamPolicyResponse denyPolicyExplanation. */
+ public denyPolicyExplanation?: (google.cloud.policytroubleshooter.iam.v3beta.IDenyPolicyExplanation|null);
+
+ /**
+ * Creates a new TroubleshootIamPolicyResponse instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns TroubleshootIamPolicyResponse instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyResponse): google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse;
+
+ /**
+ * Encodes the specified TroubleshootIamPolicyResponse message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse.verify|verify} messages.
+ * @param message TroubleshootIamPolicyResponse message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyResponse, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified TroubleshootIamPolicyResponse message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse.verify|verify} messages.
+ * @param message TroubleshootIamPolicyResponse message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyResponse, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a TroubleshootIamPolicyResponse message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns TroubleshootIamPolicyResponse
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse;
+
+ /**
+ * Decodes a TroubleshootIamPolicyResponse message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns TroubleshootIamPolicyResponse
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse;
+
+ /**
+ * Verifies a TroubleshootIamPolicyResponse message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a TroubleshootIamPolicyResponse message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns TroubleshootIamPolicyResponse
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse;
+
+ /**
+ * Creates a plain object from a TroubleshootIamPolicyResponse message. Also converts values to other types if specified.
+ * @param message TroubleshootIamPolicyResponse
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this TroubleshootIamPolicyResponse to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for TroubleshootIamPolicyResponse
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace TroubleshootIamPolicyResponse {
+
+ /** OverallAccessState enum. */
+ enum OverallAccessState {
+ OVERALL_ACCESS_STATE_UNSPECIFIED = 0,
+ CAN_ACCESS = 1,
+ CANNOT_ACCESS = 2,
+ UNKNOWN_INFO = 3,
+ UNKNOWN_CONDITIONAL = 4
+ }
+ }
+
+ /** Properties of an AccessTuple. */
+ interface IAccessTuple {
+
+ /** AccessTuple principal */
+ principal?: (string|null);
+
+ /** AccessTuple fullResourceName */
+ fullResourceName?: (string|null);
+
+ /** AccessTuple permission */
+ permission?: (string|null);
+
+ /** AccessTuple permissionFqdn */
+ permissionFqdn?: (string|null);
+
+ /** AccessTuple conditionContext */
+ conditionContext?: (google.cloud.policytroubleshooter.iam.v3beta.IConditionContext|null);
+ }
+
+ /** Represents an AccessTuple. */
+ class AccessTuple implements IAccessTuple {
+
+ /**
+ * Constructs a new AccessTuple.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.IAccessTuple);
+
+ /** AccessTuple principal. */
+ public principal: string;
+
+ /** AccessTuple fullResourceName. */
+ public fullResourceName: string;
+
+ /** AccessTuple permission. */
+ public permission: string;
+
+ /** AccessTuple permissionFqdn. */
+ public permissionFqdn: string;
+
+ /** AccessTuple conditionContext. */
+ public conditionContext?: (google.cloud.policytroubleshooter.iam.v3beta.IConditionContext|null);
+
+ /**
+ * Creates a new AccessTuple instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns AccessTuple instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.IAccessTuple): google.cloud.policytroubleshooter.iam.v3beta.AccessTuple;
+
+ /**
+ * Encodes the specified AccessTuple message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.AccessTuple.verify|verify} messages.
+ * @param message AccessTuple message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.IAccessTuple, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified AccessTuple message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.AccessTuple.verify|verify} messages.
+ * @param message AccessTuple message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.IAccessTuple, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an AccessTuple message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns AccessTuple
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.AccessTuple;
+
+ /**
+ * Decodes an AccessTuple message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns AccessTuple
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.AccessTuple;
+
+ /**
+ * Verifies an AccessTuple message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an AccessTuple message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns AccessTuple
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.AccessTuple;
+
+ /**
+ * Creates a plain object from an AccessTuple message. Also converts values to other types if specified.
+ * @param message AccessTuple
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.AccessTuple, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this AccessTuple to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for AccessTuple
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a ConditionContext. */
+ interface IConditionContext {
+
+ /** ConditionContext resource */
+ resource?: (google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IResource|null);
+
+ /** ConditionContext destination */
+ destination?: (google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IPeer|null);
+
+ /** ConditionContext request */
+ request?: (google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IRequest|null);
+
+ /** ConditionContext effectiveTags */
+ effectiveTags?: (google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IEffectiveTag[]|null);
+ }
+
+ /** Represents a ConditionContext. */
+ class ConditionContext implements IConditionContext {
+
+ /**
+ * Constructs a new ConditionContext.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.IConditionContext);
+
+ /** ConditionContext resource. */
+ public resource?: (google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IResource|null);
+
+ /** ConditionContext destination. */
+ public destination?: (google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IPeer|null);
+
+ /** ConditionContext request. */
+ public request?: (google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IRequest|null);
+
+ /** ConditionContext effectiveTags. */
+ public effectiveTags: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IEffectiveTag[];
+
+ /**
+ * Creates a new ConditionContext instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ConditionContext instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.IConditionContext): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext;
+
+ /**
+ * Encodes the specified ConditionContext message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.verify|verify} messages.
+ * @param message ConditionContext message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.IConditionContext, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ConditionContext message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.verify|verify} messages.
+ * @param message ConditionContext message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.IConditionContext, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a ConditionContext message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ConditionContext
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext;
+
+ /**
+ * Decodes a ConditionContext message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ConditionContext
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext;
+
+ /**
+ * Verifies a ConditionContext message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a ConditionContext message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ConditionContext
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext;
+
+ /**
+ * Creates a plain object from a ConditionContext message. Also converts values to other types if specified.
+ * @param message ConditionContext
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ConditionContext to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ConditionContext
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace ConditionContext {
+
+ /** Properties of a Resource. */
+ interface IResource {
+
+ /** Resource service */
+ service?: (string|null);
+
+ /** Resource name */
+ name?: (string|null);
+
+ /** Resource type */
+ type?: (string|null);
+ }
+
+ /** Represents a Resource. */
+ class Resource implements IResource {
+
+ /**
+ * Constructs a new Resource.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IResource);
+
+ /** Resource service. */
+ public service: string;
+
+ /** Resource name. */
+ public name: string;
+
+ /** Resource type. */
+ public type: string;
+
+ /**
+ * Creates a new Resource instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Resource instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IResource): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource;
+
+ /**
+ * Encodes the specified Resource message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource.verify|verify} messages.
+ * @param message Resource message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IResource, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Resource message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource.verify|verify} messages.
+ * @param message Resource message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IResource, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a Resource message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Resource
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource;
+
+ /**
+ * Decodes a Resource message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Resource
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource;
+
+ /**
+ * Verifies a Resource message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a Resource message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Resource
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource;
+
+ /**
+ * Creates a plain object from a Resource message. Also converts values to other types if specified.
+ * @param message Resource
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Resource to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Resource
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a Peer. */
+ interface IPeer {
+
+ /** Peer ip */
+ ip?: (string|null);
+
+ /** Peer port */
+ port?: (number|Long|string|null);
+ }
+
+ /** Represents a Peer. */
+ class Peer implements IPeer {
+
+ /**
+ * Constructs a new Peer.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IPeer);
+
+ /** Peer ip. */
+ public ip: string;
+
+ /** Peer port. */
+ public port: (number|Long|string);
+
+ /**
+ * Creates a new Peer instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Peer instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IPeer): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer;
+
+ /**
+ * Encodes the specified Peer message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer.verify|verify} messages.
+ * @param message Peer message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IPeer, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Peer message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer.verify|verify} messages.
+ * @param message Peer message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IPeer, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a Peer message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Peer
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer;
+
+ /**
+ * Decodes a Peer message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Peer
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer;
+
+ /**
+ * Verifies a Peer message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a Peer message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Peer
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer;
+
+ /**
+ * Creates a plain object from a Peer message. Also converts values to other types if specified.
+ * @param message Peer
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Peer to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Peer
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a Request. */
+ interface IRequest {
+
+ /** Request receiveTime */
+ receiveTime?: (google.protobuf.ITimestamp|null);
+ }
+
+ /** Represents a Request. */
+ class Request implements IRequest {
+
+ /**
+ * Constructs a new Request.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IRequest);
+
+ /** Request receiveTime. */
+ public receiveTime?: (google.protobuf.ITimestamp|null);
+
+ /**
+ * Creates a new Request instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Request instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IRequest): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request;
+
+ /**
+ * Encodes the specified Request message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request.verify|verify} messages.
+ * @param message Request message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Request message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request.verify|verify} messages.
+ * @param message Request message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a Request message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Request
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request;
+
+ /**
+ * Decodes a Request message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Request
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request;
+
+ /**
+ * Verifies a Request message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a Request message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Request
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request;
+
+ /**
+ * Creates a plain object from a Request message. Also converts values to other types if specified.
+ * @param message Request
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Request to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Request
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an EffectiveTag. */
+ interface IEffectiveTag {
+
+ /** EffectiveTag tagValue */
+ tagValue?: (string|null);
+
+ /** EffectiveTag namespacedTagValue */
+ namespacedTagValue?: (string|null);
+
+ /** EffectiveTag tagKey */
+ tagKey?: (string|null);
+
+ /** EffectiveTag namespacedTagKey */
+ namespacedTagKey?: (string|null);
+
+ /** EffectiveTag tagKeyParentName */
+ tagKeyParentName?: (string|null);
+
+ /** EffectiveTag inherited */
+ inherited?: (boolean|null);
+ }
+
+ /** Represents an EffectiveTag. */
+ class EffectiveTag implements IEffectiveTag {
+
+ /**
+ * Constructs a new EffectiveTag.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IEffectiveTag);
+
+ /** EffectiveTag tagValue. */
+ public tagValue: string;
+
+ /** EffectiveTag namespacedTagValue. */
+ public namespacedTagValue: string;
+
+ /** EffectiveTag tagKey. */
+ public tagKey: string;
+
+ /** EffectiveTag namespacedTagKey. */
+ public namespacedTagKey: string;
+
+ /** EffectiveTag tagKeyParentName. */
+ public tagKeyParentName: string;
+
+ /** EffectiveTag inherited. */
+ public inherited: boolean;
+
+ /**
+ * Creates a new EffectiveTag instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns EffectiveTag instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IEffectiveTag): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag;
+
+ /**
+ * Encodes the specified EffectiveTag message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag.verify|verify} messages.
+ * @param message EffectiveTag message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IEffectiveTag, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified EffectiveTag message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag.verify|verify} messages.
+ * @param message EffectiveTag message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IEffectiveTag, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an EffectiveTag message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns EffectiveTag
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag;
+
+ /**
+ * Decodes an EffectiveTag message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns EffectiveTag
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag;
+
+ /**
+ * Verifies an EffectiveTag message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an EffectiveTag message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns EffectiveTag
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag;
+
+ /**
+ * Creates a plain object from an EffectiveTag message. Also converts values to other types if specified.
+ * @param message EffectiveTag
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this EffectiveTag to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for EffectiveTag
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+
+ /** Properties of an AllowPolicyExplanation. */
+ interface IAllowPolicyExplanation {
+
+ /** AllowPolicyExplanation allowAccessState */
+ allowAccessState?: (google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState|null);
+
+ /** AllowPolicyExplanation explainedPolicies */
+ explainedPolicies?: (google.cloud.policytroubleshooter.iam.v3beta.IExplainedAllowPolicy[]|null);
+
+ /** AllowPolicyExplanation relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null);
+ }
+
+ /** Represents an AllowPolicyExplanation. */
+ class AllowPolicyExplanation implements IAllowPolicyExplanation {
+
+ /**
+ * Constructs a new AllowPolicyExplanation.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.IAllowPolicyExplanation);
+
+ /** AllowPolicyExplanation allowAccessState. */
+ public allowAccessState: (google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState);
+
+ /** AllowPolicyExplanation explainedPolicies. */
+ public explainedPolicies: google.cloud.policytroubleshooter.iam.v3beta.IExplainedAllowPolicy[];
+
+ /** AllowPolicyExplanation relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance);
+
+ /**
+ * Creates a new AllowPolicyExplanation instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns AllowPolicyExplanation instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.IAllowPolicyExplanation): google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation;
+
+ /**
+ * Encodes the specified AllowPolicyExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation.verify|verify} messages.
+ * @param message AllowPolicyExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.IAllowPolicyExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified AllowPolicyExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation.verify|verify} messages.
+ * @param message AllowPolicyExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.IAllowPolicyExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an AllowPolicyExplanation message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns AllowPolicyExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation;
+
+ /**
+ * Decodes an AllowPolicyExplanation message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns AllowPolicyExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation;
+
+ /**
+ * Verifies an AllowPolicyExplanation message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an AllowPolicyExplanation message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns AllowPolicyExplanation
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation;
+
+ /**
+ * Creates a plain object from an AllowPolicyExplanation message. Also converts values to other types if specified.
+ * @param message AllowPolicyExplanation
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this AllowPolicyExplanation to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for AllowPolicyExplanation
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an ExplainedAllowPolicy. */
+ interface IExplainedAllowPolicy {
+
+ /** ExplainedAllowPolicy allowAccessState */
+ allowAccessState?: (google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState|null);
+
+ /** ExplainedAllowPolicy fullResourceName */
+ fullResourceName?: (string|null);
+
+ /** ExplainedAllowPolicy bindingExplanations */
+ bindingExplanations?: (google.cloud.policytroubleshooter.iam.v3beta.IAllowBindingExplanation[]|null);
+
+ /** ExplainedAllowPolicy relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null);
+
+ /** ExplainedAllowPolicy policy */
+ policy?: (google.iam.v1.IPolicy|null);
+ }
+
+ /** Represents an ExplainedAllowPolicy. */
+ class ExplainedAllowPolicy implements IExplainedAllowPolicy {
+
+ /**
+ * Constructs a new ExplainedAllowPolicy.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.IExplainedAllowPolicy);
+
+ /** ExplainedAllowPolicy allowAccessState. */
+ public allowAccessState: (google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState);
+
+ /** ExplainedAllowPolicy fullResourceName. */
+ public fullResourceName: string;
+
+ /** ExplainedAllowPolicy bindingExplanations. */
+ public bindingExplanations: google.cloud.policytroubleshooter.iam.v3beta.IAllowBindingExplanation[];
+
+ /** ExplainedAllowPolicy relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance);
+
+ /** ExplainedAllowPolicy policy. */
+ public policy?: (google.iam.v1.IPolicy|null);
+
+ /**
+ * Creates a new ExplainedAllowPolicy instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ExplainedAllowPolicy instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.IExplainedAllowPolicy): google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy;
+
+ /**
+ * Encodes the specified ExplainedAllowPolicy message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy.verify|verify} messages.
+ * @param message ExplainedAllowPolicy message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.IExplainedAllowPolicy, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ExplainedAllowPolicy message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy.verify|verify} messages.
+ * @param message ExplainedAllowPolicy message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.IExplainedAllowPolicy, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an ExplainedAllowPolicy message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ExplainedAllowPolicy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy;
+
+ /**
+ * Decodes an ExplainedAllowPolicy message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ExplainedAllowPolicy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy;
+
+ /**
+ * Verifies an ExplainedAllowPolicy message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an ExplainedAllowPolicy message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ExplainedAllowPolicy
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy;
+
+ /**
+ * Creates a plain object from an ExplainedAllowPolicy message. Also converts values to other types if specified.
+ * @param message ExplainedAllowPolicy
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ExplainedAllowPolicy to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ExplainedAllowPolicy
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an AllowBindingExplanation. */
+ interface IAllowBindingExplanation {
+
+ /** AllowBindingExplanation allowAccessState */
+ allowAccessState?: (google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState|null);
+
+ /** AllowBindingExplanation role */
+ role?: (string|null);
+
+ /** AllowBindingExplanation rolePermission */
+ rolePermission?: (google.cloud.policytroubleshooter.iam.v3beta.RolePermissionInclusionState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.RolePermissionInclusionState|null);
+
+ /** AllowBindingExplanation rolePermissionRelevance */
+ rolePermissionRelevance?: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null);
+
+ /** AllowBindingExplanation combinedMembership */
+ combinedMembership?: (google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.IAnnotatedAllowMembership|null);
+
+ /** AllowBindingExplanation memberships */
+ memberships?: ({ [k: string]: google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.IAnnotatedAllowMembership }|null);
+
+ /** AllowBindingExplanation relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null);
+
+ /** AllowBindingExplanation condition */
+ condition?: (google.type.IExpr|null);
+
+ /** AllowBindingExplanation conditionExplanation */
+ conditionExplanation?: (google.cloud.policytroubleshooter.iam.v3beta.IConditionExplanation|null);
+ }
+
+ /** Represents an AllowBindingExplanation. */
+ class AllowBindingExplanation implements IAllowBindingExplanation {
+
+ /**
+ * Constructs a new AllowBindingExplanation.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.IAllowBindingExplanation);
+
+ /** AllowBindingExplanation allowAccessState. */
+ public allowAccessState: (google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState);
+
+ /** AllowBindingExplanation role. */
+ public role: string;
+
+ /** AllowBindingExplanation rolePermission. */
+ public rolePermission: (google.cloud.policytroubleshooter.iam.v3beta.RolePermissionInclusionState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.RolePermissionInclusionState);
+
+ /** AllowBindingExplanation rolePermissionRelevance. */
+ public rolePermissionRelevance: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance);
+
+ /** AllowBindingExplanation combinedMembership. */
+ public combinedMembership?: (google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.IAnnotatedAllowMembership|null);
+
+ /** AllowBindingExplanation memberships. */
+ public memberships: { [k: string]: google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.IAnnotatedAllowMembership };
+
+ /** AllowBindingExplanation relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance);
+
+ /** AllowBindingExplanation condition. */
+ public condition?: (google.type.IExpr|null);
+
+ /** AllowBindingExplanation conditionExplanation. */
+ public conditionExplanation?: (google.cloud.policytroubleshooter.iam.v3beta.IConditionExplanation|null);
+
+ /**
+ * Creates a new AllowBindingExplanation instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns AllowBindingExplanation instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.IAllowBindingExplanation): google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation;
+
+ /**
+ * Encodes the specified AllowBindingExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.verify|verify} messages.
+ * @param message AllowBindingExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.IAllowBindingExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified AllowBindingExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.verify|verify} messages.
+ * @param message AllowBindingExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.IAllowBindingExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an AllowBindingExplanation message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns AllowBindingExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation;
+
+ /**
+ * Decodes an AllowBindingExplanation message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns AllowBindingExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation;
+
+ /**
+ * Verifies an AllowBindingExplanation message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an AllowBindingExplanation message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns AllowBindingExplanation
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation;
+
+ /**
+ * Creates a plain object from an AllowBindingExplanation message. Also converts values to other types if specified.
+ * @param message AllowBindingExplanation
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this AllowBindingExplanation to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for AllowBindingExplanation
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace AllowBindingExplanation {
+
+ /** Properties of an AnnotatedAllowMembership. */
+ interface IAnnotatedAllowMembership {
+
+ /** AnnotatedAllowMembership membership */
+ membership?: (google.cloud.policytroubleshooter.iam.v3beta.MembershipMatchingState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.MembershipMatchingState|null);
+
+ /** AnnotatedAllowMembership relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null);
+ }
+
+ /** Represents an AnnotatedAllowMembership. */
+ class AnnotatedAllowMembership implements IAnnotatedAllowMembership {
+
+ /**
+ * Constructs a new AnnotatedAllowMembership.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.IAnnotatedAllowMembership);
+
+ /** AnnotatedAllowMembership membership. */
+ public membership: (google.cloud.policytroubleshooter.iam.v3beta.MembershipMatchingState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.MembershipMatchingState);
+
+ /** AnnotatedAllowMembership relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance);
+
+ /**
+ * Creates a new AnnotatedAllowMembership instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns AnnotatedAllowMembership instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.IAnnotatedAllowMembership): google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership;
+
+ /**
+ * Encodes the specified AnnotatedAllowMembership message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership.verify|verify} messages.
+ * @param message AnnotatedAllowMembership message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.IAnnotatedAllowMembership, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified AnnotatedAllowMembership message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership.verify|verify} messages.
+ * @param message AnnotatedAllowMembership message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.IAnnotatedAllowMembership, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an AnnotatedAllowMembership message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns AnnotatedAllowMembership
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership;
+
+ /**
+ * Decodes an AnnotatedAllowMembership message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns AnnotatedAllowMembership
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership;
+
+ /**
+ * Verifies an AnnotatedAllowMembership message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an AnnotatedAllowMembership message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns AnnotatedAllowMembership
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership;
+
+ /**
+ * Creates a plain object from an AnnotatedAllowMembership message. Also converts values to other types if specified.
+ * @param message AnnotatedAllowMembership
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this AnnotatedAllowMembership to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for AnnotatedAllowMembership
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+
+ /** Properties of a DenyPolicyExplanation. */
+ interface IDenyPolicyExplanation {
+
+ /** DenyPolicyExplanation denyAccessState */
+ denyAccessState?: (google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState|null);
+
+ /** DenyPolicyExplanation explainedResources */
+ explainedResources?: (google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyResource[]|null);
+
+ /** DenyPolicyExplanation relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null);
+
+ /** DenyPolicyExplanation permissionDeniable */
+ permissionDeniable?: (boolean|null);
+ }
+
+ /** Represents a DenyPolicyExplanation. */
+ class DenyPolicyExplanation implements IDenyPolicyExplanation {
+
+ /**
+ * Constructs a new DenyPolicyExplanation.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.IDenyPolicyExplanation);
+
+ /** DenyPolicyExplanation denyAccessState. */
+ public denyAccessState: (google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState);
+
+ /** DenyPolicyExplanation explainedResources. */
+ public explainedResources: google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyResource[];
+
+ /** DenyPolicyExplanation relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance);
+
+ /** DenyPolicyExplanation permissionDeniable. */
+ public permissionDeniable: boolean;
+
+ /**
+ * Creates a new DenyPolicyExplanation instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns DenyPolicyExplanation instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.IDenyPolicyExplanation): google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation;
+
+ /**
+ * Encodes the specified DenyPolicyExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation.verify|verify} messages.
+ * @param message DenyPolicyExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.IDenyPolicyExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified DenyPolicyExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation.verify|verify} messages.
+ * @param message DenyPolicyExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.IDenyPolicyExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a DenyPolicyExplanation message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns DenyPolicyExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation;
+
+ /**
+ * Decodes a DenyPolicyExplanation message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns DenyPolicyExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation;
+
+ /**
+ * Verifies a DenyPolicyExplanation message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a DenyPolicyExplanation message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns DenyPolicyExplanation
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation;
+
+ /**
+ * Creates a plain object from a DenyPolicyExplanation message. Also converts values to other types if specified.
+ * @param message DenyPolicyExplanation
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this DenyPolicyExplanation to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for DenyPolicyExplanation
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an ExplainedDenyResource. */
+ interface IExplainedDenyResource {
+
+ /** ExplainedDenyResource denyAccessState */
+ denyAccessState?: (google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState|null);
+
+ /** ExplainedDenyResource fullResourceName */
+ fullResourceName?: (string|null);
+
+ /** ExplainedDenyResource explainedPolicies */
+ explainedPolicies?: (google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyPolicy[]|null);
+
+ /** ExplainedDenyResource relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null);
+ }
+
+ /** Represents an ExplainedDenyResource. */
+ class ExplainedDenyResource implements IExplainedDenyResource {
+
+ /**
+ * Constructs a new ExplainedDenyResource.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyResource);
+
+ /** ExplainedDenyResource denyAccessState. */
+ public denyAccessState: (google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState);
+
+ /** ExplainedDenyResource fullResourceName. */
+ public fullResourceName: string;
+
+ /** ExplainedDenyResource explainedPolicies. */
+ public explainedPolicies: google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyPolicy[];
+
+ /** ExplainedDenyResource relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance);
+
+ /**
+ * Creates a new ExplainedDenyResource instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ExplainedDenyResource instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyResource): google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource;
+
+ /**
+ * Encodes the specified ExplainedDenyResource message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource.verify|verify} messages.
+ * @param message ExplainedDenyResource message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyResource, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ExplainedDenyResource message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource.verify|verify} messages.
+ * @param message ExplainedDenyResource message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyResource, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an ExplainedDenyResource message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ExplainedDenyResource
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource;
+
+ /**
+ * Decodes an ExplainedDenyResource message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ExplainedDenyResource
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource;
+
+ /**
+ * Verifies an ExplainedDenyResource message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an ExplainedDenyResource message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ExplainedDenyResource
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource;
+
+ /**
+ * Creates a plain object from an ExplainedDenyResource message. Also converts values to other types if specified.
+ * @param message ExplainedDenyResource
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ExplainedDenyResource to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ExplainedDenyResource
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an ExplainedDenyPolicy. */
+ interface IExplainedDenyPolicy {
+
+ /** ExplainedDenyPolicy denyAccessState */
+ denyAccessState?: (google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState|null);
+
+ /** ExplainedDenyPolicy policy */
+ policy?: (google.iam.v2.IPolicy|null);
+
+ /** ExplainedDenyPolicy ruleExplanations */
+ ruleExplanations?: (google.cloud.policytroubleshooter.iam.v3beta.IDenyRuleExplanation[]|null);
+
+ /** ExplainedDenyPolicy relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null);
+ }
+
+ /** Represents an ExplainedDenyPolicy. */
+ class ExplainedDenyPolicy implements IExplainedDenyPolicy {
+
+ /**
+ * Constructs a new ExplainedDenyPolicy.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyPolicy);
+
+ /** ExplainedDenyPolicy denyAccessState. */
+ public denyAccessState: (google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState);
+
+ /** ExplainedDenyPolicy policy. */
+ public policy?: (google.iam.v2.IPolicy|null);
+
+ /** ExplainedDenyPolicy ruleExplanations. */
+ public ruleExplanations: google.cloud.policytroubleshooter.iam.v3beta.IDenyRuleExplanation[];
+
+ /** ExplainedDenyPolicy relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance);
+
+ /**
+ * Creates a new ExplainedDenyPolicy instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ExplainedDenyPolicy instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyPolicy): google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy;
+
+ /**
+ * Encodes the specified ExplainedDenyPolicy message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy.verify|verify} messages.
+ * @param message ExplainedDenyPolicy message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyPolicy, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ExplainedDenyPolicy message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy.verify|verify} messages.
+ * @param message ExplainedDenyPolicy message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyPolicy, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an ExplainedDenyPolicy message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ExplainedDenyPolicy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy;
+
+ /**
+ * Decodes an ExplainedDenyPolicy message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ExplainedDenyPolicy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy;
+
+ /**
+ * Verifies an ExplainedDenyPolicy message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an ExplainedDenyPolicy message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ExplainedDenyPolicy
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy;
+
+ /**
+ * Creates a plain object from an ExplainedDenyPolicy message. Also converts values to other types if specified.
+ * @param message ExplainedDenyPolicy
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ExplainedDenyPolicy to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ExplainedDenyPolicy
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a DenyRuleExplanation. */
+ interface IDenyRuleExplanation {
+
+ /** DenyRuleExplanation denyAccessState */
+ denyAccessState?: (google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState|null);
+
+ /** DenyRuleExplanation combinedDeniedPermission */
+ combinedDeniedPermission?: (google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching|null);
+
+ /** DenyRuleExplanation deniedPermissions */
+ deniedPermissions?: ({ [k: string]: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching }|null);
+
+ /** DenyRuleExplanation combinedExceptionPermission */
+ combinedExceptionPermission?: (google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching|null);
+
+ /** DenyRuleExplanation exceptionPermissions */
+ exceptionPermissions?: ({ [k: string]: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching }|null);
+
+ /** DenyRuleExplanation combinedDeniedPrincipal */
+ combinedDeniedPrincipal?: (google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching|null);
+
+ /** DenyRuleExplanation deniedPrincipals */
+ deniedPrincipals?: ({ [k: string]: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching }|null);
+
+ /** DenyRuleExplanation combinedExceptionPrincipal */
+ combinedExceptionPrincipal?: (google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching|null);
+
+ /** DenyRuleExplanation exceptionPrincipals */
+ exceptionPrincipals?: ({ [k: string]: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching }|null);
+
+ /** DenyRuleExplanation relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null);
+
+ /** DenyRuleExplanation condition */
+ condition?: (google.type.IExpr|null);
+
+ /** DenyRuleExplanation conditionExplanation */
+ conditionExplanation?: (google.cloud.policytroubleshooter.iam.v3beta.IConditionExplanation|null);
+ }
+
+ /** Represents a DenyRuleExplanation. */
+ class DenyRuleExplanation implements IDenyRuleExplanation {
+
+ /**
+ * Constructs a new DenyRuleExplanation.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.IDenyRuleExplanation);
+
+ /** DenyRuleExplanation denyAccessState. */
+ public denyAccessState: (google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState);
+
+ /** DenyRuleExplanation combinedDeniedPermission. */
+ public combinedDeniedPermission?: (google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching|null);
+
+ /** DenyRuleExplanation deniedPermissions. */
+ public deniedPermissions: { [k: string]: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching };
+
+ /** DenyRuleExplanation combinedExceptionPermission. */
+ public combinedExceptionPermission?: (google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching|null);
+
+ /** DenyRuleExplanation exceptionPermissions. */
+ public exceptionPermissions: { [k: string]: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching };
+
+ /** DenyRuleExplanation combinedDeniedPrincipal. */
+ public combinedDeniedPrincipal?: (google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching|null);
+
+ /** DenyRuleExplanation deniedPrincipals. */
+ public deniedPrincipals: { [k: string]: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching };
+
+ /** DenyRuleExplanation combinedExceptionPrincipal. */
+ public combinedExceptionPrincipal?: (google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching|null);
+
+ /** DenyRuleExplanation exceptionPrincipals. */
+ public exceptionPrincipals: { [k: string]: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching };
+
+ /** DenyRuleExplanation relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance);
+
+ /** DenyRuleExplanation condition. */
+ public condition?: (google.type.IExpr|null);
+
+ /** DenyRuleExplanation conditionExplanation. */
+ public conditionExplanation?: (google.cloud.policytroubleshooter.iam.v3beta.IConditionExplanation|null);
+
+ /**
+ * Creates a new DenyRuleExplanation instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns DenyRuleExplanation instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.IDenyRuleExplanation): google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation;
+
+ /**
+ * Encodes the specified DenyRuleExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.verify|verify} messages.
+ * @param message DenyRuleExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.IDenyRuleExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified DenyRuleExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.verify|verify} messages.
+ * @param message DenyRuleExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.IDenyRuleExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a DenyRuleExplanation message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns DenyRuleExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation;
+
+ /**
+ * Decodes a DenyRuleExplanation message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns DenyRuleExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation;
+
+ /**
+ * Verifies a DenyRuleExplanation message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a DenyRuleExplanation message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns DenyRuleExplanation
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation;
+
+ /**
+ * Creates a plain object from a DenyRuleExplanation message. Also converts values to other types if specified.
+ * @param message DenyRuleExplanation
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this DenyRuleExplanation to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for DenyRuleExplanation
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace DenyRuleExplanation {
+
+ /** Properties of an AnnotatedPermissionMatching. */
+ interface IAnnotatedPermissionMatching {
+
+ /** AnnotatedPermissionMatching permissionMatchingState */
+ permissionMatchingState?: (google.cloud.policytroubleshooter.iam.v3beta.PermissionPatternMatchingState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.PermissionPatternMatchingState|null);
+
+ /** AnnotatedPermissionMatching relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null);
+ }
+
+ /** Represents an AnnotatedPermissionMatching. */
+ class AnnotatedPermissionMatching implements IAnnotatedPermissionMatching {
+
+ /**
+ * Constructs a new AnnotatedPermissionMatching.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching);
+
+ /** AnnotatedPermissionMatching permissionMatchingState. */
+ public permissionMatchingState: (google.cloud.policytroubleshooter.iam.v3beta.PermissionPatternMatchingState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.PermissionPatternMatchingState);
+
+ /** AnnotatedPermissionMatching relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance);
+
+ /**
+ * Creates a new AnnotatedPermissionMatching instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns AnnotatedPermissionMatching instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching): google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching;
+
+ /**
+ * Encodes the specified AnnotatedPermissionMatching message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.verify|verify} messages.
+ * @param message AnnotatedPermissionMatching message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified AnnotatedPermissionMatching message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.verify|verify} messages.
+ * @param message AnnotatedPermissionMatching message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an AnnotatedPermissionMatching message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns AnnotatedPermissionMatching
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching;
+
+ /**
+ * Decodes an AnnotatedPermissionMatching message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns AnnotatedPermissionMatching
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching;
+
+ /**
+ * Verifies an AnnotatedPermissionMatching message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an AnnotatedPermissionMatching message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns AnnotatedPermissionMatching
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching;
+
+ /**
+ * Creates a plain object from an AnnotatedPermissionMatching message. Also converts values to other types if specified.
+ * @param message AnnotatedPermissionMatching
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this AnnotatedPermissionMatching to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for AnnotatedPermissionMatching
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an AnnotatedDenyPrincipalMatching. */
+ interface IAnnotatedDenyPrincipalMatching {
+
+ /** AnnotatedDenyPrincipalMatching membership */
+ membership?: (google.cloud.policytroubleshooter.iam.v3beta.MembershipMatchingState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.MembershipMatchingState|null);
+
+ /** AnnotatedDenyPrincipalMatching relevance */
+ relevance?: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null);
+ }
+
+ /** Represents an AnnotatedDenyPrincipalMatching. */
+ class AnnotatedDenyPrincipalMatching implements IAnnotatedDenyPrincipalMatching {
+
+ /**
+ * Constructs a new AnnotatedDenyPrincipalMatching.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching);
+
+ /** AnnotatedDenyPrincipalMatching membership. */
+ public membership: (google.cloud.policytroubleshooter.iam.v3beta.MembershipMatchingState|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.MembershipMatchingState);
+
+ /** AnnotatedDenyPrincipalMatching relevance. */
+ public relevance: (google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|keyof typeof google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance);
+
+ /**
+ * Creates a new AnnotatedDenyPrincipalMatching instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns AnnotatedDenyPrincipalMatching instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching): google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching;
+
+ /**
+ * Encodes the specified AnnotatedDenyPrincipalMatching message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.verify|verify} messages.
+ * @param message AnnotatedDenyPrincipalMatching message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified AnnotatedDenyPrincipalMatching message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.verify|verify} messages.
+ * @param message AnnotatedDenyPrincipalMatching message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an AnnotatedDenyPrincipalMatching message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns AnnotatedDenyPrincipalMatching
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching;
+
+ /**
+ * Decodes an AnnotatedDenyPrincipalMatching message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns AnnotatedDenyPrincipalMatching
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching;
+
+ /**
+ * Verifies an AnnotatedDenyPrincipalMatching message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an AnnotatedDenyPrincipalMatching message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns AnnotatedDenyPrincipalMatching
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching;
+
+ /**
+ * Creates a plain object from an AnnotatedDenyPrincipalMatching message. Also converts values to other types if specified.
+ * @param message AnnotatedDenyPrincipalMatching
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this AnnotatedDenyPrincipalMatching to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for AnnotatedDenyPrincipalMatching
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+
+ /** Properties of a ConditionExplanation. */
+ interface IConditionExplanation {
+
+ /** ConditionExplanation value */
+ value?: (google.protobuf.IValue|null);
+
+ /** ConditionExplanation errors */
+ errors?: (google.rpc.IStatus[]|null);
+
+ /** ConditionExplanation evaluationStates */
+ evaluationStates?: (google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.IEvaluationState[]|null);
+ }
+
+ /** Represents a ConditionExplanation. */
+ class ConditionExplanation implements IConditionExplanation {
+
+ /**
+ * Constructs a new ConditionExplanation.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.IConditionExplanation);
+
+ /** ConditionExplanation value. */
+ public value?: (google.protobuf.IValue|null);
+
+ /** ConditionExplanation errors. */
+ public errors: google.rpc.IStatus[];
+
+ /** ConditionExplanation evaluationStates. */
+ public evaluationStates: google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.IEvaluationState[];
+
+ /**
+ * Creates a new ConditionExplanation instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ConditionExplanation instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.IConditionExplanation): google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation;
+
+ /**
+ * Encodes the specified ConditionExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.verify|verify} messages.
+ * @param message ConditionExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.IConditionExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ConditionExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.verify|verify} messages.
+ * @param message ConditionExplanation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.IConditionExplanation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a ConditionExplanation message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ConditionExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation;
+
+ /**
+ * Decodes a ConditionExplanation message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ConditionExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation;
+
+ /**
+ * Verifies a ConditionExplanation message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a ConditionExplanation message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ConditionExplanation
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation;
+
+ /**
+ * Creates a plain object from a ConditionExplanation message. Also converts values to other types if specified.
+ * @param message ConditionExplanation
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ConditionExplanation to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ConditionExplanation
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace ConditionExplanation {
+
+ /** Properties of an EvaluationState. */
+ interface IEvaluationState {
+
+ /** EvaluationState start */
+ start?: (number|null);
+
+ /** EvaluationState end */
+ end?: (number|null);
+
+ /** EvaluationState value */
+ value?: (google.protobuf.IValue|null);
+
+ /** EvaluationState errors */
+ errors?: (google.rpc.IStatus[]|null);
+ }
+
+ /** Represents an EvaluationState. */
+ class EvaluationState implements IEvaluationState {
+
+ /**
+ * Constructs a new EvaluationState.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.IEvaluationState);
+
+ /** EvaluationState start. */
+ public start: number;
+
+ /** EvaluationState end. */
+ public end: number;
+
+ /** EvaluationState value. */
+ public value?: (google.protobuf.IValue|null);
+
+ /** EvaluationState errors. */
+ public errors: google.rpc.IStatus[];
+
+ /**
+ * Creates a new EvaluationState instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns EvaluationState instance
+ */
+ public static create(properties?: google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.IEvaluationState): google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState;
+
+ /**
+ * Encodes the specified EvaluationState message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState.verify|verify} messages.
+ * @param message EvaluationState message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.IEvaluationState, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified EvaluationState message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState.verify|verify} messages.
+ * @param message EvaluationState message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.IEvaluationState, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an EvaluationState message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns EvaluationState
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState;
+
+ /**
+ * Decodes an EvaluationState message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns EvaluationState
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState;
+
+ /**
+ * Verifies an EvaluationState message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an EvaluationState message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns EvaluationState
+ */
+ public static fromObject(object: { [k: string]: any }): google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState;
+
+ /**
+ * Creates a plain object from an EvaluationState message. Also converts values to other types if specified.
+ * @param message EvaluationState
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this EvaluationState to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for EvaluationState
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /** Namespace api. */
+ namespace api {
+
+ /** Properties of a Http. */
+ interface IHttp {
+
+ /** Http rules */
+ rules?: (google.api.IHttpRule[]|null);
+
+ /** Http fullyDecodeReservedExpansion */
+ fullyDecodeReservedExpansion?: (boolean|null);
+ }
+
+ /** Represents a Http. */
+ class Http implements IHttp {
+
+ /**
+ * Constructs a new Http.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.api.IHttp);
+
+ /** Http rules. */
+ public rules: google.api.IHttpRule[];
+
+ /** Http fullyDecodeReservedExpansion. */
+ public fullyDecodeReservedExpansion: boolean;
+
+ /**
+ * Creates a new Http instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Http instance
+ */
+ public static create(properties?: google.api.IHttp): google.api.Http;
+
+ /**
+ * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages.
+ * @param message Http message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages.
+ * @param message Http message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a Http message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Http
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.Http;
+
+ /**
+ * Decodes a Http message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Http
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.Http;
+
+ /**
+ * Verifies a Http message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a Http message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Http
+ */
+ public static fromObject(object: { [k: string]: any }): google.api.Http;
+
+ /**
+ * Creates a plain object from a Http message. Also converts values to other types if specified.
+ * @param message Http
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.api.Http, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Http to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Http
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a HttpRule. */
+ interface IHttpRule {
+
+ /** HttpRule selector */
+ selector?: (string|null);
+
+ /** HttpRule get */
+ get?: (string|null);
+
+ /** HttpRule put */
+ put?: (string|null);
+
+ /** HttpRule post */
+ post?: (string|null);
+
+ /** HttpRule delete */
+ "delete"?: (string|null);
+
+ /** HttpRule patch */
+ patch?: (string|null);
+
+ /** HttpRule custom */
+ custom?: (google.api.ICustomHttpPattern|null);
+
+ /** HttpRule body */
+ body?: (string|null);
+
+ /** HttpRule responseBody */
+ responseBody?: (string|null);
+
+ /** HttpRule additionalBindings */
+ additionalBindings?: (google.api.IHttpRule[]|null);
+ }
+
+ /** Represents a HttpRule. */
+ class HttpRule implements IHttpRule {
+
+ /**
+ * Constructs a new HttpRule.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.api.IHttpRule);
+
+ /** HttpRule selector. */
+ public selector: string;
+
+ /** HttpRule get. */
+ public get?: (string|null);
+
+ /** HttpRule put. */
+ public put?: (string|null);
+
+ /** HttpRule post. */
+ public post?: (string|null);
+
+ /** HttpRule delete. */
+ public delete?: (string|null);
+
+ /** HttpRule patch. */
+ public patch?: (string|null);
+
+ /** HttpRule custom. */
+ public custom?: (google.api.ICustomHttpPattern|null);
+
+ /** HttpRule body. */
+ public body: string;
+
+ /** HttpRule responseBody. */
+ public responseBody: string;
+
+ /** HttpRule additionalBindings. */
+ public additionalBindings: google.api.IHttpRule[];
+
+ /** HttpRule pattern. */
+ public pattern?: ("get"|"put"|"post"|"delete"|"patch"|"custom");
+
+ /**
+ * Creates a new HttpRule instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns HttpRule instance
+ */
+ public static create(properties?: google.api.IHttpRule): google.api.HttpRule;
+
+ /**
+ * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages.
+ * @param message HttpRule message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages.
+ * @param message HttpRule message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a HttpRule message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns HttpRule
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.HttpRule;
+
+ /**
+ * Decodes a HttpRule message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns HttpRule
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.HttpRule;
+
+ /**
+ * Verifies a HttpRule message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a HttpRule message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns HttpRule
+ */
+ public static fromObject(object: { [k: string]: any }): google.api.HttpRule;
+
+ /**
+ * Creates a plain object from a HttpRule message. Also converts values to other types if specified.
+ * @param message HttpRule
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.api.HttpRule, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this HttpRule to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for HttpRule
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a CustomHttpPattern. */
+ interface ICustomHttpPattern {
+
+ /** CustomHttpPattern kind */
+ kind?: (string|null);
+
+ /** CustomHttpPattern path */
+ path?: (string|null);
+ }
+
+ /** Represents a CustomHttpPattern. */
+ class CustomHttpPattern implements ICustomHttpPattern {
+
+ /**
+ * Constructs a new CustomHttpPattern.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.api.ICustomHttpPattern);
+
+ /** CustomHttpPattern kind. */
+ public kind: string;
+
+ /** CustomHttpPattern path. */
+ public path: string;
+
+ /**
+ * Creates a new CustomHttpPattern instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns CustomHttpPattern instance
+ */
+ public static create(properties?: google.api.ICustomHttpPattern): google.api.CustomHttpPattern;
+
+ /**
+ * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages.
+ * @param message CustomHttpPattern message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages.
+ * @param message CustomHttpPattern message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a CustomHttpPattern message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns CustomHttpPattern
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CustomHttpPattern;
+
+ /**
+ * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns CustomHttpPattern
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CustomHttpPattern;
+
+ /**
+ * Verifies a CustomHttpPattern message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns CustomHttpPattern
+ */
+ public static fromObject(object: { [k: string]: any }): google.api.CustomHttpPattern;
+
+ /**
+ * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified.
+ * @param message CustomHttpPattern
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.api.CustomHttpPattern, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this CustomHttpPattern to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for CustomHttpPattern
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a CommonLanguageSettings. */
+ interface ICommonLanguageSettings {
+
+ /** CommonLanguageSettings referenceDocsUri */
+ referenceDocsUri?: (string|null);
+
+ /** CommonLanguageSettings destinations */
+ destinations?: (google.api.ClientLibraryDestination[]|null);
+ }
+
+ /** Represents a CommonLanguageSettings. */
+ class CommonLanguageSettings implements ICommonLanguageSettings {
+
+ /**
+ * Constructs a new CommonLanguageSettings.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.api.ICommonLanguageSettings);
+
+ /** CommonLanguageSettings referenceDocsUri. */
+ public referenceDocsUri: string;
+
+ /** CommonLanguageSettings destinations. */
+ public destinations: google.api.ClientLibraryDestination[];
+
+ /**
+ * Creates a new CommonLanguageSettings instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns CommonLanguageSettings instance
+ */
+ public static create(properties?: google.api.ICommonLanguageSettings): google.api.CommonLanguageSettings;
+
+ /**
+ * Encodes the specified CommonLanguageSettings message. Does not implicitly {@link google.api.CommonLanguageSettings.verify|verify} messages.
+ * @param message CommonLanguageSettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.api.ICommonLanguageSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified CommonLanguageSettings message, length delimited. Does not implicitly {@link google.api.CommonLanguageSettings.verify|verify} messages.
+ * @param message CommonLanguageSettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.api.ICommonLanguageSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a CommonLanguageSettings message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns CommonLanguageSettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CommonLanguageSettings;
+
+ /**
+ * Decodes a CommonLanguageSettings message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns CommonLanguageSettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CommonLanguageSettings;
+
+ /**
+ * Verifies a CommonLanguageSettings message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a CommonLanguageSettings message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns CommonLanguageSettings
+ */
+ public static fromObject(object: { [k: string]: any }): google.api.CommonLanguageSettings;
+
+ /**
+ * Creates a plain object from a CommonLanguageSettings message. Also converts values to other types if specified.
+ * @param message CommonLanguageSettings
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.api.CommonLanguageSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this CommonLanguageSettings to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for CommonLanguageSettings
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a ClientLibrarySettings. */
+ interface IClientLibrarySettings {
+
+ /** ClientLibrarySettings version */
+ version?: (string|null);
+
+ /** ClientLibrarySettings launchStage */
+ launchStage?: (google.api.LaunchStage|keyof typeof google.api.LaunchStage|null);
+
+ /** ClientLibrarySettings restNumericEnums */
+ restNumericEnums?: (boolean|null);
+
+ /** ClientLibrarySettings javaSettings */
+ javaSettings?: (google.api.IJavaSettings|null);
+
+ /** ClientLibrarySettings cppSettings */
+ cppSettings?: (google.api.ICppSettings|null);
+
+ /** ClientLibrarySettings phpSettings */
+ phpSettings?: (google.api.IPhpSettings|null);
+
+ /** ClientLibrarySettings pythonSettings */
+ pythonSettings?: (google.api.IPythonSettings|null);
+
+ /** ClientLibrarySettings nodeSettings */
+ nodeSettings?: (google.api.INodeSettings|null);
+
+ /** ClientLibrarySettings dotnetSettings */
+ dotnetSettings?: (google.api.IDotnetSettings|null);
+
+ /** ClientLibrarySettings rubySettings */
+ rubySettings?: (google.api.IRubySettings|null);
+
+ /** ClientLibrarySettings goSettings */
+ goSettings?: (google.api.IGoSettings|null);
+ }
+
+ /** Represents a ClientLibrarySettings. */
+ class ClientLibrarySettings implements IClientLibrarySettings {
+
+ /**
+ * Constructs a new ClientLibrarySettings.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.api.IClientLibrarySettings);
+
+ /** ClientLibrarySettings version. */
+ public version: string;
+
+ /** ClientLibrarySettings launchStage. */
+ public launchStage: (google.api.LaunchStage|keyof typeof google.api.LaunchStage);
+
+ /** ClientLibrarySettings restNumericEnums. */
+ public restNumericEnums: boolean;
+
+ /** ClientLibrarySettings javaSettings. */
+ public javaSettings?: (google.api.IJavaSettings|null);
+
+ /** ClientLibrarySettings cppSettings. */
+ public cppSettings?: (google.api.ICppSettings|null);
+
+ /** ClientLibrarySettings phpSettings. */
+ public phpSettings?: (google.api.IPhpSettings|null);
+
+ /** ClientLibrarySettings pythonSettings. */
+ public pythonSettings?: (google.api.IPythonSettings|null);
+
+ /** ClientLibrarySettings nodeSettings. */
+ public nodeSettings?: (google.api.INodeSettings|null);
+
+ /** ClientLibrarySettings dotnetSettings. */
+ public dotnetSettings?: (google.api.IDotnetSettings|null);
+
+ /** ClientLibrarySettings rubySettings. */
+ public rubySettings?: (google.api.IRubySettings|null);
+
+ /** ClientLibrarySettings goSettings. */
+ public goSettings?: (google.api.IGoSettings|null);
+
+ /**
+ * Creates a new ClientLibrarySettings instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ClientLibrarySettings instance
+ */
+ public static create(properties?: google.api.IClientLibrarySettings): google.api.ClientLibrarySettings;
+
+ /**
+ * Encodes the specified ClientLibrarySettings message. Does not implicitly {@link google.api.ClientLibrarySettings.verify|verify} messages.
+ * @param message ClientLibrarySettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.api.IClientLibrarySettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ClientLibrarySettings message, length delimited. Does not implicitly {@link google.api.ClientLibrarySettings.verify|verify} messages.
+ * @param message ClientLibrarySettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.api.IClientLibrarySettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a ClientLibrarySettings message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ClientLibrarySettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.ClientLibrarySettings;
+
+ /**
+ * Decodes a ClientLibrarySettings message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ClientLibrarySettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.ClientLibrarySettings;
+
+ /**
+ * Verifies a ClientLibrarySettings message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a ClientLibrarySettings message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ClientLibrarySettings
+ */
+ public static fromObject(object: { [k: string]: any }): google.api.ClientLibrarySettings;
+
+ /**
+ * Creates a plain object from a ClientLibrarySettings message. Also converts values to other types if specified.
+ * @param message ClientLibrarySettings
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.api.ClientLibrarySettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ClientLibrarySettings to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ClientLibrarySettings
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a Publishing. */
+ interface IPublishing {
+
+ /** Publishing methodSettings */
+ methodSettings?: (google.api.IMethodSettings[]|null);
+
+ /** Publishing newIssueUri */
+ newIssueUri?: (string|null);
+
+ /** Publishing documentationUri */
+ documentationUri?: (string|null);
+
+ /** Publishing apiShortName */
+ apiShortName?: (string|null);
+
+ /** Publishing githubLabel */
+ githubLabel?: (string|null);
+
+ /** Publishing codeownerGithubTeams */
+ codeownerGithubTeams?: (string[]|null);
+
+ /** Publishing docTagPrefix */
+ docTagPrefix?: (string|null);
+
+ /** Publishing organization */
+ organization?: (google.api.ClientLibraryOrganization|keyof typeof google.api.ClientLibraryOrganization|null);
+
+ /** Publishing librarySettings */
+ librarySettings?: (google.api.IClientLibrarySettings[]|null);
+
+ /** Publishing protoReferenceDocumentationUri */
+ protoReferenceDocumentationUri?: (string|null);
+
+ /** Publishing restReferenceDocumentationUri */
+ restReferenceDocumentationUri?: (string|null);
+ }
+
+ /** Represents a Publishing. */
+ class Publishing implements IPublishing {
+
+ /**
+ * Constructs a new Publishing.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.api.IPublishing);
+
+ /** Publishing methodSettings. */
+ public methodSettings: google.api.IMethodSettings[];
+
+ /** Publishing newIssueUri. */
+ public newIssueUri: string;
+
+ /** Publishing documentationUri. */
+ public documentationUri: string;
+
+ /** Publishing apiShortName. */
+ public apiShortName: string;
+
+ /** Publishing githubLabel. */
+ public githubLabel: string;
+
+ /** Publishing codeownerGithubTeams. */
+ public codeownerGithubTeams: string[];
+
+ /** Publishing docTagPrefix. */
+ public docTagPrefix: string;
+
+ /** Publishing organization. */
+ public organization: (google.api.ClientLibraryOrganization|keyof typeof google.api.ClientLibraryOrganization);
+
+ /** Publishing librarySettings. */
+ public librarySettings: google.api.IClientLibrarySettings[];
+
+ /** Publishing protoReferenceDocumentationUri. */
+ public protoReferenceDocumentationUri: string;
+
+ /** Publishing restReferenceDocumentationUri. */
+ public restReferenceDocumentationUri: string;
+
+ /**
+ * Creates a new Publishing instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Publishing instance
+ */
+ public static create(properties?: google.api.IPublishing): google.api.Publishing;
+
+ /**
+ * Encodes the specified Publishing message. Does not implicitly {@link google.api.Publishing.verify|verify} messages.
+ * @param message Publishing message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.api.IPublishing, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Publishing message, length delimited. Does not implicitly {@link google.api.Publishing.verify|verify} messages.
+ * @param message Publishing message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.api.IPublishing, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a Publishing message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Publishing
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.Publishing;
+
+ /**
+ * Decodes a Publishing message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Publishing
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.Publishing;
+
+ /**
+ * Verifies a Publishing message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a Publishing message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Publishing
+ */
+ public static fromObject(object: { [k: string]: any }): google.api.Publishing;
+
+ /**
+ * Creates a plain object from a Publishing message. Also converts values to other types if specified.
+ * @param message Publishing
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.api.Publishing, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Publishing to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Publishing
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a JavaSettings. */
+ interface IJavaSettings {
+
+ /** JavaSettings libraryPackage */
+ libraryPackage?: (string|null);
+
+ /** JavaSettings serviceClassNames */
+ serviceClassNames?: ({ [k: string]: string }|null);
+
+ /** JavaSettings common */
+ common?: (google.api.ICommonLanguageSettings|null);
+ }
+
+ /** Represents a JavaSettings. */
+ class JavaSettings implements IJavaSettings {
+
+ /**
+ * Constructs a new JavaSettings.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.api.IJavaSettings);
+
+ /** JavaSettings libraryPackage. */
+ public libraryPackage: string;
+
+ /** JavaSettings serviceClassNames. */
+ public serviceClassNames: { [k: string]: string };
+
+ /** JavaSettings common. */
+ public common?: (google.api.ICommonLanguageSettings|null);
+
+ /**
+ * Creates a new JavaSettings instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns JavaSettings instance
+ */
+ public static create(properties?: google.api.IJavaSettings): google.api.JavaSettings;
+
+ /**
+ * Encodes the specified JavaSettings message. Does not implicitly {@link google.api.JavaSettings.verify|verify} messages.
+ * @param message JavaSettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.api.IJavaSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified JavaSettings message, length delimited. Does not implicitly {@link google.api.JavaSettings.verify|verify} messages.
+ * @param message JavaSettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.api.IJavaSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a JavaSettings message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns JavaSettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.JavaSettings;
+
+ /**
+ * Decodes a JavaSettings message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns JavaSettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.JavaSettings;
+
+ /**
+ * Verifies a JavaSettings message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a JavaSettings message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns JavaSettings
+ */
+ public static fromObject(object: { [k: string]: any }): google.api.JavaSettings;
+
+ /**
+ * Creates a plain object from a JavaSettings message. Also converts values to other types if specified.
+ * @param message JavaSettings
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.api.JavaSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this JavaSettings to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for JavaSettings
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a CppSettings. */
+ interface ICppSettings {
+
+ /** CppSettings common */
+ common?: (google.api.ICommonLanguageSettings|null);
+ }
+
+ /** Represents a CppSettings. */
+ class CppSettings implements ICppSettings {
+
+ /**
+ * Constructs a new CppSettings.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.api.ICppSettings);
+
+ /** CppSettings common. */
+ public common?: (google.api.ICommonLanguageSettings|null);
+
+ /**
+ * Creates a new CppSettings instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns CppSettings instance
+ */
+ public static create(properties?: google.api.ICppSettings): google.api.CppSettings;
+
+ /**
+ * Encodes the specified CppSettings message. Does not implicitly {@link google.api.CppSettings.verify|verify} messages.
+ * @param message CppSettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.api.ICppSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified CppSettings message, length delimited. Does not implicitly {@link google.api.CppSettings.verify|verify} messages.
+ * @param message CppSettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.api.ICppSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a CppSettings message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns CppSettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CppSettings;
+
+ /**
+ * Decodes a CppSettings message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns CppSettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CppSettings;
+
+ /**
+ * Verifies a CppSettings message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a CppSettings message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns CppSettings
+ */
+ public static fromObject(object: { [k: string]: any }): google.api.CppSettings;
+
+ /**
+ * Creates a plain object from a CppSettings message. Also converts values to other types if specified.
+ * @param message CppSettings
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.api.CppSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this CppSettings to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for CppSettings
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a PhpSettings. */
+ interface IPhpSettings {
+
+ /** PhpSettings common */
+ common?: (google.api.ICommonLanguageSettings|null);
+ }
+
+ /** Represents a PhpSettings. */
+ class PhpSettings implements IPhpSettings {
+
+ /**
+ * Constructs a new PhpSettings.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.api.IPhpSettings);
+
+ /** PhpSettings common. */
+ public common?: (google.api.ICommonLanguageSettings|null);
+
+ /**
+ * Creates a new PhpSettings instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns PhpSettings instance
+ */
+ public static create(properties?: google.api.IPhpSettings): google.api.PhpSettings;
+
+ /**
+ * Encodes the specified PhpSettings message. Does not implicitly {@link google.api.PhpSettings.verify|verify} messages.
+ * @param message PhpSettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.api.IPhpSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified PhpSettings message, length delimited. Does not implicitly {@link google.api.PhpSettings.verify|verify} messages.
+ * @param message PhpSettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.api.IPhpSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a PhpSettings message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns PhpSettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.PhpSettings;
+
+ /**
+ * Decodes a PhpSettings message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns PhpSettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.PhpSettings;
+
+ /**
+ * Verifies a PhpSettings message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a PhpSettings message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns PhpSettings
+ */
+ public static fromObject(object: { [k: string]: any }): google.api.PhpSettings;
+
+ /**
+ * Creates a plain object from a PhpSettings message. Also converts values to other types if specified.
+ * @param message PhpSettings
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.api.PhpSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this PhpSettings to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for PhpSettings
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a PythonSettings. */
+ interface IPythonSettings {
+
+ /** PythonSettings common */
+ common?: (google.api.ICommonLanguageSettings|null);
+ }
+
+ /** Represents a PythonSettings. */
+ class PythonSettings implements IPythonSettings {
+
+ /**
+ * Constructs a new PythonSettings.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.api.IPythonSettings);
+
+ /** PythonSettings common. */
+ public common?: (google.api.ICommonLanguageSettings|null);
+
+ /**
+ * Creates a new PythonSettings instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns PythonSettings instance
+ */
+ public static create(properties?: google.api.IPythonSettings): google.api.PythonSettings;
+
+ /**
+ * Encodes the specified PythonSettings message. Does not implicitly {@link google.api.PythonSettings.verify|verify} messages.
+ * @param message PythonSettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.api.IPythonSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified PythonSettings message, length delimited. Does not implicitly {@link google.api.PythonSettings.verify|verify} messages.
+ * @param message PythonSettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.api.IPythonSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a PythonSettings message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns PythonSettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.PythonSettings;
+
+ /**
+ * Decodes a PythonSettings message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns PythonSettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.PythonSettings;
+
+ /**
+ * Verifies a PythonSettings message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a PythonSettings message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns PythonSettings
+ */
+ public static fromObject(object: { [k: string]: any }): google.api.PythonSettings;
+
+ /**
+ * Creates a plain object from a PythonSettings message. Also converts values to other types if specified.
+ * @param message PythonSettings
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.api.PythonSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this PythonSettings to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for PythonSettings
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a NodeSettings. */
+ interface INodeSettings {
+
+ /** NodeSettings common */
+ common?: (google.api.ICommonLanguageSettings|null);
+ }
+
+ /** Represents a NodeSettings. */
+ class NodeSettings implements INodeSettings {
+
+ /**
+ * Constructs a new NodeSettings.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.api.INodeSettings);
+
+ /** NodeSettings common. */
+ public common?: (google.api.ICommonLanguageSettings|null);
+
+ /**
+ * Creates a new NodeSettings instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns NodeSettings instance
+ */
+ public static create(properties?: google.api.INodeSettings): google.api.NodeSettings;
+
+ /**
+ * Encodes the specified NodeSettings message. Does not implicitly {@link google.api.NodeSettings.verify|verify} messages.
+ * @param message NodeSettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.api.INodeSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified NodeSettings message, length delimited. Does not implicitly {@link google.api.NodeSettings.verify|verify} messages.
+ * @param message NodeSettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.api.INodeSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a NodeSettings message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns NodeSettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.NodeSettings;
+
+ /**
+ * Decodes a NodeSettings message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns NodeSettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.NodeSettings;
+
+ /**
+ * Verifies a NodeSettings message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a NodeSettings message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns NodeSettings
+ */
+ public static fromObject(object: { [k: string]: any }): google.api.NodeSettings;
+
+ /**
+ * Creates a plain object from a NodeSettings message. Also converts values to other types if specified.
+ * @param message NodeSettings
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.api.NodeSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this NodeSettings to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for NodeSettings
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a DotnetSettings. */
+ interface IDotnetSettings {
+
+ /** DotnetSettings common */
+ common?: (google.api.ICommonLanguageSettings|null);
+
+ /** DotnetSettings renamedServices */
+ renamedServices?: ({ [k: string]: string }|null);
+
+ /** DotnetSettings renamedResources */
+ renamedResources?: ({ [k: string]: string }|null);
+
+ /** DotnetSettings ignoredResources */
+ ignoredResources?: (string[]|null);
+
+ /** DotnetSettings forcedNamespaceAliases */
+ forcedNamespaceAliases?: (string[]|null);
+
+ /** DotnetSettings handwrittenSignatures */
+ handwrittenSignatures?: (string[]|null);
+ }
+
+ /** Represents a DotnetSettings. */
+ class DotnetSettings implements IDotnetSettings {
+
+ /**
+ * Constructs a new DotnetSettings.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.api.IDotnetSettings);
+
+ /** DotnetSettings common. */
+ public common?: (google.api.ICommonLanguageSettings|null);
+
+ /** DotnetSettings renamedServices. */
+ public renamedServices: { [k: string]: string };
+
+ /** DotnetSettings renamedResources. */
+ public renamedResources: { [k: string]: string };
+
+ /** DotnetSettings ignoredResources. */
+ public ignoredResources: string[];
+
+ /** DotnetSettings forcedNamespaceAliases. */
+ public forcedNamespaceAliases: string[];
+
+ /** DotnetSettings handwrittenSignatures. */
+ public handwrittenSignatures: string[];
+
+ /**
+ * Creates a new DotnetSettings instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns DotnetSettings instance
+ */
+ public static create(properties?: google.api.IDotnetSettings): google.api.DotnetSettings;
+
+ /**
+ * Encodes the specified DotnetSettings message. Does not implicitly {@link google.api.DotnetSettings.verify|verify} messages.
+ * @param message DotnetSettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.api.IDotnetSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified DotnetSettings message, length delimited. Does not implicitly {@link google.api.DotnetSettings.verify|verify} messages.
+ * @param message DotnetSettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.api.IDotnetSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a DotnetSettings message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns DotnetSettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.DotnetSettings;
+
+ /**
+ * Decodes a DotnetSettings message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns DotnetSettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.DotnetSettings;
+
+ /**
+ * Verifies a DotnetSettings message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a DotnetSettings message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns DotnetSettings
+ */
+ public static fromObject(object: { [k: string]: any }): google.api.DotnetSettings;
+
+ /**
+ * Creates a plain object from a DotnetSettings message. Also converts values to other types if specified.
+ * @param message DotnetSettings
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.api.DotnetSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this DotnetSettings to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for DotnetSettings
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a RubySettings. */
+ interface IRubySettings {
+
+ /** RubySettings common */
+ common?: (google.api.ICommonLanguageSettings|null);
+ }
+
+ /** Represents a RubySettings. */
+ class RubySettings implements IRubySettings {
+
+ /**
+ * Constructs a new RubySettings.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.api.IRubySettings);
+
+ /** RubySettings common. */
+ public common?: (google.api.ICommonLanguageSettings|null);
+
+ /**
+ * Creates a new RubySettings instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns RubySettings instance
+ */
+ public static create(properties?: google.api.IRubySettings): google.api.RubySettings;
+
+ /**
+ * Encodes the specified RubySettings message. Does not implicitly {@link google.api.RubySettings.verify|verify} messages.
+ * @param message RubySettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.api.IRubySettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified RubySettings message, length delimited. Does not implicitly {@link google.api.RubySettings.verify|verify} messages.
+ * @param message RubySettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.api.IRubySettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a RubySettings message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns RubySettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.RubySettings;
+
+ /**
+ * Decodes a RubySettings message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns RubySettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.RubySettings;
+
+ /**
+ * Verifies a RubySettings message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a RubySettings message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns RubySettings
+ */
+ public static fromObject(object: { [k: string]: any }): google.api.RubySettings;
+
+ /**
+ * Creates a plain object from a RubySettings message. Also converts values to other types if specified.
+ * @param message RubySettings
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.api.RubySettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this RubySettings to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for RubySettings
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a GoSettings. */
+ interface IGoSettings {
+
+ /** GoSettings common */
+ common?: (google.api.ICommonLanguageSettings|null);
+ }
+
+ /** Represents a GoSettings. */
+ class GoSettings implements IGoSettings {
+
+ /**
+ * Constructs a new GoSettings.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.api.IGoSettings);
+
+ /** GoSettings common. */
+ public common?: (google.api.ICommonLanguageSettings|null);
+
+ /**
+ * Creates a new GoSettings instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns GoSettings instance
+ */
+ public static create(properties?: google.api.IGoSettings): google.api.GoSettings;
+
+ /**
+ * Encodes the specified GoSettings message. Does not implicitly {@link google.api.GoSettings.verify|verify} messages.
+ * @param message GoSettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.api.IGoSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified GoSettings message, length delimited. Does not implicitly {@link google.api.GoSettings.verify|verify} messages.
+ * @param message GoSettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.api.IGoSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a GoSettings message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns GoSettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.GoSettings;
+
+ /**
+ * Decodes a GoSettings message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns GoSettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.GoSettings;
+
+ /**
+ * Verifies a GoSettings message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a GoSettings message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns GoSettings
+ */
+ public static fromObject(object: { [k: string]: any }): google.api.GoSettings;
+
+ /**
+ * Creates a plain object from a GoSettings message. Also converts values to other types if specified.
+ * @param message GoSettings
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.api.GoSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this GoSettings to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for GoSettings
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a MethodSettings. */
+ interface IMethodSettings {
+
+ /** MethodSettings selector */
+ selector?: (string|null);
+
+ /** MethodSettings longRunning */
+ longRunning?: (google.api.MethodSettings.ILongRunning|null);
+
+ /** MethodSettings autoPopulatedFields */
+ autoPopulatedFields?: (string[]|null);
+ }
+
+ /** Represents a MethodSettings. */
+ class MethodSettings implements IMethodSettings {
+
+ /**
+ * Constructs a new MethodSettings.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.api.IMethodSettings);
+
+ /** MethodSettings selector. */
+ public selector: string;
+
+ /** MethodSettings longRunning. */
+ public longRunning?: (google.api.MethodSettings.ILongRunning|null);
+
+ /** MethodSettings autoPopulatedFields. */
+ public autoPopulatedFields: string[];
+
+ /**
+ * Creates a new MethodSettings instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns MethodSettings instance
+ */
+ public static create(properties?: google.api.IMethodSettings): google.api.MethodSettings;
+
+ /**
+ * Encodes the specified MethodSettings message. Does not implicitly {@link google.api.MethodSettings.verify|verify} messages.
+ * @param message MethodSettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.api.IMethodSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified MethodSettings message, length delimited. Does not implicitly {@link google.api.MethodSettings.verify|verify} messages.
+ * @param message MethodSettings message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.api.IMethodSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a MethodSettings message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns MethodSettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.MethodSettings;
+
+ /**
+ * Decodes a MethodSettings message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns MethodSettings
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.MethodSettings;
+
+ /**
+ * Verifies a MethodSettings message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a MethodSettings message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns MethodSettings
+ */
+ public static fromObject(object: { [k: string]: any }): google.api.MethodSettings;
+
+ /**
+ * Creates a plain object from a MethodSettings message. Also converts values to other types if specified.
+ * @param message MethodSettings
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.api.MethodSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this MethodSettings to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for MethodSettings
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace MethodSettings {
+
+ /** Properties of a LongRunning. */
+ interface ILongRunning {
+
+ /** LongRunning initialPollDelay */
+ initialPollDelay?: (google.protobuf.IDuration|null);
+
+ /** LongRunning pollDelayMultiplier */
+ pollDelayMultiplier?: (number|null);
+
+ /** LongRunning maxPollDelay */
+ maxPollDelay?: (google.protobuf.IDuration|null);
+
+ /** LongRunning totalPollTimeout */
+ totalPollTimeout?: (google.protobuf.IDuration|null);
+ }
+
+ /** Represents a LongRunning. */
+ class LongRunning implements ILongRunning {
+
+ /**
+ * Constructs a new LongRunning.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.api.MethodSettings.ILongRunning);
+
+ /** LongRunning initialPollDelay. */
+ public initialPollDelay?: (google.protobuf.IDuration|null);
+
+ /** LongRunning pollDelayMultiplier. */
+ public pollDelayMultiplier: number;
+
+ /** LongRunning maxPollDelay. */
+ public maxPollDelay?: (google.protobuf.IDuration|null);
+
+ /** LongRunning totalPollTimeout. */
+ public totalPollTimeout?: (google.protobuf.IDuration|null);
+
+ /**
+ * Creates a new LongRunning instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns LongRunning instance
+ */
+ public static create(properties?: google.api.MethodSettings.ILongRunning): google.api.MethodSettings.LongRunning;
+
+ /**
+ * Encodes the specified LongRunning message. Does not implicitly {@link google.api.MethodSettings.LongRunning.verify|verify} messages.
+ * @param message LongRunning message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.api.MethodSettings.ILongRunning, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified LongRunning message, length delimited. Does not implicitly {@link google.api.MethodSettings.LongRunning.verify|verify} messages.
+ * @param message LongRunning message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.api.MethodSettings.ILongRunning, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a LongRunning message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns LongRunning
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.MethodSettings.LongRunning;
+
+ /**
+ * Decodes a LongRunning message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns LongRunning
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.MethodSettings.LongRunning;
+
+ /**
+ * Verifies a LongRunning message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a LongRunning message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns LongRunning
+ */
+ public static fromObject(object: { [k: string]: any }): google.api.MethodSettings.LongRunning;
+
+ /**
+ * Creates a plain object from a LongRunning message. Also converts values to other types if specified.
+ * @param message LongRunning
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.api.MethodSettings.LongRunning, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this LongRunning to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for LongRunning
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+
+ /** ClientLibraryOrganization enum. */
+ enum ClientLibraryOrganization {
+ CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED = 0,
+ CLOUD = 1,
+ ADS = 2,
+ PHOTOS = 3,
+ STREET_VIEW = 4,
+ SHOPPING = 5,
+ GEO = 6,
+ GENERATIVE_AI = 7
+ }
+
+ /** ClientLibraryDestination enum. */
+ enum ClientLibraryDestination {
+ CLIENT_LIBRARY_DESTINATION_UNSPECIFIED = 0,
+ GITHUB = 10,
+ PACKAGE_MANAGER = 20
+ }
+
+ /** LaunchStage enum. */
+ enum LaunchStage {
+ LAUNCH_STAGE_UNSPECIFIED = 0,
+ UNIMPLEMENTED = 6,
+ PRELAUNCH = 7,
+ EARLY_ACCESS = 1,
+ ALPHA = 2,
+ BETA = 3,
+ GA = 4,
+ DEPRECATED = 5
+ }
+
+ /** FieldBehavior enum. */
+ enum FieldBehavior {
+ FIELD_BEHAVIOR_UNSPECIFIED = 0,
+ OPTIONAL = 1,
+ REQUIRED = 2,
+ OUTPUT_ONLY = 3,
+ INPUT_ONLY = 4,
+ IMMUTABLE = 5,
+ UNORDERED_LIST = 6,
+ NON_EMPTY_DEFAULT = 7,
+ IDENTIFIER = 8
+ }
+ }
+
+ /** Namespace protobuf. */
+ namespace protobuf {
+
+ /** Properties of a FileDescriptorSet. */
+ interface IFileDescriptorSet {
+
+ /** FileDescriptorSet file */
+ file?: (google.protobuf.IFileDescriptorProto[]|null);
+ }
+
+ /** Represents a FileDescriptorSet. */
+ class FileDescriptorSet implements IFileDescriptorSet {
+
+ /**
+ * Constructs a new FileDescriptorSet.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IFileDescriptorSet);
+
+ /** FileDescriptorSet file. */
+ public file: google.protobuf.IFileDescriptorProto[];
+
+ /**
+ * Creates a new FileDescriptorSet instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns FileDescriptorSet instance
+ */
+ public static create(properties?: google.protobuf.IFileDescriptorSet): google.protobuf.FileDescriptorSet;
+
+ /**
+ * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages.
+ * @param message FileDescriptorSet message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages.
+ * @param message FileDescriptorSet message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a FileDescriptorSet message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns FileDescriptorSet
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorSet;
+
+ /**
+ * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns FileDescriptorSet
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorSet;
+
+ /**
+ * Verifies a FileDescriptorSet message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns FileDescriptorSet
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorSet;
+
+ /**
+ * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified.
+ * @param message FileDescriptorSet
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.FileDescriptorSet, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this FileDescriptorSet to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for FileDescriptorSet
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Edition enum. */
+ enum Edition {
+ EDITION_UNKNOWN = 0,
+ EDITION_PROTO2 = 998,
+ EDITION_PROTO3 = 999,
+ EDITION_2023 = 1000,
+ EDITION_2024 = 1001,
+ EDITION_1_TEST_ONLY = 1,
+ EDITION_2_TEST_ONLY = 2,
+ EDITION_99997_TEST_ONLY = 99997,
+ EDITION_99998_TEST_ONLY = 99998,
+ EDITION_99999_TEST_ONLY = 99999,
+ EDITION_MAX = 2147483647
+ }
+
+ /** Properties of a FileDescriptorProto. */
+ interface IFileDescriptorProto {
+
+ /** FileDescriptorProto name */
+ name?: (string|null);
+
+ /** FileDescriptorProto package */
+ "package"?: (string|null);
+
+ /** FileDescriptorProto dependency */
+ dependency?: (string[]|null);
+
+ /** FileDescriptorProto publicDependency */
+ publicDependency?: (number[]|null);
+
+ /** FileDescriptorProto weakDependency */
+ weakDependency?: (number[]|null);
+
+ /** FileDescriptorProto messageType */
+ messageType?: (google.protobuf.IDescriptorProto[]|null);
+
+ /** FileDescriptorProto enumType */
+ enumType?: (google.protobuf.IEnumDescriptorProto[]|null);
+
+ /** FileDescriptorProto service */
+ service?: (google.protobuf.IServiceDescriptorProto[]|null);
+
+ /** FileDescriptorProto extension */
+ extension?: (google.protobuf.IFieldDescriptorProto[]|null);
+
+ /** FileDescriptorProto options */
+ options?: (google.protobuf.IFileOptions|null);
+
+ /** FileDescriptorProto sourceCodeInfo */
+ sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null);
+
+ /** FileDescriptorProto syntax */
+ syntax?: (string|null);
+
+ /** FileDescriptorProto edition */
+ edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+ }
+
+ /** Represents a FileDescriptorProto. */
+ class FileDescriptorProto implements IFileDescriptorProto {
+
+ /**
+ * Constructs a new FileDescriptorProto.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IFileDescriptorProto);
+
+ /** FileDescriptorProto name. */
+ public name: string;
+
+ /** FileDescriptorProto package. */
+ public package: string;
+
+ /** FileDescriptorProto dependency. */
+ public dependency: string[];
+
+ /** FileDescriptorProto publicDependency. */
+ public publicDependency: number[];
+
+ /** FileDescriptorProto weakDependency. */
+ public weakDependency: number[];
+
+ /** FileDescriptorProto messageType. */
+ public messageType: google.protobuf.IDescriptorProto[];
+
+ /** FileDescriptorProto enumType. */
+ public enumType: google.protobuf.IEnumDescriptorProto[];
+
+ /** FileDescriptorProto service. */
+ public service: google.protobuf.IServiceDescriptorProto[];
+
+ /** FileDescriptorProto extension. */
+ public extension: google.protobuf.IFieldDescriptorProto[];
+
+ /** FileDescriptorProto options. */
+ public options?: (google.protobuf.IFileOptions|null);
+
+ /** FileDescriptorProto sourceCodeInfo. */
+ public sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null);
+
+ /** FileDescriptorProto syntax. */
+ public syntax: string;
+
+ /** FileDescriptorProto edition. */
+ public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+ /**
+ * Creates a new FileDescriptorProto instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns FileDescriptorProto instance
+ */
+ public static create(properties?: google.protobuf.IFileDescriptorProto): google.protobuf.FileDescriptorProto;
+
+ /**
+ * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages.
+ * @param message FileDescriptorProto message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages.
+ * @param message FileDescriptorProto message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a FileDescriptorProto message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns FileDescriptorProto
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorProto;
+
+ /**
+ * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns FileDescriptorProto
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorProto;
+
+ /**
+ * Verifies a FileDescriptorProto message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns FileDescriptorProto
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorProto;
+
+ /**
+ * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified.
+ * @param message FileDescriptorProto
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.FileDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this FileDescriptorProto to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for FileDescriptorProto
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a DescriptorProto. */
+ interface IDescriptorProto {
+
+ /** DescriptorProto name */
+ name?: (string|null);
+
+ /** DescriptorProto field */
+ field?: (google.protobuf.IFieldDescriptorProto[]|null);
+
+ /** DescriptorProto extension */
+ extension?: (google.protobuf.IFieldDescriptorProto[]|null);
+
+ /** DescriptorProto nestedType */
+ nestedType?: (google.protobuf.IDescriptorProto[]|null);
+
+ /** DescriptorProto enumType */
+ enumType?: (google.protobuf.IEnumDescriptorProto[]|null);
+
+ /** DescriptorProto extensionRange */
+ extensionRange?: (google.protobuf.DescriptorProto.IExtensionRange[]|null);
+
+ /** DescriptorProto oneofDecl */
+ oneofDecl?: (google.protobuf.IOneofDescriptorProto[]|null);
+
+ /** DescriptorProto options */
+ options?: (google.protobuf.IMessageOptions|null);
+
+ /** DescriptorProto reservedRange */
+ reservedRange?: (google.protobuf.DescriptorProto.IReservedRange[]|null);
+
+ /** DescriptorProto reservedName */
+ reservedName?: (string[]|null);
+ }
+
+ /** Represents a DescriptorProto. */
+ class DescriptorProto implements IDescriptorProto {
+
+ /**
+ * Constructs a new DescriptorProto.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IDescriptorProto);
+
+ /** DescriptorProto name. */
+ public name: string;
+
+ /** DescriptorProto field. */
+ public field: google.protobuf.IFieldDescriptorProto[];
+
+ /** DescriptorProto extension. */
+ public extension: google.protobuf.IFieldDescriptorProto[];
+
+ /** DescriptorProto nestedType. */
+ public nestedType: google.protobuf.IDescriptorProto[];
+
+ /** DescriptorProto enumType. */
+ public enumType: google.protobuf.IEnumDescriptorProto[];
+
+ /** DescriptorProto extensionRange. */
+ public extensionRange: google.protobuf.DescriptorProto.IExtensionRange[];
+
+ /** DescriptorProto oneofDecl. */
+ public oneofDecl: google.protobuf.IOneofDescriptorProto[];
+
+ /** DescriptorProto options. */
+ public options?: (google.protobuf.IMessageOptions|null);
+
+ /** DescriptorProto reservedRange. */
+ public reservedRange: google.protobuf.DescriptorProto.IReservedRange[];
+
+ /** DescriptorProto reservedName. */
+ public reservedName: string[];
+
+ /**
+ * Creates a new DescriptorProto instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns DescriptorProto instance
+ */
+ public static create(properties?: google.protobuf.IDescriptorProto): google.protobuf.DescriptorProto;
+
+ /**
+ * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages.
+ * @param message DescriptorProto message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages.
+ * @param message DescriptorProto message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a DescriptorProto message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns DescriptorProto
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto;
+
+ /**
+ * Decodes a DescriptorProto message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns DescriptorProto
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto;
+
+ /**
+ * Verifies a DescriptorProto message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns DescriptorProto
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto;
+
+ /**
+ * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified.
+ * @param message DescriptorProto
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.DescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this DescriptorProto to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for DescriptorProto
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace DescriptorProto {
+
+ /** Properties of an ExtensionRange. */
+ interface IExtensionRange {
+
+ /** ExtensionRange start */
+ start?: (number|null);
+
+ /** ExtensionRange end */
+ end?: (number|null);
+
+ /** ExtensionRange options */
+ options?: (google.protobuf.IExtensionRangeOptions|null);
+ }
+
+ /** Represents an ExtensionRange. */
+ class ExtensionRange implements IExtensionRange {
+
+ /**
+ * Constructs a new ExtensionRange.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.DescriptorProto.IExtensionRange);
+
+ /** ExtensionRange start. */
+ public start: number;
+
+ /** ExtensionRange end. */
+ public end: number;
+
+ /** ExtensionRange options. */
+ public options?: (google.protobuf.IExtensionRangeOptions|null);
+
+ /**
+ * Creates a new ExtensionRange instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ExtensionRange instance
+ */
+ public static create(properties?: google.protobuf.DescriptorProto.IExtensionRange): google.protobuf.DescriptorProto.ExtensionRange;
+
+ /**
+ * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages.
+ * @param message ExtensionRange message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages.
+ * @param message ExtensionRange message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an ExtensionRange message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ExtensionRange
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ExtensionRange;
+
+ /**
+ * Decodes an ExtensionRange message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ExtensionRange
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ExtensionRange;
+
+ /**
+ * Verifies an ExtensionRange message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ExtensionRange
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ExtensionRange;
+
+ /**
+ * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified.
+ * @param message ExtensionRange
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.DescriptorProto.ExtensionRange, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ExtensionRange to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ExtensionRange
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a ReservedRange. */
+ interface IReservedRange {
+
+ /** ReservedRange start */
+ start?: (number|null);
+
+ /** ReservedRange end */
+ end?: (number|null);
+ }
+
+ /** Represents a ReservedRange. */
+ class ReservedRange implements IReservedRange {
+
+ /**
+ * Constructs a new ReservedRange.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.DescriptorProto.IReservedRange);
+
+ /** ReservedRange start. */
+ public start: number;
+
+ /** ReservedRange end. */
+ public end: number;
+
+ /**
+ * Creates a new ReservedRange instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ReservedRange instance
+ */
+ public static create(properties?: google.protobuf.DescriptorProto.IReservedRange): google.protobuf.DescriptorProto.ReservedRange;
+
+ /**
+ * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages.
+ * @param message ReservedRange message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages.
+ * @param message ReservedRange message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a ReservedRange message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ReservedRange
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ReservedRange;
+
+ /**
+ * Decodes a ReservedRange message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ReservedRange
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ReservedRange;
+
+ /**
+ * Verifies a ReservedRange message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ReservedRange
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ReservedRange;
+
+ /**
+ * Creates a plain object from a ReservedRange message. Also converts values to other types if specified.
+ * @param message ReservedRange
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.DescriptorProto.ReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ReservedRange to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ReservedRange
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+
+ /** Properties of an ExtensionRangeOptions. */
+ interface IExtensionRangeOptions {
+
+ /** ExtensionRangeOptions uninterpretedOption */
+ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
+
+ /** ExtensionRangeOptions declaration */
+ declaration?: (google.protobuf.ExtensionRangeOptions.IDeclaration[]|null);
+
+ /** ExtensionRangeOptions features */
+ features?: (google.protobuf.IFeatureSet|null);
+
+ /** ExtensionRangeOptions verification */
+ verification?: (google.protobuf.ExtensionRangeOptions.VerificationState|keyof typeof google.protobuf.ExtensionRangeOptions.VerificationState|null);
+ }
+
+ /** Represents an ExtensionRangeOptions. */
+ class ExtensionRangeOptions implements IExtensionRangeOptions {
+
+ /**
+ * Constructs a new ExtensionRangeOptions.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IExtensionRangeOptions);
+
+ /** ExtensionRangeOptions uninterpretedOption. */
+ public uninterpretedOption: google.protobuf.IUninterpretedOption[];
+
+ /** ExtensionRangeOptions declaration. */
+ public declaration: google.protobuf.ExtensionRangeOptions.IDeclaration[];
+
+ /** ExtensionRangeOptions features. */
+ public features?: (google.protobuf.IFeatureSet|null);
+
+ /** ExtensionRangeOptions verification. */
+ public verification: (google.protobuf.ExtensionRangeOptions.VerificationState|keyof typeof google.protobuf.ExtensionRangeOptions.VerificationState);
+
+ /**
+ * Creates a new ExtensionRangeOptions instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ExtensionRangeOptions instance
+ */
+ public static create(properties?: google.protobuf.IExtensionRangeOptions): google.protobuf.ExtensionRangeOptions;
+
+ /**
+ * Encodes the specified ExtensionRangeOptions message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages.
+ * @param message ExtensionRangeOptions message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ExtensionRangeOptions message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages.
+ * @param message ExtensionRangeOptions message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an ExtensionRangeOptions message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ExtensionRangeOptions
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ExtensionRangeOptions;
+
+ /**
+ * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ExtensionRangeOptions
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ExtensionRangeOptions;
+
+ /**
+ * Verifies an ExtensionRangeOptions message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ExtensionRangeOptions
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.ExtensionRangeOptions;
+
+ /**
+ * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified.
+ * @param message ExtensionRangeOptions
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.ExtensionRangeOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ExtensionRangeOptions to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ExtensionRangeOptions
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace ExtensionRangeOptions {
+
+ /** Properties of a Declaration. */
+ interface IDeclaration {
+
+ /** Declaration number */
+ number?: (number|null);
+
+ /** Declaration fullName */
+ fullName?: (string|null);
+
+ /** Declaration type */
+ type?: (string|null);
+
+ /** Declaration reserved */
+ reserved?: (boolean|null);
+
+ /** Declaration repeated */
+ repeated?: (boolean|null);
+ }
+
+ /** Represents a Declaration. */
+ class Declaration implements IDeclaration {
+
+ /**
+ * Constructs a new Declaration.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.ExtensionRangeOptions.IDeclaration);
+
+ /** Declaration number. */
+ public number: number;
+
+ /** Declaration fullName. */
+ public fullName: string;
+
+ /** Declaration type. */
+ public type: string;
+
+ /** Declaration reserved. */
+ public reserved: boolean;
+
+ /** Declaration repeated. */
+ public repeated: boolean;
+
+ /**
+ * Creates a new Declaration instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Declaration instance
+ */
+ public static create(properties?: google.protobuf.ExtensionRangeOptions.IDeclaration): google.protobuf.ExtensionRangeOptions.Declaration;
+
+ /**
+ * Encodes the specified Declaration message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.Declaration.verify|verify} messages.
+ * @param message Declaration message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.ExtensionRangeOptions.IDeclaration, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Declaration message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.Declaration.verify|verify} messages.
+ * @param message Declaration message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.ExtensionRangeOptions.IDeclaration, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a Declaration message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Declaration
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ExtensionRangeOptions.Declaration;
+
+ /**
+ * Decodes a Declaration message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Declaration
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ExtensionRangeOptions.Declaration;
+
+ /**
+ * Verifies a Declaration message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a Declaration message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Declaration
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.ExtensionRangeOptions.Declaration;
+
+ /**
+ * Creates a plain object from a Declaration message. Also converts values to other types if specified.
+ * @param message Declaration
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.ExtensionRangeOptions.Declaration, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Declaration to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Declaration
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** VerificationState enum. */
+ enum VerificationState {
+ DECLARATION = 0,
+ UNVERIFIED = 1
+ }
+ }
+
+ /** Properties of a FieldDescriptorProto. */
+ interface IFieldDescriptorProto {
+
+ /** FieldDescriptorProto name */
+ name?: (string|null);
+
+ /** FieldDescriptorProto number */
+ number?: (number|null);
+
+ /** FieldDescriptorProto label */
+ label?: (google.protobuf.FieldDescriptorProto.Label|keyof typeof google.protobuf.FieldDescriptorProto.Label|null);
+
+ /** FieldDescriptorProto type */
+ type?: (google.protobuf.FieldDescriptorProto.Type|keyof typeof google.protobuf.FieldDescriptorProto.Type|null);
+
+ /** FieldDescriptorProto typeName */
+ typeName?: (string|null);
+
+ /** FieldDescriptorProto extendee */
+ extendee?: (string|null);
+
+ /** FieldDescriptorProto defaultValue */
+ defaultValue?: (string|null);
+
+ /** FieldDescriptorProto oneofIndex */
+ oneofIndex?: (number|null);
+
+ /** FieldDescriptorProto jsonName */
+ jsonName?: (string|null);
+
+ /** FieldDescriptorProto options */
+ options?: (google.protobuf.IFieldOptions|null);
+
+ /** FieldDescriptorProto proto3Optional */
+ proto3Optional?: (boolean|null);
+ }
+
+ /** Represents a FieldDescriptorProto. */
+ class FieldDescriptorProto implements IFieldDescriptorProto {
+
+ /**
+ * Constructs a new FieldDescriptorProto.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IFieldDescriptorProto);
+
+ /** FieldDescriptorProto name. */
+ public name: string;
+
+ /** FieldDescriptorProto number. */
+ public number: number;
+
+ /** FieldDescriptorProto label. */
+ public label: (google.protobuf.FieldDescriptorProto.Label|keyof typeof google.protobuf.FieldDescriptorProto.Label);
+
+ /** FieldDescriptorProto type. */
+ public type: (google.protobuf.FieldDescriptorProto.Type|keyof typeof google.protobuf.FieldDescriptorProto.Type);
+
+ /** FieldDescriptorProto typeName. */
+ public typeName: string;
+
+ /** FieldDescriptorProto extendee. */
+ public extendee: string;
+
+ /** FieldDescriptorProto defaultValue. */
+ public defaultValue: string;
+
+ /** FieldDescriptorProto oneofIndex. */
+ public oneofIndex: number;
+
+ /** FieldDescriptorProto jsonName. */
+ public jsonName: string;
+
+ /** FieldDescriptorProto options. */
+ public options?: (google.protobuf.IFieldOptions|null);
+
+ /** FieldDescriptorProto proto3Optional. */
+ public proto3Optional: boolean;
+
+ /**
+ * Creates a new FieldDescriptorProto instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns FieldDescriptorProto instance
+ */
+ public static create(properties?: google.protobuf.IFieldDescriptorProto): google.protobuf.FieldDescriptorProto;
+
+ /**
+ * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages.
+ * @param message FieldDescriptorProto message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages.
+ * @param message FieldDescriptorProto message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a FieldDescriptorProto message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns FieldDescriptorProto
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldDescriptorProto;
+
+ /**
+ * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns FieldDescriptorProto
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldDescriptorProto;
+
+ /**
+ * Verifies a FieldDescriptorProto message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns FieldDescriptorProto
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.FieldDescriptorProto;
+
+ /**
+ * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified.
+ * @param message FieldDescriptorProto
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.FieldDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this FieldDescriptorProto to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for FieldDescriptorProto
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace FieldDescriptorProto {
+
+ /** Type enum. */
+ enum Type {
+ TYPE_DOUBLE = 1,
+ TYPE_FLOAT = 2,
+ TYPE_INT64 = 3,
+ TYPE_UINT64 = 4,
+ TYPE_INT32 = 5,
+ TYPE_FIXED64 = 6,
+ TYPE_FIXED32 = 7,
+ TYPE_BOOL = 8,
+ TYPE_STRING = 9,
+ TYPE_GROUP = 10,
+ TYPE_MESSAGE = 11,
+ TYPE_BYTES = 12,
+ TYPE_UINT32 = 13,
+ TYPE_ENUM = 14,
+ TYPE_SFIXED32 = 15,
+ TYPE_SFIXED64 = 16,
+ TYPE_SINT32 = 17,
+ TYPE_SINT64 = 18
+ }
+
+ /** Label enum. */
+ enum Label {
+ LABEL_OPTIONAL = 1,
+ LABEL_REPEATED = 3,
+ LABEL_REQUIRED = 2
+ }
+ }
+
+ /** Properties of an OneofDescriptorProto. */
+ interface IOneofDescriptorProto {
+
+ /** OneofDescriptorProto name */
+ name?: (string|null);
+
+ /** OneofDescriptorProto options */
+ options?: (google.protobuf.IOneofOptions|null);
+ }
+
+ /** Represents an OneofDescriptorProto. */
+ class OneofDescriptorProto implements IOneofDescriptorProto {
+
+ /**
+ * Constructs a new OneofDescriptorProto.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IOneofDescriptorProto);
+
+ /** OneofDescriptorProto name. */
+ public name: string;
+
+ /** OneofDescriptorProto options. */
+ public options?: (google.protobuf.IOneofOptions|null);
+
+ /**
+ * Creates a new OneofDescriptorProto instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns OneofDescriptorProto instance
+ */
+ public static create(properties?: google.protobuf.IOneofDescriptorProto): google.protobuf.OneofDescriptorProto;
+
+ /**
+ * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages.
+ * @param message OneofDescriptorProto message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages.
+ * @param message OneofDescriptorProto message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an OneofDescriptorProto message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns OneofDescriptorProto
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofDescriptorProto;
+
+ /**
+ * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns OneofDescriptorProto
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofDescriptorProto;
+
+ /**
+ * Verifies an OneofDescriptorProto message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns OneofDescriptorProto
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.OneofDescriptorProto;
+
+ /**
+ * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified.
+ * @param message OneofDescriptorProto
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.OneofDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this OneofDescriptorProto to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for OneofDescriptorProto
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an EnumDescriptorProto. */
+ interface IEnumDescriptorProto {
+
+ /** EnumDescriptorProto name */
+ name?: (string|null);
+
+ /** EnumDescriptorProto value */
+ value?: (google.protobuf.IEnumValueDescriptorProto[]|null);
+
+ /** EnumDescriptorProto options */
+ options?: (google.protobuf.IEnumOptions|null);
+
+ /** EnumDescriptorProto reservedRange */
+ reservedRange?: (google.protobuf.EnumDescriptorProto.IEnumReservedRange[]|null);
+
+ /** EnumDescriptorProto reservedName */
+ reservedName?: (string[]|null);
+ }
+
+ /** Represents an EnumDescriptorProto. */
+ class EnumDescriptorProto implements IEnumDescriptorProto {
+
+ /**
+ * Constructs a new EnumDescriptorProto.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IEnumDescriptorProto);
+
+ /** EnumDescriptorProto name. */
+ public name: string;
+
+ /** EnumDescriptorProto value. */
+ public value: google.protobuf.IEnumValueDescriptorProto[];
+
+ /** EnumDescriptorProto options. */
+ public options?: (google.protobuf.IEnumOptions|null);
+
+ /** EnumDescriptorProto reservedRange. */
+ public reservedRange: google.protobuf.EnumDescriptorProto.IEnumReservedRange[];
+
+ /** EnumDescriptorProto reservedName. */
+ public reservedName: string[];
+
+ /**
+ * Creates a new EnumDescriptorProto instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns EnumDescriptorProto instance
+ */
+ public static create(properties?: google.protobuf.IEnumDescriptorProto): google.protobuf.EnumDescriptorProto;
+
+ /**
+ * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages.
+ * @param message EnumDescriptorProto message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages.
+ * @param message EnumDescriptorProto message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an EnumDescriptorProto message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns EnumDescriptorProto
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto;
+
+ /**
+ * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns EnumDescriptorProto
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto;
+
+ /**
+ * Verifies an EnumDescriptorProto message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns EnumDescriptorProto
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto;
+
+ /**
+ * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified.
+ * @param message EnumDescriptorProto
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.EnumDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this EnumDescriptorProto to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for EnumDescriptorProto
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace EnumDescriptorProto {
+
+ /** Properties of an EnumReservedRange. */
+ interface IEnumReservedRange {
+
+ /** EnumReservedRange start */
+ start?: (number|null);
+
+ /** EnumReservedRange end */
+ end?: (number|null);
+ }
+
+ /** Represents an EnumReservedRange. */
+ class EnumReservedRange implements IEnumReservedRange {
+
+ /**
+ * Constructs a new EnumReservedRange.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange);
+
+ /** EnumReservedRange start. */
+ public start: number;
+
+ /** EnumReservedRange end. */
+ public end: number;
+
+ /**
+ * Creates a new EnumReservedRange instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns EnumReservedRange instance
+ */
+ public static create(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange): google.protobuf.EnumDescriptorProto.EnumReservedRange;
+
+ /**
+ * Encodes the specified EnumReservedRange message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages.
+ * @param message EnumReservedRange message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified EnumReservedRange message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages.
+ * @param message EnumReservedRange message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an EnumReservedRange message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns EnumReservedRange
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto.EnumReservedRange;
+
+ /**
+ * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns EnumReservedRange
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto.EnumReservedRange;
+
+ /**
+ * Verifies an EnumReservedRange message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns EnumReservedRange
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto.EnumReservedRange;
+
+ /**
+ * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified.
+ * @param message EnumReservedRange
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.EnumDescriptorProto.EnumReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this EnumReservedRange to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for EnumReservedRange
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+
+ /** Properties of an EnumValueDescriptorProto. */
+ interface IEnumValueDescriptorProto {
+
+ /** EnumValueDescriptorProto name */
+ name?: (string|null);
+
+ /** EnumValueDescriptorProto number */
+ number?: (number|null);
+
+ /** EnumValueDescriptorProto options */
+ options?: (google.protobuf.IEnumValueOptions|null);
+ }
+
+ /** Represents an EnumValueDescriptorProto. */
+ class EnumValueDescriptorProto implements IEnumValueDescriptorProto {
+
+ /**
+ * Constructs a new EnumValueDescriptorProto.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IEnumValueDescriptorProto);
+
+ /** EnumValueDescriptorProto name. */
+ public name: string;
+
+ /** EnumValueDescriptorProto number. */
+ public number: number;
+
+ /** EnumValueDescriptorProto options. */
+ public options?: (google.protobuf.IEnumValueOptions|null);
+
+ /**
+ * Creates a new EnumValueDescriptorProto instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns EnumValueDescriptorProto instance
+ */
+ public static create(properties?: google.protobuf.IEnumValueDescriptorProto): google.protobuf.EnumValueDescriptorProto;
+
+ /**
+ * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages.
+ * @param message EnumValueDescriptorProto message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages.
+ * @param message EnumValueDescriptorProto message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an EnumValueDescriptorProto message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns EnumValueDescriptorProto
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueDescriptorProto;
+
+ /**
+ * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns EnumValueDescriptorProto
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueDescriptorProto;
+
+ /**
+ * Verifies an EnumValueDescriptorProto message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns EnumValueDescriptorProto
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueDescriptorProto;
+
+ /**
+ * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified.
+ * @param message EnumValueDescriptorProto
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.EnumValueDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this EnumValueDescriptorProto to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for EnumValueDescriptorProto
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a ServiceDescriptorProto. */
+ interface IServiceDescriptorProto {
+
+ /** ServiceDescriptorProto name */
+ name?: (string|null);
+
+ /** ServiceDescriptorProto method */
+ method?: (google.protobuf.IMethodDescriptorProto[]|null);
+
+ /** ServiceDescriptorProto options */
+ options?: (google.protobuf.IServiceOptions|null);
+ }
+
+ /** Represents a ServiceDescriptorProto. */
+ class ServiceDescriptorProto implements IServiceDescriptorProto {
+
+ /**
+ * Constructs a new ServiceDescriptorProto.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IServiceDescriptorProto);
+
+ /** ServiceDescriptorProto name. */
+ public name: string;
+
+ /** ServiceDescriptorProto method. */
+ public method: google.protobuf.IMethodDescriptorProto[];
+
+ /** ServiceDescriptorProto options. */
+ public options?: (google.protobuf.IServiceOptions|null);
+
+ /**
+ * Creates a new ServiceDescriptorProto instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ServiceDescriptorProto instance
+ */
+ public static create(properties?: google.protobuf.IServiceDescriptorProto): google.protobuf.ServiceDescriptorProto;
+
+ /**
+ * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages.
+ * @param message ServiceDescriptorProto message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages.
+ * @param message ServiceDescriptorProto message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a ServiceDescriptorProto message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ServiceDescriptorProto
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceDescriptorProto;
+
+ /**
+ * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ServiceDescriptorProto
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceDescriptorProto;
+
+ /**
+ * Verifies a ServiceDescriptorProto message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ServiceDescriptorProto
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceDescriptorProto;
+
+ /**
+ * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified.
+ * @param message ServiceDescriptorProto
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.ServiceDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ServiceDescriptorProto to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ServiceDescriptorProto
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a MethodDescriptorProto. */
+ interface IMethodDescriptorProto {
+
+ /** MethodDescriptorProto name */
+ name?: (string|null);
+
+ /** MethodDescriptorProto inputType */
+ inputType?: (string|null);
+
+ /** MethodDescriptorProto outputType */
+ outputType?: (string|null);
+
+ /** MethodDescriptorProto options */
+ options?: (google.protobuf.IMethodOptions|null);
+
+ /** MethodDescriptorProto clientStreaming */
+ clientStreaming?: (boolean|null);
+
+ /** MethodDescriptorProto serverStreaming */
+ serverStreaming?: (boolean|null);
+ }
+
+ /** Represents a MethodDescriptorProto. */
+ class MethodDescriptorProto implements IMethodDescriptorProto {
+
+ /**
+ * Constructs a new MethodDescriptorProto.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IMethodDescriptorProto);
+
+ /** MethodDescriptorProto name. */
+ public name: string;
+
+ /** MethodDescriptorProto inputType. */
+ public inputType: string;
+
+ /** MethodDescriptorProto outputType. */
+ public outputType: string;
+
+ /** MethodDescriptorProto options. */
+ public options?: (google.protobuf.IMethodOptions|null);
+
+ /** MethodDescriptorProto clientStreaming. */
+ public clientStreaming: boolean;
+
+ /** MethodDescriptorProto serverStreaming. */
+ public serverStreaming: boolean;
+
+ /**
+ * Creates a new MethodDescriptorProto instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns MethodDescriptorProto instance
+ */
+ public static create(properties?: google.protobuf.IMethodDescriptorProto): google.protobuf.MethodDescriptorProto;
+
+ /**
+ * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages.
+ * @param message MethodDescriptorProto message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages.
+ * @param message MethodDescriptorProto message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a MethodDescriptorProto message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns MethodDescriptorProto
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodDescriptorProto;
+
+ /**
+ * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns MethodDescriptorProto
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodDescriptorProto;
+
+ /**
+ * Verifies a MethodDescriptorProto message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns MethodDescriptorProto
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.MethodDescriptorProto;
+
+ /**
+ * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified.
+ * @param message MethodDescriptorProto
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.MethodDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this MethodDescriptorProto to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for MethodDescriptorProto
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a FileOptions. */
+ interface IFileOptions {
+
+ /** FileOptions javaPackage */
+ javaPackage?: (string|null);
+
+ /** FileOptions javaOuterClassname */
+ javaOuterClassname?: (string|null);
+
+ /** FileOptions javaMultipleFiles */
+ javaMultipleFiles?: (boolean|null);
+
+ /** FileOptions javaGenerateEqualsAndHash */
+ javaGenerateEqualsAndHash?: (boolean|null);
+
+ /** FileOptions javaStringCheckUtf8 */
+ javaStringCheckUtf8?: (boolean|null);
+
+ /** FileOptions optimizeFor */
+ optimizeFor?: (google.protobuf.FileOptions.OptimizeMode|keyof typeof google.protobuf.FileOptions.OptimizeMode|null);
+
+ /** FileOptions goPackage */
+ goPackage?: (string|null);
+
+ /** FileOptions ccGenericServices */
+ ccGenericServices?: (boolean|null);
+
+ /** FileOptions javaGenericServices */
+ javaGenericServices?: (boolean|null);
+
+ /** FileOptions pyGenericServices */
+ pyGenericServices?: (boolean|null);
+
+ /** FileOptions deprecated */
+ deprecated?: (boolean|null);
+
+ /** FileOptions ccEnableArenas */
+ ccEnableArenas?: (boolean|null);
+
+ /** FileOptions objcClassPrefix */
+ objcClassPrefix?: (string|null);
+
+ /** FileOptions csharpNamespace */
+ csharpNamespace?: (string|null);
+
+ /** FileOptions swiftPrefix */
+ swiftPrefix?: (string|null);
+
+ /** FileOptions phpClassPrefix */
+ phpClassPrefix?: (string|null);
+
+ /** FileOptions phpNamespace */
+ phpNamespace?: (string|null);
+
+ /** FileOptions phpMetadataNamespace */
+ phpMetadataNamespace?: (string|null);
+
+ /** FileOptions rubyPackage */
+ rubyPackage?: (string|null);
+
+ /** FileOptions features */
+ features?: (google.protobuf.IFeatureSet|null);
+
+ /** FileOptions uninterpretedOption */
+ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
+ }
+
+ /** Represents a FileOptions. */
+ class FileOptions implements IFileOptions {
+
+ /**
+ * Constructs a new FileOptions.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IFileOptions);
+
+ /** FileOptions javaPackage. */
+ public javaPackage: string;
+
+ /** FileOptions javaOuterClassname. */
+ public javaOuterClassname: string;
+
+ /** FileOptions javaMultipleFiles. */
+ public javaMultipleFiles: boolean;
+
+ /** FileOptions javaGenerateEqualsAndHash. */
+ public javaGenerateEqualsAndHash: boolean;
+
+ /** FileOptions javaStringCheckUtf8. */
+ public javaStringCheckUtf8: boolean;
+
+ /** FileOptions optimizeFor. */
+ public optimizeFor: (google.protobuf.FileOptions.OptimizeMode|keyof typeof google.protobuf.FileOptions.OptimizeMode);
+
+ /** FileOptions goPackage. */
+ public goPackage: string;
+
+ /** FileOptions ccGenericServices. */
+ public ccGenericServices: boolean;
+
+ /** FileOptions javaGenericServices. */
+ public javaGenericServices: boolean;
+
+ /** FileOptions pyGenericServices. */
+ public pyGenericServices: boolean;
+
+ /** FileOptions deprecated. */
+ public deprecated: boolean;
+
+ /** FileOptions ccEnableArenas. */
+ public ccEnableArenas: boolean;
+
+ /** FileOptions objcClassPrefix. */
+ public objcClassPrefix: string;
+
+ /** FileOptions csharpNamespace. */
+ public csharpNamespace: string;
+
+ /** FileOptions swiftPrefix. */
+ public swiftPrefix: string;
+
+ /** FileOptions phpClassPrefix. */
+ public phpClassPrefix: string;
+
+ /** FileOptions phpNamespace. */
+ public phpNamespace: string;
+
+ /** FileOptions phpMetadataNamespace. */
+ public phpMetadataNamespace: string;
+
+ /** FileOptions rubyPackage. */
+ public rubyPackage: string;
+
+ /** FileOptions features. */
+ public features?: (google.protobuf.IFeatureSet|null);
+
+ /** FileOptions uninterpretedOption. */
+ public uninterpretedOption: google.protobuf.IUninterpretedOption[];
+
+ /**
+ * Creates a new FileOptions instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns FileOptions instance
+ */
+ public static create(properties?: google.protobuf.IFileOptions): google.protobuf.FileOptions;
+
+ /**
+ * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages.
+ * @param message FileOptions message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages.
+ * @param message FileOptions message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a FileOptions message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns FileOptions
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileOptions;
+
+ /**
+ * Decodes a FileOptions message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns FileOptions
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileOptions;
+
+ /**
+ * Verifies a FileOptions message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a FileOptions message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns FileOptions
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.FileOptions;
+
+ /**
+ * Creates a plain object from a FileOptions message. Also converts values to other types if specified.
+ * @param message FileOptions
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.FileOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this FileOptions to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for FileOptions
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace FileOptions {
+
+ /** OptimizeMode enum. */
+ enum OptimizeMode {
+ SPEED = 1,
+ CODE_SIZE = 2,
+ LITE_RUNTIME = 3
+ }
+ }
+
+ /** Properties of a MessageOptions. */
+ interface IMessageOptions {
+
+ /** MessageOptions messageSetWireFormat */
+ messageSetWireFormat?: (boolean|null);
+
+ /** MessageOptions noStandardDescriptorAccessor */
+ noStandardDescriptorAccessor?: (boolean|null);
+
+ /** MessageOptions deprecated */
+ deprecated?: (boolean|null);
+
+ /** MessageOptions mapEntry */
+ mapEntry?: (boolean|null);
+
+ /** MessageOptions deprecatedLegacyJsonFieldConflicts */
+ deprecatedLegacyJsonFieldConflicts?: (boolean|null);
+
+ /** MessageOptions features */
+ features?: (google.protobuf.IFeatureSet|null);
+
+ /** MessageOptions uninterpretedOption */
+ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
+ }
+
+ /** Represents a MessageOptions. */
+ class MessageOptions implements IMessageOptions {
+
+ /**
+ * Constructs a new MessageOptions.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IMessageOptions);
+
+ /** MessageOptions messageSetWireFormat. */
+ public messageSetWireFormat: boolean;
+
+ /** MessageOptions noStandardDescriptorAccessor. */
+ public noStandardDescriptorAccessor: boolean;
+
+ /** MessageOptions deprecated. */
+ public deprecated: boolean;
+
+ /** MessageOptions mapEntry. */
+ public mapEntry: boolean;
+
+ /** MessageOptions deprecatedLegacyJsonFieldConflicts. */
+ public deprecatedLegacyJsonFieldConflicts: boolean;
+
+ /** MessageOptions features. */
+ public features?: (google.protobuf.IFeatureSet|null);
+
+ /** MessageOptions uninterpretedOption. */
+ public uninterpretedOption: google.protobuf.IUninterpretedOption[];
+
+ /**
+ * Creates a new MessageOptions instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns MessageOptions instance
+ */
+ public static create(properties?: google.protobuf.IMessageOptions): google.protobuf.MessageOptions;
+
+ /**
+ * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages.
+ * @param message MessageOptions message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages.
+ * @param message MessageOptions message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a MessageOptions message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns MessageOptions
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MessageOptions;
+
+ /**
+ * Decodes a MessageOptions message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns MessageOptions
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MessageOptions;
+
+ /**
+ * Verifies a MessageOptions message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns MessageOptions
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.MessageOptions;
+
+ /**
+ * Creates a plain object from a MessageOptions message. Also converts values to other types if specified.
+ * @param message MessageOptions
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.MessageOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this MessageOptions to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for MessageOptions
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a FieldOptions. */
+ interface IFieldOptions {
+
+ /** FieldOptions ctype */
+ ctype?: (google.protobuf.FieldOptions.CType|keyof typeof google.protobuf.FieldOptions.CType|null);
+
+ /** FieldOptions packed */
+ packed?: (boolean|null);
+
+ /** FieldOptions jstype */
+ jstype?: (google.protobuf.FieldOptions.JSType|keyof typeof google.protobuf.FieldOptions.JSType|null);
+
+ /** FieldOptions lazy */
+ lazy?: (boolean|null);
+
+ /** FieldOptions unverifiedLazy */
+ unverifiedLazy?: (boolean|null);
+
+ /** FieldOptions deprecated */
+ deprecated?: (boolean|null);
+
+ /** FieldOptions weak */
+ weak?: (boolean|null);
+
+ /** FieldOptions debugRedact */
+ debugRedact?: (boolean|null);
+
+ /** FieldOptions retention */
+ retention?: (google.protobuf.FieldOptions.OptionRetention|keyof typeof google.protobuf.FieldOptions.OptionRetention|null);
+
+ /** FieldOptions targets */
+ targets?: (google.protobuf.FieldOptions.OptionTargetType[]|null);
+
+ /** FieldOptions editionDefaults */
+ editionDefaults?: (google.protobuf.FieldOptions.IEditionDefault[]|null);
+
+ /** FieldOptions features */
+ features?: (google.protobuf.IFeatureSet|null);
+
+ /** FieldOptions uninterpretedOption */
+ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
+
+ /** FieldOptions .google.api.fieldBehavior */
+ ".google.api.fieldBehavior"?: (google.api.FieldBehavior[]|null);
+ }
+
+ /** Represents a FieldOptions. */
+ class FieldOptions implements IFieldOptions {
+
+ /**
+ * Constructs a new FieldOptions.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IFieldOptions);
+
+ /** FieldOptions ctype. */
+ public ctype: (google.protobuf.FieldOptions.CType|keyof typeof google.protobuf.FieldOptions.CType);
+
+ /** FieldOptions packed. */
+ public packed: boolean;
+
+ /** FieldOptions jstype. */
+ public jstype: (google.protobuf.FieldOptions.JSType|keyof typeof google.protobuf.FieldOptions.JSType);
+
+ /** FieldOptions lazy. */
+ public lazy: boolean;
+
+ /** FieldOptions unverifiedLazy. */
+ public unverifiedLazy: boolean;
+
+ /** FieldOptions deprecated. */
+ public deprecated: boolean;
+
+ /** FieldOptions weak. */
+ public weak: boolean;
+
+ /** FieldOptions debugRedact. */
+ public debugRedact: boolean;
+
+ /** FieldOptions retention. */
+ public retention: (google.protobuf.FieldOptions.OptionRetention|keyof typeof google.protobuf.FieldOptions.OptionRetention);
+
+ /** FieldOptions targets. */
+ public targets: google.protobuf.FieldOptions.OptionTargetType[];
+
+ /** FieldOptions editionDefaults. */
+ public editionDefaults: google.protobuf.FieldOptions.IEditionDefault[];
+
+ /** FieldOptions features. */
+ public features?: (google.protobuf.IFeatureSet|null);
+
+ /** FieldOptions uninterpretedOption. */
+ public uninterpretedOption: google.protobuf.IUninterpretedOption[];
+
+ /**
+ * Creates a new FieldOptions instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns FieldOptions instance
+ */
+ public static create(properties?: google.protobuf.IFieldOptions): google.protobuf.FieldOptions;
+
+ /**
+ * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages.
+ * @param message FieldOptions message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages.
+ * @param message FieldOptions message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a FieldOptions message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns FieldOptions
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions;
+
+ /**
+ * Decodes a FieldOptions message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns FieldOptions
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions;
+
+ /**
+ * Verifies a FieldOptions message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns FieldOptions
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions;
+
+ /**
+ * Creates a plain object from a FieldOptions message. Also converts values to other types if specified.
+ * @param message FieldOptions
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.FieldOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this FieldOptions to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for FieldOptions
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace FieldOptions {
+
+ /** CType enum. */
+ enum CType {
+ STRING = 0,
+ CORD = 1,
+ STRING_PIECE = 2
+ }
+
+ /** JSType enum. */
+ enum JSType {
+ JS_NORMAL = 0,
+ JS_STRING = 1,
+ JS_NUMBER = 2
+ }
+
+ /** OptionRetention enum. */
+ enum OptionRetention {
+ RETENTION_UNKNOWN = 0,
+ RETENTION_RUNTIME = 1,
+ RETENTION_SOURCE = 2
+ }
+
+ /** OptionTargetType enum. */
+ enum OptionTargetType {
+ TARGET_TYPE_UNKNOWN = 0,
+ TARGET_TYPE_FILE = 1,
+ TARGET_TYPE_EXTENSION_RANGE = 2,
+ TARGET_TYPE_MESSAGE = 3,
+ TARGET_TYPE_FIELD = 4,
+ TARGET_TYPE_ONEOF = 5,
+ TARGET_TYPE_ENUM = 6,
+ TARGET_TYPE_ENUM_ENTRY = 7,
+ TARGET_TYPE_SERVICE = 8,
+ TARGET_TYPE_METHOD = 9
+ }
+
+ /** Properties of an EditionDefault. */
+ interface IEditionDefault {
+
+ /** EditionDefault edition */
+ edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+
+ /** EditionDefault value */
+ value?: (string|null);
+ }
+
+ /** Represents an EditionDefault. */
+ class EditionDefault implements IEditionDefault {
+
+ /**
+ * Constructs a new EditionDefault.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.FieldOptions.IEditionDefault);
+
+ /** EditionDefault edition. */
+ public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+ /** EditionDefault value. */
+ public value: string;
+
+ /**
+ * Creates a new EditionDefault instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns EditionDefault instance
+ */
+ public static create(properties?: google.protobuf.FieldOptions.IEditionDefault): google.protobuf.FieldOptions.EditionDefault;
+
+ /**
+ * Encodes the specified EditionDefault message. Does not implicitly {@link google.protobuf.FieldOptions.EditionDefault.verify|verify} messages.
+ * @param message EditionDefault message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.FieldOptions.IEditionDefault, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified EditionDefault message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.EditionDefault.verify|verify} messages.
+ * @param message EditionDefault message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.FieldOptions.IEditionDefault, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an EditionDefault message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns EditionDefault
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions.EditionDefault;
+
+ /**
+ * Decodes an EditionDefault message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns EditionDefault
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions.EditionDefault;
+
+ /**
+ * Verifies an EditionDefault message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an EditionDefault message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns EditionDefault
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions.EditionDefault;
+
+ /**
+ * Creates a plain object from an EditionDefault message. Also converts values to other types if specified.
+ * @param message EditionDefault
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.FieldOptions.EditionDefault, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this EditionDefault to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for EditionDefault
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+
+ /** Properties of an OneofOptions. */
+ interface IOneofOptions {
+
+ /** OneofOptions features */
+ features?: (google.protobuf.IFeatureSet|null);
+
+ /** OneofOptions uninterpretedOption */
+ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
+ }
+
+ /** Represents an OneofOptions. */
+ class OneofOptions implements IOneofOptions {
+
+ /**
+ * Constructs a new OneofOptions.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IOneofOptions);
+
+ /** OneofOptions features. */
+ public features?: (google.protobuf.IFeatureSet|null);
+
+ /** OneofOptions uninterpretedOption. */
+ public uninterpretedOption: google.protobuf.IUninterpretedOption[];
+
+ /**
+ * Creates a new OneofOptions instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns OneofOptions instance
+ */
+ public static create(properties?: google.protobuf.IOneofOptions): google.protobuf.OneofOptions;
+
+ /**
+ * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages.
+ * @param message OneofOptions message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages.
+ * @param message OneofOptions message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an OneofOptions message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns OneofOptions
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofOptions;
+
+ /**
+ * Decodes an OneofOptions message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns OneofOptions
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofOptions;
+
+ /**
+ * Verifies an OneofOptions message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns OneofOptions
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.OneofOptions;
+
+ /**
+ * Creates a plain object from an OneofOptions message. Also converts values to other types if specified.
+ * @param message OneofOptions
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.OneofOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this OneofOptions to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for OneofOptions
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an EnumOptions. */
+ interface IEnumOptions {
+
+ /** EnumOptions allowAlias */
+ allowAlias?: (boolean|null);
+
+ /** EnumOptions deprecated */
+ deprecated?: (boolean|null);
+
+ /** EnumOptions deprecatedLegacyJsonFieldConflicts */
+ deprecatedLegacyJsonFieldConflicts?: (boolean|null);
+
+ /** EnumOptions features */
+ features?: (google.protobuf.IFeatureSet|null);
+
+ /** EnumOptions uninterpretedOption */
+ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
+ }
+
+ /** Represents an EnumOptions. */
+ class EnumOptions implements IEnumOptions {
+
+ /**
+ * Constructs a new EnumOptions.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IEnumOptions);
+
+ /** EnumOptions allowAlias. */
+ public allowAlias: boolean;
+
+ /** EnumOptions deprecated. */
+ public deprecated: boolean;
+
+ /** EnumOptions deprecatedLegacyJsonFieldConflicts. */
+ public deprecatedLegacyJsonFieldConflicts: boolean;
+
+ /** EnumOptions features. */
+ public features?: (google.protobuf.IFeatureSet|null);
+
+ /** EnumOptions uninterpretedOption. */
+ public uninterpretedOption: google.protobuf.IUninterpretedOption[];
+
+ /**
+ * Creates a new EnumOptions instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns EnumOptions instance
+ */
+ public static create(properties?: google.protobuf.IEnumOptions): google.protobuf.EnumOptions;
+
+ /**
+ * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages.
+ * @param message EnumOptions message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages.
+ * @param message EnumOptions message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an EnumOptions message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns EnumOptions
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumOptions;
+
+ /**
+ * Decodes an EnumOptions message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns EnumOptions
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumOptions;
+
+ /**
+ * Verifies an EnumOptions message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns EnumOptions
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.EnumOptions;
+
+ /**
+ * Creates a plain object from an EnumOptions message. Also converts values to other types if specified.
+ * @param message EnumOptions
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.EnumOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this EnumOptions to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for EnumOptions
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an EnumValueOptions. */
+ interface IEnumValueOptions {
+
+ /** EnumValueOptions deprecated */
+ deprecated?: (boolean|null);
+
+ /** EnumValueOptions features */
+ features?: (google.protobuf.IFeatureSet|null);
+
+ /** EnumValueOptions debugRedact */
+ debugRedact?: (boolean|null);
+
+ /** EnumValueOptions uninterpretedOption */
+ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
+ }
+
+ /** Represents an EnumValueOptions. */
+ class EnumValueOptions implements IEnumValueOptions {
+
+ /**
+ * Constructs a new EnumValueOptions.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IEnumValueOptions);
+
+ /** EnumValueOptions deprecated. */
+ public deprecated: boolean;
+
+ /** EnumValueOptions features. */
+ public features?: (google.protobuf.IFeatureSet|null);
+
+ /** EnumValueOptions debugRedact. */
+ public debugRedact: boolean;
+
+ /** EnumValueOptions uninterpretedOption. */
+ public uninterpretedOption: google.protobuf.IUninterpretedOption[];
+
+ /**
+ * Creates a new EnumValueOptions instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns EnumValueOptions instance
+ */
+ public static create(properties?: google.protobuf.IEnumValueOptions): google.protobuf.EnumValueOptions;
+
+ /**
+ * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages.
+ * @param message EnumValueOptions message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages.
+ * @param message EnumValueOptions message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an EnumValueOptions message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns EnumValueOptions
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueOptions;
+
+ /**
+ * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns EnumValueOptions
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueOptions;
+
+ /**
+ * Verifies an EnumValueOptions message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns EnumValueOptions
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueOptions;
+
+ /**
+ * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified.
+ * @param message EnumValueOptions
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.EnumValueOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this EnumValueOptions to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for EnumValueOptions
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a ServiceOptions. */
+ interface IServiceOptions {
+
+ /** ServiceOptions features */
+ features?: (google.protobuf.IFeatureSet|null);
+
+ /** ServiceOptions deprecated */
+ deprecated?: (boolean|null);
+
+ /** ServiceOptions uninterpretedOption */
+ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
+
+ /** ServiceOptions .google.api.defaultHost */
+ ".google.api.defaultHost"?: (string|null);
+
+ /** ServiceOptions .google.api.oauthScopes */
+ ".google.api.oauthScopes"?: (string|null);
+
+ /** ServiceOptions .google.api.apiVersion */
+ ".google.api.apiVersion"?: (string|null);
+ }
+
+ /** Represents a ServiceOptions. */
+ class ServiceOptions implements IServiceOptions {
+
+ /**
+ * Constructs a new ServiceOptions.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IServiceOptions);
+
+ /** ServiceOptions features. */
+ public features?: (google.protobuf.IFeatureSet|null);
+
+ /** ServiceOptions deprecated. */
+ public deprecated: boolean;
+
+ /** ServiceOptions uninterpretedOption. */
+ public uninterpretedOption: google.protobuf.IUninterpretedOption[];
+
+ /**
+ * Creates a new ServiceOptions instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ServiceOptions instance
+ */
+ public static create(properties?: google.protobuf.IServiceOptions): google.protobuf.ServiceOptions;
+
+ /**
+ * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages.
+ * @param message ServiceOptions message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages.
+ * @param message ServiceOptions message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a ServiceOptions message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ServiceOptions
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceOptions;
+
+ /**
+ * Decodes a ServiceOptions message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ServiceOptions
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceOptions;
+
+ /**
+ * Verifies a ServiceOptions message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ServiceOptions
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceOptions;
+
+ /**
+ * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified.
+ * @param message ServiceOptions
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.ServiceOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ServiceOptions to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ServiceOptions
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a MethodOptions. */
+ interface IMethodOptions {
+
+ /** MethodOptions deprecated */
+ deprecated?: (boolean|null);
+
+ /** MethodOptions idempotencyLevel */
+ idempotencyLevel?: (google.protobuf.MethodOptions.IdempotencyLevel|keyof typeof google.protobuf.MethodOptions.IdempotencyLevel|null);
+
+ /** MethodOptions features */
+ features?: (google.protobuf.IFeatureSet|null);
+
+ /** MethodOptions uninterpretedOption */
+ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
+
+ /** MethodOptions .google.api.http */
+ ".google.api.http"?: (google.api.IHttpRule|null);
+
+ /** MethodOptions .google.api.methodSignature */
+ ".google.api.methodSignature"?: (string[]|null);
+
+ /** MethodOptions .google.longrunning.operationInfo */
+ ".google.longrunning.operationInfo"?: (google.longrunning.IOperationInfo|null);
+ }
+
+ /** Represents a MethodOptions. */
+ class MethodOptions implements IMethodOptions {
+
+ /**
+ * Constructs a new MethodOptions.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IMethodOptions);
+
+ /** MethodOptions deprecated. */
+ public deprecated: boolean;
+
+ /** MethodOptions idempotencyLevel. */
+ public idempotencyLevel: (google.protobuf.MethodOptions.IdempotencyLevel|keyof typeof google.protobuf.MethodOptions.IdempotencyLevel);
+
+ /** MethodOptions features. */
+ public features?: (google.protobuf.IFeatureSet|null);
+
+ /** MethodOptions uninterpretedOption. */
+ public uninterpretedOption: google.protobuf.IUninterpretedOption[];
+
+ /**
+ * Creates a new MethodOptions instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns MethodOptions instance
+ */
+ public static create(properties?: google.protobuf.IMethodOptions): google.protobuf.MethodOptions;
+
+ /**
+ * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages.
+ * @param message MethodOptions message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages.
+ * @param message MethodOptions message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a MethodOptions message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns MethodOptions
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodOptions;
+
+ /**
+ * Decodes a MethodOptions message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns MethodOptions
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodOptions;
+
+ /**
+ * Verifies a MethodOptions message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns MethodOptions
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.MethodOptions;
+
+ /**
+ * Creates a plain object from a MethodOptions message. Also converts values to other types if specified.
+ * @param message MethodOptions
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.MethodOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this MethodOptions to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for MethodOptions
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace MethodOptions {
+
+ /** IdempotencyLevel enum. */
+ enum IdempotencyLevel {
+ IDEMPOTENCY_UNKNOWN = 0,
+ NO_SIDE_EFFECTS = 1,
+ IDEMPOTENT = 2
+ }
+ }
+
+ /** Properties of an UninterpretedOption. */
+ interface IUninterpretedOption {
+
+ /** UninterpretedOption name */
+ name?: (google.protobuf.UninterpretedOption.INamePart[]|null);
+
+ /** UninterpretedOption identifierValue */
+ identifierValue?: (string|null);
+
+ /** UninterpretedOption positiveIntValue */
+ positiveIntValue?: (number|Long|string|null);
+
+ /** UninterpretedOption negativeIntValue */
+ negativeIntValue?: (number|Long|string|null);
+
+ /** UninterpretedOption doubleValue */
+ doubleValue?: (number|null);
+
+ /** UninterpretedOption stringValue */
+ stringValue?: (Uint8Array|Buffer|string|null);
+
+ /** UninterpretedOption aggregateValue */
+ aggregateValue?: (string|null);
+ }
+
+ /** Represents an UninterpretedOption. */
+ class UninterpretedOption implements IUninterpretedOption {
+
+ /**
+ * Constructs a new UninterpretedOption.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IUninterpretedOption);
+
+ /** UninterpretedOption name. */
+ public name: google.protobuf.UninterpretedOption.INamePart[];
+
+ /** UninterpretedOption identifierValue. */
+ public identifierValue: string;
+
+ /** UninterpretedOption positiveIntValue. */
+ public positiveIntValue: (number|Long|string);
+
+ /** UninterpretedOption negativeIntValue. */
+ public negativeIntValue: (number|Long|string);
+
+ /** UninterpretedOption doubleValue. */
+ public doubleValue: number;
+
+ /** UninterpretedOption stringValue. */
+ public stringValue: (Uint8Array|Buffer|string);
+
+ /** UninterpretedOption aggregateValue. */
+ public aggregateValue: string;
+
+ /**
+ * Creates a new UninterpretedOption instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns UninterpretedOption instance
+ */
+ public static create(properties?: google.protobuf.IUninterpretedOption): google.protobuf.UninterpretedOption;
+
+ /**
+ * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages.
+ * @param message UninterpretedOption message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages.
+ * @param message UninterpretedOption message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an UninterpretedOption message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns UninterpretedOption
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption;
+
+ /**
+ * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns UninterpretedOption
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption;
+
+ /**
+ * Verifies an UninterpretedOption message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns UninterpretedOption
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption;
+
+ /**
+ * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified.
+ * @param message UninterpretedOption
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.UninterpretedOption, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this UninterpretedOption to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for UninterpretedOption
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace UninterpretedOption {
+
+ /** Properties of a NamePart. */
+ interface INamePart {
+
+ /** NamePart namePart */
+ namePart: string;
+
+ /** NamePart isExtension */
+ isExtension: boolean;
+ }
+
+ /** Represents a NamePart. */
+ class NamePart implements INamePart {
+
+ /**
+ * Constructs a new NamePart.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.UninterpretedOption.INamePart);
+
+ /** NamePart namePart. */
+ public namePart: string;
+
+ /** NamePart isExtension. */
+ public isExtension: boolean;
+
+ /**
+ * Creates a new NamePart instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns NamePart instance
+ */
+ public static create(properties?: google.protobuf.UninterpretedOption.INamePart): google.protobuf.UninterpretedOption.NamePart;
+
+ /**
+ * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages.
+ * @param message NamePart message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages.
+ * @param message NamePart message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a NamePart message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns NamePart
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption.NamePart;
+
+ /**
+ * Decodes a NamePart message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns NamePart
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption.NamePart;
+
+ /**
+ * Verifies a NamePart message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a NamePart message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns NamePart
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption.NamePart;
+
+ /**
+ * Creates a plain object from a NamePart message. Also converts values to other types if specified.
+ * @param message NamePart
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.UninterpretedOption.NamePart, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this NamePart to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for NamePart
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+
+ /** Properties of a FeatureSet. */
+ interface IFeatureSet {
+
+ /** FeatureSet fieldPresence */
+ fieldPresence?: (google.protobuf.FeatureSet.FieldPresence|keyof typeof google.protobuf.FeatureSet.FieldPresence|null);
+
+ /** FeatureSet enumType */
+ enumType?: (google.protobuf.FeatureSet.EnumType|keyof typeof google.protobuf.FeatureSet.EnumType|null);
+
+ /** FeatureSet repeatedFieldEncoding */
+ repeatedFieldEncoding?: (google.protobuf.FeatureSet.RepeatedFieldEncoding|keyof typeof google.protobuf.FeatureSet.RepeatedFieldEncoding|null);
+
+ /** FeatureSet utf8Validation */
+ utf8Validation?: (google.protobuf.FeatureSet.Utf8Validation|keyof typeof google.protobuf.FeatureSet.Utf8Validation|null);
+
+ /** FeatureSet messageEncoding */
+ messageEncoding?: (google.protobuf.FeatureSet.MessageEncoding|keyof typeof google.protobuf.FeatureSet.MessageEncoding|null);
+
+ /** FeatureSet jsonFormat */
+ jsonFormat?: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat|null);
+ }
+
+ /** Represents a FeatureSet. */
+ class FeatureSet implements IFeatureSet {
+
+ /**
+ * Constructs a new FeatureSet.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IFeatureSet);
+
+ /** FeatureSet fieldPresence. */
+ public fieldPresence: (google.protobuf.FeatureSet.FieldPresence|keyof typeof google.protobuf.FeatureSet.FieldPresence);
+
+ /** FeatureSet enumType. */
+ public enumType: (google.protobuf.FeatureSet.EnumType|keyof typeof google.protobuf.FeatureSet.EnumType);
+
+ /** FeatureSet repeatedFieldEncoding. */
+ public repeatedFieldEncoding: (google.protobuf.FeatureSet.RepeatedFieldEncoding|keyof typeof google.protobuf.FeatureSet.RepeatedFieldEncoding);
+
+ /** FeatureSet utf8Validation. */
+ public utf8Validation: (google.protobuf.FeatureSet.Utf8Validation|keyof typeof google.protobuf.FeatureSet.Utf8Validation);
+
+ /** FeatureSet messageEncoding. */
+ public messageEncoding: (google.protobuf.FeatureSet.MessageEncoding|keyof typeof google.protobuf.FeatureSet.MessageEncoding);
+
+ /** FeatureSet jsonFormat. */
+ public jsonFormat: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat);
+
+ /**
+ * Creates a new FeatureSet instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns FeatureSet instance
+ */
+ public static create(properties?: google.protobuf.IFeatureSet): google.protobuf.FeatureSet;
+
+ /**
+ * Encodes the specified FeatureSet message. Does not implicitly {@link google.protobuf.FeatureSet.verify|verify} messages.
+ * @param message FeatureSet message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IFeatureSet, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified FeatureSet message, length delimited. Does not implicitly {@link google.protobuf.FeatureSet.verify|verify} messages.
+ * @param message FeatureSet message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IFeatureSet, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a FeatureSet message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns FeatureSet
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSet;
+
+ /**
+ * Decodes a FeatureSet message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns FeatureSet
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSet;
+
+ /**
+ * Verifies a FeatureSet message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a FeatureSet message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns FeatureSet
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.FeatureSet;
+
+ /**
+ * Creates a plain object from a FeatureSet message. Also converts values to other types if specified.
+ * @param message FeatureSet
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.FeatureSet, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this FeatureSet to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for FeatureSet
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace FeatureSet {
+
+ /** FieldPresence enum. */
+ enum FieldPresence {
+ FIELD_PRESENCE_UNKNOWN = 0,
+ EXPLICIT = 1,
+ IMPLICIT = 2,
+ LEGACY_REQUIRED = 3
+ }
+
+ /** EnumType enum. */
+ enum EnumType {
+ ENUM_TYPE_UNKNOWN = 0,
+ OPEN = 1,
+ CLOSED = 2
+ }
+
+ /** RepeatedFieldEncoding enum. */
+ enum RepeatedFieldEncoding {
+ REPEATED_FIELD_ENCODING_UNKNOWN = 0,
+ PACKED = 1,
+ EXPANDED = 2
+ }
+
+ /** Utf8Validation enum. */
+ enum Utf8Validation {
+ UTF8_VALIDATION_UNKNOWN = 0,
+ VERIFY = 2,
+ NONE = 3
+ }
+
+ /** MessageEncoding enum. */
+ enum MessageEncoding {
+ MESSAGE_ENCODING_UNKNOWN = 0,
+ LENGTH_PREFIXED = 1,
+ DELIMITED = 2
+ }
+
+ /** JsonFormat enum. */
+ enum JsonFormat {
+ JSON_FORMAT_UNKNOWN = 0,
+ ALLOW = 1,
+ LEGACY_BEST_EFFORT = 2
+ }
+ }
+
+ /** Properties of a FeatureSetDefaults. */
+ interface IFeatureSetDefaults {
+
+ /** FeatureSetDefaults defaults */
+ defaults?: (google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault[]|null);
+
+ /** FeatureSetDefaults minimumEdition */
+ minimumEdition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+
+ /** FeatureSetDefaults maximumEdition */
+ maximumEdition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+ }
+
+ /** Represents a FeatureSetDefaults. */
+ class FeatureSetDefaults implements IFeatureSetDefaults {
+
+ /**
+ * Constructs a new FeatureSetDefaults.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IFeatureSetDefaults);
+
+ /** FeatureSetDefaults defaults. */
+ public defaults: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault[];
+
+ /** FeatureSetDefaults minimumEdition. */
+ public minimumEdition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+ /** FeatureSetDefaults maximumEdition. */
+ public maximumEdition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+ /**
+ * Creates a new FeatureSetDefaults instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns FeatureSetDefaults instance
+ */
+ public static create(properties?: google.protobuf.IFeatureSetDefaults): google.protobuf.FeatureSetDefaults;
+
+ /**
+ * Encodes the specified FeatureSetDefaults message. Does not implicitly {@link google.protobuf.FeatureSetDefaults.verify|verify} messages.
+ * @param message FeatureSetDefaults message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IFeatureSetDefaults, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified FeatureSetDefaults message, length delimited. Does not implicitly {@link google.protobuf.FeatureSetDefaults.verify|verify} messages.
+ * @param message FeatureSetDefaults message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IFeatureSetDefaults, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a FeatureSetDefaults message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns FeatureSetDefaults
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSetDefaults;
+
+ /**
+ * Decodes a FeatureSetDefaults message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns FeatureSetDefaults
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSetDefaults;
+
+ /**
+ * Verifies a FeatureSetDefaults message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a FeatureSetDefaults message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns FeatureSetDefaults
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.FeatureSetDefaults;
+
+ /**
+ * Creates a plain object from a FeatureSetDefaults message. Also converts values to other types if specified.
+ * @param message FeatureSetDefaults
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.FeatureSetDefaults, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this FeatureSetDefaults to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for FeatureSetDefaults
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace FeatureSetDefaults {
+
+ /** Properties of a FeatureSetEditionDefault. */
+ interface IFeatureSetEditionDefault {
+
+ /** FeatureSetEditionDefault edition */
+ edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+
+ /** FeatureSetEditionDefault features */
+ features?: (google.protobuf.IFeatureSet|null);
+ }
+
+ /** Represents a FeatureSetEditionDefault. */
+ class FeatureSetEditionDefault implements IFeatureSetEditionDefault {
+
+ /**
+ * Constructs a new FeatureSetEditionDefault.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault);
+
+ /** FeatureSetEditionDefault edition. */
+ public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+ /** FeatureSetEditionDefault features. */
+ public features?: (google.protobuf.IFeatureSet|null);
+
+ /**
+ * Creates a new FeatureSetEditionDefault instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns FeatureSetEditionDefault instance
+ */
+ public static create(properties?: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault;
+
+ /**
+ * Encodes the specified FeatureSetEditionDefault message. Does not implicitly {@link google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify|verify} messages.
+ * @param message FeatureSetEditionDefault message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified FeatureSetEditionDefault message, length delimited. Does not implicitly {@link google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify|verify} messages.
+ * @param message FeatureSetEditionDefault message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a FeatureSetEditionDefault message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns FeatureSetEditionDefault
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault;
+
+ /**
+ * Decodes a FeatureSetEditionDefault message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns FeatureSetEditionDefault
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault;
+
+ /**
+ * Verifies a FeatureSetEditionDefault message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a FeatureSetEditionDefault message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns FeatureSetEditionDefault
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault;
+
+ /**
+ * Creates a plain object from a FeatureSetEditionDefault message. Also converts values to other types if specified.
+ * @param message FeatureSetEditionDefault
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this FeatureSetEditionDefault to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for FeatureSetEditionDefault
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+
+ /** Properties of a SourceCodeInfo. */
+ interface ISourceCodeInfo {
+
+ /** SourceCodeInfo location */
+ location?: (google.protobuf.SourceCodeInfo.ILocation[]|null);
+ }
+
+ /** Represents a SourceCodeInfo. */
+ class SourceCodeInfo implements ISourceCodeInfo {
+
+ /**
+ * Constructs a new SourceCodeInfo.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.ISourceCodeInfo);
+
+ /** SourceCodeInfo location. */
+ public location: google.protobuf.SourceCodeInfo.ILocation[];
+
+ /**
+ * Creates a new SourceCodeInfo instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns SourceCodeInfo instance
+ */
+ public static create(properties?: google.protobuf.ISourceCodeInfo): google.protobuf.SourceCodeInfo;
+
+ /**
+ * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages.
+ * @param message SourceCodeInfo message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages.
+ * @param message SourceCodeInfo message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a SourceCodeInfo message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns SourceCodeInfo
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo;
+
+ /**
+ * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns SourceCodeInfo
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo;
+
+ /**
+ * Verifies a SourceCodeInfo message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns SourceCodeInfo
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo;
+
+ /**
+ * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified.
+ * @param message SourceCodeInfo
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.SourceCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this SourceCodeInfo to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for SourceCodeInfo
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace SourceCodeInfo {
+
+ /** Properties of a Location. */
+ interface ILocation {
+
+ /** Location path */
+ path?: (number[]|null);
+
+ /** Location span */
+ span?: (number[]|null);
+
+ /** Location leadingComments */
+ leadingComments?: (string|null);
+
+ /** Location trailingComments */
+ trailingComments?: (string|null);
+
+ /** Location leadingDetachedComments */
+ leadingDetachedComments?: (string[]|null);
+ }
+
+ /** Represents a Location. */
+ class Location implements ILocation {
+
+ /**
+ * Constructs a new Location.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.SourceCodeInfo.ILocation);
+
+ /** Location path. */
+ public path: number[];
+
+ /** Location span. */
+ public span: number[];
+
+ /** Location leadingComments. */
+ public leadingComments: string;
+
+ /** Location trailingComments. */
+ public trailingComments: string;
+
+ /** Location leadingDetachedComments. */
+ public leadingDetachedComments: string[];
+
+ /**
+ * Creates a new Location instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Location instance
+ */
+ public static create(properties?: google.protobuf.SourceCodeInfo.ILocation): google.protobuf.SourceCodeInfo.Location;
+
+ /**
+ * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages.
+ * @param message Location message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages.
+ * @param message Location message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a Location message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Location
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo.Location;
+
+ /**
+ * Decodes a Location message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Location
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo.Location;
+
+ /**
+ * Verifies a Location message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a Location message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Location
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo.Location;
+
+ /**
+ * Creates a plain object from a Location message. Also converts values to other types if specified.
+ * @param message Location
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.SourceCodeInfo.Location, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Location to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Location
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+
+ /** Properties of a GeneratedCodeInfo. */
+ interface IGeneratedCodeInfo {
+
+ /** GeneratedCodeInfo annotation */
+ annotation?: (google.protobuf.GeneratedCodeInfo.IAnnotation[]|null);
+ }
+
+ /** Represents a GeneratedCodeInfo. */
+ class GeneratedCodeInfo implements IGeneratedCodeInfo {
+
+ /**
+ * Constructs a new GeneratedCodeInfo.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IGeneratedCodeInfo);
+
+ /** GeneratedCodeInfo annotation. */
+ public annotation: google.protobuf.GeneratedCodeInfo.IAnnotation[];
+
+ /**
+ * Creates a new GeneratedCodeInfo instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns GeneratedCodeInfo instance
+ */
+ public static create(properties?: google.protobuf.IGeneratedCodeInfo): google.protobuf.GeneratedCodeInfo;
+
+ /**
+ * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages.
+ * @param message GeneratedCodeInfo message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages.
+ * @param message GeneratedCodeInfo message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a GeneratedCodeInfo message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns GeneratedCodeInfo
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo;
+
+ /**
+ * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns GeneratedCodeInfo
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo;
+
+ /**
+ * Verifies a GeneratedCodeInfo message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns GeneratedCodeInfo
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo;
+
+ /**
+ * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified.
+ * @param message GeneratedCodeInfo
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.GeneratedCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this GeneratedCodeInfo to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for GeneratedCodeInfo
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace GeneratedCodeInfo {
+
+ /** Properties of an Annotation. */
+ interface IAnnotation {
+
+ /** Annotation path */
+ path?: (number[]|null);
+
+ /** Annotation sourceFile */
+ sourceFile?: (string|null);
+
+ /** Annotation begin */
+ begin?: (number|null);
+
+ /** Annotation end */
+ end?: (number|null);
+
+ /** Annotation semantic */
+ semantic?: (google.protobuf.GeneratedCodeInfo.Annotation.Semantic|keyof typeof google.protobuf.GeneratedCodeInfo.Annotation.Semantic|null);
+ }
+
+ /** Represents an Annotation. */
+ class Annotation implements IAnnotation {
+
+ /**
+ * Constructs a new Annotation.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation);
+
+ /** Annotation path. */
+ public path: number[];
+
+ /** Annotation sourceFile. */
+ public sourceFile: string;
+
+ /** Annotation begin. */
+ public begin: number;
+
+ /** Annotation end. */
+ public end: number;
+
+ /** Annotation semantic. */
+ public semantic: (google.protobuf.GeneratedCodeInfo.Annotation.Semantic|keyof typeof google.protobuf.GeneratedCodeInfo.Annotation.Semantic);
+
+ /**
+ * Creates a new Annotation instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Annotation instance
+ */
+ public static create(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation): google.protobuf.GeneratedCodeInfo.Annotation;
+
+ /**
+ * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages.
+ * @param message Annotation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages.
+ * @param message Annotation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an Annotation message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Annotation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo.Annotation;
+
+ /**
+ * Decodes an Annotation message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Annotation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo.Annotation;
+
+ /**
+ * Verifies an Annotation message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an Annotation message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Annotation
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo.Annotation;
+
+ /**
+ * Creates a plain object from an Annotation message. Also converts values to other types if specified.
+ * @param message Annotation
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.GeneratedCodeInfo.Annotation, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Annotation to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Annotation
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace Annotation {
+
+ /** Semantic enum. */
+ enum Semantic {
+ NONE = 0,
+ SET = 1,
+ ALIAS = 2
+ }
+ }
+ }
+
+ /** Properties of a Duration. */
+ interface IDuration {
+
+ /** Duration seconds */
+ seconds?: (number|Long|string|null);
+
+ /** Duration nanos */
+ nanos?: (number|null);
+ }
+
+ /** Represents a Duration. */
+ class Duration implements IDuration {
+
+ /**
+ * Constructs a new Duration.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IDuration);
+
+ /** Duration seconds. */
+ public seconds: (number|Long|string);
+
+ /** Duration nanos. */
+ public nanos: number;
+
+ /**
+ * Creates a new Duration instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Duration instance
+ */
+ public static create(properties?: google.protobuf.IDuration): google.protobuf.Duration;
+
+ /**
+ * Encodes the specified Duration message. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages.
+ * @param message Duration message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IDuration, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Duration message, length delimited. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages.
+ * @param message Duration message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IDuration, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a Duration message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Duration
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Duration;
+
+ /**
+ * Decodes a Duration message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Duration
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Duration;
+
+ /**
+ * Verifies a Duration message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a Duration message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Duration
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.Duration;
+
+ /**
+ * Creates a plain object from a Duration message. Also converts values to other types if specified.
+ * @param message Duration
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.Duration, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Duration to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Duration
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an Any. */
+ interface IAny {
+
+ /** Any type_url */
+ type_url?: (string|null);
+
+ /** Any value */
+ value?: (Uint8Array|Buffer|string|null);
+ }
+
+ /** Represents an Any. */
+ class Any implements IAny {
+
+ /**
+ * Constructs a new Any.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IAny);
+
+ /** Any type_url. */
+ public type_url: string;
+
+ /** Any value. */
+ public value: (Uint8Array|Buffer|string);
+
+ /**
+ * Creates a new Any instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Any instance
+ */
+ public static create(properties?: google.protobuf.IAny): google.protobuf.Any;
+
+ /**
+ * Encodes the specified Any message. Does not implicitly {@link google.protobuf.Any.verify|verify} messages.
+ * @param message Any message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IAny, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Any message, length delimited. Does not implicitly {@link google.protobuf.Any.verify|verify} messages.
+ * @param message Any message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IAny, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an Any message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Any
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Any;
+
+ /**
+ * Decodes an Any message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Any
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Any;
+
+ /**
+ * Verifies an Any message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an Any message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Any
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.Any;
+
+ /**
+ * Creates a plain object from an Any message. Also converts values to other types if specified.
+ * @param message Any
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.Any, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Any to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Any
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an Empty. */
+ interface IEmpty {
+ }
+
+ /** Represents an Empty. */
+ class Empty implements IEmpty {
+
+ /**
+ * Constructs a new Empty.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IEmpty);
+
+ /**
+ * Creates a new Empty instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Empty instance
+ */
+ public static create(properties?: google.protobuf.IEmpty): google.protobuf.Empty;
+
+ /**
+ * Encodes the specified Empty message. Does not implicitly {@link google.protobuf.Empty.verify|verify} messages.
+ * @param message Empty message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IEmpty, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Empty message, length delimited. Does not implicitly {@link google.protobuf.Empty.verify|verify} messages.
+ * @param message Empty message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IEmpty, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an Empty message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Empty
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Empty;
+
+ /**
+ * Decodes an Empty message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Empty
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Empty;
+
+ /**
+ * Verifies an Empty message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an Empty message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Empty
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.Empty;
+
+ /**
+ * Creates a plain object from an Empty message. Also converts values to other types if specified.
+ * @param message Empty
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.Empty, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Empty to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Empty
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a Timestamp. */
+ interface ITimestamp {
+
+ /** Timestamp seconds */
+ seconds?: (number|Long|string|null);
+
+ /** Timestamp nanos */
+ nanos?: (number|null);
+ }
+
+ /** Represents a Timestamp. */
+ class Timestamp implements ITimestamp {
+
+ /**
+ * Constructs a new Timestamp.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.ITimestamp);
+
+ /** Timestamp seconds. */
+ public seconds: (number|Long|string);
+
+ /** Timestamp nanos. */
+ public nanos: number;
+
+ /**
+ * Creates a new Timestamp instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Timestamp instance
+ */
+ public static create(properties?: google.protobuf.ITimestamp): google.protobuf.Timestamp;
+
+ /**
+ * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages.
+ * @param message Timestamp message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages.
+ * @param message Timestamp message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a Timestamp message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Timestamp
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Timestamp;
+
+ /**
+ * Decodes a Timestamp message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Timestamp
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Timestamp;
+
+ /**
+ * Verifies a Timestamp message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a Timestamp message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Timestamp
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.Timestamp;
+
+ /**
+ * Creates a plain object from a Timestamp message. Also converts values to other types if specified.
+ * @param message Timestamp
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.Timestamp, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Timestamp to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Timestamp
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a Struct. */
+ interface IStruct {
+
+ /** Struct fields */
+ fields?: ({ [k: string]: google.protobuf.IValue }|null);
+ }
+
+ /** Represents a Struct. */
+ class Struct implements IStruct {
+
+ /**
+ * Constructs a new Struct.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IStruct);
+
+ /** Struct fields. */
+ public fields: { [k: string]: google.protobuf.IValue };
+
+ /**
+ * Creates a new Struct instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Struct instance
+ */
+ public static create(properties?: google.protobuf.IStruct): google.protobuf.Struct;
+
+ /**
+ * Encodes the specified Struct message. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages.
+ * @param message Struct message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IStruct, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Struct message, length delimited. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages.
+ * @param message Struct message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IStruct, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a Struct message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Struct
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Struct;
+
+ /**
+ * Decodes a Struct message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Struct
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Struct;
+
+ /**
+ * Verifies a Struct message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a Struct message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Struct
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.Struct;
+
+ /**
+ * Creates a plain object from a Struct message. Also converts values to other types if specified.
+ * @param message Struct
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.Struct, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Struct to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Struct
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a Value. */
+ interface IValue {
+
+ /** Value nullValue */
+ nullValue?: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue|null);
+
+ /** Value numberValue */
+ numberValue?: (number|null);
+
+ /** Value stringValue */
+ stringValue?: (string|null);
+
+ /** Value boolValue */
+ boolValue?: (boolean|null);
+
+ /** Value structValue */
+ structValue?: (google.protobuf.IStruct|null);
+
+ /** Value listValue */
+ listValue?: (google.protobuf.IListValue|null);
+ }
+
+ /** Represents a Value. */
+ class Value implements IValue {
+
+ /**
+ * Constructs a new Value.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IValue);
+
+ /** Value nullValue. */
+ public nullValue?: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue|null);
+
+ /** Value numberValue. */
+ public numberValue?: (number|null);
+
+ /** Value stringValue. */
+ public stringValue?: (string|null);
+
+ /** Value boolValue. */
+ public boolValue?: (boolean|null);
+
+ /** Value structValue. */
+ public structValue?: (google.protobuf.IStruct|null);
+
+ /** Value listValue. */
+ public listValue?: (google.protobuf.IListValue|null);
+
+ /** Value kind. */
+ public kind?: ("nullValue"|"numberValue"|"stringValue"|"boolValue"|"structValue"|"listValue");
+
+ /**
+ * Creates a new Value instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Value instance
+ */
+ public static create(properties?: google.protobuf.IValue): google.protobuf.Value;
+
+ /**
+ * Encodes the specified Value message. Does not implicitly {@link google.protobuf.Value.verify|verify} messages.
+ * @param message Value message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IValue, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Value message, length delimited. Does not implicitly {@link google.protobuf.Value.verify|verify} messages.
+ * @param message Value message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IValue, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a Value message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Value
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Value;
+
+ /**
+ * Decodes a Value message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Value
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Value;
+
+ /**
+ * Verifies a Value message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a Value message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Value
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.Value;
+
+ /**
+ * Creates a plain object from a Value message. Also converts values to other types if specified.
+ * @param message Value
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.Value, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Value to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Value
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** NullValue enum. */
+ enum NullValue {
+ NULL_VALUE = 0
+ }
+
+ /** Properties of a ListValue. */
+ interface IListValue {
+
+ /** ListValue values */
+ values?: (google.protobuf.IValue[]|null);
+ }
+
+ /** Represents a ListValue. */
+ class ListValue implements IListValue {
+
+ /**
+ * Constructs a new ListValue.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.protobuf.IListValue);
+
+ /** ListValue values. */
+ public values: google.protobuf.IValue[];
+
+ /**
+ * Creates a new ListValue instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ListValue instance
+ */
+ public static create(properties?: google.protobuf.IListValue): google.protobuf.ListValue;
+
+ /**
+ * Encodes the specified ListValue message. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages.
+ * @param message ListValue message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.protobuf.IListValue, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ListValue message, length delimited. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages.
+ * @param message ListValue message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.protobuf.IListValue, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a ListValue message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ListValue
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ListValue;
+
+ /**
+ * Decodes a ListValue message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ListValue
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ListValue;
+
+ /**
+ * Verifies a ListValue message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a ListValue message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ListValue
+ */
+ public static fromObject(object: { [k: string]: any }): google.protobuf.ListValue;
+
+ /**
+ * Creates a plain object from a ListValue message. Also converts values to other types if specified.
+ * @param message ListValue
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.protobuf.ListValue, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ListValue to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ListValue
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+
+ /** Namespace iam. */
+ namespace iam {
+
+ /** Namespace v1. */
+ namespace v1 {
+
+ /** Properties of a Policy. */
+ interface IPolicy {
+
+ /** Policy version */
+ version?: (number|null);
+
+ /** Policy bindings */
+ bindings?: (google.iam.v1.IBinding[]|null);
+
+ /** Policy auditConfigs */
+ auditConfigs?: (google.iam.v1.IAuditConfig[]|null);
+
+ /** Policy etag */
+ etag?: (Uint8Array|Buffer|string|null);
+ }
+
+ /** Represents a Policy. */
+ class Policy implements IPolicy {
+
+ /**
+ * Constructs a new Policy.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.iam.v1.IPolicy);
+
+ /** Policy version. */
+ public version: number;
+
+ /** Policy bindings. */
+ public bindings: google.iam.v1.IBinding[];
+
+ /** Policy auditConfigs. */
+ public auditConfigs: google.iam.v1.IAuditConfig[];
+
+ /** Policy etag. */
+ public etag: (Uint8Array|Buffer|string);
+
+ /**
+ * Creates a new Policy instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Policy instance
+ */
+ public static create(properties?: google.iam.v1.IPolicy): google.iam.v1.Policy;
+
+ /**
+ * Encodes the specified Policy message. Does not implicitly {@link google.iam.v1.Policy.verify|verify} messages.
+ * @param message Policy message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.iam.v1.IPolicy, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Policy message, length delimited. Does not implicitly {@link google.iam.v1.Policy.verify|verify} messages.
+ * @param message Policy message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.iam.v1.IPolicy, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a Policy message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Policy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.Policy;
+
+ /**
+ * Decodes a Policy message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Policy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.Policy;
+
+ /**
+ * Verifies a Policy message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a Policy message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Policy
+ */
+ public static fromObject(object: { [k: string]: any }): google.iam.v1.Policy;
+
+ /**
+ * Creates a plain object from a Policy message. Also converts values to other types if specified.
+ * @param message Policy
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.iam.v1.Policy, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Policy to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Policy
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a Binding. */
+ interface IBinding {
+
+ /** Binding role */
+ role?: (string|null);
+
+ /** Binding members */
+ members?: (string[]|null);
+
+ /** Binding condition */
+ condition?: (google.type.IExpr|null);
+ }
+
+ /** Represents a Binding. */
+ class Binding implements IBinding {
+
+ /**
+ * Constructs a new Binding.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.iam.v1.IBinding);
+
+ /** Binding role. */
+ public role: string;
+
+ /** Binding members. */
+ public members: string[];
+
+ /** Binding condition. */
+ public condition?: (google.type.IExpr|null);
+
+ /**
+ * Creates a new Binding instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Binding instance
+ */
+ public static create(properties?: google.iam.v1.IBinding): google.iam.v1.Binding;
+
+ /**
+ * Encodes the specified Binding message. Does not implicitly {@link google.iam.v1.Binding.verify|verify} messages.
+ * @param message Binding message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.iam.v1.IBinding, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Binding message, length delimited. Does not implicitly {@link google.iam.v1.Binding.verify|verify} messages.
+ * @param message Binding message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.iam.v1.IBinding, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a Binding message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Binding
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.Binding;
+
+ /**
+ * Decodes a Binding message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Binding
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.Binding;
+
+ /**
+ * Verifies a Binding message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a Binding message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Binding
+ */
+ public static fromObject(object: { [k: string]: any }): google.iam.v1.Binding;
+
+ /**
+ * Creates a plain object from a Binding message. Also converts values to other types if specified.
+ * @param message Binding
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.iam.v1.Binding, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Binding to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Binding
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an AuditConfig. */
+ interface IAuditConfig {
+
+ /** AuditConfig service */
+ service?: (string|null);
+
+ /** AuditConfig auditLogConfigs */
+ auditLogConfigs?: (google.iam.v1.IAuditLogConfig[]|null);
+ }
+
+ /** Represents an AuditConfig. */
+ class AuditConfig implements IAuditConfig {
+
+ /**
+ * Constructs a new AuditConfig.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.iam.v1.IAuditConfig);
+
+ /** AuditConfig service. */
+ public service: string;
+
+ /** AuditConfig auditLogConfigs. */
+ public auditLogConfigs: google.iam.v1.IAuditLogConfig[];
+
+ /**
+ * Creates a new AuditConfig instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns AuditConfig instance
+ */
+ public static create(properties?: google.iam.v1.IAuditConfig): google.iam.v1.AuditConfig;
+
+ /**
+ * Encodes the specified AuditConfig message. Does not implicitly {@link google.iam.v1.AuditConfig.verify|verify} messages.
+ * @param message AuditConfig message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.iam.v1.IAuditConfig, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified AuditConfig message, length delimited. Does not implicitly {@link google.iam.v1.AuditConfig.verify|verify} messages.
+ * @param message AuditConfig message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.iam.v1.IAuditConfig, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an AuditConfig message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns AuditConfig
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.AuditConfig;
+
+ /**
+ * Decodes an AuditConfig message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns AuditConfig
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.AuditConfig;
+
+ /**
+ * Verifies an AuditConfig message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an AuditConfig message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns AuditConfig
+ */
+ public static fromObject(object: { [k: string]: any }): google.iam.v1.AuditConfig;
+
+ /**
+ * Creates a plain object from an AuditConfig message. Also converts values to other types if specified.
+ * @param message AuditConfig
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.iam.v1.AuditConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this AuditConfig to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for AuditConfig
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an AuditLogConfig. */
+ interface IAuditLogConfig {
+
+ /** AuditLogConfig logType */
+ logType?: (google.iam.v1.AuditLogConfig.LogType|keyof typeof google.iam.v1.AuditLogConfig.LogType|null);
+
+ /** AuditLogConfig exemptedMembers */
+ exemptedMembers?: (string[]|null);
+ }
+
+ /** Represents an AuditLogConfig. */
+ class AuditLogConfig implements IAuditLogConfig {
+
+ /**
+ * Constructs a new AuditLogConfig.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.iam.v1.IAuditLogConfig);
+
+ /** AuditLogConfig logType. */
+ public logType: (google.iam.v1.AuditLogConfig.LogType|keyof typeof google.iam.v1.AuditLogConfig.LogType);
+
+ /** AuditLogConfig exemptedMembers. */
+ public exemptedMembers: string[];
+
+ /**
+ * Creates a new AuditLogConfig instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns AuditLogConfig instance
+ */
+ public static create(properties?: google.iam.v1.IAuditLogConfig): google.iam.v1.AuditLogConfig;
+
+ /**
+ * Encodes the specified AuditLogConfig message. Does not implicitly {@link google.iam.v1.AuditLogConfig.verify|verify} messages.
+ * @param message AuditLogConfig message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.iam.v1.IAuditLogConfig, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified AuditLogConfig message, length delimited. Does not implicitly {@link google.iam.v1.AuditLogConfig.verify|verify} messages.
+ * @param message AuditLogConfig message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.iam.v1.IAuditLogConfig, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an AuditLogConfig message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns AuditLogConfig
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.AuditLogConfig;
+
+ /**
+ * Decodes an AuditLogConfig message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns AuditLogConfig
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.AuditLogConfig;
+
+ /**
+ * Verifies an AuditLogConfig message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an AuditLogConfig message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns AuditLogConfig
+ */
+ public static fromObject(object: { [k: string]: any }): google.iam.v1.AuditLogConfig;
+
+ /**
+ * Creates a plain object from an AuditLogConfig message. Also converts values to other types if specified.
+ * @param message AuditLogConfig
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.iam.v1.AuditLogConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this AuditLogConfig to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for AuditLogConfig
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace AuditLogConfig {
+
+ /** LogType enum. */
+ enum LogType {
+ LOG_TYPE_UNSPECIFIED = 0,
+ ADMIN_READ = 1,
+ DATA_WRITE = 2,
+ DATA_READ = 3
+ }
+ }
+
+ /** Properties of a PolicyDelta. */
+ interface IPolicyDelta {
+
+ /** PolicyDelta bindingDeltas */
+ bindingDeltas?: (google.iam.v1.IBindingDelta[]|null);
+
+ /** PolicyDelta auditConfigDeltas */
+ auditConfigDeltas?: (google.iam.v1.IAuditConfigDelta[]|null);
+ }
+
+ /** Represents a PolicyDelta. */
+ class PolicyDelta implements IPolicyDelta {
+
+ /**
+ * Constructs a new PolicyDelta.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.iam.v1.IPolicyDelta);
+
+ /** PolicyDelta bindingDeltas. */
+ public bindingDeltas: google.iam.v1.IBindingDelta[];
+
+ /** PolicyDelta auditConfigDeltas. */
+ public auditConfigDeltas: google.iam.v1.IAuditConfigDelta[];
+
+ /**
+ * Creates a new PolicyDelta instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns PolicyDelta instance
+ */
+ public static create(properties?: google.iam.v1.IPolicyDelta): google.iam.v1.PolicyDelta;
+
+ /**
+ * Encodes the specified PolicyDelta message. Does not implicitly {@link google.iam.v1.PolicyDelta.verify|verify} messages.
+ * @param message PolicyDelta message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.iam.v1.IPolicyDelta, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified PolicyDelta message, length delimited. Does not implicitly {@link google.iam.v1.PolicyDelta.verify|verify} messages.
+ * @param message PolicyDelta message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.iam.v1.IPolicyDelta, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a PolicyDelta message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns PolicyDelta
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.PolicyDelta;
+
+ /**
+ * Decodes a PolicyDelta message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns PolicyDelta
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.PolicyDelta;
+
+ /**
+ * Verifies a PolicyDelta message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a PolicyDelta message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns PolicyDelta
+ */
+ public static fromObject(object: { [k: string]: any }): google.iam.v1.PolicyDelta;
+
+ /**
+ * Creates a plain object from a PolicyDelta message. Also converts values to other types if specified.
+ * @param message PolicyDelta
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.iam.v1.PolicyDelta, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this PolicyDelta to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for PolicyDelta
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a BindingDelta. */
+ interface IBindingDelta {
+
+ /** BindingDelta action */
+ action?: (google.iam.v1.BindingDelta.Action|keyof typeof google.iam.v1.BindingDelta.Action|null);
+
+ /** BindingDelta role */
+ role?: (string|null);
+
+ /** BindingDelta member */
+ member?: (string|null);
+
+ /** BindingDelta condition */
+ condition?: (google.type.IExpr|null);
+ }
+
+ /** Represents a BindingDelta. */
+ class BindingDelta implements IBindingDelta {
+
+ /**
+ * Constructs a new BindingDelta.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.iam.v1.IBindingDelta);
+
+ /** BindingDelta action. */
+ public action: (google.iam.v1.BindingDelta.Action|keyof typeof google.iam.v1.BindingDelta.Action);
+
+ /** BindingDelta role. */
+ public role: string;
+
+ /** BindingDelta member. */
+ public member: string;
+
+ /** BindingDelta condition. */
+ public condition?: (google.type.IExpr|null);
+
+ /**
+ * Creates a new BindingDelta instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns BindingDelta instance
+ */
+ public static create(properties?: google.iam.v1.IBindingDelta): google.iam.v1.BindingDelta;
+
+ /**
+ * Encodes the specified BindingDelta message. Does not implicitly {@link google.iam.v1.BindingDelta.verify|verify} messages.
+ * @param message BindingDelta message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.iam.v1.IBindingDelta, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified BindingDelta message, length delimited. Does not implicitly {@link google.iam.v1.BindingDelta.verify|verify} messages.
+ * @param message BindingDelta message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.iam.v1.IBindingDelta, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a BindingDelta message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns BindingDelta
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.BindingDelta;
+
+ /**
+ * Decodes a BindingDelta message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns BindingDelta
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.BindingDelta;
+
+ /**
+ * Verifies a BindingDelta message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a BindingDelta message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns BindingDelta
+ */
+ public static fromObject(object: { [k: string]: any }): google.iam.v1.BindingDelta;
+
+ /**
+ * Creates a plain object from a BindingDelta message. Also converts values to other types if specified.
+ * @param message BindingDelta
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.iam.v1.BindingDelta, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this BindingDelta to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for BindingDelta
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace BindingDelta {
+
+ /** Action enum. */
+ enum Action {
+ ACTION_UNSPECIFIED = 0,
+ ADD = 1,
+ REMOVE = 2
+ }
+ }
+
+ /** Properties of an AuditConfigDelta. */
+ interface IAuditConfigDelta {
+
+ /** AuditConfigDelta action */
+ action?: (google.iam.v1.AuditConfigDelta.Action|keyof typeof google.iam.v1.AuditConfigDelta.Action|null);
+
+ /** AuditConfigDelta service */
+ service?: (string|null);
+
+ /** AuditConfigDelta exemptedMember */
+ exemptedMember?: (string|null);
+
+ /** AuditConfigDelta logType */
+ logType?: (string|null);
+ }
+
+ /** Represents an AuditConfigDelta. */
+ class AuditConfigDelta implements IAuditConfigDelta {
+
+ /**
+ * Constructs a new AuditConfigDelta.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.iam.v1.IAuditConfigDelta);
+
+ /** AuditConfigDelta action. */
+ public action: (google.iam.v1.AuditConfigDelta.Action|keyof typeof google.iam.v1.AuditConfigDelta.Action);
+
+ /** AuditConfigDelta service. */
+ public service: string;
+
+ /** AuditConfigDelta exemptedMember. */
+ public exemptedMember: string;
+
+ /** AuditConfigDelta logType. */
+ public logType: string;
+
+ /**
+ * Creates a new AuditConfigDelta instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns AuditConfigDelta instance
+ */
+ public static create(properties?: google.iam.v1.IAuditConfigDelta): google.iam.v1.AuditConfigDelta;
+
+ /**
+ * Encodes the specified AuditConfigDelta message. Does not implicitly {@link google.iam.v1.AuditConfigDelta.verify|verify} messages.
+ * @param message AuditConfigDelta message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.iam.v1.IAuditConfigDelta, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified AuditConfigDelta message, length delimited. Does not implicitly {@link google.iam.v1.AuditConfigDelta.verify|verify} messages.
+ * @param message AuditConfigDelta message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.iam.v1.IAuditConfigDelta, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an AuditConfigDelta message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns AuditConfigDelta
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.AuditConfigDelta;
+
+ /**
+ * Decodes an AuditConfigDelta message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns AuditConfigDelta
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.AuditConfigDelta;
+
+ /**
+ * Verifies an AuditConfigDelta message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an AuditConfigDelta message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns AuditConfigDelta
+ */
+ public static fromObject(object: { [k: string]: any }): google.iam.v1.AuditConfigDelta;
+
+ /**
+ * Creates a plain object from an AuditConfigDelta message. Also converts values to other types if specified.
+ * @param message AuditConfigDelta
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.iam.v1.AuditConfigDelta, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this AuditConfigDelta to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for AuditConfigDelta
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ namespace AuditConfigDelta {
+
+ /** Action enum. */
+ enum Action {
+ ACTION_UNSPECIFIED = 0,
+ ADD = 1,
+ REMOVE = 2
+ }
+ }
+ }
+
+ /** Namespace v2. */
+ namespace v2 {
+
+ /** Represents a Policies */
+ class Policies extends $protobuf.rpc.Service {
+
+ /**
+ * Constructs a new Policies service.
+ * @param rpcImpl RPC implementation
+ * @param [requestDelimited=false] Whether requests are length-delimited
+ * @param [responseDelimited=false] Whether responses are length-delimited
+ */
+ constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean);
+
+ /**
+ * Creates new Policies service using the specified rpc implementation.
+ * @param rpcImpl RPC implementation
+ * @param [requestDelimited=false] Whether requests are length-delimited
+ * @param [responseDelimited=false] Whether responses are length-delimited
+ * @returns RPC service. Useful where requests and/or responses are streamed.
+ */
+ public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): Policies;
+
+ /**
+ * Calls ListPolicies.
+ * @param request ListPoliciesRequest message or plain object
+ * @param callback Node-style callback called with the error, if any, and ListPoliciesResponse
+ */
+ public listPolicies(request: google.iam.v2.IListPoliciesRequest, callback: google.iam.v2.Policies.ListPoliciesCallback): void;
+
+ /**
+ * Calls ListPolicies.
+ * @param request ListPoliciesRequest message or plain object
+ * @returns Promise
+ */
+ public listPolicies(request: google.iam.v2.IListPoliciesRequest): Promise;
+
+ /**
+ * Calls GetPolicy.
+ * @param request GetPolicyRequest message or plain object
+ * @param callback Node-style callback called with the error, if any, and Policy
+ */
+ public getPolicy(request: google.iam.v2.IGetPolicyRequest, callback: google.iam.v2.Policies.GetPolicyCallback): void;
+
+ /**
+ * Calls GetPolicy.
+ * @param request GetPolicyRequest message or plain object
+ * @returns Promise
+ */
+ public getPolicy(request: google.iam.v2.IGetPolicyRequest): Promise;
+
+ /**
+ * Calls CreatePolicy.
+ * @param request CreatePolicyRequest message or plain object
+ * @param callback Node-style callback called with the error, if any, and Operation
+ */
+ public createPolicy(request: google.iam.v2.ICreatePolicyRequest, callback: google.iam.v2.Policies.CreatePolicyCallback): void;
+
+ /**
+ * Calls CreatePolicy.
+ * @param request CreatePolicyRequest message or plain object
+ * @returns Promise
+ */
+ public createPolicy(request: google.iam.v2.ICreatePolicyRequest): Promise;
+
+ /**
+ * Calls UpdatePolicy.
+ * @param request UpdatePolicyRequest message or plain object
+ * @param callback Node-style callback called with the error, if any, and Operation
+ */
+ public updatePolicy(request: google.iam.v2.IUpdatePolicyRequest, callback: google.iam.v2.Policies.UpdatePolicyCallback): void;
+
+ /**
+ * Calls UpdatePolicy.
+ * @param request UpdatePolicyRequest message or plain object
+ * @returns Promise
+ */
+ public updatePolicy(request: google.iam.v2.IUpdatePolicyRequest): Promise;
+
+ /**
+ * Calls DeletePolicy.
+ * @param request DeletePolicyRequest message or plain object
+ * @param callback Node-style callback called with the error, if any, and Operation
+ */
+ public deletePolicy(request: google.iam.v2.IDeletePolicyRequest, callback: google.iam.v2.Policies.DeletePolicyCallback): void;
+
+ /**
+ * Calls DeletePolicy.
+ * @param request DeletePolicyRequest message or plain object
+ * @returns Promise
+ */
+ public deletePolicy(request: google.iam.v2.IDeletePolicyRequest): Promise;
+ }
+
+ namespace Policies {
+
+ /**
+ * Callback as used by {@link google.iam.v2.Policies|listPolicies}.
+ * @param error Error, if any
+ * @param [response] ListPoliciesResponse
+ */
+ type ListPoliciesCallback = (error: (Error|null), response?: google.iam.v2.ListPoliciesResponse) => void;
+
+ /**
+ * Callback as used by {@link google.iam.v2.Policies|getPolicy}.
+ * @param error Error, if any
+ * @param [response] Policy
+ */
+ type GetPolicyCallback = (error: (Error|null), response?: google.iam.v2.Policy) => void;
+
+ /**
+ * Callback as used by {@link google.iam.v2.Policies|createPolicy}.
+ * @param error Error, if any
+ * @param [response] Operation
+ */
+ type CreatePolicyCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
+
+ /**
+ * Callback as used by {@link google.iam.v2.Policies|updatePolicy}.
+ * @param error Error, if any
+ * @param [response] Operation
+ */
+ type UpdatePolicyCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
+
+ /**
+ * Callback as used by {@link google.iam.v2.Policies|deletePolicy}.
+ * @param error Error, if any
+ * @param [response] Operation
+ */
+ type DeletePolicyCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
+ }
+
+ /** Properties of a Policy. */
+ interface IPolicy {
+
+ /** Policy name */
+ name?: (string|null);
+
+ /** Policy uid */
+ uid?: (string|null);
+
+ /** Policy kind */
+ kind?: (string|null);
+
+ /** Policy displayName */
+ displayName?: (string|null);
+
+ /** Policy annotations */
+ annotations?: ({ [k: string]: string }|null);
+
+ /** Policy etag */
+ etag?: (string|null);
+
+ /** Policy createTime */
+ createTime?: (google.protobuf.ITimestamp|null);
+
+ /** Policy updateTime */
+ updateTime?: (google.protobuf.ITimestamp|null);
+
+ /** Policy deleteTime */
+ deleteTime?: (google.protobuf.ITimestamp|null);
+
+ /** Policy rules */
+ rules?: (google.iam.v2.IPolicyRule[]|null);
+
+ /** Policy managingAuthority */
+ managingAuthority?: (string|null);
+ }
+
+ /** Represents a Policy. */
+ class Policy implements IPolicy {
+
+ /**
+ * Constructs a new Policy.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.iam.v2.IPolicy);
+
+ /** Policy name. */
+ public name: string;
+
+ /** Policy uid. */
+ public uid: string;
+
+ /** Policy kind. */
+ public kind: string;
+
+ /** Policy displayName. */
+ public displayName: string;
+
+ /** Policy annotations. */
+ public annotations: { [k: string]: string };
+
+ /** Policy etag. */
+ public etag: string;
+
+ /** Policy createTime. */
+ public createTime?: (google.protobuf.ITimestamp|null);
+
+ /** Policy updateTime. */
+ public updateTime?: (google.protobuf.ITimestamp|null);
+
+ /** Policy deleteTime. */
+ public deleteTime?: (google.protobuf.ITimestamp|null);
+
+ /** Policy rules. */
+ public rules: google.iam.v2.IPolicyRule[];
+
+ /** Policy managingAuthority. */
+ public managingAuthority: string;
+
+ /**
+ * Creates a new Policy instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Policy instance
+ */
+ public static create(properties?: google.iam.v2.IPolicy): google.iam.v2.Policy;
+
+ /**
+ * Encodes the specified Policy message. Does not implicitly {@link google.iam.v2.Policy.verify|verify} messages.
+ * @param message Policy message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.iam.v2.IPolicy, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Policy message, length delimited. Does not implicitly {@link google.iam.v2.Policy.verify|verify} messages.
+ * @param message Policy message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.iam.v2.IPolicy, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a Policy message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Policy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v2.Policy;
+
+ /**
+ * Decodes a Policy message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Policy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v2.Policy;
+
+ /**
+ * Verifies a Policy message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a Policy message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Policy
+ */
+ public static fromObject(object: { [k: string]: any }): google.iam.v2.Policy;
+
+ /**
+ * Creates a plain object from a Policy message. Also converts values to other types if specified.
+ * @param message Policy
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.iam.v2.Policy, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Policy to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Policy
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a PolicyRule. */
+ interface IPolicyRule {
+
+ /** PolicyRule denyRule */
+ denyRule?: (google.iam.v2.IDenyRule|null);
+
+ /** PolicyRule description */
+ description?: (string|null);
+ }
+
+ /** Represents a PolicyRule. */
+ class PolicyRule implements IPolicyRule {
+
+ /**
+ * Constructs a new PolicyRule.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.iam.v2.IPolicyRule);
+
+ /** PolicyRule denyRule. */
+ public denyRule?: (google.iam.v2.IDenyRule|null);
+
+ /** PolicyRule description. */
+ public description: string;
+
+ /** PolicyRule kind. */
+ public kind?: "denyRule";
+
+ /**
+ * Creates a new PolicyRule instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns PolicyRule instance
+ */
+ public static create(properties?: google.iam.v2.IPolicyRule): google.iam.v2.PolicyRule;
+
+ /**
+ * Encodes the specified PolicyRule message. Does not implicitly {@link google.iam.v2.PolicyRule.verify|verify} messages.
+ * @param message PolicyRule message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.iam.v2.IPolicyRule, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified PolicyRule message, length delimited. Does not implicitly {@link google.iam.v2.PolicyRule.verify|verify} messages.
+ * @param message PolicyRule message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.iam.v2.IPolicyRule, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a PolicyRule message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns PolicyRule
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v2.PolicyRule;
+
+ /**
+ * Decodes a PolicyRule message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns PolicyRule
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v2.PolicyRule;
+
+ /**
+ * Verifies a PolicyRule message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a PolicyRule message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns PolicyRule
+ */
+ public static fromObject(object: { [k: string]: any }): google.iam.v2.PolicyRule;
+
+ /**
+ * Creates a plain object from a PolicyRule message. Also converts values to other types if specified.
+ * @param message PolicyRule
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.iam.v2.PolicyRule, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this PolicyRule to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for PolicyRule
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a ListPoliciesRequest. */
+ interface IListPoliciesRequest {
+
+ /** ListPoliciesRequest parent */
+ parent?: (string|null);
+
+ /** ListPoliciesRequest pageSize */
+ pageSize?: (number|null);
+
+ /** ListPoliciesRequest pageToken */
+ pageToken?: (string|null);
+ }
+
+ /** Represents a ListPoliciesRequest. */
+ class ListPoliciesRequest implements IListPoliciesRequest {
+
+ /**
+ * Constructs a new ListPoliciesRequest.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.iam.v2.IListPoliciesRequest);
+
+ /** ListPoliciesRequest parent. */
+ public parent: string;
+
+ /** ListPoliciesRequest pageSize. */
+ public pageSize: number;
+
+ /** ListPoliciesRequest pageToken. */
+ public pageToken: string;
+
+ /**
+ * Creates a new ListPoliciesRequest instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ListPoliciesRequest instance
+ */
+ public static create(properties?: google.iam.v2.IListPoliciesRequest): google.iam.v2.ListPoliciesRequest;
+
+ /**
+ * Encodes the specified ListPoliciesRequest message. Does not implicitly {@link google.iam.v2.ListPoliciesRequest.verify|verify} messages.
+ * @param message ListPoliciesRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.iam.v2.IListPoliciesRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ListPoliciesRequest message, length delimited. Does not implicitly {@link google.iam.v2.ListPoliciesRequest.verify|verify} messages.
+ * @param message ListPoliciesRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.iam.v2.IListPoliciesRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a ListPoliciesRequest message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ListPoliciesRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v2.ListPoliciesRequest;
+
+ /**
+ * Decodes a ListPoliciesRequest message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ListPoliciesRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v2.ListPoliciesRequest;
+
+ /**
+ * Verifies a ListPoliciesRequest message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a ListPoliciesRequest message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ListPoliciesRequest
+ */
+ public static fromObject(object: { [k: string]: any }): google.iam.v2.ListPoliciesRequest;
+
+ /**
+ * Creates a plain object from a ListPoliciesRequest message. Also converts values to other types if specified.
+ * @param message ListPoliciesRequest
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.iam.v2.ListPoliciesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ListPoliciesRequest to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ListPoliciesRequest
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a ListPoliciesResponse. */
+ interface IListPoliciesResponse {
+
+ /** ListPoliciesResponse policies */
+ policies?: (google.iam.v2.IPolicy[]|null);
+
+ /** ListPoliciesResponse nextPageToken */
+ nextPageToken?: (string|null);
+ }
+
+ /** Represents a ListPoliciesResponse. */
+ class ListPoliciesResponse implements IListPoliciesResponse {
+
+ /**
+ * Constructs a new ListPoliciesResponse.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.iam.v2.IListPoliciesResponse);
+
+ /** ListPoliciesResponse policies. */
+ public policies: google.iam.v2.IPolicy[];
+
+ /** ListPoliciesResponse nextPageToken. */
+ public nextPageToken: string;
+
+ /**
+ * Creates a new ListPoliciesResponse instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ListPoliciesResponse instance
+ */
+ public static create(properties?: google.iam.v2.IListPoliciesResponse): google.iam.v2.ListPoliciesResponse;
+
+ /**
+ * Encodes the specified ListPoliciesResponse message. Does not implicitly {@link google.iam.v2.ListPoliciesResponse.verify|verify} messages.
+ * @param message ListPoliciesResponse message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.iam.v2.IListPoliciesResponse, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ListPoliciesResponse message, length delimited. Does not implicitly {@link google.iam.v2.ListPoliciesResponse.verify|verify} messages.
+ * @param message ListPoliciesResponse message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.iam.v2.IListPoliciesResponse, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a ListPoliciesResponse message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ListPoliciesResponse
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v2.ListPoliciesResponse;
+
+ /**
+ * Decodes a ListPoliciesResponse message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ListPoliciesResponse
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v2.ListPoliciesResponse;
+
+ /**
+ * Verifies a ListPoliciesResponse message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a ListPoliciesResponse message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ListPoliciesResponse
+ */
+ public static fromObject(object: { [k: string]: any }): google.iam.v2.ListPoliciesResponse;
+
+ /**
+ * Creates a plain object from a ListPoliciesResponse message. Also converts values to other types if specified.
+ * @param message ListPoliciesResponse
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.iam.v2.ListPoliciesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ListPoliciesResponse to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ListPoliciesResponse
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a GetPolicyRequest. */
+ interface IGetPolicyRequest {
+
+ /** GetPolicyRequest name */
+ name?: (string|null);
+ }
+
+ /** Represents a GetPolicyRequest. */
+ class GetPolicyRequest implements IGetPolicyRequest {
+
+ /**
+ * Constructs a new GetPolicyRequest.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.iam.v2.IGetPolicyRequest);
+
+ /** GetPolicyRequest name. */
+ public name: string;
+
+ /**
+ * Creates a new GetPolicyRequest instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns GetPolicyRequest instance
+ */
+ public static create(properties?: google.iam.v2.IGetPolicyRequest): google.iam.v2.GetPolicyRequest;
+
+ /**
+ * Encodes the specified GetPolicyRequest message. Does not implicitly {@link google.iam.v2.GetPolicyRequest.verify|verify} messages.
+ * @param message GetPolicyRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.iam.v2.IGetPolicyRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified GetPolicyRequest message, length delimited. Does not implicitly {@link google.iam.v2.GetPolicyRequest.verify|verify} messages.
+ * @param message GetPolicyRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.iam.v2.IGetPolicyRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a GetPolicyRequest message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns GetPolicyRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v2.GetPolicyRequest;
+
+ /**
+ * Decodes a GetPolicyRequest message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns GetPolicyRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v2.GetPolicyRequest;
+
+ /**
+ * Verifies a GetPolicyRequest message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a GetPolicyRequest message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns GetPolicyRequest
+ */
+ public static fromObject(object: { [k: string]: any }): google.iam.v2.GetPolicyRequest;
+
+ /**
+ * Creates a plain object from a GetPolicyRequest message. Also converts values to other types if specified.
+ * @param message GetPolicyRequest
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.iam.v2.GetPolicyRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this GetPolicyRequest to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for GetPolicyRequest
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a CreatePolicyRequest. */
+ interface ICreatePolicyRequest {
+
+ /** CreatePolicyRequest parent */
+ parent?: (string|null);
+
+ /** CreatePolicyRequest policy */
+ policy?: (google.iam.v2.IPolicy|null);
+
+ /** CreatePolicyRequest policyId */
+ policyId?: (string|null);
+ }
+
+ /** Represents a CreatePolicyRequest. */
+ class CreatePolicyRequest implements ICreatePolicyRequest {
+
+ /**
+ * Constructs a new CreatePolicyRequest.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.iam.v2.ICreatePolicyRequest);
+
+ /** CreatePolicyRequest parent. */
+ public parent: string;
+
+ /** CreatePolicyRequest policy. */
+ public policy?: (google.iam.v2.IPolicy|null);
+
+ /** CreatePolicyRequest policyId. */
+ public policyId: string;
+
+ /**
+ * Creates a new CreatePolicyRequest instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns CreatePolicyRequest instance
+ */
+ public static create(properties?: google.iam.v2.ICreatePolicyRequest): google.iam.v2.CreatePolicyRequest;
+
+ /**
+ * Encodes the specified CreatePolicyRequest message. Does not implicitly {@link google.iam.v2.CreatePolicyRequest.verify|verify} messages.
+ * @param message CreatePolicyRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.iam.v2.ICreatePolicyRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified CreatePolicyRequest message, length delimited. Does not implicitly {@link google.iam.v2.CreatePolicyRequest.verify|verify} messages.
+ * @param message CreatePolicyRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.iam.v2.ICreatePolicyRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a CreatePolicyRequest message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns CreatePolicyRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v2.CreatePolicyRequest;
+
+ /**
+ * Decodes a CreatePolicyRequest message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns CreatePolicyRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v2.CreatePolicyRequest;
+
+ /**
+ * Verifies a CreatePolicyRequest message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a CreatePolicyRequest message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns CreatePolicyRequest
+ */
+ public static fromObject(object: { [k: string]: any }): google.iam.v2.CreatePolicyRequest;
+
+ /**
+ * Creates a plain object from a CreatePolicyRequest message. Also converts values to other types if specified.
+ * @param message CreatePolicyRequest
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.iam.v2.CreatePolicyRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this CreatePolicyRequest to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for CreatePolicyRequest
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an UpdatePolicyRequest. */
+ interface IUpdatePolicyRequest {
+
+ /** UpdatePolicyRequest policy */
+ policy?: (google.iam.v2.IPolicy|null);
+ }
+
+ /** Represents an UpdatePolicyRequest. */
+ class UpdatePolicyRequest implements IUpdatePolicyRequest {
+
+ /**
+ * Constructs a new UpdatePolicyRequest.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.iam.v2.IUpdatePolicyRequest);
+
+ /** UpdatePolicyRequest policy. */
+ public policy?: (google.iam.v2.IPolicy|null);
+
+ /**
+ * Creates a new UpdatePolicyRequest instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns UpdatePolicyRequest instance
+ */
+ public static create(properties?: google.iam.v2.IUpdatePolicyRequest): google.iam.v2.UpdatePolicyRequest;
+
+ /**
+ * Encodes the specified UpdatePolicyRequest message. Does not implicitly {@link google.iam.v2.UpdatePolicyRequest.verify|verify} messages.
+ * @param message UpdatePolicyRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.iam.v2.IUpdatePolicyRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified UpdatePolicyRequest message, length delimited. Does not implicitly {@link google.iam.v2.UpdatePolicyRequest.verify|verify} messages.
+ * @param message UpdatePolicyRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.iam.v2.IUpdatePolicyRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an UpdatePolicyRequest message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns UpdatePolicyRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v2.UpdatePolicyRequest;
+
+ /**
+ * Decodes an UpdatePolicyRequest message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns UpdatePolicyRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v2.UpdatePolicyRequest;
+
+ /**
+ * Verifies an UpdatePolicyRequest message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an UpdatePolicyRequest message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns UpdatePolicyRequest
+ */
+ public static fromObject(object: { [k: string]: any }): google.iam.v2.UpdatePolicyRequest;
+
+ /**
+ * Creates a plain object from an UpdatePolicyRequest message. Also converts values to other types if specified.
+ * @param message UpdatePolicyRequest
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.iam.v2.UpdatePolicyRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this UpdatePolicyRequest to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for UpdatePolicyRequest
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a DeletePolicyRequest. */
+ interface IDeletePolicyRequest {
+
+ /** DeletePolicyRequest name */
+ name?: (string|null);
+
+ /** DeletePolicyRequest etag */
+ etag?: (string|null);
+ }
+
+ /** Represents a DeletePolicyRequest. */
+ class DeletePolicyRequest implements IDeletePolicyRequest {
+
+ /**
+ * Constructs a new DeletePolicyRequest.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.iam.v2.IDeletePolicyRequest);
+
+ /** DeletePolicyRequest name. */
+ public name: string;
+
+ /** DeletePolicyRequest etag. */
+ public etag: string;
+
+ /**
+ * Creates a new DeletePolicyRequest instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns DeletePolicyRequest instance
+ */
+ public static create(properties?: google.iam.v2.IDeletePolicyRequest): google.iam.v2.DeletePolicyRequest;
+
+ /**
+ * Encodes the specified DeletePolicyRequest message. Does not implicitly {@link google.iam.v2.DeletePolicyRequest.verify|verify} messages.
+ * @param message DeletePolicyRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.iam.v2.IDeletePolicyRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified DeletePolicyRequest message, length delimited. Does not implicitly {@link google.iam.v2.DeletePolicyRequest.verify|verify} messages.
+ * @param message DeletePolicyRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.iam.v2.IDeletePolicyRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a DeletePolicyRequest message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns DeletePolicyRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v2.DeletePolicyRequest;
+
+ /**
+ * Decodes a DeletePolicyRequest message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns DeletePolicyRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v2.DeletePolicyRequest;
+
+ /**
+ * Verifies a DeletePolicyRequest message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a DeletePolicyRequest message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns DeletePolicyRequest
+ */
+ public static fromObject(object: { [k: string]: any }): google.iam.v2.DeletePolicyRequest;
+
+ /**
+ * Creates a plain object from a DeletePolicyRequest message. Also converts values to other types if specified.
+ * @param message DeletePolicyRequest
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.iam.v2.DeletePolicyRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this DeletePolicyRequest to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for DeletePolicyRequest
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a PolicyOperationMetadata. */
+ interface IPolicyOperationMetadata {
+
+ /** PolicyOperationMetadata createTime */
+ createTime?: (google.protobuf.ITimestamp|null);
+ }
+
+ /** Represents a PolicyOperationMetadata. */
+ class PolicyOperationMetadata implements IPolicyOperationMetadata {
+
+ /**
+ * Constructs a new PolicyOperationMetadata.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.iam.v2.IPolicyOperationMetadata);
+
+ /** PolicyOperationMetadata createTime. */
+ public createTime?: (google.protobuf.ITimestamp|null);
+
+ /**
+ * Creates a new PolicyOperationMetadata instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns PolicyOperationMetadata instance
+ */
+ public static create(properties?: google.iam.v2.IPolicyOperationMetadata): google.iam.v2.PolicyOperationMetadata;
+
+ /**
+ * Encodes the specified PolicyOperationMetadata message. Does not implicitly {@link google.iam.v2.PolicyOperationMetadata.verify|verify} messages.
+ * @param message PolicyOperationMetadata message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.iam.v2.IPolicyOperationMetadata, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified PolicyOperationMetadata message, length delimited. Does not implicitly {@link google.iam.v2.PolicyOperationMetadata.verify|verify} messages.
+ * @param message PolicyOperationMetadata message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.iam.v2.IPolicyOperationMetadata, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a PolicyOperationMetadata message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns PolicyOperationMetadata
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v2.PolicyOperationMetadata;
+
+ /**
+ * Decodes a PolicyOperationMetadata message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns PolicyOperationMetadata
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v2.PolicyOperationMetadata;
+
+ /**
+ * Verifies a PolicyOperationMetadata message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a PolicyOperationMetadata message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns PolicyOperationMetadata
+ */
+ public static fromObject(object: { [k: string]: any }): google.iam.v2.PolicyOperationMetadata;
+
+ /**
+ * Creates a plain object from a PolicyOperationMetadata message. Also converts values to other types if specified.
+ * @param message PolicyOperationMetadata
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.iam.v2.PolicyOperationMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this PolicyOperationMetadata to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for PolicyOperationMetadata
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a DenyRule. */
+ interface IDenyRule {
+
+ /** DenyRule deniedPrincipals */
+ deniedPrincipals?: (string[]|null);
+
+ /** DenyRule exceptionPrincipals */
+ exceptionPrincipals?: (string[]|null);
+
+ /** DenyRule deniedPermissions */
+ deniedPermissions?: (string[]|null);
+
+ /** DenyRule exceptionPermissions */
+ exceptionPermissions?: (string[]|null);
+
+ /** DenyRule denialCondition */
+ denialCondition?: (google.type.IExpr|null);
+ }
+
+ /** Represents a DenyRule. */
+ class DenyRule implements IDenyRule {
+
+ /**
+ * Constructs a new DenyRule.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.iam.v2.IDenyRule);
+
+ /** DenyRule deniedPrincipals. */
+ public deniedPrincipals: string[];
+
+ /** DenyRule exceptionPrincipals. */
+ public exceptionPrincipals: string[];
+
+ /** DenyRule deniedPermissions. */
+ public deniedPermissions: string[];
+
+ /** DenyRule exceptionPermissions. */
+ public exceptionPermissions: string[];
+
+ /** DenyRule denialCondition. */
+ public denialCondition?: (google.type.IExpr|null);
+
+ /**
+ * Creates a new DenyRule instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns DenyRule instance
+ */
+ public static create(properties?: google.iam.v2.IDenyRule): google.iam.v2.DenyRule;
+
+ /**
+ * Encodes the specified DenyRule message. Does not implicitly {@link google.iam.v2.DenyRule.verify|verify} messages.
+ * @param message DenyRule message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.iam.v2.IDenyRule, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified DenyRule message, length delimited. Does not implicitly {@link google.iam.v2.DenyRule.verify|verify} messages.
+ * @param message DenyRule message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.iam.v2.IDenyRule, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a DenyRule message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns DenyRule
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v2.DenyRule;
+
+ /**
+ * Decodes a DenyRule message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns DenyRule
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v2.DenyRule;
+
+ /**
+ * Verifies a DenyRule message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a DenyRule message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns DenyRule
+ */
+ public static fromObject(object: { [k: string]: any }): google.iam.v2.DenyRule;
+
+ /**
+ * Creates a plain object from a DenyRule message. Also converts values to other types if specified.
+ * @param message DenyRule
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.iam.v2.DenyRule, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this DenyRule to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for DenyRule
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+ }
+
+ /** Namespace type. */
+ namespace type {
+
+ /** Properties of an Expr. */
+ interface IExpr {
+
+ /** Expr expression */
+ expression?: (string|null);
+
+ /** Expr title */
+ title?: (string|null);
+
+ /** Expr description */
+ description?: (string|null);
+
+ /** Expr location */
+ location?: (string|null);
+ }
+
+ /** Represents an Expr. */
+ class Expr implements IExpr {
+
+ /**
+ * Constructs a new Expr.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.type.IExpr);
+
+ /** Expr expression. */
+ public expression: string;
+
+ /** Expr title. */
+ public title: string;
+
+ /** Expr description. */
+ public description: string;
+
+ /** Expr location. */
+ public location: string;
+
+ /**
+ * Creates a new Expr instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Expr instance
+ */
+ public static create(properties?: google.type.IExpr): google.type.Expr;
+
+ /**
+ * Encodes the specified Expr message. Does not implicitly {@link google.type.Expr.verify|verify} messages.
+ * @param message Expr message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.type.IExpr, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Expr message, length delimited. Does not implicitly {@link google.type.Expr.verify|verify} messages.
+ * @param message Expr message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.type.IExpr, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an Expr message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Expr
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.type.Expr;
+
+ /**
+ * Decodes an Expr message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Expr
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.type.Expr;
+
+ /**
+ * Verifies an Expr message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an Expr message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Expr
+ */
+ public static fromObject(object: { [k: string]: any }): google.type.Expr;
+
+ /**
+ * Creates a plain object from an Expr message. Also converts values to other types if specified.
+ * @param message Expr
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.type.Expr, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Expr to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Expr
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+
+ /** Namespace longrunning. */
+ namespace longrunning {
+
+ /** Represents an Operations */
+ class Operations extends $protobuf.rpc.Service {
+
+ /**
+ * Constructs a new Operations service.
+ * @param rpcImpl RPC implementation
+ * @param [requestDelimited=false] Whether requests are length-delimited
+ * @param [responseDelimited=false] Whether responses are length-delimited
+ */
+ constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean);
+
+ /**
+ * Creates new Operations service using the specified rpc implementation.
+ * @param rpcImpl RPC implementation
+ * @param [requestDelimited=false] Whether requests are length-delimited
+ * @param [responseDelimited=false] Whether responses are length-delimited
+ * @returns RPC service. Useful where requests and/or responses are streamed.
+ */
+ public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): Operations;
+
+ /**
+ * Calls ListOperations.
+ * @param request ListOperationsRequest message or plain object
+ * @param callback Node-style callback called with the error, if any, and ListOperationsResponse
+ */
+ public listOperations(request: google.longrunning.IListOperationsRequest, callback: google.longrunning.Operations.ListOperationsCallback): void;
+
+ /**
+ * Calls ListOperations.
+ * @param request ListOperationsRequest message or plain object
+ * @returns Promise
+ */
+ public listOperations(request: google.longrunning.IListOperationsRequest): Promise;
+
+ /**
+ * Calls GetOperation.
+ * @param request GetOperationRequest message or plain object
+ * @param callback Node-style callback called with the error, if any, and Operation
+ */
+ public getOperation(request: google.longrunning.IGetOperationRequest, callback: google.longrunning.Operations.GetOperationCallback): void;
+
+ /**
+ * Calls GetOperation.
+ * @param request GetOperationRequest message or plain object
+ * @returns Promise
+ */
+ public getOperation(request: google.longrunning.IGetOperationRequest): Promise;
+
+ /**
+ * Calls DeleteOperation.
+ * @param request DeleteOperationRequest message or plain object
+ * @param callback Node-style callback called with the error, if any, and Empty
+ */
+ public deleteOperation(request: google.longrunning.IDeleteOperationRequest, callback: google.longrunning.Operations.DeleteOperationCallback): void;
+
+ /**
+ * Calls DeleteOperation.
+ * @param request DeleteOperationRequest message or plain object
+ * @returns Promise
+ */
+ public deleteOperation(request: google.longrunning.IDeleteOperationRequest): Promise;
+
+ /**
+ * Calls CancelOperation.
+ * @param request CancelOperationRequest message or plain object
+ * @param callback Node-style callback called with the error, if any, and Empty
+ */
+ public cancelOperation(request: google.longrunning.ICancelOperationRequest, callback: google.longrunning.Operations.CancelOperationCallback): void;
+
+ /**
+ * Calls CancelOperation.
+ * @param request CancelOperationRequest message or plain object
+ * @returns Promise
+ */
+ public cancelOperation(request: google.longrunning.ICancelOperationRequest): Promise;
+
+ /**
+ * Calls WaitOperation.
+ * @param request WaitOperationRequest message or plain object
+ * @param callback Node-style callback called with the error, if any, and Operation
+ */
+ public waitOperation(request: google.longrunning.IWaitOperationRequest, callback: google.longrunning.Operations.WaitOperationCallback): void;
+
+ /**
+ * Calls WaitOperation.
+ * @param request WaitOperationRequest message or plain object
+ * @returns Promise
+ */
+ public waitOperation(request: google.longrunning.IWaitOperationRequest): Promise;
+ }
+
+ namespace Operations {
+
+ /**
+ * Callback as used by {@link google.longrunning.Operations|listOperations}.
+ * @param error Error, if any
+ * @param [response] ListOperationsResponse
+ */
+ type ListOperationsCallback = (error: (Error|null), response?: google.longrunning.ListOperationsResponse) => void;
+
+ /**
+ * Callback as used by {@link google.longrunning.Operations|getOperation}.
+ * @param error Error, if any
+ * @param [response] Operation
+ */
+ type GetOperationCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
+
+ /**
+ * Callback as used by {@link google.longrunning.Operations|deleteOperation}.
+ * @param error Error, if any
+ * @param [response] Empty
+ */
+ type DeleteOperationCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;
+
+ /**
+ * Callback as used by {@link google.longrunning.Operations|cancelOperation}.
+ * @param error Error, if any
+ * @param [response] Empty
+ */
+ type CancelOperationCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;
+
+ /**
+ * Callback as used by {@link google.longrunning.Operations|waitOperation}.
+ * @param error Error, if any
+ * @param [response] Operation
+ */
+ type WaitOperationCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
+ }
+
+ /** Properties of an Operation. */
+ interface IOperation {
+
+ /** Operation name */
+ name?: (string|null);
+
+ /** Operation metadata */
+ metadata?: (google.protobuf.IAny|null);
+
+ /** Operation done */
+ done?: (boolean|null);
+
+ /** Operation error */
+ error?: (google.rpc.IStatus|null);
+
+ /** Operation response */
+ response?: (google.protobuf.IAny|null);
+ }
+
+ /** Represents an Operation. */
+ class Operation implements IOperation {
+
+ /**
+ * Constructs a new Operation.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.longrunning.IOperation);
+
+ /** Operation name. */
+ public name: string;
+
+ /** Operation metadata. */
+ public metadata?: (google.protobuf.IAny|null);
+
+ /** Operation done. */
+ public done: boolean;
+
+ /** Operation error. */
+ public error?: (google.rpc.IStatus|null);
+
+ /** Operation response. */
+ public response?: (google.protobuf.IAny|null);
+
+ /** Operation result. */
+ public result?: ("error"|"response");
+
+ /**
+ * Creates a new Operation instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Operation instance
+ */
+ public static create(properties?: google.longrunning.IOperation): google.longrunning.Operation;
+
+ /**
+ * Encodes the specified Operation message. Does not implicitly {@link google.longrunning.Operation.verify|verify} messages.
+ * @param message Operation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.longrunning.IOperation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Operation message, length delimited. Does not implicitly {@link google.longrunning.Operation.verify|verify} messages.
+ * @param message Operation message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.longrunning.IOperation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an Operation message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Operation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.Operation;
+
+ /**
+ * Decodes an Operation message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Operation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.Operation;
+
+ /**
+ * Verifies an Operation message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an Operation message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Operation
+ */
+ public static fromObject(object: { [k: string]: any }): google.longrunning.Operation;
+
+ /**
+ * Creates a plain object from an Operation message. Also converts values to other types if specified.
+ * @param message Operation
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.longrunning.Operation, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Operation to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Operation
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a GetOperationRequest. */
+ interface IGetOperationRequest {
+
+ /** GetOperationRequest name */
+ name?: (string|null);
+ }
+
+ /** Represents a GetOperationRequest. */
+ class GetOperationRequest implements IGetOperationRequest {
+
+ /**
+ * Constructs a new GetOperationRequest.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.longrunning.IGetOperationRequest);
+
+ /** GetOperationRequest name. */
+ public name: string;
+
+ /**
+ * Creates a new GetOperationRequest instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns GetOperationRequest instance
+ */
+ public static create(properties?: google.longrunning.IGetOperationRequest): google.longrunning.GetOperationRequest;
+
+ /**
+ * Encodes the specified GetOperationRequest message. Does not implicitly {@link google.longrunning.GetOperationRequest.verify|verify} messages.
+ * @param message GetOperationRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.longrunning.IGetOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified GetOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.GetOperationRequest.verify|verify} messages.
+ * @param message GetOperationRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.longrunning.IGetOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a GetOperationRequest message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns GetOperationRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.GetOperationRequest;
+
+ /**
+ * Decodes a GetOperationRequest message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns GetOperationRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.GetOperationRequest;
+
+ /**
+ * Verifies a GetOperationRequest message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a GetOperationRequest message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns GetOperationRequest
+ */
+ public static fromObject(object: { [k: string]: any }): google.longrunning.GetOperationRequest;
+
+ /**
+ * Creates a plain object from a GetOperationRequest message. Also converts values to other types if specified.
+ * @param message GetOperationRequest
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.longrunning.GetOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this GetOperationRequest to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for GetOperationRequest
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a ListOperationsRequest. */
+ interface IListOperationsRequest {
+
+ /** ListOperationsRequest name */
+ name?: (string|null);
+
+ /** ListOperationsRequest filter */
+ filter?: (string|null);
+
+ /** ListOperationsRequest pageSize */
+ pageSize?: (number|null);
+
+ /** ListOperationsRequest pageToken */
+ pageToken?: (string|null);
+ }
+
+ /** Represents a ListOperationsRequest. */
+ class ListOperationsRequest implements IListOperationsRequest {
+
+ /**
+ * Constructs a new ListOperationsRequest.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.longrunning.IListOperationsRequest);
+
+ /** ListOperationsRequest name. */
+ public name: string;
+
+ /** ListOperationsRequest filter. */
+ public filter: string;
+
+ /** ListOperationsRequest pageSize. */
+ public pageSize: number;
+
+ /** ListOperationsRequest pageToken. */
+ public pageToken: string;
+
+ /**
+ * Creates a new ListOperationsRequest instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ListOperationsRequest instance
+ */
+ public static create(properties?: google.longrunning.IListOperationsRequest): google.longrunning.ListOperationsRequest;
+
+ /**
+ * Encodes the specified ListOperationsRequest message. Does not implicitly {@link google.longrunning.ListOperationsRequest.verify|verify} messages.
+ * @param message ListOperationsRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.longrunning.IListOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ListOperationsRequest message, length delimited. Does not implicitly {@link google.longrunning.ListOperationsRequest.verify|verify} messages.
+ * @param message ListOperationsRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.longrunning.IListOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a ListOperationsRequest message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ListOperationsRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.ListOperationsRequest;
+
+ /**
+ * Decodes a ListOperationsRequest message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ListOperationsRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.ListOperationsRequest;
+
+ /**
+ * Verifies a ListOperationsRequest message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a ListOperationsRequest message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ListOperationsRequest
+ */
+ public static fromObject(object: { [k: string]: any }): google.longrunning.ListOperationsRequest;
+
+ /**
+ * Creates a plain object from a ListOperationsRequest message. Also converts values to other types if specified.
+ * @param message ListOperationsRequest
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.longrunning.ListOperationsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ListOperationsRequest to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ListOperationsRequest
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a ListOperationsResponse. */
+ interface IListOperationsResponse {
+
+ /** ListOperationsResponse operations */
+ operations?: (google.longrunning.IOperation[]|null);
+
+ /** ListOperationsResponse nextPageToken */
+ nextPageToken?: (string|null);
+ }
+
+ /** Represents a ListOperationsResponse. */
+ class ListOperationsResponse implements IListOperationsResponse {
+
+ /**
+ * Constructs a new ListOperationsResponse.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.longrunning.IListOperationsResponse);
+
+ /** ListOperationsResponse operations. */
+ public operations: google.longrunning.IOperation[];
+
+ /** ListOperationsResponse nextPageToken. */
+ public nextPageToken: string;
+
+ /**
+ * Creates a new ListOperationsResponse instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns ListOperationsResponse instance
+ */
+ public static create(properties?: google.longrunning.IListOperationsResponse): google.longrunning.ListOperationsResponse;
+
+ /**
+ * Encodes the specified ListOperationsResponse message. Does not implicitly {@link google.longrunning.ListOperationsResponse.verify|verify} messages.
+ * @param message ListOperationsResponse message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.longrunning.IListOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified ListOperationsResponse message, length delimited. Does not implicitly {@link google.longrunning.ListOperationsResponse.verify|verify} messages.
+ * @param message ListOperationsResponse message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.longrunning.IListOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a ListOperationsResponse message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns ListOperationsResponse
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.ListOperationsResponse;
+
+ /**
+ * Decodes a ListOperationsResponse message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns ListOperationsResponse
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.ListOperationsResponse;
+
+ /**
+ * Verifies a ListOperationsResponse message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a ListOperationsResponse message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns ListOperationsResponse
+ */
+ public static fromObject(object: { [k: string]: any }): google.longrunning.ListOperationsResponse;
+
+ /**
+ * Creates a plain object from a ListOperationsResponse message. Also converts values to other types if specified.
+ * @param message ListOperationsResponse
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.longrunning.ListOperationsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this ListOperationsResponse to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for ListOperationsResponse
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a CancelOperationRequest. */
+ interface ICancelOperationRequest {
+
+ /** CancelOperationRequest name */
+ name?: (string|null);
+ }
+
+ /** Represents a CancelOperationRequest. */
+ class CancelOperationRequest implements ICancelOperationRequest {
+
+ /**
+ * Constructs a new CancelOperationRequest.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.longrunning.ICancelOperationRequest);
+
+ /** CancelOperationRequest name. */
+ public name: string;
+
+ /**
+ * Creates a new CancelOperationRequest instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns CancelOperationRequest instance
+ */
+ public static create(properties?: google.longrunning.ICancelOperationRequest): google.longrunning.CancelOperationRequest;
+
+ /**
+ * Encodes the specified CancelOperationRequest message. Does not implicitly {@link google.longrunning.CancelOperationRequest.verify|verify} messages.
+ * @param message CancelOperationRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.longrunning.ICancelOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified CancelOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.CancelOperationRequest.verify|verify} messages.
+ * @param message CancelOperationRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.longrunning.ICancelOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a CancelOperationRequest message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns CancelOperationRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.CancelOperationRequest;
+
+ /**
+ * Decodes a CancelOperationRequest message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns CancelOperationRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.CancelOperationRequest;
+
+ /**
+ * Verifies a CancelOperationRequest message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a CancelOperationRequest message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns CancelOperationRequest
+ */
+ public static fromObject(object: { [k: string]: any }): google.longrunning.CancelOperationRequest;
+
+ /**
+ * Creates a plain object from a CancelOperationRequest message. Also converts values to other types if specified.
+ * @param message CancelOperationRequest
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.longrunning.CancelOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this CancelOperationRequest to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for CancelOperationRequest
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a DeleteOperationRequest. */
+ interface IDeleteOperationRequest {
+
+ /** DeleteOperationRequest name */
+ name?: (string|null);
+ }
+
+ /** Represents a DeleteOperationRequest. */
+ class DeleteOperationRequest implements IDeleteOperationRequest {
+
+ /**
+ * Constructs a new DeleteOperationRequest.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.longrunning.IDeleteOperationRequest);
+
+ /** DeleteOperationRequest name. */
+ public name: string;
+
+ /**
+ * Creates a new DeleteOperationRequest instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns DeleteOperationRequest instance
+ */
+ public static create(properties?: google.longrunning.IDeleteOperationRequest): google.longrunning.DeleteOperationRequest;
+
+ /**
+ * Encodes the specified DeleteOperationRequest message. Does not implicitly {@link google.longrunning.DeleteOperationRequest.verify|verify} messages.
+ * @param message DeleteOperationRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.longrunning.IDeleteOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified DeleteOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.DeleteOperationRequest.verify|verify} messages.
+ * @param message DeleteOperationRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.longrunning.IDeleteOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a DeleteOperationRequest message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns DeleteOperationRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.DeleteOperationRequest;
+
+ /**
+ * Decodes a DeleteOperationRequest message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns DeleteOperationRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.DeleteOperationRequest;
+
+ /**
+ * Verifies a DeleteOperationRequest message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a DeleteOperationRequest message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns DeleteOperationRequest
+ */
+ public static fromObject(object: { [k: string]: any }): google.longrunning.DeleteOperationRequest;
+
+ /**
+ * Creates a plain object from a DeleteOperationRequest message. Also converts values to other types if specified.
+ * @param message DeleteOperationRequest
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.longrunning.DeleteOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this DeleteOperationRequest to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for DeleteOperationRequest
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of a WaitOperationRequest. */
+ interface IWaitOperationRequest {
+
+ /** WaitOperationRequest name */
+ name?: (string|null);
+
+ /** WaitOperationRequest timeout */
+ timeout?: (google.protobuf.IDuration|null);
+ }
+
+ /** Represents a WaitOperationRequest. */
+ class WaitOperationRequest implements IWaitOperationRequest {
+
+ /**
+ * Constructs a new WaitOperationRequest.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.longrunning.IWaitOperationRequest);
+
+ /** WaitOperationRequest name. */
+ public name: string;
+
+ /** WaitOperationRequest timeout. */
+ public timeout?: (google.protobuf.IDuration|null);
+
+ /**
+ * Creates a new WaitOperationRequest instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns WaitOperationRequest instance
+ */
+ public static create(properties?: google.longrunning.IWaitOperationRequest): google.longrunning.WaitOperationRequest;
+
+ /**
+ * Encodes the specified WaitOperationRequest message. Does not implicitly {@link google.longrunning.WaitOperationRequest.verify|verify} messages.
+ * @param message WaitOperationRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.longrunning.IWaitOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified WaitOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.WaitOperationRequest.verify|verify} messages.
+ * @param message WaitOperationRequest message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.longrunning.IWaitOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a WaitOperationRequest message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns WaitOperationRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.WaitOperationRequest;
+
+ /**
+ * Decodes a WaitOperationRequest message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns WaitOperationRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.WaitOperationRequest;
+
+ /**
+ * Verifies a WaitOperationRequest message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a WaitOperationRequest message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns WaitOperationRequest
+ */
+ public static fromObject(object: { [k: string]: any }): google.longrunning.WaitOperationRequest;
+
+ /**
+ * Creates a plain object from a WaitOperationRequest message. Also converts values to other types if specified.
+ * @param message WaitOperationRequest
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.longrunning.WaitOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this WaitOperationRequest to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for WaitOperationRequest
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
+ /** Properties of an OperationInfo. */
+ interface IOperationInfo {
+
+ /** OperationInfo responseType */
+ responseType?: (string|null);
+
+ /** OperationInfo metadataType */
+ metadataType?: (string|null);
+ }
+
+ /** Represents an OperationInfo. */
+ class OperationInfo implements IOperationInfo {
+
+ /**
+ * Constructs a new OperationInfo.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.longrunning.IOperationInfo);
+
+ /** OperationInfo responseType. */
+ public responseType: string;
+
+ /** OperationInfo metadataType. */
+ public metadataType: string;
+
+ /**
+ * Creates a new OperationInfo instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns OperationInfo instance
+ */
+ public static create(properties?: google.longrunning.IOperationInfo): google.longrunning.OperationInfo;
+
+ /**
+ * Encodes the specified OperationInfo message. Does not implicitly {@link google.longrunning.OperationInfo.verify|verify} messages.
+ * @param message OperationInfo message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.longrunning.IOperationInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified OperationInfo message, length delimited. Does not implicitly {@link google.longrunning.OperationInfo.verify|verify} messages.
+ * @param message OperationInfo message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.longrunning.IOperationInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes an OperationInfo message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns OperationInfo
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.OperationInfo;
+
+ /**
+ * Decodes an OperationInfo message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns OperationInfo
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.OperationInfo;
+
+ /**
+ * Verifies an OperationInfo message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates an OperationInfo message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns OperationInfo
+ */
+ public static fromObject(object: { [k: string]: any }): google.longrunning.OperationInfo;
+
+ /**
+ * Creates a plain object from an OperationInfo message. Also converts values to other types if specified.
+ * @param message OperationInfo
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.longrunning.OperationInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this OperationInfo to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for OperationInfo
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+
+ /** Namespace rpc. */
+ namespace rpc {
+
+ /** Properties of a Status. */
+ interface IStatus {
+
+ /** Status code */
+ code?: (number|null);
+
+ /** Status message */
+ message?: (string|null);
+
+ /** Status details */
+ details?: (google.protobuf.IAny[]|null);
+ }
+
+ /** Represents a Status. */
+ class Status implements IStatus {
+
+ /**
+ * Constructs a new Status.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: google.rpc.IStatus);
+
+ /** Status code. */
+ public code: number;
+
+ /** Status message. */
+ public message: string;
+
+ /** Status details. */
+ public details: google.protobuf.IAny[];
+
+ /**
+ * Creates a new Status instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns Status instance
+ */
+ public static create(properties?: google.rpc.IStatus): google.rpc.Status;
+
+ /**
+ * Encodes the specified Status message. Does not implicitly {@link google.rpc.Status.verify|verify} messages.
+ * @param message Status message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: google.rpc.IStatus, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified Status message, length delimited. Does not implicitly {@link google.rpc.Status.verify|verify} messages.
+ * @param message Status message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: google.rpc.IStatus, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a Status message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns Status
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.rpc.Status;
+
+ /**
+ * Decodes a Status message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns Status
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.rpc.Status;
+
+ /**
+ * Verifies a Status message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a Status message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns Status
+ */
+ public static fromObject(object: { [k: string]: any }): google.rpc.Status;
+
+ /**
+ * Creates a plain object from a Status message. Also converts values to other types if specified.
+ * @param message Status
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: google.rpc.Status, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this Status to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for Status
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+ }
+}
diff --git a/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/protos.js b/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/protos.js
new file mode 100644
index 00000000000..eedf4313a3d
--- /dev/null
+++ b/owl-bot-staging/google-cloud-policytroubleshooter-iam/protos/protos.js
@@ -0,0 +1,40409 @@
+// Copyright 2026 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
+(function(global, factory) { /* global define, require, module */
+
+ /* AMD */ if (typeof define === 'function' && define.amd)
+ define(["protobufjs/minimal"], factory);
+
+ /* CommonJS */ else if (typeof require === 'function' && typeof module === 'object' && module && module.exports)
+ module.exports = factory(require("google-gax/build/src/protobuf").protobufMinimal);
+
+})(this, function($protobuf) {
+ "use strict";
+
+ // Common aliases
+ var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;
+
+ // Exported root namespace
+ var $root = $protobuf.roots._google_cloud_policy_troubleshooter_iam_protos || ($protobuf.roots._google_cloud_policy_troubleshooter_iam_protos = {});
+
+ $root.google = (function() {
+
+ /**
+ * Namespace google.
+ * @exports google
+ * @namespace
+ */
+ var google = {};
+
+ google.cloud = (function() {
+
+ /**
+ * Namespace cloud.
+ * @memberof google
+ * @namespace
+ */
+ var cloud = {};
+
+ cloud.policytroubleshooter = (function() {
+
+ /**
+ * Namespace policytroubleshooter.
+ * @memberof google.cloud
+ * @namespace
+ */
+ var policytroubleshooter = {};
+
+ policytroubleshooter.iam = (function() {
+
+ /**
+ * Namespace iam.
+ * @memberof google.cloud.policytroubleshooter
+ * @namespace
+ */
+ var iam = {};
+
+ iam.v3 = (function() {
+
+ /**
+ * Namespace v3.
+ * @memberof google.cloud.policytroubleshooter.iam
+ * @namespace
+ */
+ var v3 = {};
+
+ v3.PolicyTroubleshooter = (function() {
+
+ /**
+ * Constructs a new PolicyTroubleshooter service.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @classdesc Represents a PolicyTroubleshooter
+ * @extends $protobuf.rpc.Service
+ * @constructor
+ * @param {$protobuf.RPCImpl} rpcImpl RPC implementation
+ * @param {boolean} [requestDelimited=false] Whether requests are length-delimited
+ * @param {boolean} [responseDelimited=false] Whether responses are length-delimited
+ */
+ function PolicyTroubleshooter(rpcImpl, requestDelimited, responseDelimited) {
+ $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited);
+ }
+
+ (PolicyTroubleshooter.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = PolicyTroubleshooter;
+
+ /**
+ * Creates new PolicyTroubleshooter service using the specified rpc implementation.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.PolicyTroubleshooter
+ * @static
+ * @param {$protobuf.RPCImpl} rpcImpl RPC implementation
+ * @param {boolean} [requestDelimited=false] Whether requests are length-delimited
+ * @param {boolean} [responseDelimited=false] Whether responses are length-delimited
+ * @returns {PolicyTroubleshooter} RPC service. Useful where requests and/or responses are streamed.
+ */
+ PolicyTroubleshooter.create = function create(rpcImpl, requestDelimited, responseDelimited) {
+ return new this(rpcImpl, requestDelimited, responseDelimited);
+ };
+
+ /**
+ * Callback as used by {@link google.cloud.policytroubleshooter.iam.v3.PolicyTroubleshooter|troubleshootIamPolicy}.
+ * @memberof google.cloud.policytroubleshooter.iam.v3.PolicyTroubleshooter
+ * @typedef TroubleshootIamPolicyCallback
+ * @type {function}
+ * @param {Error|null} error Error, if any
+ * @param {google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse} [response] TroubleshootIamPolicyResponse
+ */
+
+ /**
+ * Calls TroubleshootIamPolicy.
+ * @function troubleshootIamPolicy
+ * @memberof google.cloud.policytroubleshooter.iam.v3.PolicyTroubleshooter
+ * @instance
+ * @param {google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyRequest} request TroubleshootIamPolicyRequest message or plain object
+ * @param {google.cloud.policytroubleshooter.iam.v3.PolicyTroubleshooter.TroubleshootIamPolicyCallback} callback Node-style callback called with the error, if any, and TroubleshootIamPolicyResponse
+ * @returns {undefined}
+ * @variation 1
+ */
+ Object.defineProperty(PolicyTroubleshooter.prototype.troubleshootIamPolicy = function troubleshootIamPolicy(request, callback) {
+ return this.rpcCall(troubleshootIamPolicy, $root.google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest, $root.google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse, request, callback);
+ }, "name", { value: "TroubleshootIamPolicy" });
+
+ /**
+ * Calls TroubleshootIamPolicy.
+ * @function troubleshootIamPolicy
+ * @memberof google.cloud.policytroubleshooter.iam.v3.PolicyTroubleshooter
+ * @instance
+ * @param {google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyRequest} request TroubleshootIamPolicyRequest message or plain object
+ * @returns {Promise} Promise
+ * @variation 2
+ */
+
+ return PolicyTroubleshooter;
+ })();
+
+ /**
+ * AllowAccessState enum.
+ * @name google.cloud.policytroubleshooter.iam.v3.AllowAccessState
+ * @enum {number}
+ * @property {number} ALLOW_ACCESS_STATE_UNSPECIFIED=0 ALLOW_ACCESS_STATE_UNSPECIFIED value
+ * @property {number} ALLOW_ACCESS_STATE_GRANTED=1 ALLOW_ACCESS_STATE_GRANTED value
+ * @property {number} ALLOW_ACCESS_STATE_NOT_GRANTED=2 ALLOW_ACCESS_STATE_NOT_GRANTED value
+ * @property {number} ALLOW_ACCESS_STATE_UNKNOWN_CONDITIONAL=3 ALLOW_ACCESS_STATE_UNKNOWN_CONDITIONAL value
+ * @property {number} ALLOW_ACCESS_STATE_UNKNOWN_INFO=4 ALLOW_ACCESS_STATE_UNKNOWN_INFO value
+ */
+ v3.AllowAccessState = (function() {
+ var valuesById = {}, values = Object.create(valuesById);
+ values[valuesById[0] = "ALLOW_ACCESS_STATE_UNSPECIFIED"] = 0;
+ values[valuesById[1] = "ALLOW_ACCESS_STATE_GRANTED"] = 1;
+ values[valuesById[2] = "ALLOW_ACCESS_STATE_NOT_GRANTED"] = 2;
+ values[valuesById[3] = "ALLOW_ACCESS_STATE_UNKNOWN_CONDITIONAL"] = 3;
+ values[valuesById[4] = "ALLOW_ACCESS_STATE_UNKNOWN_INFO"] = 4;
+ return values;
+ })();
+
+ /**
+ * DenyAccessState enum.
+ * @name google.cloud.policytroubleshooter.iam.v3.DenyAccessState
+ * @enum {number}
+ * @property {number} DENY_ACCESS_STATE_UNSPECIFIED=0 DENY_ACCESS_STATE_UNSPECIFIED value
+ * @property {number} DENY_ACCESS_STATE_DENIED=1 DENY_ACCESS_STATE_DENIED value
+ * @property {number} DENY_ACCESS_STATE_NOT_DENIED=2 DENY_ACCESS_STATE_NOT_DENIED value
+ * @property {number} DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL=3 DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL value
+ * @property {number} DENY_ACCESS_STATE_UNKNOWN_INFO=4 DENY_ACCESS_STATE_UNKNOWN_INFO value
+ */
+ v3.DenyAccessState = (function() {
+ var valuesById = {}, values = Object.create(valuesById);
+ values[valuesById[0] = "DENY_ACCESS_STATE_UNSPECIFIED"] = 0;
+ values[valuesById[1] = "DENY_ACCESS_STATE_DENIED"] = 1;
+ values[valuesById[2] = "DENY_ACCESS_STATE_NOT_DENIED"] = 2;
+ values[valuesById[3] = "DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL"] = 3;
+ values[valuesById[4] = "DENY_ACCESS_STATE_UNKNOWN_INFO"] = 4;
+ return values;
+ })();
+
+ /**
+ * RolePermissionInclusionState enum.
+ * @name google.cloud.policytroubleshooter.iam.v3.RolePermissionInclusionState
+ * @enum {number}
+ * @property {number} ROLE_PERMISSION_INCLUSION_STATE_UNSPECIFIED=0 ROLE_PERMISSION_INCLUSION_STATE_UNSPECIFIED value
+ * @property {number} ROLE_PERMISSION_INCLUDED=1 ROLE_PERMISSION_INCLUDED value
+ * @property {number} ROLE_PERMISSION_NOT_INCLUDED=2 ROLE_PERMISSION_NOT_INCLUDED value
+ * @property {number} ROLE_PERMISSION_UNKNOWN_INFO=3 ROLE_PERMISSION_UNKNOWN_INFO value
+ */
+ v3.RolePermissionInclusionState = (function() {
+ var valuesById = {}, values = Object.create(valuesById);
+ values[valuesById[0] = "ROLE_PERMISSION_INCLUSION_STATE_UNSPECIFIED"] = 0;
+ values[valuesById[1] = "ROLE_PERMISSION_INCLUDED"] = 1;
+ values[valuesById[2] = "ROLE_PERMISSION_NOT_INCLUDED"] = 2;
+ values[valuesById[3] = "ROLE_PERMISSION_UNKNOWN_INFO"] = 3;
+ return values;
+ })();
+
+ /**
+ * PermissionPatternMatchingState enum.
+ * @name google.cloud.policytroubleshooter.iam.v3.PermissionPatternMatchingState
+ * @enum {number}
+ * @property {number} PERMISSION_PATTERN_MATCHING_STATE_UNSPECIFIED=0 PERMISSION_PATTERN_MATCHING_STATE_UNSPECIFIED value
+ * @property {number} PERMISSION_PATTERN_MATCHED=1 PERMISSION_PATTERN_MATCHED value
+ * @property {number} PERMISSION_PATTERN_NOT_MATCHED=2 PERMISSION_PATTERN_NOT_MATCHED value
+ */
+ v3.PermissionPatternMatchingState = (function() {
+ var valuesById = {}, values = Object.create(valuesById);
+ values[valuesById[0] = "PERMISSION_PATTERN_MATCHING_STATE_UNSPECIFIED"] = 0;
+ values[valuesById[1] = "PERMISSION_PATTERN_MATCHED"] = 1;
+ values[valuesById[2] = "PERMISSION_PATTERN_NOT_MATCHED"] = 2;
+ return values;
+ })();
+
+ /**
+ * MembershipMatchingState enum.
+ * @name google.cloud.policytroubleshooter.iam.v3.MembershipMatchingState
+ * @enum {number}
+ * @property {number} MEMBERSHIP_MATCHING_STATE_UNSPECIFIED=0 MEMBERSHIP_MATCHING_STATE_UNSPECIFIED value
+ * @property {number} MEMBERSHIP_MATCHED=1 MEMBERSHIP_MATCHED value
+ * @property {number} MEMBERSHIP_NOT_MATCHED=2 MEMBERSHIP_NOT_MATCHED value
+ * @property {number} MEMBERSHIP_UNKNOWN_INFO=3 MEMBERSHIP_UNKNOWN_INFO value
+ * @property {number} MEMBERSHIP_UNKNOWN_UNSUPPORTED=4 MEMBERSHIP_UNKNOWN_UNSUPPORTED value
+ */
+ v3.MembershipMatchingState = (function() {
+ var valuesById = {}, values = Object.create(valuesById);
+ values[valuesById[0] = "MEMBERSHIP_MATCHING_STATE_UNSPECIFIED"] = 0;
+ values[valuesById[1] = "MEMBERSHIP_MATCHED"] = 1;
+ values[valuesById[2] = "MEMBERSHIP_NOT_MATCHED"] = 2;
+ values[valuesById[3] = "MEMBERSHIP_UNKNOWN_INFO"] = 3;
+ values[valuesById[4] = "MEMBERSHIP_UNKNOWN_UNSUPPORTED"] = 4;
+ return values;
+ })();
+
+ /**
+ * HeuristicRelevance enum.
+ * @name google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance
+ * @enum {number}
+ * @property {number} HEURISTIC_RELEVANCE_UNSPECIFIED=0 HEURISTIC_RELEVANCE_UNSPECIFIED value
+ * @property {number} HEURISTIC_RELEVANCE_NORMAL=1 HEURISTIC_RELEVANCE_NORMAL value
+ * @property {number} HEURISTIC_RELEVANCE_HIGH=2 HEURISTIC_RELEVANCE_HIGH value
+ */
+ v3.HeuristicRelevance = (function() {
+ var valuesById = {}, values = Object.create(valuesById);
+ values[valuesById[0] = "HEURISTIC_RELEVANCE_UNSPECIFIED"] = 0;
+ values[valuesById[1] = "HEURISTIC_RELEVANCE_NORMAL"] = 1;
+ values[valuesById[2] = "HEURISTIC_RELEVANCE_HIGH"] = 2;
+ return values;
+ })();
+
+ v3.TroubleshootIamPolicyRequest = (function() {
+
+ /**
+ * Properties of a TroubleshootIamPolicyRequest.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @interface ITroubleshootIamPolicyRequest
+ * @property {google.cloud.policytroubleshooter.iam.v3.IAccessTuple|null} [accessTuple] TroubleshootIamPolicyRequest accessTuple
+ */
+
+ /**
+ * Constructs a new TroubleshootIamPolicyRequest.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @classdesc Represents a TroubleshootIamPolicyRequest.
+ * @implements ITroubleshootIamPolicyRequest
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyRequest=} [properties] Properties to set
+ */
+ function TroubleshootIamPolicyRequest(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * TroubleshootIamPolicyRequest accessTuple.
+ * @member {google.cloud.policytroubleshooter.iam.v3.IAccessTuple|null|undefined} accessTuple
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest
+ * @instance
+ */
+ TroubleshootIamPolicyRequest.prototype.accessTuple = null;
+
+ /**
+ * Creates a new TroubleshootIamPolicyRequest instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyRequest=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest} TroubleshootIamPolicyRequest instance
+ */
+ TroubleshootIamPolicyRequest.create = function create(properties) {
+ return new TroubleshootIamPolicyRequest(properties);
+ };
+
+ /**
+ * Encodes the specified TroubleshootIamPolicyRequest message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyRequest} message TroubleshootIamPolicyRequest message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ TroubleshootIamPolicyRequest.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.accessTuple != null && Object.hasOwnProperty.call(message, "accessTuple"))
+ $root.google.cloud.policytroubleshooter.iam.v3.AccessTuple.encode(message.accessTuple, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified TroubleshootIamPolicyRequest message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyRequest} message TroubleshootIamPolicyRequest message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ TroubleshootIamPolicyRequest.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a TroubleshootIamPolicyRequest message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest} TroubleshootIamPolicyRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ TroubleshootIamPolicyRequest.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.accessTuple = $root.google.cloud.policytroubleshooter.iam.v3.AccessTuple.decode(reader, reader.uint32());
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a TroubleshootIamPolicyRequest message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest} TroubleshootIamPolicyRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ TroubleshootIamPolicyRequest.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a TroubleshootIamPolicyRequest message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ TroubleshootIamPolicyRequest.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.accessTuple != null && message.hasOwnProperty("accessTuple")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.AccessTuple.verify(message.accessTuple);
+ if (error)
+ return "accessTuple." + error;
+ }
+ return null;
+ };
+
+ /**
+ * Creates a TroubleshootIamPolicyRequest message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest} TroubleshootIamPolicyRequest
+ */
+ TroubleshootIamPolicyRequest.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest();
+ if (object.accessTuple != null) {
+ if (typeof object.accessTuple !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest.accessTuple: object expected");
+ message.accessTuple = $root.google.cloud.policytroubleshooter.iam.v3.AccessTuple.fromObject(object.accessTuple);
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a TroubleshootIamPolicyRequest message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest} message TroubleshootIamPolicyRequest
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ TroubleshootIamPolicyRequest.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults)
+ object.accessTuple = null;
+ if (message.accessTuple != null && message.hasOwnProperty("accessTuple"))
+ object.accessTuple = $root.google.cloud.policytroubleshooter.iam.v3.AccessTuple.toObject(message.accessTuple, options);
+ return object;
+ };
+
+ /**
+ * Converts this TroubleshootIamPolicyRequest to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ TroubleshootIamPolicyRequest.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for TroubleshootIamPolicyRequest
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ TroubleshootIamPolicyRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyRequest";
+ };
+
+ return TroubleshootIamPolicyRequest;
+ })();
+
+ v3.TroubleshootIamPolicyResponse = (function() {
+
+ /**
+ * Properties of a TroubleshootIamPolicyResponse.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @interface ITroubleshootIamPolicyResponse
+ * @property {google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse.OverallAccessState|null} [overallAccessState] TroubleshootIamPolicyResponse overallAccessState
+ * @property {google.cloud.policytroubleshooter.iam.v3.IAccessTuple|null} [accessTuple] TroubleshootIamPolicyResponse accessTuple
+ * @property {google.cloud.policytroubleshooter.iam.v3.IAllowPolicyExplanation|null} [allowPolicyExplanation] TroubleshootIamPolicyResponse allowPolicyExplanation
+ * @property {google.cloud.policytroubleshooter.iam.v3.IDenyPolicyExplanation|null} [denyPolicyExplanation] TroubleshootIamPolicyResponse denyPolicyExplanation
+ */
+
+ /**
+ * Constructs a new TroubleshootIamPolicyResponse.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @classdesc Represents a TroubleshootIamPolicyResponse.
+ * @implements ITroubleshootIamPolicyResponse
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyResponse=} [properties] Properties to set
+ */
+ function TroubleshootIamPolicyResponse(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * TroubleshootIamPolicyResponse overallAccessState.
+ * @member {google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse.OverallAccessState} overallAccessState
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse
+ * @instance
+ */
+ TroubleshootIamPolicyResponse.prototype.overallAccessState = 0;
+
+ /**
+ * TroubleshootIamPolicyResponse accessTuple.
+ * @member {google.cloud.policytroubleshooter.iam.v3.IAccessTuple|null|undefined} accessTuple
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse
+ * @instance
+ */
+ TroubleshootIamPolicyResponse.prototype.accessTuple = null;
+
+ /**
+ * TroubleshootIamPolicyResponse allowPolicyExplanation.
+ * @member {google.cloud.policytroubleshooter.iam.v3.IAllowPolicyExplanation|null|undefined} allowPolicyExplanation
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse
+ * @instance
+ */
+ TroubleshootIamPolicyResponse.prototype.allowPolicyExplanation = null;
+
+ /**
+ * TroubleshootIamPolicyResponse denyPolicyExplanation.
+ * @member {google.cloud.policytroubleshooter.iam.v3.IDenyPolicyExplanation|null|undefined} denyPolicyExplanation
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse
+ * @instance
+ */
+ TroubleshootIamPolicyResponse.prototype.denyPolicyExplanation = null;
+
+ /**
+ * Creates a new TroubleshootIamPolicyResponse instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyResponse=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse} TroubleshootIamPolicyResponse instance
+ */
+ TroubleshootIamPolicyResponse.create = function create(properties) {
+ return new TroubleshootIamPolicyResponse(properties);
+ };
+
+ /**
+ * Encodes the specified TroubleshootIamPolicyResponse message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyResponse} message TroubleshootIamPolicyResponse message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ TroubleshootIamPolicyResponse.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.overallAccessState != null && Object.hasOwnProperty.call(message, "overallAccessState"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.overallAccessState);
+ if (message.accessTuple != null && Object.hasOwnProperty.call(message, "accessTuple"))
+ $root.google.cloud.policytroubleshooter.iam.v3.AccessTuple.encode(message.accessTuple, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+ if (message.allowPolicyExplanation != null && Object.hasOwnProperty.call(message, "allowPolicyExplanation"))
+ $root.google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation.encode(message.allowPolicyExplanation, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+ if (message.denyPolicyExplanation != null && Object.hasOwnProperty.call(message, "denyPolicyExplanation"))
+ $root.google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation.encode(message.denyPolicyExplanation, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified TroubleshootIamPolicyResponse message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ITroubleshootIamPolicyResponse} message TroubleshootIamPolicyResponse message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ TroubleshootIamPolicyResponse.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a TroubleshootIamPolicyResponse message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse} TroubleshootIamPolicyResponse
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ TroubleshootIamPolicyResponse.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.overallAccessState = reader.int32();
+ break;
+ }
+ case 2: {
+ message.accessTuple = $root.google.cloud.policytroubleshooter.iam.v3.AccessTuple.decode(reader, reader.uint32());
+ break;
+ }
+ case 3: {
+ message.allowPolicyExplanation = $root.google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation.decode(reader, reader.uint32());
+ break;
+ }
+ case 4: {
+ message.denyPolicyExplanation = $root.google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation.decode(reader, reader.uint32());
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a TroubleshootIamPolicyResponse message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse} TroubleshootIamPolicyResponse
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ TroubleshootIamPolicyResponse.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a TroubleshootIamPolicyResponse message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ TroubleshootIamPolicyResponse.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.overallAccessState != null && message.hasOwnProperty("overallAccessState"))
+ switch (message.overallAccessState) {
+ default:
+ return "overallAccessState: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.accessTuple != null && message.hasOwnProperty("accessTuple")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.AccessTuple.verify(message.accessTuple);
+ if (error)
+ return "accessTuple." + error;
+ }
+ if (message.allowPolicyExplanation != null && message.hasOwnProperty("allowPolicyExplanation")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation.verify(message.allowPolicyExplanation);
+ if (error)
+ return "allowPolicyExplanation." + error;
+ }
+ if (message.denyPolicyExplanation != null && message.hasOwnProperty("denyPolicyExplanation")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation.verify(message.denyPolicyExplanation);
+ if (error)
+ return "denyPolicyExplanation." + error;
+ }
+ return null;
+ };
+
+ /**
+ * Creates a TroubleshootIamPolicyResponse message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse} TroubleshootIamPolicyResponse
+ */
+ TroubleshootIamPolicyResponse.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse();
+ switch (object.overallAccessState) {
+ default:
+ if (typeof object.overallAccessState === "number") {
+ message.overallAccessState = object.overallAccessState;
+ break;
+ }
+ break;
+ case "OVERALL_ACCESS_STATE_UNSPECIFIED":
+ case 0:
+ message.overallAccessState = 0;
+ break;
+ case "CAN_ACCESS":
+ case 1:
+ message.overallAccessState = 1;
+ break;
+ case "CANNOT_ACCESS":
+ case 2:
+ message.overallAccessState = 2;
+ break;
+ case "UNKNOWN_INFO":
+ case 3:
+ message.overallAccessState = 3;
+ break;
+ case "UNKNOWN_CONDITIONAL":
+ case 4:
+ message.overallAccessState = 4;
+ break;
+ }
+ if (object.accessTuple != null) {
+ if (typeof object.accessTuple !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse.accessTuple: object expected");
+ message.accessTuple = $root.google.cloud.policytroubleshooter.iam.v3.AccessTuple.fromObject(object.accessTuple);
+ }
+ if (object.allowPolicyExplanation != null) {
+ if (typeof object.allowPolicyExplanation !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse.allowPolicyExplanation: object expected");
+ message.allowPolicyExplanation = $root.google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation.fromObject(object.allowPolicyExplanation);
+ }
+ if (object.denyPolicyExplanation != null) {
+ if (typeof object.denyPolicyExplanation !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse.denyPolicyExplanation: object expected");
+ message.denyPolicyExplanation = $root.google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation.fromObject(object.denyPolicyExplanation);
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a TroubleshootIamPolicyResponse message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse} message TroubleshootIamPolicyResponse
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ TroubleshootIamPolicyResponse.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults) {
+ object.overallAccessState = options.enums === String ? "OVERALL_ACCESS_STATE_UNSPECIFIED" : 0;
+ object.accessTuple = null;
+ object.allowPolicyExplanation = null;
+ object.denyPolicyExplanation = null;
+ }
+ if (message.overallAccessState != null && message.hasOwnProperty("overallAccessState"))
+ object.overallAccessState = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse.OverallAccessState[message.overallAccessState] === undefined ? message.overallAccessState : $root.google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse.OverallAccessState[message.overallAccessState] : message.overallAccessState;
+ if (message.accessTuple != null && message.hasOwnProperty("accessTuple"))
+ object.accessTuple = $root.google.cloud.policytroubleshooter.iam.v3.AccessTuple.toObject(message.accessTuple, options);
+ if (message.allowPolicyExplanation != null && message.hasOwnProperty("allowPolicyExplanation"))
+ object.allowPolicyExplanation = $root.google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation.toObject(message.allowPolicyExplanation, options);
+ if (message.denyPolicyExplanation != null && message.hasOwnProperty("denyPolicyExplanation"))
+ object.denyPolicyExplanation = $root.google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation.toObject(message.denyPolicyExplanation, options);
+ return object;
+ };
+
+ /**
+ * Converts this TroubleshootIamPolicyResponse to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ TroubleshootIamPolicyResponse.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for TroubleshootIamPolicyResponse
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ TroubleshootIamPolicyResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse";
+ };
+
+ /**
+ * OverallAccessState enum.
+ * @name google.cloud.policytroubleshooter.iam.v3.TroubleshootIamPolicyResponse.OverallAccessState
+ * @enum {number}
+ * @property {number} OVERALL_ACCESS_STATE_UNSPECIFIED=0 OVERALL_ACCESS_STATE_UNSPECIFIED value
+ * @property {number} CAN_ACCESS=1 CAN_ACCESS value
+ * @property {number} CANNOT_ACCESS=2 CANNOT_ACCESS value
+ * @property {number} UNKNOWN_INFO=3 UNKNOWN_INFO value
+ * @property {number} UNKNOWN_CONDITIONAL=4 UNKNOWN_CONDITIONAL value
+ */
+ TroubleshootIamPolicyResponse.OverallAccessState = (function() {
+ var valuesById = {}, values = Object.create(valuesById);
+ values[valuesById[0] = "OVERALL_ACCESS_STATE_UNSPECIFIED"] = 0;
+ values[valuesById[1] = "CAN_ACCESS"] = 1;
+ values[valuesById[2] = "CANNOT_ACCESS"] = 2;
+ values[valuesById[3] = "UNKNOWN_INFO"] = 3;
+ values[valuesById[4] = "UNKNOWN_CONDITIONAL"] = 4;
+ return values;
+ })();
+
+ return TroubleshootIamPolicyResponse;
+ })();
+
+ v3.AccessTuple = (function() {
+
+ /**
+ * Properties of an AccessTuple.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @interface IAccessTuple
+ * @property {string|null} [principal] AccessTuple principal
+ * @property {string|null} [fullResourceName] AccessTuple fullResourceName
+ * @property {string|null} [permission] AccessTuple permission
+ * @property {string|null} [permissionFqdn] AccessTuple permissionFqdn
+ * @property {google.cloud.policytroubleshooter.iam.v3.IConditionContext|null} [conditionContext] AccessTuple conditionContext
+ */
+
+ /**
+ * Constructs a new AccessTuple.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @classdesc Represents an AccessTuple.
+ * @implements IAccessTuple
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.IAccessTuple=} [properties] Properties to set
+ */
+ function AccessTuple(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * AccessTuple principal.
+ * @member {string} principal
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AccessTuple
+ * @instance
+ */
+ AccessTuple.prototype.principal = "";
+
+ /**
+ * AccessTuple fullResourceName.
+ * @member {string} fullResourceName
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AccessTuple
+ * @instance
+ */
+ AccessTuple.prototype.fullResourceName = "";
+
+ /**
+ * AccessTuple permission.
+ * @member {string} permission
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AccessTuple
+ * @instance
+ */
+ AccessTuple.prototype.permission = "";
+
+ /**
+ * AccessTuple permissionFqdn.
+ * @member {string} permissionFqdn
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AccessTuple
+ * @instance
+ */
+ AccessTuple.prototype.permissionFqdn = "";
+
+ /**
+ * AccessTuple conditionContext.
+ * @member {google.cloud.policytroubleshooter.iam.v3.IConditionContext|null|undefined} conditionContext
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AccessTuple
+ * @instance
+ */
+ AccessTuple.prototype.conditionContext = null;
+
+ /**
+ * Creates a new AccessTuple instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AccessTuple
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IAccessTuple=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.AccessTuple} AccessTuple instance
+ */
+ AccessTuple.create = function create(properties) {
+ return new AccessTuple(properties);
+ };
+
+ /**
+ * Encodes the specified AccessTuple message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.AccessTuple.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AccessTuple
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IAccessTuple} message AccessTuple message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AccessTuple.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.principal != null && Object.hasOwnProperty.call(message, "principal"))
+ writer.uint32(/* id 1, wireType 2 =*/10).string(message.principal);
+ if (message.fullResourceName != null && Object.hasOwnProperty.call(message, "fullResourceName"))
+ writer.uint32(/* id 2, wireType 2 =*/18).string(message.fullResourceName);
+ if (message.permission != null && Object.hasOwnProperty.call(message, "permission"))
+ writer.uint32(/* id 3, wireType 2 =*/26).string(message.permission);
+ if (message.permissionFqdn != null && Object.hasOwnProperty.call(message, "permissionFqdn"))
+ writer.uint32(/* id 4, wireType 2 =*/34).string(message.permissionFqdn);
+ if (message.conditionContext != null && Object.hasOwnProperty.call(message, "conditionContext"))
+ $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.encode(message.conditionContext, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified AccessTuple message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.AccessTuple.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AccessTuple
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IAccessTuple} message AccessTuple message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AccessTuple.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an AccessTuple message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AccessTuple
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.AccessTuple} AccessTuple
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AccessTuple.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.AccessTuple();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.principal = reader.string();
+ break;
+ }
+ case 2: {
+ message.fullResourceName = reader.string();
+ break;
+ }
+ case 3: {
+ message.permission = reader.string();
+ break;
+ }
+ case 4: {
+ message.permissionFqdn = reader.string();
+ break;
+ }
+ case 5: {
+ message.conditionContext = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.decode(reader, reader.uint32());
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an AccessTuple message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AccessTuple
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.AccessTuple} AccessTuple
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AccessTuple.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an AccessTuple message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AccessTuple
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ AccessTuple.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.principal != null && message.hasOwnProperty("principal"))
+ if (!$util.isString(message.principal))
+ return "principal: string expected";
+ if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+ if (!$util.isString(message.fullResourceName))
+ return "fullResourceName: string expected";
+ if (message.permission != null && message.hasOwnProperty("permission"))
+ if (!$util.isString(message.permission))
+ return "permission: string expected";
+ if (message.permissionFqdn != null && message.hasOwnProperty("permissionFqdn"))
+ if (!$util.isString(message.permissionFqdn))
+ return "permissionFqdn: string expected";
+ if (message.conditionContext != null && message.hasOwnProperty("conditionContext")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.verify(message.conditionContext);
+ if (error)
+ return "conditionContext." + error;
+ }
+ return null;
+ };
+
+ /**
+ * Creates an AccessTuple message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AccessTuple
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.AccessTuple} AccessTuple
+ */
+ AccessTuple.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.AccessTuple)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.AccessTuple();
+ if (object.principal != null)
+ message.principal = String(object.principal);
+ if (object.fullResourceName != null)
+ message.fullResourceName = String(object.fullResourceName);
+ if (object.permission != null)
+ message.permission = String(object.permission);
+ if (object.permissionFqdn != null)
+ message.permissionFqdn = String(object.permissionFqdn);
+ if (object.conditionContext != null) {
+ if (typeof object.conditionContext !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.AccessTuple.conditionContext: object expected");
+ message.conditionContext = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.fromObject(object.conditionContext);
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an AccessTuple message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AccessTuple
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.AccessTuple} message AccessTuple
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ AccessTuple.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults) {
+ object.principal = "";
+ object.fullResourceName = "";
+ object.permission = "";
+ object.permissionFqdn = "";
+ object.conditionContext = null;
+ }
+ if (message.principal != null && message.hasOwnProperty("principal"))
+ object.principal = message.principal;
+ if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+ object.fullResourceName = message.fullResourceName;
+ if (message.permission != null && message.hasOwnProperty("permission"))
+ object.permission = message.permission;
+ if (message.permissionFqdn != null && message.hasOwnProperty("permissionFqdn"))
+ object.permissionFqdn = message.permissionFqdn;
+ if (message.conditionContext != null && message.hasOwnProperty("conditionContext"))
+ object.conditionContext = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.toObject(message.conditionContext, options);
+ return object;
+ };
+
+ /**
+ * Converts this AccessTuple to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AccessTuple
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ AccessTuple.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for AccessTuple
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AccessTuple
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ AccessTuple.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.AccessTuple";
+ };
+
+ return AccessTuple;
+ })();
+
+ v3.ConditionContext = (function() {
+
+ /**
+ * Properties of a ConditionContext.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @interface IConditionContext
+ * @property {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IResource|null} [resource] ConditionContext resource
+ * @property {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IPeer|null} [destination] ConditionContext destination
+ * @property {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IRequest|null} [request] ConditionContext request
+ * @property {Array.|null} [effectiveTags] ConditionContext effectiveTags
+ */
+
+ /**
+ * Constructs a new ConditionContext.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @classdesc Represents a ConditionContext.
+ * @implements IConditionContext
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.IConditionContext=} [properties] Properties to set
+ */
+ function ConditionContext(properties) {
+ this.effectiveTags = [];
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * ConditionContext resource.
+ * @member {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IResource|null|undefined} resource
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @instance
+ */
+ ConditionContext.prototype.resource = null;
+
+ /**
+ * ConditionContext destination.
+ * @member {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IPeer|null|undefined} destination
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @instance
+ */
+ ConditionContext.prototype.destination = null;
+
+ /**
+ * ConditionContext request.
+ * @member {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IRequest|null|undefined} request
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @instance
+ */
+ ConditionContext.prototype.request = null;
+
+ /**
+ * ConditionContext effectiveTags.
+ * @member {Array.} effectiveTags
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @instance
+ */
+ ConditionContext.prototype.effectiveTags = $util.emptyArray;
+
+ /**
+ * Creates a new ConditionContext instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IConditionContext=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext} ConditionContext instance
+ */
+ ConditionContext.create = function create(properties) {
+ return new ConditionContext(properties);
+ };
+
+ /**
+ * Encodes the specified ConditionContext message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IConditionContext} message ConditionContext message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ConditionContext.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.resource != null && Object.hasOwnProperty.call(message, "resource"))
+ $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource.encode(message.resource, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+ if (message.destination != null && Object.hasOwnProperty.call(message, "destination"))
+ $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer.encode(message.destination, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+ if (message.request != null && Object.hasOwnProperty.call(message, "request"))
+ $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request.encode(message.request, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+ if (message.effectiveTags != null && message.effectiveTags.length)
+ for (var i = 0; i < message.effectiveTags.length; ++i)
+ $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag.encode(message.effectiveTags[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified ConditionContext message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IConditionContext} message ConditionContext message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ConditionContext.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a ConditionContext message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext} ConditionContext
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ConditionContext.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.resource = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource.decode(reader, reader.uint32());
+ break;
+ }
+ case 2: {
+ message.destination = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer.decode(reader, reader.uint32());
+ break;
+ }
+ case 3: {
+ message.request = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request.decode(reader, reader.uint32());
+ break;
+ }
+ case 4: {
+ if (!(message.effectiveTags && message.effectiveTags.length))
+ message.effectiveTags = [];
+ message.effectiveTags.push($root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag.decode(reader, reader.uint32()));
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a ConditionContext message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext} ConditionContext
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ConditionContext.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a ConditionContext message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ ConditionContext.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.resource != null && message.hasOwnProperty("resource")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource.verify(message.resource);
+ if (error)
+ return "resource." + error;
+ }
+ if (message.destination != null && message.hasOwnProperty("destination")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer.verify(message.destination);
+ if (error)
+ return "destination." + error;
+ }
+ if (message.request != null && message.hasOwnProperty("request")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request.verify(message.request);
+ if (error)
+ return "request." + error;
+ }
+ if (message.effectiveTags != null && message.hasOwnProperty("effectiveTags")) {
+ if (!Array.isArray(message.effectiveTags))
+ return "effectiveTags: array expected";
+ for (var i = 0; i < message.effectiveTags.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag.verify(message.effectiveTags[i]);
+ if (error)
+ return "effectiveTags." + error;
+ }
+ }
+ return null;
+ };
+
+ /**
+ * Creates a ConditionContext message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext} ConditionContext
+ */
+ ConditionContext.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext();
+ if (object.resource != null) {
+ if (typeof object.resource !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ConditionContext.resource: object expected");
+ message.resource = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource.fromObject(object.resource);
+ }
+ if (object.destination != null) {
+ if (typeof object.destination !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ConditionContext.destination: object expected");
+ message.destination = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer.fromObject(object.destination);
+ }
+ if (object.request != null) {
+ if (typeof object.request !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ConditionContext.request: object expected");
+ message.request = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request.fromObject(object.request);
+ }
+ if (object.effectiveTags) {
+ if (!Array.isArray(object.effectiveTags))
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ConditionContext.effectiveTags: array expected");
+ message.effectiveTags = [];
+ for (var i = 0; i < object.effectiveTags.length; ++i) {
+ if (typeof object.effectiveTags[i] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ConditionContext.effectiveTags: object expected");
+ message.effectiveTags[i] = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag.fromObject(object.effectiveTags[i]);
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a ConditionContext message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext} message ConditionContext
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ ConditionContext.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.arrays || options.defaults)
+ object.effectiveTags = [];
+ if (options.defaults) {
+ object.resource = null;
+ object.destination = null;
+ object.request = null;
+ }
+ if (message.resource != null && message.hasOwnProperty("resource"))
+ object.resource = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource.toObject(message.resource, options);
+ if (message.destination != null && message.hasOwnProperty("destination"))
+ object.destination = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer.toObject(message.destination, options);
+ if (message.request != null && message.hasOwnProperty("request"))
+ object.request = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request.toObject(message.request, options);
+ if (message.effectiveTags && message.effectiveTags.length) {
+ object.effectiveTags = [];
+ for (var j = 0; j < message.effectiveTags.length; ++j)
+ object.effectiveTags[j] = $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag.toObject(message.effectiveTags[j], options);
+ }
+ return object;
+ };
+
+ /**
+ * Converts this ConditionContext to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ ConditionContext.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for ConditionContext
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ ConditionContext.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.ConditionContext";
+ };
+
+ ConditionContext.Resource = (function() {
+
+ /**
+ * Properties of a Resource.
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @interface IResource
+ * @property {string|null} [service] Resource service
+ * @property {string|null} [name] Resource name
+ * @property {string|null} [type] Resource type
+ */
+
+ /**
+ * Constructs a new Resource.
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @classdesc Represents a Resource.
+ * @implements IResource
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IResource=} [properties] Properties to set
+ */
+ function Resource(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * Resource service.
+ * @member {string} service
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource
+ * @instance
+ */
+ Resource.prototype.service = "";
+
+ /**
+ * Resource name.
+ * @member {string} name
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource
+ * @instance
+ */
+ Resource.prototype.name = "";
+
+ /**
+ * Resource type.
+ * @member {string} type
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource
+ * @instance
+ */
+ Resource.prototype.type = "";
+
+ /**
+ * Creates a new Resource instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IResource=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource} Resource instance
+ */
+ Resource.create = function create(properties) {
+ return new Resource(properties);
+ };
+
+ /**
+ * Encodes the specified Resource message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IResource} message Resource message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ Resource.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.service != null && Object.hasOwnProperty.call(message, "service"))
+ writer.uint32(/* id 1, wireType 2 =*/10).string(message.service);
+ if (message.name != null && Object.hasOwnProperty.call(message, "name"))
+ writer.uint32(/* id 2, wireType 2 =*/18).string(message.name);
+ if (message.type != null && Object.hasOwnProperty.call(message, "type"))
+ writer.uint32(/* id 3, wireType 2 =*/26).string(message.type);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified Resource message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IResource} message Resource message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ Resource.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a Resource message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource} Resource
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ Resource.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.service = reader.string();
+ break;
+ }
+ case 2: {
+ message.name = reader.string();
+ break;
+ }
+ case 3: {
+ message.type = reader.string();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a Resource message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource} Resource
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ Resource.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a Resource message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ Resource.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.service != null && message.hasOwnProperty("service"))
+ if (!$util.isString(message.service))
+ return "service: string expected";
+ if (message.name != null && message.hasOwnProperty("name"))
+ if (!$util.isString(message.name))
+ return "name: string expected";
+ if (message.type != null && message.hasOwnProperty("type"))
+ if (!$util.isString(message.type))
+ return "type: string expected";
+ return null;
+ };
+
+ /**
+ * Creates a Resource message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource} Resource
+ */
+ Resource.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource();
+ if (object.service != null)
+ message.service = String(object.service);
+ if (object.name != null)
+ message.name = String(object.name);
+ if (object.type != null)
+ message.type = String(object.type);
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a Resource message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource} message Resource
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ Resource.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults) {
+ object.service = "";
+ object.name = "";
+ object.type = "";
+ }
+ if (message.service != null && message.hasOwnProperty("service"))
+ object.service = message.service;
+ if (message.name != null && message.hasOwnProperty("name"))
+ object.name = message.name;
+ if (message.type != null && message.hasOwnProperty("type"))
+ object.type = message.type;
+ return object;
+ };
+
+ /**
+ * Converts this Resource to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ Resource.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for Resource
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ Resource.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.ConditionContext.Resource";
+ };
+
+ return Resource;
+ })();
+
+ ConditionContext.Peer = (function() {
+
+ /**
+ * Properties of a Peer.
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @interface IPeer
+ * @property {string|null} [ip] Peer ip
+ * @property {number|Long|null} [port] Peer port
+ */
+
+ /**
+ * Constructs a new Peer.
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @classdesc Represents a Peer.
+ * @implements IPeer
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IPeer=} [properties] Properties to set
+ */
+ function Peer(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * Peer ip.
+ * @member {string} ip
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer
+ * @instance
+ */
+ Peer.prototype.ip = "";
+
+ /**
+ * Peer port.
+ * @member {number|Long} port
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer
+ * @instance
+ */
+ Peer.prototype.port = $util.Long ? $util.Long.fromBits(0,0,false) : 0;
+
+ /**
+ * Creates a new Peer instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IPeer=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer} Peer instance
+ */
+ Peer.create = function create(properties) {
+ return new Peer(properties);
+ };
+
+ /**
+ * Encodes the specified Peer message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IPeer} message Peer message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ Peer.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.ip != null && Object.hasOwnProperty.call(message, "ip"))
+ writer.uint32(/* id 1, wireType 2 =*/10).string(message.ip);
+ if (message.port != null && Object.hasOwnProperty.call(message, "port"))
+ writer.uint32(/* id 2, wireType 0 =*/16).int64(message.port);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified Peer message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IPeer} message Peer message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ Peer.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a Peer message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer} Peer
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ Peer.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.ip = reader.string();
+ break;
+ }
+ case 2: {
+ message.port = reader.int64();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a Peer message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer} Peer
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ Peer.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a Peer message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ Peer.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.ip != null && message.hasOwnProperty("ip"))
+ if (!$util.isString(message.ip))
+ return "ip: string expected";
+ if (message.port != null && message.hasOwnProperty("port"))
+ if (!$util.isInteger(message.port) && !(message.port && $util.isInteger(message.port.low) && $util.isInteger(message.port.high)))
+ return "port: integer|Long expected";
+ return null;
+ };
+
+ /**
+ * Creates a Peer message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer} Peer
+ */
+ Peer.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer();
+ if (object.ip != null)
+ message.ip = String(object.ip);
+ if (object.port != null)
+ if ($util.Long)
+ (message.port = $util.Long.fromValue(object.port)).unsigned = false;
+ else if (typeof object.port === "string")
+ message.port = parseInt(object.port, 10);
+ else if (typeof object.port === "number")
+ message.port = object.port;
+ else if (typeof object.port === "object")
+ message.port = new $util.LongBits(object.port.low >>> 0, object.port.high >>> 0).toNumber();
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a Peer message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer} message Peer
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ Peer.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults) {
+ object.ip = "";
+ if ($util.Long) {
+ var long = new $util.Long(0, 0, false);
+ object.port = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
+ } else
+ object.port = options.longs === String ? "0" : 0;
+ }
+ if (message.ip != null && message.hasOwnProperty("ip"))
+ object.ip = message.ip;
+ if (message.port != null && message.hasOwnProperty("port"))
+ if (typeof message.port === "number")
+ object.port = options.longs === String ? String(message.port) : message.port;
+ else
+ object.port = options.longs === String ? $util.Long.prototype.toString.call(message.port) : options.longs === Number ? new $util.LongBits(message.port.low >>> 0, message.port.high >>> 0).toNumber() : message.port;
+ return object;
+ };
+
+ /**
+ * Converts this Peer to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ Peer.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for Peer
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ Peer.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.ConditionContext.Peer";
+ };
+
+ return Peer;
+ })();
+
+ ConditionContext.Request = (function() {
+
+ /**
+ * Properties of a Request.
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @interface IRequest
+ * @property {google.protobuf.ITimestamp|null} [receiveTime] Request receiveTime
+ */
+
+ /**
+ * Constructs a new Request.
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @classdesc Represents a Request.
+ * @implements IRequest
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IRequest=} [properties] Properties to set
+ */
+ function Request(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * Request receiveTime.
+ * @member {google.protobuf.ITimestamp|null|undefined} receiveTime
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request
+ * @instance
+ */
+ Request.prototype.receiveTime = null;
+
+ /**
+ * Creates a new Request instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IRequest=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request} Request instance
+ */
+ Request.create = function create(properties) {
+ return new Request(properties);
+ };
+
+ /**
+ * Encodes the specified Request message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IRequest} message Request message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ Request.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.receiveTime != null && Object.hasOwnProperty.call(message, "receiveTime"))
+ $root.google.protobuf.Timestamp.encode(message.receiveTime, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified Request message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IRequest} message Request message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ Request.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a Request message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request} Request
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ Request.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.receiveTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a Request message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request} Request
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ Request.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a Request message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ Request.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.receiveTime != null && message.hasOwnProperty("receiveTime")) {
+ var error = $root.google.protobuf.Timestamp.verify(message.receiveTime);
+ if (error)
+ return "receiveTime." + error;
+ }
+ return null;
+ };
+
+ /**
+ * Creates a Request message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request} Request
+ */
+ Request.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request();
+ if (object.receiveTime != null) {
+ if (typeof object.receiveTime !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request.receiveTime: object expected");
+ message.receiveTime = $root.google.protobuf.Timestamp.fromObject(object.receiveTime);
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a Request message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request} message Request
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ Request.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults)
+ object.receiveTime = null;
+ if (message.receiveTime != null && message.hasOwnProperty("receiveTime"))
+ object.receiveTime = $root.google.protobuf.Timestamp.toObject(message.receiveTime, options);
+ return object;
+ };
+
+ /**
+ * Converts this Request to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ Request.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for Request
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ Request.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.ConditionContext.Request";
+ };
+
+ return Request;
+ })();
+
+ ConditionContext.EffectiveTag = (function() {
+
+ /**
+ * Properties of an EffectiveTag.
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @interface IEffectiveTag
+ * @property {string|null} [tagValue] EffectiveTag tagValue
+ * @property {string|null} [namespacedTagValue] EffectiveTag namespacedTagValue
+ * @property {string|null} [tagKey] EffectiveTag tagKey
+ * @property {string|null} [namespacedTagKey] EffectiveTag namespacedTagKey
+ * @property {string|null} [tagKeyParentName] EffectiveTag tagKeyParentName
+ * @property {boolean|null} [inherited] EffectiveTag inherited
+ */
+
+ /**
+ * Constructs a new EffectiveTag.
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext
+ * @classdesc Represents an EffectiveTag.
+ * @implements IEffectiveTag
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IEffectiveTag=} [properties] Properties to set
+ */
+ function EffectiveTag(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * EffectiveTag tagValue.
+ * @member {string} tagValue
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag
+ * @instance
+ */
+ EffectiveTag.prototype.tagValue = "";
+
+ /**
+ * EffectiveTag namespacedTagValue.
+ * @member {string} namespacedTagValue
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag
+ * @instance
+ */
+ EffectiveTag.prototype.namespacedTagValue = "";
+
+ /**
+ * EffectiveTag tagKey.
+ * @member {string} tagKey
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag
+ * @instance
+ */
+ EffectiveTag.prototype.tagKey = "";
+
+ /**
+ * EffectiveTag namespacedTagKey.
+ * @member {string} namespacedTagKey
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag
+ * @instance
+ */
+ EffectiveTag.prototype.namespacedTagKey = "";
+
+ /**
+ * EffectiveTag tagKeyParentName.
+ * @member {string} tagKeyParentName
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag
+ * @instance
+ */
+ EffectiveTag.prototype.tagKeyParentName = "";
+
+ /**
+ * EffectiveTag inherited.
+ * @member {boolean} inherited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag
+ * @instance
+ */
+ EffectiveTag.prototype.inherited = false;
+
+ /**
+ * Creates a new EffectiveTag instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IEffectiveTag=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag} EffectiveTag instance
+ */
+ EffectiveTag.create = function create(properties) {
+ return new EffectiveTag(properties);
+ };
+
+ /**
+ * Encodes the specified EffectiveTag message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IEffectiveTag} message EffectiveTag message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ EffectiveTag.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.tagValue != null && Object.hasOwnProperty.call(message, "tagValue"))
+ writer.uint32(/* id 1, wireType 2 =*/10).string(message.tagValue);
+ if (message.namespacedTagValue != null && Object.hasOwnProperty.call(message, "namespacedTagValue"))
+ writer.uint32(/* id 2, wireType 2 =*/18).string(message.namespacedTagValue);
+ if (message.tagKey != null && Object.hasOwnProperty.call(message, "tagKey"))
+ writer.uint32(/* id 3, wireType 2 =*/26).string(message.tagKey);
+ if (message.namespacedTagKey != null && Object.hasOwnProperty.call(message, "namespacedTagKey"))
+ writer.uint32(/* id 4, wireType 2 =*/34).string(message.namespacedTagKey);
+ if (message.inherited != null && Object.hasOwnProperty.call(message, "inherited"))
+ writer.uint32(/* id 5, wireType 0 =*/40).bool(message.inherited);
+ if (message.tagKeyParentName != null && Object.hasOwnProperty.call(message, "tagKeyParentName"))
+ writer.uint32(/* id 6, wireType 2 =*/50).string(message.tagKeyParentName);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified EffectiveTag message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.IEffectiveTag} message EffectiveTag message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ EffectiveTag.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an EffectiveTag message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag} EffectiveTag
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ EffectiveTag.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.tagValue = reader.string();
+ break;
+ }
+ case 2: {
+ message.namespacedTagValue = reader.string();
+ break;
+ }
+ case 3: {
+ message.tagKey = reader.string();
+ break;
+ }
+ case 4: {
+ message.namespacedTagKey = reader.string();
+ break;
+ }
+ case 6: {
+ message.tagKeyParentName = reader.string();
+ break;
+ }
+ case 5: {
+ message.inherited = reader.bool();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an EffectiveTag message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag} EffectiveTag
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ EffectiveTag.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an EffectiveTag message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ EffectiveTag.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.tagValue != null && message.hasOwnProperty("tagValue"))
+ if (!$util.isString(message.tagValue))
+ return "tagValue: string expected";
+ if (message.namespacedTagValue != null && message.hasOwnProperty("namespacedTagValue"))
+ if (!$util.isString(message.namespacedTagValue))
+ return "namespacedTagValue: string expected";
+ if (message.tagKey != null && message.hasOwnProperty("tagKey"))
+ if (!$util.isString(message.tagKey))
+ return "tagKey: string expected";
+ if (message.namespacedTagKey != null && message.hasOwnProperty("namespacedTagKey"))
+ if (!$util.isString(message.namespacedTagKey))
+ return "namespacedTagKey: string expected";
+ if (message.tagKeyParentName != null && message.hasOwnProperty("tagKeyParentName"))
+ if (!$util.isString(message.tagKeyParentName))
+ return "tagKeyParentName: string expected";
+ if (message.inherited != null && message.hasOwnProperty("inherited"))
+ if (typeof message.inherited !== "boolean")
+ return "inherited: boolean expected";
+ return null;
+ };
+
+ /**
+ * Creates an EffectiveTag message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag} EffectiveTag
+ */
+ EffectiveTag.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag();
+ if (object.tagValue != null)
+ message.tagValue = String(object.tagValue);
+ if (object.namespacedTagValue != null)
+ message.namespacedTagValue = String(object.namespacedTagValue);
+ if (object.tagKey != null)
+ message.tagKey = String(object.tagKey);
+ if (object.namespacedTagKey != null)
+ message.namespacedTagKey = String(object.namespacedTagKey);
+ if (object.tagKeyParentName != null)
+ message.tagKeyParentName = String(object.tagKeyParentName);
+ if (object.inherited != null)
+ message.inherited = Boolean(object.inherited);
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an EffectiveTag message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag} message EffectiveTag
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ EffectiveTag.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults) {
+ object.tagValue = "";
+ object.namespacedTagValue = "";
+ object.tagKey = "";
+ object.namespacedTagKey = "";
+ object.inherited = false;
+ object.tagKeyParentName = "";
+ }
+ if (message.tagValue != null && message.hasOwnProperty("tagValue"))
+ object.tagValue = message.tagValue;
+ if (message.namespacedTagValue != null && message.hasOwnProperty("namespacedTagValue"))
+ object.namespacedTagValue = message.namespacedTagValue;
+ if (message.tagKey != null && message.hasOwnProperty("tagKey"))
+ object.tagKey = message.tagKey;
+ if (message.namespacedTagKey != null && message.hasOwnProperty("namespacedTagKey"))
+ object.namespacedTagKey = message.namespacedTagKey;
+ if (message.inherited != null && message.hasOwnProperty("inherited"))
+ object.inherited = message.inherited;
+ if (message.tagKeyParentName != null && message.hasOwnProperty("tagKeyParentName"))
+ object.tagKeyParentName = message.tagKeyParentName;
+ return object;
+ };
+
+ /**
+ * Converts this EffectiveTag to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ EffectiveTag.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for EffectiveTag
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ EffectiveTag.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.ConditionContext.EffectiveTag";
+ };
+
+ return EffectiveTag;
+ })();
+
+ return ConditionContext;
+ })();
+
+ v3.AllowPolicyExplanation = (function() {
+
+ /**
+ * Properties of an AllowPolicyExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @interface IAllowPolicyExplanation
+ * @property {google.cloud.policytroubleshooter.iam.v3.AllowAccessState|null} [allowAccessState] AllowPolicyExplanation allowAccessState
+ * @property {Array.|null} [explainedPolicies] AllowPolicyExplanation explainedPolicies
+ * @property {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null} [relevance] AllowPolicyExplanation relevance
+ */
+
+ /**
+ * Constructs a new AllowPolicyExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @classdesc Represents an AllowPolicyExplanation.
+ * @implements IAllowPolicyExplanation
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.IAllowPolicyExplanation=} [properties] Properties to set
+ */
+ function AllowPolicyExplanation(properties) {
+ this.explainedPolicies = [];
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * AllowPolicyExplanation allowAccessState.
+ * @member {google.cloud.policytroubleshooter.iam.v3.AllowAccessState} allowAccessState
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation
+ * @instance
+ */
+ AllowPolicyExplanation.prototype.allowAccessState = 0;
+
+ /**
+ * AllowPolicyExplanation explainedPolicies.
+ * @member {Array.} explainedPolicies
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation
+ * @instance
+ */
+ AllowPolicyExplanation.prototype.explainedPolicies = $util.emptyArray;
+
+ /**
+ * AllowPolicyExplanation relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation
+ * @instance
+ */
+ AllowPolicyExplanation.prototype.relevance = 0;
+
+ /**
+ * Creates a new AllowPolicyExplanation instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IAllowPolicyExplanation=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation} AllowPolicyExplanation instance
+ */
+ AllowPolicyExplanation.create = function create(properties) {
+ return new AllowPolicyExplanation(properties);
+ };
+
+ /**
+ * Encodes the specified AllowPolicyExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IAllowPolicyExplanation} message AllowPolicyExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AllowPolicyExplanation.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.allowAccessState != null && Object.hasOwnProperty.call(message, "allowAccessState"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.allowAccessState);
+ if (message.explainedPolicies != null && message.explainedPolicies.length)
+ for (var i = 0; i < message.explainedPolicies.length; ++i)
+ $root.google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy.encode(message.explainedPolicies[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 3, wireType 0 =*/24).int32(message.relevance);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified AllowPolicyExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IAllowPolicyExplanation} message AllowPolicyExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AllowPolicyExplanation.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an AllowPolicyExplanation message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation} AllowPolicyExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AllowPolicyExplanation.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.allowAccessState = reader.int32();
+ break;
+ }
+ case 2: {
+ if (!(message.explainedPolicies && message.explainedPolicies.length))
+ message.explainedPolicies = [];
+ message.explainedPolicies.push($root.google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy.decode(reader, reader.uint32()));
+ break;
+ }
+ case 3: {
+ message.relevance = reader.int32();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an AllowPolicyExplanation message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation} AllowPolicyExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AllowPolicyExplanation.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an AllowPolicyExplanation message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ AllowPolicyExplanation.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.allowAccessState != null && message.hasOwnProperty("allowAccessState"))
+ switch (message.allowAccessState) {
+ default:
+ return "allowAccessState: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.explainedPolicies != null && message.hasOwnProperty("explainedPolicies")) {
+ if (!Array.isArray(message.explainedPolicies))
+ return "explainedPolicies: array expected";
+ for (var i = 0; i < message.explainedPolicies.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy.verify(message.explainedPolicies[i]);
+ if (error)
+ return "explainedPolicies." + error;
+ }
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ return null;
+ };
+
+ /**
+ * Creates an AllowPolicyExplanation message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation} AllowPolicyExplanation
+ */
+ AllowPolicyExplanation.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation();
+ switch (object.allowAccessState) {
+ default:
+ if (typeof object.allowAccessState === "number") {
+ message.allowAccessState = object.allowAccessState;
+ break;
+ }
+ break;
+ case "ALLOW_ACCESS_STATE_UNSPECIFIED":
+ case 0:
+ message.allowAccessState = 0;
+ break;
+ case "ALLOW_ACCESS_STATE_GRANTED":
+ case 1:
+ message.allowAccessState = 1;
+ break;
+ case "ALLOW_ACCESS_STATE_NOT_GRANTED":
+ case 2:
+ message.allowAccessState = 2;
+ break;
+ case "ALLOW_ACCESS_STATE_UNKNOWN_CONDITIONAL":
+ case 3:
+ message.allowAccessState = 3;
+ break;
+ case "ALLOW_ACCESS_STATE_UNKNOWN_INFO":
+ case 4:
+ message.allowAccessState = 4;
+ break;
+ }
+ if (object.explainedPolicies) {
+ if (!Array.isArray(object.explainedPolicies))
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation.explainedPolicies: array expected");
+ message.explainedPolicies = [];
+ for (var i = 0; i < object.explainedPolicies.length; ++i) {
+ if (typeof object.explainedPolicies[i] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation.explainedPolicies: object expected");
+ message.explainedPolicies[i] = $root.google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy.fromObject(object.explainedPolicies[i]);
+ }
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an AllowPolicyExplanation message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation} message AllowPolicyExplanation
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ AllowPolicyExplanation.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.arrays || options.defaults)
+ object.explainedPolicies = [];
+ if (options.defaults) {
+ object.allowAccessState = options.enums === String ? "ALLOW_ACCESS_STATE_UNSPECIFIED" : 0;
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ }
+ if (message.allowAccessState != null && message.hasOwnProperty("allowAccessState"))
+ object.allowAccessState = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.AllowAccessState[message.allowAccessState] === undefined ? message.allowAccessState : $root.google.cloud.policytroubleshooter.iam.v3.AllowAccessState[message.allowAccessState] : message.allowAccessState;
+ if (message.explainedPolicies && message.explainedPolicies.length) {
+ object.explainedPolicies = [];
+ for (var j = 0; j < message.explainedPolicies.length; ++j)
+ object.explainedPolicies[j] = $root.google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy.toObject(message.explainedPolicies[j], options);
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] : message.relevance;
+ return object;
+ };
+
+ /**
+ * Converts this AllowPolicyExplanation to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ AllowPolicyExplanation.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for AllowPolicyExplanation
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ AllowPolicyExplanation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.AllowPolicyExplanation";
+ };
+
+ return AllowPolicyExplanation;
+ })();
+
+ v3.ExplainedAllowPolicy = (function() {
+
+ /**
+ * Properties of an ExplainedAllowPolicy.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @interface IExplainedAllowPolicy
+ * @property {google.cloud.policytroubleshooter.iam.v3.AllowAccessState|null} [allowAccessState] ExplainedAllowPolicy allowAccessState
+ * @property {string|null} [fullResourceName] ExplainedAllowPolicy fullResourceName
+ * @property {Array.|null} [bindingExplanations] ExplainedAllowPolicy bindingExplanations
+ * @property {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null} [relevance] ExplainedAllowPolicy relevance
+ * @property {google.iam.v1.IPolicy|null} [policy] ExplainedAllowPolicy policy
+ */
+
+ /**
+ * Constructs a new ExplainedAllowPolicy.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @classdesc Represents an ExplainedAllowPolicy.
+ * @implements IExplainedAllowPolicy
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.IExplainedAllowPolicy=} [properties] Properties to set
+ */
+ function ExplainedAllowPolicy(properties) {
+ this.bindingExplanations = [];
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * ExplainedAllowPolicy allowAccessState.
+ * @member {google.cloud.policytroubleshooter.iam.v3.AllowAccessState} allowAccessState
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy
+ * @instance
+ */
+ ExplainedAllowPolicy.prototype.allowAccessState = 0;
+
+ /**
+ * ExplainedAllowPolicy fullResourceName.
+ * @member {string} fullResourceName
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy
+ * @instance
+ */
+ ExplainedAllowPolicy.prototype.fullResourceName = "";
+
+ /**
+ * ExplainedAllowPolicy bindingExplanations.
+ * @member {Array.} bindingExplanations
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy
+ * @instance
+ */
+ ExplainedAllowPolicy.prototype.bindingExplanations = $util.emptyArray;
+
+ /**
+ * ExplainedAllowPolicy relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy
+ * @instance
+ */
+ ExplainedAllowPolicy.prototype.relevance = 0;
+
+ /**
+ * ExplainedAllowPolicy policy.
+ * @member {google.iam.v1.IPolicy|null|undefined} policy
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy
+ * @instance
+ */
+ ExplainedAllowPolicy.prototype.policy = null;
+
+ /**
+ * Creates a new ExplainedAllowPolicy instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IExplainedAllowPolicy=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy} ExplainedAllowPolicy instance
+ */
+ ExplainedAllowPolicy.create = function create(properties) {
+ return new ExplainedAllowPolicy(properties);
+ };
+
+ /**
+ * Encodes the specified ExplainedAllowPolicy message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IExplainedAllowPolicy} message ExplainedAllowPolicy message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ExplainedAllowPolicy.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.allowAccessState != null && Object.hasOwnProperty.call(message, "allowAccessState"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.allowAccessState);
+ if (message.fullResourceName != null && Object.hasOwnProperty.call(message, "fullResourceName"))
+ writer.uint32(/* id 2, wireType 2 =*/18).string(message.fullResourceName);
+ if (message.bindingExplanations != null && message.bindingExplanations.length)
+ for (var i = 0; i < message.bindingExplanations.length; ++i)
+ $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.encode(message.bindingExplanations[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 4, wireType 0 =*/32).int32(message.relevance);
+ if (message.policy != null && Object.hasOwnProperty.call(message, "policy"))
+ $root.google.iam.v1.Policy.encode(message.policy, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified ExplainedAllowPolicy message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IExplainedAllowPolicy} message ExplainedAllowPolicy message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ExplainedAllowPolicy.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an ExplainedAllowPolicy message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy} ExplainedAllowPolicy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ExplainedAllowPolicy.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.allowAccessState = reader.int32();
+ break;
+ }
+ case 2: {
+ message.fullResourceName = reader.string();
+ break;
+ }
+ case 3: {
+ if (!(message.bindingExplanations && message.bindingExplanations.length))
+ message.bindingExplanations = [];
+ message.bindingExplanations.push($root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.decode(reader, reader.uint32()));
+ break;
+ }
+ case 4: {
+ message.relevance = reader.int32();
+ break;
+ }
+ case 5: {
+ message.policy = $root.google.iam.v1.Policy.decode(reader, reader.uint32());
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an ExplainedAllowPolicy message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy} ExplainedAllowPolicy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ExplainedAllowPolicy.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an ExplainedAllowPolicy message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ ExplainedAllowPolicy.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.allowAccessState != null && message.hasOwnProperty("allowAccessState"))
+ switch (message.allowAccessState) {
+ default:
+ return "allowAccessState: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+ if (!$util.isString(message.fullResourceName))
+ return "fullResourceName: string expected";
+ if (message.bindingExplanations != null && message.hasOwnProperty("bindingExplanations")) {
+ if (!Array.isArray(message.bindingExplanations))
+ return "bindingExplanations: array expected";
+ for (var i = 0; i < message.bindingExplanations.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.verify(message.bindingExplanations[i]);
+ if (error)
+ return "bindingExplanations." + error;
+ }
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ if (message.policy != null && message.hasOwnProperty("policy")) {
+ var error = $root.google.iam.v1.Policy.verify(message.policy);
+ if (error)
+ return "policy." + error;
+ }
+ return null;
+ };
+
+ /**
+ * Creates an ExplainedAllowPolicy message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy} ExplainedAllowPolicy
+ */
+ ExplainedAllowPolicy.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy();
+ switch (object.allowAccessState) {
+ default:
+ if (typeof object.allowAccessState === "number") {
+ message.allowAccessState = object.allowAccessState;
+ break;
+ }
+ break;
+ case "ALLOW_ACCESS_STATE_UNSPECIFIED":
+ case 0:
+ message.allowAccessState = 0;
+ break;
+ case "ALLOW_ACCESS_STATE_GRANTED":
+ case 1:
+ message.allowAccessState = 1;
+ break;
+ case "ALLOW_ACCESS_STATE_NOT_GRANTED":
+ case 2:
+ message.allowAccessState = 2;
+ break;
+ case "ALLOW_ACCESS_STATE_UNKNOWN_CONDITIONAL":
+ case 3:
+ message.allowAccessState = 3;
+ break;
+ case "ALLOW_ACCESS_STATE_UNKNOWN_INFO":
+ case 4:
+ message.allowAccessState = 4;
+ break;
+ }
+ if (object.fullResourceName != null)
+ message.fullResourceName = String(object.fullResourceName);
+ if (object.bindingExplanations) {
+ if (!Array.isArray(object.bindingExplanations))
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy.bindingExplanations: array expected");
+ message.bindingExplanations = [];
+ for (var i = 0; i < object.bindingExplanations.length; ++i) {
+ if (typeof object.bindingExplanations[i] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy.bindingExplanations: object expected");
+ message.bindingExplanations[i] = $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.fromObject(object.bindingExplanations[i]);
+ }
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ if (object.policy != null) {
+ if (typeof object.policy !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy.policy: object expected");
+ message.policy = $root.google.iam.v1.Policy.fromObject(object.policy);
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an ExplainedAllowPolicy message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy} message ExplainedAllowPolicy
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ ExplainedAllowPolicy.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.arrays || options.defaults)
+ object.bindingExplanations = [];
+ if (options.defaults) {
+ object.allowAccessState = options.enums === String ? "ALLOW_ACCESS_STATE_UNSPECIFIED" : 0;
+ object.fullResourceName = "";
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ object.policy = null;
+ }
+ if (message.allowAccessState != null && message.hasOwnProperty("allowAccessState"))
+ object.allowAccessState = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.AllowAccessState[message.allowAccessState] === undefined ? message.allowAccessState : $root.google.cloud.policytroubleshooter.iam.v3.AllowAccessState[message.allowAccessState] : message.allowAccessState;
+ if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+ object.fullResourceName = message.fullResourceName;
+ if (message.bindingExplanations && message.bindingExplanations.length) {
+ object.bindingExplanations = [];
+ for (var j = 0; j < message.bindingExplanations.length; ++j)
+ object.bindingExplanations[j] = $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.toObject(message.bindingExplanations[j], options);
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] : message.relevance;
+ if (message.policy != null && message.hasOwnProperty("policy"))
+ object.policy = $root.google.iam.v1.Policy.toObject(message.policy, options);
+ return object;
+ };
+
+ /**
+ * Converts this ExplainedAllowPolicy to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ ExplainedAllowPolicy.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for ExplainedAllowPolicy
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ ExplainedAllowPolicy.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.ExplainedAllowPolicy";
+ };
+
+ return ExplainedAllowPolicy;
+ })();
+
+ v3.AllowBindingExplanation = (function() {
+
+ /**
+ * Properties of an AllowBindingExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @interface IAllowBindingExplanation
+ * @property {google.cloud.policytroubleshooter.iam.v3.AllowAccessState|null} [allowAccessState] AllowBindingExplanation allowAccessState
+ * @property {string|null} [role] AllowBindingExplanation role
+ * @property {google.cloud.policytroubleshooter.iam.v3.RolePermissionInclusionState|null} [rolePermission] AllowBindingExplanation rolePermission
+ * @property {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null} [rolePermissionRelevance] AllowBindingExplanation rolePermissionRelevance
+ * @property {google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.IAnnotatedAllowMembership|null} [combinedMembership] AllowBindingExplanation combinedMembership
+ * @property {Object.|null} [memberships] AllowBindingExplanation memberships
+ * @property {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null} [relevance] AllowBindingExplanation relevance
+ * @property {google.type.IExpr|null} [condition] AllowBindingExplanation condition
+ * @property {google.cloud.policytroubleshooter.iam.v3.IConditionExplanation|null} [conditionExplanation] AllowBindingExplanation conditionExplanation
+ */
+
+ /**
+ * Constructs a new AllowBindingExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @classdesc Represents an AllowBindingExplanation.
+ * @implements IAllowBindingExplanation
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.IAllowBindingExplanation=} [properties] Properties to set
+ */
+ function AllowBindingExplanation(properties) {
+ this.memberships = {};
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * AllowBindingExplanation allowAccessState.
+ * @member {google.cloud.policytroubleshooter.iam.v3.AllowAccessState} allowAccessState
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @instance
+ */
+ AllowBindingExplanation.prototype.allowAccessState = 0;
+
+ /**
+ * AllowBindingExplanation role.
+ * @member {string} role
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @instance
+ */
+ AllowBindingExplanation.prototype.role = "";
+
+ /**
+ * AllowBindingExplanation rolePermission.
+ * @member {google.cloud.policytroubleshooter.iam.v3.RolePermissionInclusionState} rolePermission
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @instance
+ */
+ AllowBindingExplanation.prototype.rolePermission = 0;
+
+ /**
+ * AllowBindingExplanation rolePermissionRelevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance} rolePermissionRelevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @instance
+ */
+ AllowBindingExplanation.prototype.rolePermissionRelevance = 0;
+
+ /**
+ * AllowBindingExplanation combinedMembership.
+ * @member {google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.IAnnotatedAllowMembership|null|undefined} combinedMembership
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @instance
+ */
+ AllowBindingExplanation.prototype.combinedMembership = null;
+
+ /**
+ * AllowBindingExplanation memberships.
+ * @member {Object.} memberships
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @instance
+ */
+ AllowBindingExplanation.prototype.memberships = $util.emptyObject;
+
+ /**
+ * AllowBindingExplanation relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @instance
+ */
+ AllowBindingExplanation.prototype.relevance = 0;
+
+ /**
+ * AllowBindingExplanation condition.
+ * @member {google.type.IExpr|null|undefined} condition
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @instance
+ */
+ AllowBindingExplanation.prototype.condition = null;
+
+ /**
+ * AllowBindingExplanation conditionExplanation.
+ * @member {google.cloud.policytroubleshooter.iam.v3.IConditionExplanation|null|undefined} conditionExplanation
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @instance
+ */
+ AllowBindingExplanation.prototype.conditionExplanation = null;
+
+ /**
+ * Creates a new AllowBindingExplanation instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IAllowBindingExplanation=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation} AllowBindingExplanation instance
+ */
+ AllowBindingExplanation.create = function create(properties) {
+ return new AllowBindingExplanation(properties);
+ };
+
+ /**
+ * Encodes the specified AllowBindingExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IAllowBindingExplanation} message AllowBindingExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AllowBindingExplanation.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.allowAccessState != null && Object.hasOwnProperty.call(message, "allowAccessState"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.allowAccessState);
+ if (message.role != null && Object.hasOwnProperty.call(message, "role"))
+ writer.uint32(/* id 2, wireType 2 =*/18).string(message.role);
+ if (message.rolePermission != null && Object.hasOwnProperty.call(message, "rolePermission"))
+ writer.uint32(/* id 3, wireType 0 =*/24).int32(message.rolePermission);
+ if (message.rolePermissionRelevance != null && Object.hasOwnProperty.call(message, "rolePermissionRelevance"))
+ writer.uint32(/* id 4, wireType 0 =*/32).int32(message.rolePermissionRelevance);
+ if (message.combinedMembership != null && Object.hasOwnProperty.call(message, "combinedMembership"))
+ $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership.encode(message.combinedMembership, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
+ if (message.memberships != null && Object.hasOwnProperty.call(message, "memberships"))
+ for (var keys = Object.keys(message.memberships), i = 0; i < keys.length; ++i) {
+ writer.uint32(/* id 6, wireType 2 =*/50).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);
+ $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership.encode(message.memberships[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();
+ }
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 7, wireType 0 =*/56).int32(message.relevance);
+ if (message.condition != null && Object.hasOwnProperty.call(message, "condition"))
+ $root.google.type.Expr.encode(message.condition, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();
+ if (message.conditionExplanation != null && Object.hasOwnProperty.call(message, "conditionExplanation"))
+ $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.encode(message.conditionExplanation, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified AllowBindingExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IAllowBindingExplanation} message AllowBindingExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AllowBindingExplanation.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an AllowBindingExplanation message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation} AllowBindingExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AllowBindingExplanation.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation(), key, value;
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.allowAccessState = reader.int32();
+ break;
+ }
+ case 2: {
+ message.role = reader.string();
+ break;
+ }
+ case 3: {
+ message.rolePermission = reader.int32();
+ break;
+ }
+ case 4: {
+ message.rolePermissionRelevance = reader.int32();
+ break;
+ }
+ case 5: {
+ message.combinedMembership = $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership.decode(reader, reader.uint32());
+ break;
+ }
+ case 6: {
+ if (message.memberships === $util.emptyObject)
+ message.memberships = {};
+ var end2 = reader.uint32() + reader.pos;
+ key = "";
+ value = null;
+ while (reader.pos < end2) {
+ var tag2 = reader.uint32();
+ switch (tag2 >>> 3) {
+ case 1:
+ key = reader.string();
+ break;
+ case 2:
+ value = $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership.decode(reader, reader.uint32());
+ break;
+ default:
+ reader.skipType(tag2 & 7);
+ break;
+ }
+ }
+ message.memberships[key] = value;
+ break;
+ }
+ case 7: {
+ message.relevance = reader.int32();
+ break;
+ }
+ case 8: {
+ message.condition = $root.google.type.Expr.decode(reader, reader.uint32());
+ break;
+ }
+ case 9: {
+ message.conditionExplanation = $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.decode(reader, reader.uint32());
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an AllowBindingExplanation message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation} AllowBindingExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AllowBindingExplanation.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an AllowBindingExplanation message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ AllowBindingExplanation.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.allowAccessState != null && message.hasOwnProperty("allowAccessState"))
+ switch (message.allowAccessState) {
+ default:
+ return "allowAccessState: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.role != null && message.hasOwnProperty("role"))
+ if (!$util.isString(message.role))
+ return "role: string expected";
+ if (message.rolePermission != null && message.hasOwnProperty("rolePermission"))
+ switch (message.rolePermission) {
+ default:
+ return "rolePermission: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ break;
+ }
+ if (message.rolePermissionRelevance != null && message.hasOwnProperty("rolePermissionRelevance"))
+ switch (message.rolePermissionRelevance) {
+ default:
+ return "rolePermissionRelevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ if (message.combinedMembership != null && message.hasOwnProperty("combinedMembership")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership.verify(message.combinedMembership);
+ if (error)
+ return "combinedMembership." + error;
+ }
+ if (message.memberships != null && message.hasOwnProperty("memberships")) {
+ if (!$util.isObject(message.memberships))
+ return "memberships: object expected";
+ var key = Object.keys(message.memberships);
+ for (var i = 0; i < key.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership.verify(message.memberships[key[i]]);
+ if (error)
+ return "memberships." + error;
+ }
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ if (message.condition != null && message.hasOwnProperty("condition")) {
+ var error = $root.google.type.Expr.verify(message.condition);
+ if (error)
+ return "condition." + error;
+ }
+ if (message.conditionExplanation != null && message.hasOwnProperty("conditionExplanation")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.verify(message.conditionExplanation);
+ if (error)
+ return "conditionExplanation." + error;
+ }
+ return null;
+ };
+
+ /**
+ * Creates an AllowBindingExplanation message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation} AllowBindingExplanation
+ */
+ AllowBindingExplanation.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation();
+ switch (object.allowAccessState) {
+ default:
+ if (typeof object.allowAccessState === "number") {
+ message.allowAccessState = object.allowAccessState;
+ break;
+ }
+ break;
+ case "ALLOW_ACCESS_STATE_UNSPECIFIED":
+ case 0:
+ message.allowAccessState = 0;
+ break;
+ case "ALLOW_ACCESS_STATE_GRANTED":
+ case 1:
+ message.allowAccessState = 1;
+ break;
+ case "ALLOW_ACCESS_STATE_NOT_GRANTED":
+ case 2:
+ message.allowAccessState = 2;
+ break;
+ case "ALLOW_ACCESS_STATE_UNKNOWN_CONDITIONAL":
+ case 3:
+ message.allowAccessState = 3;
+ break;
+ case "ALLOW_ACCESS_STATE_UNKNOWN_INFO":
+ case 4:
+ message.allowAccessState = 4;
+ break;
+ }
+ if (object.role != null)
+ message.role = String(object.role);
+ switch (object.rolePermission) {
+ default:
+ if (typeof object.rolePermission === "number") {
+ message.rolePermission = object.rolePermission;
+ break;
+ }
+ break;
+ case "ROLE_PERMISSION_INCLUSION_STATE_UNSPECIFIED":
+ case 0:
+ message.rolePermission = 0;
+ break;
+ case "ROLE_PERMISSION_INCLUDED":
+ case 1:
+ message.rolePermission = 1;
+ break;
+ case "ROLE_PERMISSION_NOT_INCLUDED":
+ case 2:
+ message.rolePermission = 2;
+ break;
+ case "ROLE_PERMISSION_UNKNOWN_INFO":
+ case 3:
+ message.rolePermission = 3;
+ break;
+ }
+ switch (object.rolePermissionRelevance) {
+ default:
+ if (typeof object.rolePermissionRelevance === "number") {
+ message.rolePermissionRelevance = object.rolePermissionRelevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.rolePermissionRelevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.rolePermissionRelevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.rolePermissionRelevance = 2;
+ break;
+ }
+ if (object.combinedMembership != null) {
+ if (typeof object.combinedMembership !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.combinedMembership: object expected");
+ message.combinedMembership = $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership.fromObject(object.combinedMembership);
+ }
+ if (object.memberships) {
+ if (typeof object.memberships !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.memberships: object expected");
+ message.memberships = {};
+ for (var keys = Object.keys(object.memberships), i = 0; i < keys.length; ++i) {
+ if (typeof object.memberships[keys[i]] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.memberships: object expected");
+ message.memberships[keys[i]] = $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership.fromObject(object.memberships[keys[i]]);
+ }
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ if (object.condition != null) {
+ if (typeof object.condition !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.condition: object expected");
+ message.condition = $root.google.type.Expr.fromObject(object.condition);
+ }
+ if (object.conditionExplanation != null) {
+ if (typeof object.conditionExplanation !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.conditionExplanation: object expected");
+ message.conditionExplanation = $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.fromObject(object.conditionExplanation);
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an AllowBindingExplanation message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation} message AllowBindingExplanation
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ AllowBindingExplanation.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.objects || options.defaults)
+ object.memberships = {};
+ if (options.defaults) {
+ object.allowAccessState = options.enums === String ? "ALLOW_ACCESS_STATE_UNSPECIFIED" : 0;
+ object.role = "";
+ object.rolePermission = options.enums === String ? "ROLE_PERMISSION_INCLUSION_STATE_UNSPECIFIED" : 0;
+ object.rolePermissionRelevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ object.combinedMembership = null;
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ object.condition = null;
+ object.conditionExplanation = null;
+ }
+ if (message.allowAccessState != null && message.hasOwnProperty("allowAccessState"))
+ object.allowAccessState = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.AllowAccessState[message.allowAccessState] === undefined ? message.allowAccessState : $root.google.cloud.policytroubleshooter.iam.v3.AllowAccessState[message.allowAccessState] : message.allowAccessState;
+ if (message.role != null && message.hasOwnProperty("role"))
+ object.role = message.role;
+ if (message.rolePermission != null && message.hasOwnProperty("rolePermission"))
+ object.rolePermission = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.RolePermissionInclusionState[message.rolePermission] === undefined ? message.rolePermission : $root.google.cloud.policytroubleshooter.iam.v3.RolePermissionInclusionState[message.rolePermission] : message.rolePermission;
+ if (message.rolePermissionRelevance != null && message.hasOwnProperty("rolePermissionRelevance"))
+ object.rolePermissionRelevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.rolePermissionRelevance] === undefined ? message.rolePermissionRelevance : $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.rolePermissionRelevance] : message.rolePermissionRelevance;
+ if (message.combinedMembership != null && message.hasOwnProperty("combinedMembership"))
+ object.combinedMembership = $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership.toObject(message.combinedMembership, options);
+ var keys2;
+ if (message.memberships && (keys2 = Object.keys(message.memberships)).length) {
+ object.memberships = {};
+ for (var j = 0; j < keys2.length; ++j)
+ object.memberships[keys2[j]] = $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership.toObject(message.memberships[keys2[j]], options);
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] : message.relevance;
+ if (message.condition != null && message.hasOwnProperty("condition"))
+ object.condition = $root.google.type.Expr.toObject(message.condition, options);
+ if (message.conditionExplanation != null && message.hasOwnProperty("conditionExplanation"))
+ object.conditionExplanation = $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.toObject(message.conditionExplanation, options);
+ return object;
+ };
+
+ /**
+ * Converts this AllowBindingExplanation to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ AllowBindingExplanation.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for AllowBindingExplanation
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ AllowBindingExplanation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation";
+ };
+
+ AllowBindingExplanation.AnnotatedAllowMembership = (function() {
+
+ /**
+ * Properties of an AnnotatedAllowMembership.
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @interface IAnnotatedAllowMembership
+ * @property {google.cloud.policytroubleshooter.iam.v3.MembershipMatchingState|null} [membership] AnnotatedAllowMembership membership
+ * @property {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null} [relevance] AnnotatedAllowMembership relevance
+ */
+
+ /**
+ * Constructs a new AnnotatedAllowMembership.
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation
+ * @classdesc Represents an AnnotatedAllowMembership.
+ * @implements IAnnotatedAllowMembership
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.IAnnotatedAllowMembership=} [properties] Properties to set
+ */
+ function AnnotatedAllowMembership(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * AnnotatedAllowMembership membership.
+ * @member {google.cloud.policytroubleshooter.iam.v3.MembershipMatchingState} membership
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership
+ * @instance
+ */
+ AnnotatedAllowMembership.prototype.membership = 0;
+
+ /**
+ * AnnotatedAllowMembership relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership
+ * @instance
+ */
+ AnnotatedAllowMembership.prototype.relevance = 0;
+
+ /**
+ * Creates a new AnnotatedAllowMembership instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.IAnnotatedAllowMembership=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership} AnnotatedAllowMembership instance
+ */
+ AnnotatedAllowMembership.create = function create(properties) {
+ return new AnnotatedAllowMembership(properties);
+ };
+
+ /**
+ * Encodes the specified AnnotatedAllowMembership message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.IAnnotatedAllowMembership} message AnnotatedAllowMembership message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AnnotatedAllowMembership.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.membership != null && Object.hasOwnProperty.call(message, "membership"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.membership);
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 2, wireType 0 =*/16).int32(message.relevance);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified AnnotatedAllowMembership message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.IAnnotatedAllowMembership} message AnnotatedAllowMembership message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AnnotatedAllowMembership.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an AnnotatedAllowMembership message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership} AnnotatedAllowMembership
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AnnotatedAllowMembership.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.membership = reader.int32();
+ break;
+ }
+ case 2: {
+ message.relevance = reader.int32();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an AnnotatedAllowMembership message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership} AnnotatedAllowMembership
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AnnotatedAllowMembership.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an AnnotatedAllowMembership message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ AnnotatedAllowMembership.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.membership != null && message.hasOwnProperty("membership"))
+ switch (message.membership) {
+ default:
+ return "membership: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ return null;
+ };
+
+ /**
+ * Creates an AnnotatedAllowMembership message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership} AnnotatedAllowMembership
+ */
+ AnnotatedAllowMembership.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership();
+ switch (object.membership) {
+ default:
+ if (typeof object.membership === "number") {
+ message.membership = object.membership;
+ break;
+ }
+ break;
+ case "MEMBERSHIP_MATCHING_STATE_UNSPECIFIED":
+ case 0:
+ message.membership = 0;
+ break;
+ case "MEMBERSHIP_MATCHED":
+ case 1:
+ message.membership = 1;
+ break;
+ case "MEMBERSHIP_NOT_MATCHED":
+ case 2:
+ message.membership = 2;
+ break;
+ case "MEMBERSHIP_UNKNOWN_INFO":
+ case 3:
+ message.membership = 3;
+ break;
+ case "MEMBERSHIP_UNKNOWN_UNSUPPORTED":
+ case 4:
+ message.membership = 4;
+ break;
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an AnnotatedAllowMembership message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership} message AnnotatedAllowMembership
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ AnnotatedAllowMembership.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults) {
+ object.membership = options.enums === String ? "MEMBERSHIP_MATCHING_STATE_UNSPECIFIED" : 0;
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ }
+ if (message.membership != null && message.hasOwnProperty("membership"))
+ object.membership = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.MembershipMatchingState[message.membership] === undefined ? message.membership : $root.google.cloud.policytroubleshooter.iam.v3.MembershipMatchingState[message.membership] : message.membership;
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] : message.relevance;
+ return object;
+ };
+
+ /**
+ * Converts this AnnotatedAllowMembership to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ AnnotatedAllowMembership.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for AnnotatedAllowMembership
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ AnnotatedAllowMembership.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.AllowBindingExplanation.AnnotatedAllowMembership";
+ };
+
+ return AnnotatedAllowMembership;
+ })();
+
+ return AllowBindingExplanation;
+ })();
+
+ v3.DenyPolicyExplanation = (function() {
+
+ /**
+ * Properties of a DenyPolicyExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @interface IDenyPolicyExplanation
+ * @property {google.cloud.policytroubleshooter.iam.v3.DenyAccessState|null} [denyAccessState] DenyPolicyExplanation denyAccessState
+ * @property {Array.|null} [explainedResources] DenyPolicyExplanation explainedResources
+ * @property {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null} [relevance] DenyPolicyExplanation relevance
+ * @property {boolean|null} [permissionDeniable] DenyPolicyExplanation permissionDeniable
+ */
+
+ /**
+ * Constructs a new DenyPolicyExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @classdesc Represents a DenyPolicyExplanation.
+ * @implements IDenyPolicyExplanation
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.IDenyPolicyExplanation=} [properties] Properties to set
+ */
+ function DenyPolicyExplanation(properties) {
+ this.explainedResources = [];
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * DenyPolicyExplanation denyAccessState.
+ * @member {google.cloud.policytroubleshooter.iam.v3.DenyAccessState} denyAccessState
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation
+ * @instance
+ */
+ DenyPolicyExplanation.prototype.denyAccessState = 0;
+
+ /**
+ * DenyPolicyExplanation explainedResources.
+ * @member {Array.} explainedResources
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation
+ * @instance
+ */
+ DenyPolicyExplanation.prototype.explainedResources = $util.emptyArray;
+
+ /**
+ * DenyPolicyExplanation relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation
+ * @instance
+ */
+ DenyPolicyExplanation.prototype.relevance = 0;
+
+ /**
+ * DenyPolicyExplanation permissionDeniable.
+ * @member {boolean} permissionDeniable
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation
+ * @instance
+ */
+ DenyPolicyExplanation.prototype.permissionDeniable = false;
+
+ /**
+ * Creates a new DenyPolicyExplanation instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IDenyPolicyExplanation=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation} DenyPolicyExplanation instance
+ */
+ DenyPolicyExplanation.create = function create(properties) {
+ return new DenyPolicyExplanation(properties);
+ };
+
+ /**
+ * Encodes the specified DenyPolicyExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IDenyPolicyExplanation} message DenyPolicyExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ DenyPolicyExplanation.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.denyAccessState != null && Object.hasOwnProperty.call(message, "denyAccessState"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.denyAccessState);
+ if (message.explainedResources != null && message.explainedResources.length)
+ for (var i = 0; i < message.explainedResources.length; ++i)
+ $root.google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource.encode(message.explainedResources[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 3, wireType 0 =*/24).int32(message.relevance);
+ if (message.permissionDeniable != null && Object.hasOwnProperty.call(message, "permissionDeniable"))
+ writer.uint32(/* id 4, wireType 0 =*/32).bool(message.permissionDeniable);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified DenyPolicyExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IDenyPolicyExplanation} message DenyPolicyExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ DenyPolicyExplanation.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a DenyPolicyExplanation message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation} DenyPolicyExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ DenyPolicyExplanation.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.denyAccessState = reader.int32();
+ break;
+ }
+ case 2: {
+ if (!(message.explainedResources && message.explainedResources.length))
+ message.explainedResources = [];
+ message.explainedResources.push($root.google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource.decode(reader, reader.uint32()));
+ break;
+ }
+ case 3: {
+ message.relevance = reader.int32();
+ break;
+ }
+ case 4: {
+ message.permissionDeniable = reader.bool();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a DenyPolicyExplanation message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation} DenyPolicyExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ DenyPolicyExplanation.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a DenyPolicyExplanation message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ DenyPolicyExplanation.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.denyAccessState != null && message.hasOwnProperty("denyAccessState"))
+ switch (message.denyAccessState) {
+ default:
+ return "denyAccessState: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.explainedResources != null && message.hasOwnProperty("explainedResources")) {
+ if (!Array.isArray(message.explainedResources))
+ return "explainedResources: array expected";
+ for (var i = 0; i < message.explainedResources.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource.verify(message.explainedResources[i]);
+ if (error)
+ return "explainedResources." + error;
+ }
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ if (message.permissionDeniable != null && message.hasOwnProperty("permissionDeniable"))
+ if (typeof message.permissionDeniable !== "boolean")
+ return "permissionDeniable: boolean expected";
+ return null;
+ };
+
+ /**
+ * Creates a DenyPolicyExplanation message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation} DenyPolicyExplanation
+ */
+ DenyPolicyExplanation.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation();
+ switch (object.denyAccessState) {
+ default:
+ if (typeof object.denyAccessState === "number") {
+ message.denyAccessState = object.denyAccessState;
+ break;
+ }
+ break;
+ case "DENY_ACCESS_STATE_UNSPECIFIED":
+ case 0:
+ message.denyAccessState = 0;
+ break;
+ case "DENY_ACCESS_STATE_DENIED":
+ case 1:
+ message.denyAccessState = 1;
+ break;
+ case "DENY_ACCESS_STATE_NOT_DENIED":
+ case 2:
+ message.denyAccessState = 2;
+ break;
+ case "DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL":
+ case 3:
+ message.denyAccessState = 3;
+ break;
+ case "DENY_ACCESS_STATE_UNKNOWN_INFO":
+ case 4:
+ message.denyAccessState = 4;
+ break;
+ }
+ if (object.explainedResources) {
+ if (!Array.isArray(object.explainedResources))
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation.explainedResources: array expected");
+ message.explainedResources = [];
+ for (var i = 0; i < object.explainedResources.length; ++i) {
+ if (typeof object.explainedResources[i] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation.explainedResources: object expected");
+ message.explainedResources[i] = $root.google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource.fromObject(object.explainedResources[i]);
+ }
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ if (object.permissionDeniable != null)
+ message.permissionDeniable = Boolean(object.permissionDeniable);
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a DenyPolicyExplanation message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation} message DenyPolicyExplanation
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ DenyPolicyExplanation.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.arrays || options.defaults)
+ object.explainedResources = [];
+ if (options.defaults) {
+ object.denyAccessState = options.enums === String ? "DENY_ACCESS_STATE_UNSPECIFIED" : 0;
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ object.permissionDeniable = false;
+ }
+ if (message.denyAccessState != null && message.hasOwnProperty("denyAccessState"))
+ object.denyAccessState = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.DenyAccessState[message.denyAccessState] === undefined ? message.denyAccessState : $root.google.cloud.policytroubleshooter.iam.v3.DenyAccessState[message.denyAccessState] : message.denyAccessState;
+ if (message.explainedResources && message.explainedResources.length) {
+ object.explainedResources = [];
+ for (var j = 0; j < message.explainedResources.length; ++j)
+ object.explainedResources[j] = $root.google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource.toObject(message.explainedResources[j], options);
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] : message.relevance;
+ if (message.permissionDeniable != null && message.hasOwnProperty("permissionDeniable"))
+ object.permissionDeniable = message.permissionDeniable;
+ return object;
+ };
+
+ /**
+ * Converts this DenyPolicyExplanation to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ DenyPolicyExplanation.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for DenyPolicyExplanation
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ DenyPolicyExplanation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.DenyPolicyExplanation";
+ };
+
+ return DenyPolicyExplanation;
+ })();
+
+ v3.ExplainedDenyResource = (function() {
+
+ /**
+ * Properties of an ExplainedDenyResource.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @interface IExplainedDenyResource
+ * @property {google.cloud.policytroubleshooter.iam.v3.DenyAccessState|null} [denyAccessState] ExplainedDenyResource denyAccessState
+ * @property {string|null} [fullResourceName] ExplainedDenyResource fullResourceName
+ * @property {Array.|null} [explainedPolicies] ExplainedDenyResource explainedPolicies
+ * @property {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null} [relevance] ExplainedDenyResource relevance
+ */
+
+ /**
+ * Constructs a new ExplainedDenyResource.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @classdesc Represents an ExplainedDenyResource.
+ * @implements IExplainedDenyResource
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.IExplainedDenyResource=} [properties] Properties to set
+ */
+ function ExplainedDenyResource(properties) {
+ this.explainedPolicies = [];
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * ExplainedDenyResource denyAccessState.
+ * @member {google.cloud.policytroubleshooter.iam.v3.DenyAccessState} denyAccessState
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource
+ * @instance
+ */
+ ExplainedDenyResource.prototype.denyAccessState = 0;
+
+ /**
+ * ExplainedDenyResource fullResourceName.
+ * @member {string} fullResourceName
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource
+ * @instance
+ */
+ ExplainedDenyResource.prototype.fullResourceName = "";
+
+ /**
+ * ExplainedDenyResource explainedPolicies.
+ * @member {Array.} explainedPolicies
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource
+ * @instance
+ */
+ ExplainedDenyResource.prototype.explainedPolicies = $util.emptyArray;
+
+ /**
+ * ExplainedDenyResource relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource
+ * @instance
+ */
+ ExplainedDenyResource.prototype.relevance = 0;
+
+ /**
+ * Creates a new ExplainedDenyResource instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IExplainedDenyResource=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource} ExplainedDenyResource instance
+ */
+ ExplainedDenyResource.create = function create(properties) {
+ return new ExplainedDenyResource(properties);
+ };
+
+ /**
+ * Encodes the specified ExplainedDenyResource message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IExplainedDenyResource} message ExplainedDenyResource message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ExplainedDenyResource.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.denyAccessState != null && Object.hasOwnProperty.call(message, "denyAccessState"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.denyAccessState);
+ if (message.fullResourceName != null && Object.hasOwnProperty.call(message, "fullResourceName"))
+ writer.uint32(/* id 2, wireType 2 =*/18).string(message.fullResourceName);
+ if (message.explainedPolicies != null && message.explainedPolicies.length)
+ for (var i = 0; i < message.explainedPolicies.length; ++i)
+ $root.google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy.encode(message.explainedPolicies[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 4, wireType 0 =*/32).int32(message.relevance);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified ExplainedDenyResource message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IExplainedDenyResource} message ExplainedDenyResource message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ExplainedDenyResource.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an ExplainedDenyResource message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource} ExplainedDenyResource
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ExplainedDenyResource.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.denyAccessState = reader.int32();
+ break;
+ }
+ case 2: {
+ message.fullResourceName = reader.string();
+ break;
+ }
+ case 3: {
+ if (!(message.explainedPolicies && message.explainedPolicies.length))
+ message.explainedPolicies = [];
+ message.explainedPolicies.push($root.google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy.decode(reader, reader.uint32()));
+ break;
+ }
+ case 4: {
+ message.relevance = reader.int32();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an ExplainedDenyResource message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource} ExplainedDenyResource
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ExplainedDenyResource.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an ExplainedDenyResource message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ ExplainedDenyResource.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.denyAccessState != null && message.hasOwnProperty("denyAccessState"))
+ switch (message.denyAccessState) {
+ default:
+ return "denyAccessState: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+ if (!$util.isString(message.fullResourceName))
+ return "fullResourceName: string expected";
+ if (message.explainedPolicies != null && message.hasOwnProperty("explainedPolicies")) {
+ if (!Array.isArray(message.explainedPolicies))
+ return "explainedPolicies: array expected";
+ for (var i = 0; i < message.explainedPolicies.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy.verify(message.explainedPolicies[i]);
+ if (error)
+ return "explainedPolicies." + error;
+ }
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ return null;
+ };
+
+ /**
+ * Creates an ExplainedDenyResource message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource} ExplainedDenyResource
+ */
+ ExplainedDenyResource.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource();
+ switch (object.denyAccessState) {
+ default:
+ if (typeof object.denyAccessState === "number") {
+ message.denyAccessState = object.denyAccessState;
+ break;
+ }
+ break;
+ case "DENY_ACCESS_STATE_UNSPECIFIED":
+ case 0:
+ message.denyAccessState = 0;
+ break;
+ case "DENY_ACCESS_STATE_DENIED":
+ case 1:
+ message.denyAccessState = 1;
+ break;
+ case "DENY_ACCESS_STATE_NOT_DENIED":
+ case 2:
+ message.denyAccessState = 2;
+ break;
+ case "DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL":
+ case 3:
+ message.denyAccessState = 3;
+ break;
+ case "DENY_ACCESS_STATE_UNKNOWN_INFO":
+ case 4:
+ message.denyAccessState = 4;
+ break;
+ }
+ if (object.fullResourceName != null)
+ message.fullResourceName = String(object.fullResourceName);
+ if (object.explainedPolicies) {
+ if (!Array.isArray(object.explainedPolicies))
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource.explainedPolicies: array expected");
+ message.explainedPolicies = [];
+ for (var i = 0; i < object.explainedPolicies.length; ++i) {
+ if (typeof object.explainedPolicies[i] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource.explainedPolicies: object expected");
+ message.explainedPolicies[i] = $root.google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy.fromObject(object.explainedPolicies[i]);
+ }
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an ExplainedDenyResource message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource} message ExplainedDenyResource
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ ExplainedDenyResource.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.arrays || options.defaults)
+ object.explainedPolicies = [];
+ if (options.defaults) {
+ object.denyAccessState = options.enums === String ? "DENY_ACCESS_STATE_UNSPECIFIED" : 0;
+ object.fullResourceName = "";
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ }
+ if (message.denyAccessState != null && message.hasOwnProperty("denyAccessState"))
+ object.denyAccessState = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.DenyAccessState[message.denyAccessState] === undefined ? message.denyAccessState : $root.google.cloud.policytroubleshooter.iam.v3.DenyAccessState[message.denyAccessState] : message.denyAccessState;
+ if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+ object.fullResourceName = message.fullResourceName;
+ if (message.explainedPolicies && message.explainedPolicies.length) {
+ object.explainedPolicies = [];
+ for (var j = 0; j < message.explainedPolicies.length; ++j)
+ object.explainedPolicies[j] = $root.google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy.toObject(message.explainedPolicies[j], options);
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] : message.relevance;
+ return object;
+ };
+
+ /**
+ * Converts this ExplainedDenyResource to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ ExplainedDenyResource.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for ExplainedDenyResource
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ ExplainedDenyResource.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.ExplainedDenyResource";
+ };
+
+ return ExplainedDenyResource;
+ })();
+
+ v3.ExplainedDenyPolicy = (function() {
+
+ /**
+ * Properties of an ExplainedDenyPolicy.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @interface IExplainedDenyPolicy
+ * @property {google.cloud.policytroubleshooter.iam.v3.DenyAccessState|null} [denyAccessState] ExplainedDenyPolicy denyAccessState
+ * @property {google.iam.v2.IPolicy|null} [policy] ExplainedDenyPolicy policy
+ * @property {Array.|null} [ruleExplanations] ExplainedDenyPolicy ruleExplanations
+ * @property {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null} [relevance] ExplainedDenyPolicy relevance
+ */
+
+ /**
+ * Constructs a new ExplainedDenyPolicy.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @classdesc Represents an ExplainedDenyPolicy.
+ * @implements IExplainedDenyPolicy
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.IExplainedDenyPolicy=} [properties] Properties to set
+ */
+ function ExplainedDenyPolicy(properties) {
+ this.ruleExplanations = [];
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * ExplainedDenyPolicy denyAccessState.
+ * @member {google.cloud.policytroubleshooter.iam.v3.DenyAccessState} denyAccessState
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy
+ * @instance
+ */
+ ExplainedDenyPolicy.prototype.denyAccessState = 0;
+
+ /**
+ * ExplainedDenyPolicy policy.
+ * @member {google.iam.v2.IPolicy|null|undefined} policy
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy
+ * @instance
+ */
+ ExplainedDenyPolicy.prototype.policy = null;
+
+ /**
+ * ExplainedDenyPolicy ruleExplanations.
+ * @member {Array.} ruleExplanations
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy
+ * @instance
+ */
+ ExplainedDenyPolicy.prototype.ruleExplanations = $util.emptyArray;
+
+ /**
+ * ExplainedDenyPolicy relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy
+ * @instance
+ */
+ ExplainedDenyPolicy.prototype.relevance = 0;
+
+ /**
+ * Creates a new ExplainedDenyPolicy instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IExplainedDenyPolicy=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy} ExplainedDenyPolicy instance
+ */
+ ExplainedDenyPolicy.create = function create(properties) {
+ return new ExplainedDenyPolicy(properties);
+ };
+
+ /**
+ * Encodes the specified ExplainedDenyPolicy message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IExplainedDenyPolicy} message ExplainedDenyPolicy message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ExplainedDenyPolicy.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.denyAccessState != null && Object.hasOwnProperty.call(message, "denyAccessState"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.denyAccessState);
+ if (message.policy != null && Object.hasOwnProperty.call(message, "policy"))
+ $root.google.iam.v2.Policy.encode(message.policy, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+ if (message.ruleExplanations != null && message.ruleExplanations.length)
+ for (var i = 0; i < message.ruleExplanations.length; ++i)
+ $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.encode(message.ruleExplanations[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 4, wireType 0 =*/32).int32(message.relevance);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified ExplainedDenyPolicy message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IExplainedDenyPolicy} message ExplainedDenyPolicy message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ExplainedDenyPolicy.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an ExplainedDenyPolicy message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy} ExplainedDenyPolicy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ExplainedDenyPolicy.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.denyAccessState = reader.int32();
+ break;
+ }
+ case 2: {
+ message.policy = $root.google.iam.v2.Policy.decode(reader, reader.uint32());
+ break;
+ }
+ case 3: {
+ if (!(message.ruleExplanations && message.ruleExplanations.length))
+ message.ruleExplanations = [];
+ message.ruleExplanations.push($root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.decode(reader, reader.uint32()));
+ break;
+ }
+ case 4: {
+ message.relevance = reader.int32();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an ExplainedDenyPolicy message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy} ExplainedDenyPolicy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ExplainedDenyPolicy.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an ExplainedDenyPolicy message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ ExplainedDenyPolicy.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.denyAccessState != null && message.hasOwnProperty("denyAccessState"))
+ switch (message.denyAccessState) {
+ default:
+ return "denyAccessState: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.policy != null && message.hasOwnProperty("policy")) {
+ var error = $root.google.iam.v2.Policy.verify(message.policy);
+ if (error)
+ return "policy." + error;
+ }
+ if (message.ruleExplanations != null && message.hasOwnProperty("ruleExplanations")) {
+ if (!Array.isArray(message.ruleExplanations))
+ return "ruleExplanations: array expected";
+ for (var i = 0; i < message.ruleExplanations.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.verify(message.ruleExplanations[i]);
+ if (error)
+ return "ruleExplanations." + error;
+ }
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ return null;
+ };
+
+ /**
+ * Creates an ExplainedDenyPolicy message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy} ExplainedDenyPolicy
+ */
+ ExplainedDenyPolicy.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy();
+ switch (object.denyAccessState) {
+ default:
+ if (typeof object.denyAccessState === "number") {
+ message.denyAccessState = object.denyAccessState;
+ break;
+ }
+ break;
+ case "DENY_ACCESS_STATE_UNSPECIFIED":
+ case 0:
+ message.denyAccessState = 0;
+ break;
+ case "DENY_ACCESS_STATE_DENIED":
+ case 1:
+ message.denyAccessState = 1;
+ break;
+ case "DENY_ACCESS_STATE_NOT_DENIED":
+ case 2:
+ message.denyAccessState = 2;
+ break;
+ case "DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL":
+ case 3:
+ message.denyAccessState = 3;
+ break;
+ case "DENY_ACCESS_STATE_UNKNOWN_INFO":
+ case 4:
+ message.denyAccessState = 4;
+ break;
+ }
+ if (object.policy != null) {
+ if (typeof object.policy !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy.policy: object expected");
+ message.policy = $root.google.iam.v2.Policy.fromObject(object.policy);
+ }
+ if (object.ruleExplanations) {
+ if (!Array.isArray(object.ruleExplanations))
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy.ruleExplanations: array expected");
+ message.ruleExplanations = [];
+ for (var i = 0; i < object.ruleExplanations.length; ++i) {
+ if (typeof object.ruleExplanations[i] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy.ruleExplanations: object expected");
+ message.ruleExplanations[i] = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.fromObject(object.ruleExplanations[i]);
+ }
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an ExplainedDenyPolicy message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy} message ExplainedDenyPolicy
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ ExplainedDenyPolicy.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.arrays || options.defaults)
+ object.ruleExplanations = [];
+ if (options.defaults) {
+ object.denyAccessState = options.enums === String ? "DENY_ACCESS_STATE_UNSPECIFIED" : 0;
+ object.policy = null;
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ }
+ if (message.denyAccessState != null && message.hasOwnProperty("denyAccessState"))
+ object.denyAccessState = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.DenyAccessState[message.denyAccessState] === undefined ? message.denyAccessState : $root.google.cloud.policytroubleshooter.iam.v3.DenyAccessState[message.denyAccessState] : message.denyAccessState;
+ if (message.policy != null && message.hasOwnProperty("policy"))
+ object.policy = $root.google.iam.v2.Policy.toObject(message.policy, options);
+ if (message.ruleExplanations && message.ruleExplanations.length) {
+ object.ruleExplanations = [];
+ for (var j = 0; j < message.ruleExplanations.length; ++j)
+ object.ruleExplanations[j] = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.toObject(message.ruleExplanations[j], options);
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] : message.relevance;
+ return object;
+ };
+
+ /**
+ * Converts this ExplainedDenyPolicy to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ ExplainedDenyPolicy.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for ExplainedDenyPolicy
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ ExplainedDenyPolicy.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.ExplainedDenyPolicy";
+ };
+
+ return ExplainedDenyPolicy;
+ })();
+
+ v3.DenyRuleExplanation = (function() {
+
+ /**
+ * Properties of a DenyRuleExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @interface IDenyRuleExplanation
+ * @property {google.cloud.policytroubleshooter.iam.v3.DenyAccessState|null} [denyAccessState] DenyRuleExplanation denyAccessState
+ * @property {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching|null} [combinedDeniedPermission] DenyRuleExplanation combinedDeniedPermission
+ * @property {Object.|null} [deniedPermissions] DenyRuleExplanation deniedPermissions
+ * @property {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching|null} [combinedExceptionPermission] DenyRuleExplanation combinedExceptionPermission
+ * @property {Object.|null} [exceptionPermissions] DenyRuleExplanation exceptionPermissions
+ * @property {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching|null} [combinedDeniedPrincipal] DenyRuleExplanation combinedDeniedPrincipal
+ * @property {Object.|null} [deniedPrincipals] DenyRuleExplanation deniedPrincipals
+ * @property {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching|null} [combinedExceptionPrincipal] DenyRuleExplanation combinedExceptionPrincipal
+ * @property {Object.|null} [exceptionPrincipals] DenyRuleExplanation exceptionPrincipals
+ * @property {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null} [relevance] DenyRuleExplanation relevance
+ * @property {google.type.IExpr|null} [condition] DenyRuleExplanation condition
+ * @property {google.cloud.policytroubleshooter.iam.v3.IConditionExplanation|null} [conditionExplanation] DenyRuleExplanation conditionExplanation
+ */
+
+ /**
+ * Constructs a new DenyRuleExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @classdesc Represents a DenyRuleExplanation.
+ * @implements IDenyRuleExplanation
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.IDenyRuleExplanation=} [properties] Properties to set
+ */
+ function DenyRuleExplanation(properties) {
+ this.deniedPermissions = {};
+ this.exceptionPermissions = {};
+ this.deniedPrincipals = {};
+ this.exceptionPrincipals = {};
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * DenyRuleExplanation denyAccessState.
+ * @member {google.cloud.policytroubleshooter.iam.v3.DenyAccessState} denyAccessState
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.denyAccessState = 0;
+
+ /**
+ * DenyRuleExplanation combinedDeniedPermission.
+ * @member {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching|null|undefined} combinedDeniedPermission
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.combinedDeniedPermission = null;
+
+ /**
+ * DenyRuleExplanation deniedPermissions.
+ * @member {Object.} deniedPermissions
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.deniedPermissions = $util.emptyObject;
+
+ /**
+ * DenyRuleExplanation combinedExceptionPermission.
+ * @member {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching|null|undefined} combinedExceptionPermission
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.combinedExceptionPermission = null;
+
+ /**
+ * DenyRuleExplanation exceptionPermissions.
+ * @member {Object.} exceptionPermissions
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.exceptionPermissions = $util.emptyObject;
+
+ /**
+ * DenyRuleExplanation combinedDeniedPrincipal.
+ * @member {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching|null|undefined} combinedDeniedPrincipal
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.combinedDeniedPrincipal = null;
+
+ /**
+ * DenyRuleExplanation deniedPrincipals.
+ * @member {Object.} deniedPrincipals
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.deniedPrincipals = $util.emptyObject;
+
+ /**
+ * DenyRuleExplanation combinedExceptionPrincipal.
+ * @member {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching|null|undefined} combinedExceptionPrincipal
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.combinedExceptionPrincipal = null;
+
+ /**
+ * DenyRuleExplanation exceptionPrincipals.
+ * @member {Object.} exceptionPrincipals
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.exceptionPrincipals = $util.emptyObject;
+
+ /**
+ * DenyRuleExplanation relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.relevance = 0;
+
+ /**
+ * DenyRuleExplanation condition.
+ * @member {google.type.IExpr|null|undefined} condition
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.condition = null;
+
+ /**
+ * DenyRuleExplanation conditionExplanation.
+ * @member {google.cloud.policytroubleshooter.iam.v3.IConditionExplanation|null|undefined} conditionExplanation
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.conditionExplanation = null;
+
+ /**
+ * Creates a new DenyRuleExplanation instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IDenyRuleExplanation=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation} DenyRuleExplanation instance
+ */
+ DenyRuleExplanation.create = function create(properties) {
+ return new DenyRuleExplanation(properties);
+ };
+
+ /**
+ * Encodes the specified DenyRuleExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IDenyRuleExplanation} message DenyRuleExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ DenyRuleExplanation.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.denyAccessState != null && Object.hasOwnProperty.call(message, "denyAccessState"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.denyAccessState);
+ if (message.combinedDeniedPermission != null && Object.hasOwnProperty.call(message, "combinedDeniedPermission"))
+ $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.encode(message.combinedDeniedPermission, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+ if (message.deniedPermissions != null && Object.hasOwnProperty.call(message, "deniedPermissions"))
+ for (var keys = Object.keys(message.deniedPermissions), i = 0; i < keys.length; ++i) {
+ writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);
+ $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.encode(message.deniedPermissions[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();
+ }
+ if (message.combinedExceptionPermission != null && Object.hasOwnProperty.call(message, "combinedExceptionPermission"))
+ $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.encode(message.combinedExceptionPermission, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+ if (message.exceptionPermissions != null && Object.hasOwnProperty.call(message, "exceptionPermissions"))
+ for (var keys = Object.keys(message.exceptionPermissions), i = 0; i < keys.length; ++i) {
+ writer.uint32(/* id 5, wireType 2 =*/42).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);
+ $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.encode(message.exceptionPermissions[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();
+ }
+ if (message.combinedDeniedPrincipal != null && Object.hasOwnProperty.call(message, "combinedDeniedPrincipal"))
+ $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.encode(message.combinedDeniedPrincipal, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();
+ if (message.deniedPrincipals != null && Object.hasOwnProperty.call(message, "deniedPrincipals"))
+ for (var keys = Object.keys(message.deniedPrincipals), i = 0; i < keys.length; ++i) {
+ writer.uint32(/* id 7, wireType 2 =*/58).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);
+ $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.encode(message.deniedPrincipals[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();
+ }
+ if (message.combinedExceptionPrincipal != null && Object.hasOwnProperty.call(message, "combinedExceptionPrincipal"))
+ $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.encode(message.combinedExceptionPrincipal, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();
+ if (message.exceptionPrincipals != null && Object.hasOwnProperty.call(message, "exceptionPrincipals"))
+ for (var keys = Object.keys(message.exceptionPrincipals), i = 0; i < keys.length; ++i) {
+ writer.uint32(/* id 9, wireType 2 =*/74).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);
+ $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.encode(message.exceptionPrincipals[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();
+ }
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 10, wireType 0 =*/80).int32(message.relevance);
+ if (message.condition != null && Object.hasOwnProperty.call(message, "condition"))
+ $root.google.type.Expr.encode(message.condition, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();
+ if (message.conditionExplanation != null && Object.hasOwnProperty.call(message, "conditionExplanation"))
+ $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.encode(message.conditionExplanation, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified DenyRuleExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IDenyRuleExplanation} message DenyRuleExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ DenyRuleExplanation.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a DenyRuleExplanation message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation} DenyRuleExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ DenyRuleExplanation.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation(), key, value;
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.denyAccessState = reader.int32();
+ break;
+ }
+ case 2: {
+ message.combinedDeniedPermission = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.decode(reader, reader.uint32());
+ break;
+ }
+ case 3: {
+ if (message.deniedPermissions === $util.emptyObject)
+ message.deniedPermissions = {};
+ var end2 = reader.uint32() + reader.pos;
+ key = "";
+ value = null;
+ while (reader.pos < end2) {
+ var tag2 = reader.uint32();
+ switch (tag2 >>> 3) {
+ case 1:
+ key = reader.string();
+ break;
+ case 2:
+ value = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.decode(reader, reader.uint32());
+ break;
+ default:
+ reader.skipType(tag2 & 7);
+ break;
+ }
+ }
+ message.deniedPermissions[key] = value;
+ break;
+ }
+ case 4: {
+ message.combinedExceptionPermission = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.decode(reader, reader.uint32());
+ break;
+ }
+ case 5: {
+ if (message.exceptionPermissions === $util.emptyObject)
+ message.exceptionPermissions = {};
+ var end2 = reader.uint32() + reader.pos;
+ key = "";
+ value = null;
+ while (reader.pos < end2) {
+ var tag2 = reader.uint32();
+ switch (tag2 >>> 3) {
+ case 1:
+ key = reader.string();
+ break;
+ case 2:
+ value = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.decode(reader, reader.uint32());
+ break;
+ default:
+ reader.skipType(tag2 & 7);
+ break;
+ }
+ }
+ message.exceptionPermissions[key] = value;
+ break;
+ }
+ case 6: {
+ message.combinedDeniedPrincipal = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.decode(reader, reader.uint32());
+ break;
+ }
+ case 7: {
+ if (message.deniedPrincipals === $util.emptyObject)
+ message.deniedPrincipals = {};
+ var end2 = reader.uint32() + reader.pos;
+ key = "";
+ value = null;
+ while (reader.pos < end2) {
+ var tag2 = reader.uint32();
+ switch (tag2 >>> 3) {
+ case 1:
+ key = reader.string();
+ break;
+ case 2:
+ value = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.decode(reader, reader.uint32());
+ break;
+ default:
+ reader.skipType(tag2 & 7);
+ break;
+ }
+ }
+ message.deniedPrincipals[key] = value;
+ break;
+ }
+ case 8: {
+ message.combinedExceptionPrincipal = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.decode(reader, reader.uint32());
+ break;
+ }
+ case 9: {
+ if (message.exceptionPrincipals === $util.emptyObject)
+ message.exceptionPrincipals = {};
+ var end2 = reader.uint32() + reader.pos;
+ key = "";
+ value = null;
+ while (reader.pos < end2) {
+ var tag2 = reader.uint32();
+ switch (tag2 >>> 3) {
+ case 1:
+ key = reader.string();
+ break;
+ case 2:
+ value = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.decode(reader, reader.uint32());
+ break;
+ default:
+ reader.skipType(tag2 & 7);
+ break;
+ }
+ }
+ message.exceptionPrincipals[key] = value;
+ break;
+ }
+ case 10: {
+ message.relevance = reader.int32();
+ break;
+ }
+ case 11: {
+ message.condition = $root.google.type.Expr.decode(reader, reader.uint32());
+ break;
+ }
+ case 12: {
+ message.conditionExplanation = $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.decode(reader, reader.uint32());
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a DenyRuleExplanation message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation} DenyRuleExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ DenyRuleExplanation.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a DenyRuleExplanation message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ DenyRuleExplanation.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.denyAccessState != null && message.hasOwnProperty("denyAccessState"))
+ switch (message.denyAccessState) {
+ default:
+ return "denyAccessState: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.combinedDeniedPermission != null && message.hasOwnProperty("combinedDeniedPermission")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.verify(message.combinedDeniedPermission);
+ if (error)
+ return "combinedDeniedPermission." + error;
+ }
+ if (message.deniedPermissions != null && message.hasOwnProperty("deniedPermissions")) {
+ if (!$util.isObject(message.deniedPermissions))
+ return "deniedPermissions: object expected";
+ var key = Object.keys(message.deniedPermissions);
+ for (var i = 0; i < key.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.verify(message.deniedPermissions[key[i]]);
+ if (error)
+ return "deniedPermissions." + error;
+ }
+ }
+ if (message.combinedExceptionPermission != null && message.hasOwnProperty("combinedExceptionPermission")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.verify(message.combinedExceptionPermission);
+ if (error)
+ return "combinedExceptionPermission." + error;
+ }
+ if (message.exceptionPermissions != null && message.hasOwnProperty("exceptionPermissions")) {
+ if (!$util.isObject(message.exceptionPermissions))
+ return "exceptionPermissions: object expected";
+ var key = Object.keys(message.exceptionPermissions);
+ for (var i = 0; i < key.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.verify(message.exceptionPermissions[key[i]]);
+ if (error)
+ return "exceptionPermissions." + error;
+ }
+ }
+ if (message.combinedDeniedPrincipal != null && message.hasOwnProperty("combinedDeniedPrincipal")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.verify(message.combinedDeniedPrincipal);
+ if (error)
+ return "combinedDeniedPrincipal." + error;
+ }
+ if (message.deniedPrincipals != null && message.hasOwnProperty("deniedPrincipals")) {
+ if (!$util.isObject(message.deniedPrincipals))
+ return "deniedPrincipals: object expected";
+ var key = Object.keys(message.deniedPrincipals);
+ for (var i = 0; i < key.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.verify(message.deniedPrincipals[key[i]]);
+ if (error)
+ return "deniedPrincipals." + error;
+ }
+ }
+ if (message.combinedExceptionPrincipal != null && message.hasOwnProperty("combinedExceptionPrincipal")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.verify(message.combinedExceptionPrincipal);
+ if (error)
+ return "combinedExceptionPrincipal." + error;
+ }
+ if (message.exceptionPrincipals != null && message.hasOwnProperty("exceptionPrincipals")) {
+ if (!$util.isObject(message.exceptionPrincipals))
+ return "exceptionPrincipals: object expected";
+ var key = Object.keys(message.exceptionPrincipals);
+ for (var i = 0; i < key.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.verify(message.exceptionPrincipals[key[i]]);
+ if (error)
+ return "exceptionPrincipals." + error;
+ }
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ if (message.condition != null && message.hasOwnProperty("condition")) {
+ var error = $root.google.type.Expr.verify(message.condition);
+ if (error)
+ return "condition." + error;
+ }
+ if (message.conditionExplanation != null && message.hasOwnProperty("conditionExplanation")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.verify(message.conditionExplanation);
+ if (error)
+ return "conditionExplanation." + error;
+ }
+ return null;
+ };
+
+ /**
+ * Creates a DenyRuleExplanation message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation} DenyRuleExplanation
+ */
+ DenyRuleExplanation.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation();
+ switch (object.denyAccessState) {
+ default:
+ if (typeof object.denyAccessState === "number") {
+ message.denyAccessState = object.denyAccessState;
+ break;
+ }
+ break;
+ case "DENY_ACCESS_STATE_UNSPECIFIED":
+ case 0:
+ message.denyAccessState = 0;
+ break;
+ case "DENY_ACCESS_STATE_DENIED":
+ case 1:
+ message.denyAccessState = 1;
+ break;
+ case "DENY_ACCESS_STATE_NOT_DENIED":
+ case 2:
+ message.denyAccessState = 2;
+ break;
+ case "DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL":
+ case 3:
+ message.denyAccessState = 3;
+ break;
+ case "DENY_ACCESS_STATE_UNKNOWN_INFO":
+ case 4:
+ message.denyAccessState = 4;
+ break;
+ }
+ if (object.combinedDeniedPermission != null) {
+ if (typeof object.combinedDeniedPermission !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.combinedDeniedPermission: object expected");
+ message.combinedDeniedPermission = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.fromObject(object.combinedDeniedPermission);
+ }
+ if (object.deniedPermissions) {
+ if (typeof object.deniedPermissions !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.deniedPermissions: object expected");
+ message.deniedPermissions = {};
+ for (var keys = Object.keys(object.deniedPermissions), i = 0; i < keys.length; ++i) {
+ if (typeof object.deniedPermissions[keys[i]] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.deniedPermissions: object expected");
+ message.deniedPermissions[keys[i]] = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.fromObject(object.deniedPermissions[keys[i]]);
+ }
+ }
+ if (object.combinedExceptionPermission != null) {
+ if (typeof object.combinedExceptionPermission !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.combinedExceptionPermission: object expected");
+ message.combinedExceptionPermission = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.fromObject(object.combinedExceptionPermission);
+ }
+ if (object.exceptionPermissions) {
+ if (typeof object.exceptionPermissions !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.exceptionPermissions: object expected");
+ message.exceptionPermissions = {};
+ for (var keys = Object.keys(object.exceptionPermissions), i = 0; i < keys.length; ++i) {
+ if (typeof object.exceptionPermissions[keys[i]] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.exceptionPermissions: object expected");
+ message.exceptionPermissions[keys[i]] = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.fromObject(object.exceptionPermissions[keys[i]]);
+ }
+ }
+ if (object.combinedDeniedPrincipal != null) {
+ if (typeof object.combinedDeniedPrincipal !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.combinedDeniedPrincipal: object expected");
+ message.combinedDeniedPrincipal = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.fromObject(object.combinedDeniedPrincipal);
+ }
+ if (object.deniedPrincipals) {
+ if (typeof object.deniedPrincipals !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.deniedPrincipals: object expected");
+ message.deniedPrincipals = {};
+ for (var keys = Object.keys(object.deniedPrincipals), i = 0; i < keys.length; ++i) {
+ if (typeof object.deniedPrincipals[keys[i]] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.deniedPrincipals: object expected");
+ message.deniedPrincipals[keys[i]] = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.fromObject(object.deniedPrincipals[keys[i]]);
+ }
+ }
+ if (object.combinedExceptionPrincipal != null) {
+ if (typeof object.combinedExceptionPrincipal !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.combinedExceptionPrincipal: object expected");
+ message.combinedExceptionPrincipal = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.fromObject(object.combinedExceptionPrincipal);
+ }
+ if (object.exceptionPrincipals) {
+ if (typeof object.exceptionPrincipals !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.exceptionPrincipals: object expected");
+ message.exceptionPrincipals = {};
+ for (var keys = Object.keys(object.exceptionPrincipals), i = 0; i < keys.length; ++i) {
+ if (typeof object.exceptionPrincipals[keys[i]] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.exceptionPrincipals: object expected");
+ message.exceptionPrincipals[keys[i]] = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.fromObject(object.exceptionPrincipals[keys[i]]);
+ }
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ if (object.condition != null) {
+ if (typeof object.condition !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.condition: object expected");
+ message.condition = $root.google.type.Expr.fromObject(object.condition);
+ }
+ if (object.conditionExplanation != null) {
+ if (typeof object.conditionExplanation !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.conditionExplanation: object expected");
+ message.conditionExplanation = $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.fromObject(object.conditionExplanation);
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a DenyRuleExplanation message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation} message DenyRuleExplanation
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ DenyRuleExplanation.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.objects || options.defaults) {
+ object.deniedPermissions = {};
+ object.exceptionPermissions = {};
+ object.deniedPrincipals = {};
+ object.exceptionPrincipals = {};
+ }
+ if (options.defaults) {
+ object.denyAccessState = options.enums === String ? "DENY_ACCESS_STATE_UNSPECIFIED" : 0;
+ object.combinedDeniedPermission = null;
+ object.combinedExceptionPermission = null;
+ object.combinedDeniedPrincipal = null;
+ object.combinedExceptionPrincipal = null;
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ object.condition = null;
+ object.conditionExplanation = null;
+ }
+ if (message.denyAccessState != null && message.hasOwnProperty("denyAccessState"))
+ object.denyAccessState = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.DenyAccessState[message.denyAccessState] === undefined ? message.denyAccessState : $root.google.cloud.policytroubleshooter.iam.v3.DenyAccessState[message.denyAccessState] : message.denyAccessState;
+ if (message.combinedDeniedPermission != null && message.hasOwnProperty("combinedDeniedPermission"))
+ object.combinedDeniedPermission = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.toObject(message.combinedDeniedPermission, options);
+ var keys2;
+ if (message.deniedPermissions && (keys2 = Object.keys(message.deniedPermissions)).length) {
+ object.deniedPermissions = {};
+ for (var j = 0; j < keys2.length; ++j)
+ object.deniedPermissions[keys2[j]] = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.toObject(message.deniedPermissions[keys2[j]], options);
+ }
+ if (message.combinedExceptionPermission != null && message.hasOwnProperty("combinedExceptionPermission"))
+ object.combinedExceptionPermission = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.toObject(message.combinedExceptionPermission, options);
+ if (message.exceptionPermissions && (keys2 = Object.keys(message.exceptionPermissions)).length) {
+ object.exceptionPermissions = {};
+ for (var j = 0; j < keys2.length; ++j)
+ object.exceptionPermissions[keys2[j]] = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.toObject(message.exceptionPermissions[keys2[j]], options);
+ }
+ if (message.combinedDeniedPrincipal != null && message.hasOwnProperty("combinedDeniedPrincipal"))
+ object.combinedDeniedPrincipal = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.toObject(message.combinedDeniedPrincipal, options);
+ if (message.deniedPrincipals && (keys2 = Object.keys(message.deniedPrincipals)).length) {
+ object.deniedPrincipals = {};
+ for (var j = 0; j < keys2.length; ++j)
+ object.deniedPrincipals[keys2[j]] = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.toObject(message.deniedPrincipals[keys2[j]], options);
+ }
+ if (message.combinedExceptionPrincipal != null && message.hasOwnProperty("combinedExceptionPrincipal"))
+ object.combinedExceptionPrincipal = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.toObject(message.combinedExceptionPrincipal, options);
+ if (message.exceptionPrincipals && (keys2 = Object.keys(message.exceptionPrincipals)).length) {
+ object.exceptionPrincipals = {};
+ for (var j = 0; j < keys2.length; ++j)
+ object.exceptionPrincipals[keys2[j]] = $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.toObject(message.exceptionPrincipals[keys2[j]], options);
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] : message.relevance;
+ if (message.condition != null && message.hasOwnProperty("condition"))
+ object.condition = $root.google.type.Expr.toObject(message.condition, options);
+ if (message.conditionExplanation != null && message.hasOwnProperty("conditionExplanation"))
+ object.conditionExplanation = $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.toObject(message.conditionExplanation, options);
+ return object;
+ };
+
+ /**
+ * Converts this DenyRuleExplanation to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ DenyRuleExplanation.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for DenyRuleExplanation
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ DenyRuleExplanation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation";
+ };
+
+ DenyRuleExplanation.AnnotatedPermissionMatching = (function() {
+
+ /**
+ * Properties of an AnnotatedPermissionMatching.
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @interface IAnnotatedPermissionMatching
+ * @property {google.cloud.policytroubleshooter.iam.v3.PermissionPatternMatchingState|null} [permissionMatchingState] AnnotatedPermissionMatching permissionMatchingState
+ * @property {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null} [relevance] AnnotatedPermissionMatching relevance
+ */
+
+ /**
+ * Constructs a new AnnotatedPermissionMatching.
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @classdesc Represents an AnnotatedPermissionMatching.
+ * @implements IAnnotatedPermissionMatching
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching=} [properties] Properties to set
+ */
+ function AnnotatedPermissionMatching(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * AnnotatedPermissionMatching permissionMatchingState.
+ * @member {google.cloud.policytroubleshooter.iam.v3.PermissionPatternMatchingState} permissionMatchingState
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @instance
+ */
+ AnnotatedPermissionMatching.prototype.permissionMatchingState = 0;
+
+ /**
+ * AnnotatedPermissionMatching relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @instance
+ */
+ AnnotatedPermissionMatching.prototype.relevance = 0;
+
+ /**
+ * Creates a new AnnotatedPermissionMatching instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching} AnnotatedPermissionMatching instance
+ */
+ AnnotatedPermissionMatching.create = function create(properties) {
+ return new AnnotatedPermissionMatching(properties);
+ };
+
+ /**
+ * Encodes the specified AnnotatedPermissionMatching message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching} message AnnotatedPermissionMatching message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AnnotatedPermissionMatching.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.permissionMatchingState != null && Object.hasOwnProperty.call(message, "permissionMatchingState"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.permissionMatchingState);
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 2, wireType 0 =*/16).int32(message.relevance);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified AnnotatedPermissionMatching message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedPermissionMatching} message AnnotatedPermissionMatching message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AnnotatedPermissionMatching.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an AnnotatedPermissionMatching message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching} AnnotatedPermissionMatching
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AnnotatedPermissionMatching.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.permissionMatchingState = reader.int32();
+ break;
+ }
+ case 2: {
+ message.relevance = reader.int32();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an AnnotatedPermissionMatching message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching} AnnotatedPermissionMatching
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AnnotatedPermissionMatching.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an AnnotatedPermissionMatching message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ AnnotatedPermissionMatching.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.permissionMatchingState != null && message.hasOwnProperty("permissionMatchingState"))
+ switch (message.permissionMatchingState) {
+ default:
+ return "permissionMatchingState: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ return null;
+ };
+
+ /**
+ * Creates an AnnotatedPermissionMatching message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching} AnnotatedPermissionMatching
+ */
+ AnnotatedPermissionMatching.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching();
+ switch (object.permissionMatchingState) {
+ default:
+ if (typeof object.permissionMatchingState === "number") {
+ message.permissionMatchingState = object.permissionMatchingState;
+ break;
+ }
+ break;
+ case "PERMISSION_PATTERN_MATCHING_STATE_UNSPECIFIED":
+ case 0:
+ message.permissionMatchingState = 0;
+ break;
+ case "PERMISSION_PATTERN_MATCHED":
+ case 1:
+ message.permissionMatchingState = 1;
+ break;
+ case "PERMISSION_PATTERN_NOT_MATCHED":
+ case 2:
+ message.permissionMatchingState = 2;
+ break;
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an AnnotatedPermissionMatching message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching} message AnnotatedPermissionMatching
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ AnnotatedPermissionMatching.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults) {
+ object.permissionMatchingState = options.enums === String ? "PERMISSION_PATTERN_MATCHING_STATE_UNSPECIFIED" : 0;
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ }
+ if (message.permissionMatchingState != null && message.hasOwnProperty("permissionMatchingState"))
+ object.permissionMatchingState = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.PermissionPatternMatchingState[message.permissionMatchingState] === undefined ? message.permissionMatchingState : $root.google.cloud.policytroubleshooter.iam.v3.PermissionPatternMatchingState[message.permissionMatchingState] : message.permissionMatchingState;
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] : message.relevance;
+ return object;
+ };
+
+ /**
+ * Converts this AnnotatedPermissionMatching to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ AnnotatedPermissionMatching.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for AnnotatedPermissionMatching
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ AnnotatedPermissionMatching.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedPermissionMatching";
+ };
+
+ return AnnotatedPermissionMatching;
+ })();
+
+ DenyRuleExplanation.AnnotatedDenyPrincipalMatching = (function() {
+
+ /**
+ * Properties of an AnnotatedDenyPrincipalMatching.
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @interface IAnnotatedDenyPrincipalMatching
+ * @property {google.cloud.policytroubleshooter.iam.v3.MembershipMatchingState|null} [membership] AnnotatedDenyPrincipalMatching membership
+ * @property {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance|null} [relevance] AnnotatedDenyPrincipalMatching relevance
+ */
+
+ /**
+ * Constructs a new AnnotatedDenyPrincipalMatching.
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation
+ * @classdesc Represents an AnnotatedDenyPrincipalMatching.
+ * @implements IAnnotatedDenyPrincipalMatching
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching=} [properties] Properties to set
+ */
+ function AnnotatedDenyPrincipalMatching(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * AnnotatedDenyPrincipalMatching membership.
+ * @member {google.cloud.policytroubleshooter.iam.v3.MembershipMatchingState} membership
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @instance
+ */
+ AnnotatedDenyPrincipalMatching.prototype.membership = 0;
+
+ /**
+ * AnnotatedDenyPrincipalMatching relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @instance
+ */
+ AnnotatedDenyPrincipalMatching.prototype.relevance = 0;
+
+ /**
+ * Creates a new AnnotatedDenyPrincipalMatching instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching} AnnotatedDenyPrincipalMatching instance
+ */
+ AnnotatedDenyPrincipalMatching.create = function create(properties) {
+ return new AnnotatedDenyPrincipalMatching(properties);
+ };
+
+ /**
+ * Encodes the specified AnnotatedDenyPrincipalMatching message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching} message AnnotatedDenyPrincipalMatching message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AnnotatedDenyPrincipalMatching.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.membership != null && Object.hasOwnProperty.call(message, "membership"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.membership);
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 2, wireType 0 =*/16).int32(message.relevance);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified AnnotatedDenyPrincipalMatching message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching} message AnnotatedDenyPrincipalMatching message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AnnotatedDenyPrincipalMatching.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an AnnotatedDenyPrincipalMatching message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching} AnnotatedDenyPrincipalMatching
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AnnotatedDenyPrincipalMatching.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.membership = reader.int32();
+ break;
+ }
+ case 2: {
+ message.relevance = reader.int32();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an AnnotatedDenyPrincipalMatching message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching} AnnotatedDenyPrincipalMatching
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AnnotatedDenyPrincipalMatching.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an AnnotatedDenyPrincipalMatching message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ AnnotatedDenyPrincipalMatching.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.membership != null && message.hasOwnProperty("membership"))
+ switch (message.membership) {
+ default:
+ return "membership: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ return null;
+ };
+
+ /**
+ * Creates an AnnotatedDenyPrincipalMatching message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching} AnnotatedDenyPrincipalMatching
+ */
+ AnnotatedDenyPrincipalMatching.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching();
+ switch (object.membership) {
+ default:
+ if (typeof object.membership === "number") {
+ message.membership = object.membership;
+ break;
+ }
+ break;
+ case "MEMBERSHIP_MATCHING_STATE_UNSPECIFIED":
+ case 0:
+ message.membership = 0;
+ break;
+ case "MEMBERSHIP_MATCHED":
+ case 1:
+ message.membership = 1;
+ break;
+ case "MEMBERSHIP_NOT_MATCHED":
+ case 2:
+ message.membership = 2;
+ break;
+ case "MEMBERSHIP_UNKNOWN_INFO":
+ case 3:
+ message.membership = 3;
+ break;
+ case "MEMBERSHIP_UNKNOWN_UNSUPPORTED":
+ case 4:
+ message.membership = 4;
+ break;
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an AnnotatedDenyPrincipalMatching message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching} message AnnotatedDenyPrincipalMatching
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ AnnotatedDenyPrincipalMatching.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults) {
+ object.membership = options.enums === String ? "MEMBERSHIP_MATCHING_STATE_UNSPECIFIED" : 0;
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ }
+ if (message.membership != null && message.hasOwnProperty("membership"))
+ object.membership = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.MembershipMatchingState[message.membership] === undefined ? message.membership : $root.google.cloud.policytroubleshooter.iam.v3.MembershipMatchingState[message.membership] : message.membership;
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3.HeuristicRelevance[message.relevance] : message.relevance;
+ return object;
+ };
+
+ /**
+ * Converts this AnnotatedDenyPrincipalMatching to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ AnnotatedDenyPrincipalMatching.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for AnnotatedDenyPrincipalMatching
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ AnnotatedDenyPrincipalMatching.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.DenyRuleExplanation.AnnotatedDenyPrincipalMatching";
+ };
+
+ return AnnotatedDenyPrincipalMatching;
+ })();
+
+ return DenyRuleExplanation;
+ })();
+
+ v3.ConditionExplanation = (function() {
+
+ /**
+ * Properties of a ConditionExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @interface IConditionExplanation
+ * @property {google.protobuf.IValue|null} [value] ConditionExplanation value
+ * @property {Array.|null} [errors] ConditionExplanation errors
+ * @property {Array.|null} [evaluationStates] ConditionExplanation evaluationStates
+ */
+
+ /**
+ * Constructs a new ConditionExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3
+ * @classdesc Represents a ConditionExplanation.
+ * @implements IConditionExplanation
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.IConditionExplanation=} [properties] Properties to set
+ */
+ function ConditionExplanation(properties) {
+ this.errors = [];
+ this.evaluationStates = [];
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * ConditionExplanation value.
+ * @member {google.protobuf.IValue|null|undefined} value
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation
+ * @instance
+ */
+ ConditionExplanation.prototype.value = null;
+
+ /**
+ * ConditionExplanation errors.
+ * @member {Array.} errors
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation
+ * @instance
+ */
+ ConditionExplanation.prototype.errors = $util.emptyArray;
+
+ /**
+ * ConditionExplanation evaluationStates.
+ * @member {Array.} evaluationStates
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation
+ * @instance
+ */
+ ConditionExplanation.prototype.evaluationStates = $util.emptyArray;
+
+ /**
+ * Creates a new ConditionExplanation instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IConditionExplanation=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionExplanation} ConditionExplanation instance
+ */
+ ConditionExplanation.create = function create(properties) {
+ return new ConditionExplanation(properties);
+ };
+
+ /**
+ * Encodes the specified ConditionExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IConditionExplanation} message ConditionExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ConditionExplanation.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.value != null && Object.hasOwnProperty.call(message, "value"))
+ $root.google.protobuf.Value.encode(message.value, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+ if (message.evaluationStates != null && message.evaluationStates.length)
+ for (var i = 0; i < message.evaluationStates.length; ++i)
+ $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState.encode(message.evaluationStates[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+ if (message.errors != null && message.errors.length)
+ for (var i = 0; i < message.errors.length; ++i)
+ $root.google.rpc.Status.encode(message.errors[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified ConditionExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.IConditionExplanation} message ConditionExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ConditionExplanation.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a ConditionExplanation message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionExplanation} ConditionExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ConditionExplanation.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.value = $root.google.protobuf.Value.decode(reader, reader.uint32());
+ break;
+ }
+ case 3: {
+ if (!(message.errors && message.errors.length))
+ message.errors = [];
+ message.errors.push($root.google.rpc.Status.decode(reader, reader.uint32()));
+ break;
+ }
+ case 2: {
+ if (!(message.evaluationStates && message.evaluationStates.length))
+ message.evaluationStates = [];
+ message.evaluationStates.push($root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState.decode(reader, reader.uint32()));
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a ConditionExplanation message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionExplanation} ConditionExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ConditionExplanation.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a ConditionExplanation message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ ConditionExplanation.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.value != null && message.hasOwnProperty("value")) {
+ var error = $root.google.protobuf.Value.verify(message.value);
+ if (error)
+ return "value." + error;
+ }
+ if (message.errors != null && message.hasOwnProperty("errors")) {
+ if (!Array.isArray(message.errors))
+ return "errors: array expected";
+ for (var i = 0; i < message.errors.length; ++i) {
+ var error = $root.google.rpc.Status.verify(message.errors[i]);
+ if (error)
+ return "errors." + error;
+ }
+ }
+ if (message.evaluationStates != null && message.hasOwnProperty("evaluationStates")) {
+ if (!Array.isArray(message.evaluationStates))
+ return "evaluationStates: array expected";
+ for (var i = 0; i < message.evaluationStates.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState.verify(message.evaluationStates[i]);
+ if (error)
+ return "evaluationStates." + error;
+ }
+ }
+ return null;
+ };
+
+ /**
+ * Creates a ConditionExplanation message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionExplanation} ConditionExplanation
+ */
+ ConditionExplanation.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation();
+ if (object.value != null) {
+ if (typeof object.value !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.value: object expected");
+ message.value = $root.google.protobuf.Value.fromObject(object.value);
+ }
+ if (object.errors) {
+ if (!Array.isArray(object.errors))
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.errors: array expected");
+ message.errors = [];
+ for (var i = 0; i < object.errors.length; ++i) {
+ if (typeof object.errors[i] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.errors: object expected");
+ message.errors[i] = $root.google.rpc.Status.fromObject(object.errors[i]);
+ }
+ }
+ if (object.evaluationStates) {
+ if (!Array.isArray(object.evaluationStates))
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.evaluationStates: array expected");
+ message.evaluationStates = [];
+ for (var i = 0; i < object.evaluationStates.length; ++i) {
+ if (typeof object.evaluationStates[i] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.evaluationStates: object expected");
+ message.evaluationStates[i] = $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState.fromObject(object.evaluationStates[i]);
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a ConditionExplanation message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionExplanation} message ConditionExplanation
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ ConditionExplanation.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.arrays || options.defaults) {
+ object.evaluationStates = [];
+ object.errors = [];
+ }
+ if (options.defaults)
+ object.value = null;
+ if (message.value != null && message.hasOwnProperty("value"))
+ object.value = $root.google.protobuf.Value.toObject(message.value, options);
+ if (message.evaluationStates && message.evaluationStates.length) {
+ object.evaluationStates = [];
+ for (var j = 0; j < message.evaluationStates.length; ++j)
+ object.evaluationStates[j] = $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState.toObject(message.evaluationStates[j], options);
+ }
+ if (message.errors && message.errors.length) {
+ object.errors = [];
+ for (var j = 0; j < message.errors.length; ++j)
+ object.errors[j] = $root.google.rpc.Status.toObject(message.errors[j], options);
+ }
+ return object;
+ };
+
+ /**
+ * Converts this ConditionExplanation to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ ConditionExplanation.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for ConditionExplanation
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ ConditionExplanation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.ConditionExplanation";
+ };
+
+ ConditionExplanation.EvaluationState = (function() {
+
+ /**
+ * Properties of an EvaluationState.
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation
+ * @interface IEvaluationState
+ * @property {number|null} [start] EvaluationState start
+ * @property {number|null} [end] EvaluationState end
+ * @property {google.protobuf.IValue|null} [value] EvaluationState value
+ * @property {Array.|null} [errors] EvaluationState errors
+ */
+
+ /**
+ * Constructs a new EvaluationState.
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation
+ * @classdesc Represents an EvaluationState.
+ * @implements IEvaluationState
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.IEvaluationState=} [properties] Properties to set
+ */
+ function EvaluationState(properties) {
+ this.errors = [];
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * EvaluationState start.
+ * @member {number} start
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState
+ * @instance
+ */
+ EvaluationState.prototype.start = 0;
+
+ /**
+ * EvaluationState end.
+ * @member {number} end
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState
+ * @instance
+ */
+ EvaluationState.prototype.end = 0;
+
+ /**
+ * EvaluationState value.
+ * @member {google.protobuf.IValue|null|undefined} value
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState
+ * @instance
+ */
+ EvaluationState.prototype.value = null;
+
+ /**
+ * EvaluationState errors.
+ * @member {Array.} errors
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState
+ * @instance
+ */
+ EvaluationState.prototype.errors = $util.emptyArray;
+
+ /**
+ * Creates a new EvaluationState instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.IEvaluationState=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState} EvaluationState instance
+ */
+ EvaluationState.create = function create(properties) {
+ return new EvaluationState(properties);
+ };
+
+ /**
+ * Encodes the specified EvaluationState message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.IEvaluationState} message EvaluationState message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ EvaluationState.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.start != null && Object.hasOwnProperty.call(message, "start"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start);
+ if (message.end != null && Object.hasOwnProperty.call(message, "end"))
+ writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end);
+ if (message.value != null && Object.hasOwnProperty.call(message, "value"))
+ $root.google.protobuf.Value.encode(message.value, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+ if (message.errors != null && message.errors.length)
+ for (var i = 0; i < message.errors.length; ++i)
+ $root.google.rpc.Status.encode(message.errors[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified EvaluationState message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.IEvaluationState} message EvaluationState message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ EvaluationState.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an EvaluationState message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState} EvaluationState
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ EvaluationState.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.start = reader.int32();
+ break;
+ }
+ case 2: {
+ message.end = reader.int32();
+ break;
+ }
+ case 3: {
+ message.value = $root.google.protobuf.Value.decode(reader, reader.uint32());
+ break;
+ }
+ case 4: {
+ if (!(message.errors && message.errors.length))
+ message.errors = [];
+ message.errors.push($root.google.rpc.Status.decode(reader, reader.uint32()));
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an EvaluationState message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState} EvaluationState
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ EvaluationState.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an EvaluationState message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ EvaluationState.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.start != null && message.hasOwnProperty("start"))
+ if (!$util.isInteger(message.start))
+ return "start: integer expected";
+ if (message.end != null && message.hasOwnProperty("end"))
+ if (!$util.isInteger(message.end))
+ return "end: integer expected";
+ if (message.value != null && message.hasOwnProperty("value")) {
+ var error = $root.google.protobuf.Value.verify(message.value);
+ if (error)
+ return "value." + error;
+ }
+ if (message.errors != null && message.hasOwnProperty("errors")) {
+ if (!Array.isArray(message.errors))
+ return "errors: array expected";
+ for (var i = 0; i < message.errors.length; ++i) {
+ var error = $root.google.rpc.Status.verify(message.errors[i]);
+ if (error)
+ return "errors." + error;
+ }
+ }
+ return null;
+ };
+
+ /**
+ * Creates an EvaluationState message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState} EvaluationState
+ */
+ EvaluationState.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState();
+ if (object.start != null)
+ message.start = object.start | 0;
+ if (object.end != null)
+ message.end = object.end | 0;
+ if (object.value != null) {
+ if (typeof object.value !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState.value: object expected");
+ message.value = $root.google.protobuf.Value.fromObject(object.value);
+ }
+ if (object.errors) {
+ if (!Array.isArray(object.errors))
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState.errors: array expected");
+ message.errors = [];
+ for (var i = 0; i < object.errors.length; ++i) {
+ if (typeof object.errors[i] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState.errors: object expected");
+ message.errors[i] = $root.google.rpc.Status.fromObject(object.errors[i]);
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an EvaluationState message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState} message EvaluationState
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ EvaluationState.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.arrays || options.defaults)
+ object.errors = [];
+ if (options.defaults) {
+ object.start = 0;
+ object.end = 0;
+ object.value = null;
+ }
+ if (message.start != null && message.hasOwnProperty("start"))
+ object.start = message.start;
+ if (message.end != null && message.hasOwnProperty("end"))
+ object.end = message.end;
+ if (message.value != null && message.hasOwnProperty("value"))
+ object.value = $root.google.protobuf.Value.toObject(message.value, options);
+ if (message.errors && message.errors.length) {
+ object.errors = [];
+ for (var j = 0; j < message.errors.length; ++j)
+ object.errors[j] = $root.google.rpc.Status.toObject(message.errors[j], options);
+ }
+ return object;
+ };
+
+ /**
+ * Converts this EvaluationState to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ EvaluationState.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for EvaluationState
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ EvaluationState.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3.ConditionExplanation.EvaluationState";
+ };
+
+ return EvaluationState;
+ })();
+
+ return ConditionExplanation;
+ })();
+
+ return v3;
+ })();
+
+ iam.v3beta = (function() {
+
+ /**
+ * Namespace v3beta.
+ * @memberof google.cloud.policytroubleshooter.iam
+ * @namespace
+ */
+ var v3beta = {};
+
+ v3beta.PolicyTroubleshooter = (function() {
+
+ /**
+ * Constructs a new PolicyTroubleshooter service.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @classdesc Represents a PolicyTroubleshooter
+ * @extends $protobuf.rpc.Service
+ * @constructor
+ * @param {$protobuf.RPCImpl} rpcImpl RPC implementation
+ * @param {boolean} [requestDelimited=false] Whether requests are length-delimited
+ * @param {boolean} [responseDelimited=false] Whether responses are length-delimited
+ */
+ function PolicyTroubleshooter(rpcImpl, requestDelimited, responseDelimited) {
+ $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited);
+ }
+
+ (PolicyTroubleshooter.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = PolicyTroubleshooter;
+
+ /**
+ * Creates new PolicyTroubleshooter service using the specified rpc implementation.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.PolicyTroubleshooter
+ * @static
+ * @param {$protobuf.RPCImpl} rpcImpl RPC implementation
+ * @param {boolean} [requestDelimited=false] Whether requests are length-delimited
+ * @param {boolean} [responseDelimited=false] Whether responses are length-delimited
+ * @returns {PolicyTroubleshooter} RPC service. Useful where requests and/or responses are streamed.
+ */
+ PolicyTroubleshooter.create = function create(rpcImpl, requestDelimited, responseDelimited) {
+ return new this(rpcImpl, requestDelimited, responseDelimited);
+ };
+
+ /**
+ * Callback as used by {@link google.cloud.policytroubleshooter.iam.v3beta.PolicyTroubleshooter|troubleshootIamPolicy}.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.PolicyTroubleshooter
+ * @typedef TroubleshootIamPolicyCallback
+ * @type {function}
+ * @param {Error|null} error Error, if any
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse} [response] TroubleshootIamPolicyResponse
+ */
+
+ /**
+ * Calls TroubleshootIamPolicy.
+ * @function troubleshootIamPolicy
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.PolicyTroubleshooter
+ * @instance
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyRequest} request TroubleshootIamPolicyRequest message or plain object
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.PolicyTroubleshooter.TroubleshootIamPolicyCallback} callback Node-style callback called with the error, if any, and TroubleshootIamPolicyResponse
+ * @returns {undefined}
+ * @variation 1
+ */
+ Object.defineProperty(PolicyTroubleshooter.prototype.troubleshootIamPolicy = function troubleshootIamPolicy(request, callback) {
+ return this.rpcCall(troubleshootIamPolicy, $root.google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest, $root.google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse, request, callback);
+ }, "name", { value: "TroubleshootIamPolicy" });
+
+ /**
+ * Calls TroubleshootIamPolicy.
+ * @function troubleshootIamPolicy
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.PolicyTroubleshooter
+ * @instance
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyRequest} request TroubleshootIamPolicyRequest message or plain object
+ * @returns {Promise} Promise
+ * @variation 2
+ */
+
+ return PolicyTroubleshooter;
+ })();
+
+ /**
+ * AllowAccessState enum.
+ * @name google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState
+ * @enum {number}
+ * @property {number} ALLOW_ACCESS_STATE_UNSPECIFIED=0 ALLOW_ACCESS_STATE_UNSPECIFIED value
+ * @property {number} ALLOW_ACCESS_STATE_GRANTED=1 ALLOW_ACCESS_STATE_GRANTED value
+ * @property {number} ALLOW_ACCESS_STATE_NOT_GRANTED=2 ALLOW_ACCESS_STATE_NOT_GRANTED value
+ * @property {number} ALLOW_ACCESS_STATE_UNKNOWN_CONDITIONAL=3 ALLOW_ACCESS_STATE_UNKNOWN_CONDITIONAL value
+ * @property {number} ALLOW_ACCESS_STATE_UNKNOWN_INFO=4 ALLOW_ACCESS_STATE_UNKNOWN_INFO value
+ */
+ v3beta.AllowAccessState = (function() {
+ var valuesById = {}, values = Object.create(valuesById);
+ values[valuesById[0] = "ALLOW_ACCESS_STATE_UNSPECIFIED"] = 0;
+ values[valuesById[1] = "ALLOW_ACCESS_STATE_GRANTED"] = 1;
+ values[valuesById[2] = "ALLOW_ACCESS_STATE_NOT_GRANTED"] = 2;
+ values[valuesById[3] = "ALLOW_ACCESS_STATE_UNKNOWN_CONDITIONAL"] = 3;
+ values[valuesById[4] = "ALLOW_ACCESS_STATE_UNKNOWN_INFO"] = 4;
+ return values;
+ })();
+
+ /**
+ * DenyAccessState enum.
+ * @name google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState
+ * @enum {number}
+ * @property {number} DENY_ACCESS_STATE_UNSPECIFIED=0 DENY_ACCESS_STATE_UNSPECIFIED value
+ * @property {number} DENY_ACCESS_STATE_DENIED=1 DENY_ACCESS_STATE_DENIED value
+ * @property {number} DENY_ACCESS_STATE_NOT_DENIED=2 DENY_ACCESS_STATE_NOT_DENIED value
+ * @property {number} DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL=3 DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL value
+ * @property {number} DENY_ACCESS_STATE_UNKNOWN_INFO=4 DENY_ACCESS_STATE_UNKNOWN_INFO value
+ */
+ v3beta.DenyAccessState = (function() {
+ var valuesById = {}, values = Object.create(valuesById);
+ values[valuesById[0] = "DENY_ACCESS_STATE_UNSPECIFIED"] = 0;
+ values[valuesById[1] = "DENY_ACCESS_STATE_DENIED"] = 1;
+ values[valuesById[2] = "DENY_ACCESS_STATE_NOT_DENIED"] = 2;
+ values[valuesById[3] = "DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL"] = 3;
+ values[valuesById[4] = "DENY_ACCESS_STATE_UNKNOWN_INFO"] = 4;
+ return values;
+ })();
+
+ /**
+ * RolePermissionInclusionState enum.
+ * @name google.cloud.policytroubleshooter.iam.v3beta.RolePermissionInclusionState
+ * @enum {number}
+ * @property {number} ROLE_PERMISSION_INCLUSION_STATE_UNSPECIFIED=0 ROLE_PERMISSION_INCLUSION_STATE_UNSPECIFIED value
+ * @property {number} ROLE_PERMISSION_INCLUDED=1 ROLE_PERMISSION_INCLUDED value
+ * @property {number} ROLE_PERMISSION_NOT_INCLUDED=2 ROLE_PERMISSION_NOT_INCLUDED value
+ * @property {number} ROLE_PERMISSION_UNKNOWN_INFO=3 ROLE_PERMISSION_UNKNOWN_INFO value
+ */
+ v3beta.RolePermissionInclusionState = (function() {
+ var valuesById = {}, values = Object.create(valuesById);
+ values[valuesById[0] = "ROLE_PERMISSION_INCLUSION_STATE_UNSPECIFIED"] = 0;
+ values[valuesById[1] = "ROLE_PERMISSION_INCLUDED"] = 1;
+ values[valuesById[2] = "ROLE_PERMISSION_NOT_INCLUDED"] = 2;
+ values[valuesById[3] = "ROLE_PERMISSION_UNKNOWN_INFO"] = 3;
+ return values;
+ })();
+
+ /**
+ * PermissionPatternMatchingState enum.
+ * @name google.cloud.policytroubleshooter.iam.v3beta.PermissionPatternMatchingState
+ * @enum {number}
+ * @property {number} PERMISSION_PATTERN_MATCHING_STATE_UNSPECIFIED=0 PERMISSION_PATTERN_MATCHING_STATE_UNSPECIFIED value
+ * @property {number} PERMISSION_PATTERN_MATCHED=1 PERMISSION_PATTERN_MATCHED value
+ * @property {number} PERMISSION_PATTERN_NOT_MATCHED=2 PERMISSION_PATTERN_NOT_MATCHED value
+ */
+ v3beta.PermissionPatternMatchingState = (function() {
+ var valuesById = {}, values = Object.create(valuesById);
+ values[valuesById[0] = "PERMISSION_PATTERN_MATCHING_STATE_UNSPECIFIED"] = 0;
+ values[valuesById[1] = "PERMISSION_PATTERN_MATCHED"] = 1;
+ values[valuesById[2] = "PERMISSION_PATTERN_NOT_MATCHED"] = 2;
+ return values;
+ })();
+
+ /**
+ * MembershipMatchingState enum.
+ * @name google.cloud.policytroubleshooter.iam.v3beta.MembershipMatchingState
+ * @enum {number}
+ * @property {number} MEMBERSHIP_MATCHING_STATE_UNSPECIFIED=0 MEMBERSHIP_MATCHING_STATE_UNSPECIFIED value
+ * @property {number} MEMBERSHIP_MATCHED=1 MEMBERSHIP_MATCHED value
+ * @property {number} MEMBERSHIP_NOT_MATCHED=2 MEMBERSHIP_NOT_MATCHED value
+ * @property {number} MEMBERSHIP_UNKNOWN_INFO=3 MEMBERSHIP_UNKNOWN_INFO value
+ * @property {number} MEMBERSHIP_UNKNOWN_UNSUPPORTED=4 MEMBERSHIP_UNKNOWN_UNSUPPORTED value
+ */
+ v3beta.MembershipMatchingState = (function() {
+ var valuesById = {}, values = Object.create(valuesById);
+ values[valuesById[0] = "MEMBERSHIP_MATCHING_STATE_UNSPECIFIED"] = 0;
+ values[valuesById[1] = "MEMBERSHIP_MATCHED"] = 1;
+ values[valuesById[2] = "MEMBERSHIP_NOT_MATCHED"] = 2;
+ values[valuesById[3] = "MEMBERSHIP_UNKNOWN_INFO"] = 3;
+ values[valuesById[4] = "MEMBERSHIP_UNKNOWN_UNSUPPORTED"] = 4;
+ return values;
+ })();
+
+ /**
+ * HeuristicRelevance enum.
+ * @name google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance
+ * @enum {number}
+ * @property {number} HEURISTIC_RELEVANCE_UNSPECIFIED=0 HEURISTIC_RELEVANCE_UNSPECIFIED value
+ * @property {number} HEURISTIC_RELEVANCE_NORMAL=1 HEURISTIC_RELEVANCE_NORMAL value
+ * @property {number} HEURISTIC_RELEVANCE_HIGH=2 HEURISTIC_RELEVANCE_HIGH value
+ */
+ v3beta.HeuristicRelevance = (function() {
+ var valuesById = {}, values = Object.create(valuesById);
+ values[valuesById[0] = "HEURISTIC_RELEVANCE_UNSPECIFIED"] = 0;
+ values[valuesById[1] = "HEURISTIC_RELEVANCE_NORMAL"] = 1;
+ values[valuesById[2] = "HEURISTIC_RELEVANCE_HIGH"] = 2;
+ return values;
+ })();
+
+ v3beta.TroubleshootIamPolicyRequest = (function() {
+
+ /**
+ * Properties of a TroubleshootIamPolicyRequest.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @interface ITroubleshootIamPolicyRequest
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.IAccessTuple|null} [accessTuple] TroubleshootIamPolicyRequest accessTuple
+ */
+
+ /**
+ * Constructs a new TroubleshootIamPolicyRequest.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @classdesc Represents a TroubleshootIamPolicyRequest.
+ * @implements ITroubleshootIamPolicyRequest
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyRequest=} [properties] Properties to set
+ */
+ function TroubleshootIamPolicyRequest(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * TroubleshootIamPolicyRequest accessTuple.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.IAccessTuple|null|undefined} accessTuple
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest
+ * @instance
+ */
+ TroubleshootIamPolicyRequest.prototype.accessTuple = null;
+
+ /**
+ * Creates a new TroubleshootIamPolicyRequest instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyRequest=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest} TroubleshootIamPolicyRequest instance
+ */
+ TroubleshootIamPolicyRequest.create = function create(properties) {
+ return new TroubleshootIamPolicyRequest(properties);
+ };
+
+ /**
+ * Encodes the specified TroubleshootIamPolicyRequest message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyRequest} message TroubleshootIamPolicyRequest message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ TroubleshootIamPolicyRequest.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.accessTuple != null && Object.hasOwnProperty.call(message, "accessTuple"))
+ $root.google.cloud.policytroubleshooter.iam.v3beta.AccessTuple.encode(message.accessTuple, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified TroubleshootIamPolicyRequest message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyRequest} message TroubleshootIamPolicyRequest message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ TroubleshootIamPolicyRequest.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a TroubleshootIamPolicyRequest message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest} TroubleshootIamPolicyRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ TroubleshootIamPolicyRequest.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.accessTuple = $root.google.cloud.policytroubleshooter.iam.v3beta.AccessTuple.decode(reader, reader.uint32());
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a TroubleshootIamPolicyRequest message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest} TroubleshootIamPolicyRequest
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ TroubleshootIamPolicyRequest.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a TroubleshootIamPolicyRequest message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ TroubleshootIamPolicyRequest.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.accessTuple != null && message.hasOwnProperty("accessTuple")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.AccessTuple.verify(message.accessTuple);
+ if (error)
+ return "accessTuple." + error;
+ }
+ return null;
+ };
+
+ /**
+ * Creates a TroubleshootIamPolicyRequest message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest} TroubleshootIamPolicyRequest
+ */
+ TroubleshootIamPolicyRequest.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest();
+ if (object.accessTuple != null) {
+ if (typeof object.accessTuple !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest.accessTuple: object expected");
+ message.accessTuple = $root.google.cloud.policytroubleshooter.iam.v3beta.AccessTuple.fromObject(object.accessTuple);
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a TroubleshootIamPolicyRequest message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest} message TroubleshootIamPolicyRequest
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ TroubleshootIamPolicyRequest.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults)
+ object.accessTuple = null;
+ if (message.accessTuple != null && message.hasOwnProperty("accessTuple"))
+ object.accessTuple = $root.google.cloud.policytroubleshooter.iam.v3beta.AccessTuple.toObject(message.accessTuple, options);
+ return object;
+ };
+
+ /**
+ * Converts this TroubleshootIamPolicyRequest to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ TroubleshootIamPolicyRequest.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for TroubleshootIamPolicyRequest
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ TroubleshootIamPolicyRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyRequest";
+ };
+
+ return TroubleshootIamPolicyRequest;
+ })();
+
+ v3beta.TroubleshootIamPolicyResponse = (function() {
+
+ /**
+ * Properties of a TroubleshootIamPolicyResponse.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @interface ITroubleshootIamPolicyResponse
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse.OverallAccessState|null} [overallAccessState] TroubleshootIamPolicyResponse overallAccessState
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.IAccessTuple|null} [accessTuple] TroubleshootIamPolicyResponse accessTuple
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.IAllowPolicyExplanation|null} [allowPolicyExplanation] TroubleshootIamPolicyResponse allowPolicyExplanation
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.IDenyPolicyExplanation|null} [denyPolicyExplanation] TroubleshootIamPolicyResponse denyPolicyExplanation
+ */
+
+ /**
+ * Constructs a new TroubleshootIamPolicyResponse.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @classdesc Represents a TroubleshootIamPolicyResponse.
+ * @implements ITroubleshootIamPolicyResponse
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyResponse=} [properties] Properties to set
+ */
+ function TroubleshootIamPolicyResponse(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * TroubleshootIamPolicyResponse overallAccessState.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse.OverallAccessState} overallAccessState
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse
+ * @instance
+ */
+ TroubleshootIamPolicyResponse.prototype.overallAccessState = 0;
+
+ /**
+ * TroubleshootIamPolicyResponse accessTuple.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.IAccessTuple|null|undefined} accessTuple
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse
+ * @instance
+ */
+ TroubleshootIamPolicyResponse.prototype.accessTuple = null;
+
+ /**
+ * TroubleshootIamPolicyResponse allowPolicyExplanation.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.IAllowPolicyExplanation|null|undefined} allowPolicyExplanation
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse
+ * @instance
+ */
+ TroubleshootIamPolicyResponse.prototype.allowPolicyExplanation = null;
+
+ /**
+ * TroubleshootIamPolicyResponse denyPolicyExplanation.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.IDenyPolicyExplanation|null|undefined} denyPolicyExplanation
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse
+ * @instance
+ */
+ TroubleshootIamPolicyResponse.prototype.denyPolicyExplanation = null;
+
+ /**
+ * Creates a new TroubleshootIamPolicyResponse instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyResponse=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse} TroubleshootIamPolicyResponse instance
+ */
+ TroubleshootIamPolicyResponse.create = function create(properties) {
+ return new TroubleshootIamPolicyResponse(properties);
+ };
+
+ /**
+ * Encodes the specified TroubleshootIamPolicyResponse message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyResponse} message TroubleshootIamPolicyResponse message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ TroubleshootIamPolicyResponse.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.overallAccessState != null && Object.hasOwnProperty.call(message, "overallAccessState"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.overallAccessState);
+ if (message.accessTuple != null && Object.hasOwnProperty.call(message, "accessTuple"))
+ $root.google.cloud.policytroubleshooter.iam.v3beta.AccessTuple.encode(message.accessTuple, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+ if (message.allowPolicyExplanation != null && Object.hasOwnProperty.call(message, "allowPolicyExplanation"))
+ $root.google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation.encode(message.allowPolicyExplanation, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+ if (message.denyPolicyExplanation != null && Object.hasOwnProperty.call(message, "denyPolicyExplanation"))
+ $root.google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation.encode(message.denyPolicyExplanation, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified TroubleshootIamPolicyResponse message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ITroubleshootIamPolicyResponse} message TroubleshootIamPolicyResponse message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ TroubleshootIamPolicyResponse.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a TroubleshootIamPolicyResponse message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse} TroubleshootIamPolicyResponse
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ TroubleshootIamPolicyResponse.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.overallAccessState = reader.int32();
+ break;
+ }
+ case 2: {
+ message.accessTuple = $root.google.cloud.policytroubleshooter.iam.v3beta.AccessTuple.decode(reader, reader.uint32());
+ break;
+ }
+ case 3: {
+ message.allowPolicyExplanation = $root.google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation.decode(reader, reader.uint32());
+ break;
+ }
+ case 4: {
+ message.denyPolicyExplanation = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation.decode(reader, reader.uint32());
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a TroubleshootIamPolicyResponse message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse} TroubleshootIamPolicyResponse
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ TroubleshootIamPolicyResponse.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a TroubleshootIamPolicyResponse message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ TroubleshootIamPolicyResponse.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.overallAccessState != null && message.hasOwnProperty("overallAccessState"))
+ switch (message.overallAccessState) {
+ default:
+ return "overallAccessState: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.accessTuple != null && message.hasOwnProperty("accessTuple")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.AccessTuple.verify(message.accessTuple);
+ if (error)
+ return "accessTuple." + error;
+ }
+ if (message.allowPolicyExplanation != null && message.hasOwnProperty("allowPolicyExplanation")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation.verify(message.allowPolicyExplanation);
+ if (error)
+ return "allowPolicyExplanation." + error;
+ }
+ if (message.denyPolicyExplanation != null && message.hasOwnProperty("denyPolicyExplanation")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation.verify(message.denyPolicyExplanation);
+ if (error)
+ return "denyPolicyExplanation." + error;
+ }
+ return null;
+ };
+
+ /**
+ * Creates a TroubleshootIamPolicyResponse message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse} TroubleshootIamPolicyResponse
+ */
+ TroubleshootIamPolicyResponse.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse();
+ switch (object.overallAccessState) {
+ default:
+ if (typeof object.overallAccessState === "number") {
+ message.overallAccessState = object.overallAccessState;
+ break;
+ }
+ break;
+ case "OVERALL_ACCESS_STATE_UNSPECIFIED":
+ case 0:
+ message.overallAccessState = 0;
+ break;
+ case "CAN_ACCESS":
+ case 1:
+ message.overallAccessState = 1;
+ break;
+ case "CANNOT_ACCESS":
+ case 2:
+ message.overallAccessState = 2;
+ break;
+ case "UNKNOWN_INFO":
+ case 3:
+ message.overallAccessState = 3;
+ break;
+ case "UNKNOWN_CONDITIONAL":
+ case 4:
+ message.overallAccessState = 4;
+ break;
+ }
+ if (object.accessTuple != null) {
+ if (typeof object.accessTuple !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse.accessTuple: object expected");
+ message.accessTuple = $root.google.cloud.policytroubleshooter.iam.v3beta.AccessTuple.fromObject(object.accessTuple);
+ }
+ if (object.allowPolicyExplanation != null) {
+ if (typeof object.allowPolicyExplanation !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse.allowPolicyExplanation: object expected");
+ message.allowPolicyExplanation = $root.google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation.fromObject(object.allowPolicyExplanation);
+ }
+ if (object.denyPolicyExplanation != null) {
+ if (typeof object.denyPolicyExplanation !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse.denyPolicyExplanation: object expected");
+ message.denyPolicyExplanation = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation.fromObject(object.denyPolicyExplanation);
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a TroubleshootIamPolicyResponse message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse} message TroubleshootIamPolicyResponse
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ TroubleshootIamPolicyResponse.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults) {
+ object.overallAccessState = options.enums === String ? "OVERALL_ACCESS_STATE_UNSPECIFIED" : 0;
+ object.accessTuple = null;
+ object.allowPolicyExplanation = null;
+ object.denyPolicyExplanation = null;
+ }
+ if (message.overallAccessState != null && message.hasOwnProperty("overallAccessState"))
+ object.overallAccessState = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse.OverallAccessState[message.overallAccessState] === undefined ? message.overallAccessState : $root.google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse.OverallAccessState[message.overallAccessState] : message.overallAccessState;
+ if (message.accessTuple != null && message.hasOwnProperty("accessTuple"))
+ object.accessTuple = $root.google.cloud.policytroubleshooter.iam.v3beta.AccessTuple.toObject(message.accessTuple, options);
+ if (message.allowPolicyExplanation != null && message.hasOwnProperty("allowPolicyExplanation"))
+ object.allowPolicyExplanation = $root.google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation.toObject(message.allowPolicyExplanation, options);
+ if (message.denyPolicyExplanation != null && message.hasOwnProperty("denyPolicyExplanation"))
+ object.denyPolicyExplanation = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation.toObject(message.denyPolicyExplanation, options);
+ return object;
+ };
+
+ /**
+ * Converts this TroubleshootIamPolicyResponse to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ TroubleshootIamPolicyResponse.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for TroubleshootIamPolicyResponse
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ TroubleshootIamPolicyResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse";
+ };
+
+ /**
+ * OverallAccessState enum.
+ * @name google.cloud.policytroubleshooter.iam.v3beta.TroubleshootIamPolicyResponse.OverallAccessState
+ * @enum {number}
+ * @property {number} OVERALL_ACCESS_STATE_UNSPECIFIED=0 OVERALL_ACCESS_STATE_UNSPECIFIED value
+ * @property {number} CAN_ACCESS=1 CAN_ACCESS value
+ * @property {number} CANNOT_ACCESS=2 CANNOT_ACCESS value
+ * @property {number} UNKNOWN_INFO=3 UNKNOWN_INFO value
+ * @property {number} UNKNOWN_CONDITIONAL=4 UNKNOWN_CONDITIONAL value
+ */
+ TroubleshootIamPolicyResponse.OverallAccessState = (function() {
+ var valuesById = {}, values = Object.create(valuesById);
+ values[valuesById[0] = "OVERALL_ACCESS_STATE_UNSPECIFIED"] = 0;
+ values[valuesById[1] = "CAN_ACCESS"] = 1;
+ values[valuesById[2] = "CANNOT_ACCESS"] = 2;
+ values[valuesById[3] = "UNKNOWN_INFO"] = 3;
+ values[valuesById[4] = "UNKNOWN_CONDITIONAL"] = 4;
+ return values;
+ })();
+
+ return TroubleshootIamPolicyResponse;
+ })();
+
+ v3beta.AccessTuple = (function() {
+
+ /**
+ * Properties of an AccessTuple.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @interface IAccessTuple
+ * @property {string|null} [principal] AccessTuple principal
+ * @property {string|null} [fullResourceName] AccessTuple fullResourceName
+ * @property {string|null} [permission] AccessTuple permission
+ * @property {string|null} [permissionFqdn] AccessTuple permissionFqdn
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.IConditionContext|null} [conditionContext] AccessTuple conditionContext
+ */
+
+ /**
+ * Constructs a new AccessTuple.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @classdesc Represents an AccessTuple.
+ * @implements IAccessTuple
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IAccessTuple=} [properties] Properties to set
+ */
+ function AccessTuple(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * AccessTuple principal.
+ * @member {string} principal
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AccessTuple
+ * @instance
+ */
+ AccessTuple.prototype.principal = "";
+
+ /**
+ * AccessTuple fullResourceName.
+ * @member {string} fullResourceName
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AccessTuple
+ * @instance
+ */
+ AccessTuple.prototype.fullResourceName = "";
+
+ /**
+ * AccessTuple permission.
+ * @member {string} permission
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AccessTuple
+ * @instance
+ */
+ AccessTuple.prototype.permission = "";
+
+ /**
+ * AccessTuple permissionFqdn.
+ * @member {string} permissionFqdn
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AccessTuple
+ * @instance
+ */
+ AccessTuple.prototype.permissionFqdn = "";
+
+ /**
+ * AccessTuple conditionContext.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.IConditionContext|null|undefined} conditionContext
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AccessTuple
+ * @instance
+ */
+ AccessTuple.prototype.conditionContext = null;
+
+ /**
+ * Creates a new AccessTuple instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AccessTuple
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IAccessTuple=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.AccessTuple} AccessTuple instance
+ */
+ AccessTuple.create = function create(properties) {
+ return new AccessTuple(properties);
+ };
+
+ /**
+ * Encodes the specified AccessTuple message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.AccessTuple.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AccessTuple
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IAccessTuple} message AccessTuple message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AccessTuple.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.principal != null && Object.hasOwnProperty.call(message, "principal"))
+ writer.uint32(/* id 1, wireType 2 =*/10).string(message.principal);
+ if (message.fullResourceName != null && Object.hasOwnProperty.call(message, "fullResourceName"))
+ writer.uint32(/* id 2, wireType 2 =*/18).string(message.fullResourceName);
+ if (message.permission != null && Object.hasOwnProperty.call(message, "permission"))
+ writer.uint32(/* id 3, wireType 2 =*/26).string(message.permission);
+ if (message.permissionFqdn != null && Object.hasOwnProperty.call(message, "permissionFqdn"))
+ writer.uint32(/* id 4, wireType 2 =*/34).string(message.permissionFqdn);
+ if (message.conditionContext != null && Object.hasOwnProperty.call(message, "conditionContext"))
+ $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.encode(message.conditionContext, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified AccessTuple message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.AccessTuple.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AccessTuple
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IAccessTuple} message AccessTuple message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AccessTuple.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an AccessTuple message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AccessTuple
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.AccessTuple} AccessTuple
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AccessTuple.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.AccessTuple();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.principal = reader.string();
+ break;
+ }
+ case 2: {
+ message.fullResourceName = reader.string();
+ break;
+ }
+ case 3: {
+ message.permission = reader.string();
+ break;
+ }
+ case 4: {
+ message.permissionFqdn = reader.string();
+ break;
+ }
+ case 5: {
+ message.conditionContext = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.decode(reader, reader.uint32());
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an AccessTuple message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AccessTuple
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.AccessTuple} AccessTuple
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AccessTuple.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an AccessTuple message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AccessTuple
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ AccessTuple.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.principal != null && message.hasOwnProperty("principal"))
+ if (!$util.isString(message.principal))
+ return "principal: string expected";
+ if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+ if (!$util.isString(message.fullResourceName))
+ return "fullResourceName: string expected";
+ if (message.permission != null && message.hasOwnProperty("permission"))
+ if (!$util.isString(message.permission))
+ return "permission: string expected";
+ if (message.permissionFqdn != null && message.hasOwnProperty("permissionFqdn"))
+ if (!$util.isString(message.permissionFqdn))
+ return "permissionFqdn: string expected";
+ if (message.conditionContext != null && message.hasOwnProperty("conditionContext")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.verify(message.conditionContext);
+ if (error)
+ return "conditionContext." + error;
+ }
+ return null;
+ };
+
+ /**
+ * Creates an AccessTuple message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AccessTuple
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.AccessTuple} AccessTuple
+ */
+ AccessTuple.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.AccessTuple)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.AccessTuple();
+ if (object.principal != null)
+ message.principal = String(object.principal);
+ if (object.fullResourceName != null)
+ message.fullResourceName = String(object.fullResourceName);
+ if (object.permission != null)
+ message.permission = String(object.permission);
+ if (object.permissionFqdn != null)
+ message.permissionFqdn = String(object.permissionFqdn);
+ if (object.conditionContext != null) {
+ if (typeof object.conditionContext !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.AccessTuple.conditionContext: object expected");
+ message.conditionContext = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.fromObject(object.conditionContext);
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an AccessTuple message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AccessTuple
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.AccessTuple} message AccessTuple
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ AccessTuple.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults) {
+ object.principal = "";
+ object.fullResourceName = "";
+ object.permission = "";
+ object.permissionFqdn = "";
+ object.conditionContext = null;
+ }
+ if (message.principal != null && message.hasOwnProperty("principal"))
+ object.principal = message.principal;
+ if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+ object.fullResourceName = message.fullResourceName;
+ if (message.permission != null && message.hasOwnProperty("permission"))
+ object.permission = message.permission;
+ if (message.permissionFqdn != null && message.hasOwnProperty("permissionFqdn"))
+ object.permissionFqdn = message.permissionFqdn;
+ if (message.conditionContext != null && message.hasOwnProperty("conditionContext"))
+ object.conditionContext = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.toObject(message.conditionContext, options);
+ return object;
+ };
+
+ /**
+ * Converts this AccessTuple to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AccessTuple
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ AccessTuple.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for AccessTuple
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AccessTuple
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ AccessTuple.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.AccessTuple";
+ };
+
+ return AccessTuple;
+ })();
+
+ v3beta.ConditionContext = (function() {
+
+ /**
+ * Properties of a ConditionContext.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @interface IConditionContext
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IResource|null} [resource] ConditionContext resource
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IPeer|null} [destination] ConditionContext destination
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IRequest|null} [request] ConditionContext request
+ * @property {Array.|null} [effectiveTags] ConditionContext effectiveTags
+ */
+
+ /**
+ * Constructs a new ConditionContext.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @classdesc Represents a ConditionContext.
+ * @implements IConditionContext
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IConditionContext=} [properties] Properties to set
+ */
+ function ConditionContext(properties) {
+ this.effectiveTags = [];
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * ConditionContext resource.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IResource|null|undefined} resource
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @instance
+ */
+ ConditionContext.prototype.resource = null;
+
+ /**
+ * ConditionContext destination.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IPeer|null|undefined} destination
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @instance
+ */
+ ConditionContext.prototype.destination = null;
+
+ /**
+ * ConditionContext request.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IRequest|null|undefined} request
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @instance
+ */
+ ConditionContext.prototype.request = null;
+
+ /**
+ * ConditionContext effectiveTags.
+ * @member {Array.} effectiveTags
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @instance
+ */
+ ConditionContext.prototype.effectiveTags = $util.emptyArray;
+
+ /**
+ * Creates a new ConditionContext instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IConditionContext=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext} ConditionContext instance
+ */
+ ConditionContext.create = function create(properties) {
+ return new ConditionContext(properties);
+ };
+
+ /**
+ * Encodes the specified ConditionContext message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IConditionContext} message ConditionContext message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ConditionContext.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.resource != null && Object.hasOwnProperty.call(message, "resource"))
+ $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource.encode(message.resource, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+ if (message.destination != null && Object.hasOwnProperty.call(message, "destination"))
+ $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer.encode(message.destination, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+ if (message.request != null && Object.hasOwnProperty.call(message, "request"))
+ $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request.encode(message.request, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+ if (message.effectiveTags != null && message.effectiveTags.length)
+ for (var i = 0; i < message.effectiveTags.length; ++i)
+ $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag.encode(message.effectiveTags[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified ConditionContext message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IConditionContext} message ConditionContext message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ConditionContext.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a ConditionContext message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext} ConditionContext
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ConditionContext.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.resource = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource.decode(reader, reader.uint32());
+ break;
+ }
+ case 2: {
+ message.destination = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer.decode(reader, reader.uint32());
+ break;
+ }
+ case 3: {
+ message.request = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request.decode(reader, reader.uint32());
+ break;
+ }
+ case 4: {
+ if (!(message.effectiveTags && message.effectiveTags.length))
+ message.effectiveTags = [];
+ message.effectiveTags.push($root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag.decode(reader, reader.uint32()));
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a ConditionContext message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext} ConditionContext
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ConditionContext.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a ConditionContext message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ ConditionContext.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.resource != null && message.hasOwnProperty("resource")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource.verify(message.resource);
+ if (error)
+ return "resource." + error;
+ }
+ if (message.destination != null && message.hasOwnProperty("destination")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer.verify(message.destination);
+ if (error)
+ return "destination." + error;
+ }
+ if (message.request != null && message.hasOwnProperty("request")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request.verify(message.request);
+ if (error)
+ return "request." + error;
+ }
+ if (message.effectiveTags != null && message.hasOwnProperty("effectiveTags")) {
+ if (!Array.isArray(message.effectiveTags))
+ return "effectiveTags: array expected";
+ for (var i = 0; i < message.effectiveTags.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag.verify(message.effectiveTags[i]);
+ if (error)
+ return "effectiveTags." + error;
+ }
+ }
+ return null;
+ };
+
+ /**
+ * Creates a ConditionContext message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext} ConditionContext
+ */
+ ConditionContext.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext();
+ if (object.resource != null) {
+ if (typeof object.resource !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.resource: object expected");
+ message.resource = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource.fromObject(object.resource);
+ }
+ if (object.destination != null) {
+ if (typeof object.destination !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.destination: object expected");
+ message.destination = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer.fromObject(object.destination);
+ }
+ if (object.request != null) {
+ if (typeof object.request !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.request: object expected");
+ message.request = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request.fromObject(object.request);
+ }
+ if (object.effectiveTags) {
+ if (!Array.isArray(object.effectiveTags))
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.effectiveTags: array expected");
+ message.effectiveTags = [];
+ for (var i = 0; i < object.effectiveTags.length; ++i) {
+ if (typeof object.effectiveTags[i] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.effectiveTags: object expected");
+ message.effectiveTags[i] = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag.fromObject(object.effectiveTags[i]);
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a ConditionContext message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext} message ConditionContext
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ ConditionContext.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.arrays || options.defaults)
+ object.effectiveTags = [];
+ if (options.defaults) {
+ object.resource = null;
+ object.destination = null;
+ object.request = null;
+ }
+ if (message.resource != null && message.hasOwnProperty("resource"))
+ object.resource = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource.toObject(message.resource, options);
+ if (message.destination != null && message.hasOwnProperty("destination"))
+ object.destination = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer.toObject(message.destination, options);
+ if (message.request != null && message.hasOwnProperty("request"))
+ object.request = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request.toObject(message.request, options);
+ if (message.effectiveTags && message.effectiveTags.length) {
+ object.effectiveTags = [];
+ for (var j = 0; j < message.effectiveTags.length; ++j)
+ object.effectiveTags[j] = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag.toObject(message.effectiveTags[j], options);
+ }
+ return object;
+ };
+
+ /**
+ * Converts this ConditionContext to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ ConditionContext.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for ConditionContext
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ ConditionContext.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.ConditionContext";
+ };
+
+ ConditionContext.Resource = (function() {
+
+ /**
+ * Properties of a Resource.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @interface IResource
+ * @property {string|null} [service] Resource service
+ * @property {string|null} [name] Resource name
+ * @property {string|null} [type] Resource type
+ */
+
+ /**
+ * Constructs a new Resource.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @classdesc Represents a Resource.
+ * @implements IResource
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IResource=} [properties] Properties to set
+ */
+ function Resource(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * Resource service.
+ * @member {string} service
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource
+ * @instance
+ */
+ Resource.prototype.service = "";
+
+ /**
+ * Resource name.
+ * @member {string} name
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource
+ * @instance
+ */
+ Resource.prototype.name = "";
+
+ /**
+ * Resource type.
+ * @member {string} type
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource
+ * @instance
+ */
+ Resource.prototype.type = "";
+
+ /**
+ * Creates a new Resource instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IResource=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource} Resource instance
+ */
+ Resource.create = function create(properties) {
+ return new Resource(properties);
+ };
+
+ /**
+ * Encodes the specified Resource message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IResource} message Resource message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ Resource.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.service != null && Object.hasOwnProperty.call(message, "service"))
+ writer.uint32(/* id 1, wireType 2 =*/10).string(message.service);
+ if (message.name != null && Object.hasOwnProperty.call(message, "name"))
+ writer.uint32(/* id 2, wireType 2 =*/18).string(message.name);
+ if (message.type != null && Object.hasOwnProperty.call(message, "type"))
+ writer.uint32(/* id 3, wireType 2 =*/26).string(message.type);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified Resource message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IResource} message Resource message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ Resource.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a Resource message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource} Resource
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ Resource.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.service = reader.string();
+ break;
+ }
+ case 2: {
+ message.name = reader.string();
+ break;
+ }
+ case 3: {
+ message.type = reader.string();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a Resource message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource} Resource
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ Resource.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a Resource message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ Resource.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.service != null && message.hasOwnProperty("service"))
+ if (!$util.isString(message.service))
+ return "service: string expected";
+ if (message.name != null && message.hasOwnProperty("name"))
+ if (!$util.isString(message.name))
+ return "name: string expected";
+ if (message.type != null && message.hasOwnProperty("type"))
+ if (!$util.isString(message.type))
+ return "type: string expected";
+ return null;
+ };
+
+ /**
+ * Creates a Resource message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource} Resource
+ */
+ Resource.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource();
+ if (object.service != null)
+ message.service = String(object.service);
+ if (object.name != null)
+ message.name = String(object.name);
+ if (object.type != null)
+ message.type = String(object.type);
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a Resource message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource} message Resource
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ Resource.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults) {
+ object.service = "";
+ object.name = "";
+ object.type = "";
+ }
+ if (message.service != null && message.hasOwnProperty("service"))
+ object.service = message.service;
+ if (message.name != null && message.hasOwnProperty("name"))
+ object.name = message.name;
+ if (message.type != null && message.hasOwnProperty("type"))
+ object.type = message.type;
+ return object;
+ };
+
+ /**
+ * Converts this Resource to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ Resource.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for Resource
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ Resource.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Resource";
+ };
+
+ return Resource;
+ })();
+
+ ConditionContext.Peer = (function() {
+
+ /**
+ * Properties of a Peer.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @interface IPeer
+ * @property {string|null} [ip] Peer ip
+ * @property {number|Long|null} [port] Peer port
+ */
+
+ /**
+ * Constructs a new Peer.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @classdesc Represents a Peer.
+ * @implements IPeer
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IPeer=} [properties] Properties to set
+ */
+ function Peer(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * Peer ip.
+ * @member {string} ip
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer
+ * @instance
+ */
+ Peer.prototype.ip = "";
+
+ /**
+ * Peer port.
+ * @member {number|Long} port
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer
+ * @instance
+ */
+ Peer.prototype.port = $util.Long ? $util.Long.fromBits(0,0,false) : 0;
+
+ /**
+ * Creates a new Peer instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IPeer=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer} Peer instance
+ */
+ Peer.create = function create(properties) {
+ return new Peer(properties);
+ };
+
+ /**
+ * Encodes the specified Peer message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IPeer} message Peer message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ Peer.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.ip != null && Object.hasOwnProperty.call(message, "ip"))
+ writer.uint32(/* id 1, wireType 2 =*/10).string(message.ip);
+ if (message.port != null && Object.hasOwnProperty.call(message, "port"))
+ writer.uint32(/* id 2, wireType 0 =*/16).int64(message.port);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified Peer message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IPeer} message Peer message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ Peer.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a Peer message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer} Peer
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ Peer.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.ip = reader.string();
+ break;
+ }
+ case 2: {
+ message.port = reader.int64();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a Peer message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer} Peer
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ Peer.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a Peer message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ Peer.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.ip != null && message.hasOwnProperty("ip"))
+ if (!$util.isString(message.ip))
+ return "ip: string expected";
+ if (message.port != null && message.hasOwnProperty("port"))
+ if (!$util.isInteger(message.port) && !(message.port && $util.isInteger(message.port.low) && $util.isInteger(message.port.high)))
+ return "port: integer|Long expected";
+ return null;
+ };
+
+ /**
+ * Creates a Peer message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer} Peer
+ */
+ Peer.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer();
+ if (object.ip != null)
+ message.ip = String(object.ip);
+ if (object.port != null)
+ if ($util.Long)
+ (message.port = $util.Long.fromValue(object.port)).unsigned = false;
+ else if (typeof object.port === "string")
+ message.port = parseInt(object.port, 10);
+ else if (typeof object.port === "number")
+ message.port = object.port;
+ else if (typeof object.port === "object")
+ message.port = new $util.LongBits(object.port.low >>> 0, object.port.high >>> 0).toNumber();
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a Peer message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer} message Peer
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ Peer.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults) {
+ object.ip = "";
+ if ($util.Long) {
+ var long = new $util.Long(0, 0, false);
+ object.port = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
+ } else
+ object.port = options.longs === String ? "0" : 0;
+ }
+ if (message.ip != null && message.hasOwnProperty("ip"))
+ object.ip = message.ip;
+ if (message.port != null && message.hasOwnProperty("port"))
+ if (typeof message.port === "number")
+ object.port = options.longs === String ? String(message.port) : message.port;
+ else
+ object.port = options.longs === String ? $util.Long.prototype.toString.call(message.port) : options.longs === Number ? new $util.LongBits(message.port.low >>> 0, message.port.high >>> 0).toNumber() : message.port;
+ return object;
+ };
+
+ /**
+ * Converts this Peer to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ Peer.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for Peer
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ Peer.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Peer";
+ };
+
+ return Peer;
+ })();
+
+ ConditionContext.Request = (function() {
+
+ /**
+ * Properties of a Request.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @interface IRequest
+ * @property {google.protobuf.ITimestamp|null} [receiveTime] Request receiveTime
+ */
+
+ /**
+ * Constructs a new Request.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @classdesc Represents a Request.
+ * @implements IRequest
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IRequest=} [properties] Properties to set
+ */
+ function Request(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * Request receiveTime.
+ * @member {google.protobuf.ITimestamp|null|undefined} receiveTime
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request
+ * @instance
+ */
+ Request.prototype.receiveTime = null;
+
+ /**
+ * Creates a new Request instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IRequest=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request} Request instance
+ */
+ Request.create = function create(properties) {
+ return new Request(properties);
+ };
+
+ /**
+ * Encodes the specified Request message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IRequest} message Request message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ Request.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.receiveTime != null && Object.hasOwnProperty.call(message, "receiveTime"))
+ $root.google.protobuf.Timestamp.encode(message.receiveTime, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified Request message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IRequest} message Request message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ Request.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a Request message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request} Request
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ Request.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.receiveTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a Request message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request} Request
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ Request.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a Request message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ Request.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.receiveTime != null && message.hasOwnProperty("receiveTime")) {
+ var error = $root.google.protobuf.Timestamp.verify(message.receiveTime);
+ if (error)
+ return "receiveTime." + error;
+ }
+ return null;
+ };
+
+ /**
+ * Creates a Request message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request} Request
+ */
+ Request.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request();
+ if (object.receiveTime != null) {
+ if (typeof object.receiveTime !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request.receiveTime: object expected");
+ message.receiveTime = $root.google.protobuf.Timestamp.fromObject(object.receiveTime);
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a Request message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request} message Request
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ Request.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults)
+ object.receiveTime = null;
+ if (message.receiveTime != null && message.hasOwnProperty("receiveTime"))
+ object.receiveTime = $root.google.protobuf.Timestamp.toObject(message.receiveTime, options);
+ return object;
+ };
+
+ /**
+ * Converts this Request to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ Request.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for Request
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ Request.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.Request";
+ };
+
+ return Request;
+ })();
+
+ ConditionContext.EffectiveTag = (function() {
+
+ /**
+ * Properties of an EffectiveTag.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @interface IEffectiveTag
+ * @property {string|null} [tagValue] EffectiveTag tagValue
+ * @property {string|null} [namespacedTagValue] EffectiveTag namespacedTagValue
+ * @property {string|null} [tagKey] EffectiveTag tagKey
+ * @property {string|null} [namespacedTagKey] EffectiveTag namespacedTagKey
+ * @property {string|null} [tagKeyParentName] EffectiveTag tagKeyParentName
+ * @property {boolean|null} [inherited] EffectiveTag inherited
+ */
+
+ /**
+ * Constructs a new EffectiveTag.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext
+ * @classdesc Represents an EffectiveTag.
+ * @implements IEffectiveTag
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IEffectiveTag=} [properties] Properties to set
+ */
+ function EffectiveTag(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * EffectiveTag tagValue.
+ * @member {string} tagValue
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag
+ * @instance
+ */
+ EffectiveTag.prototype.tagValue = "";
+
+ /**
+ * EffectiveTag namespacedTagValue.
+ * @member {string} namespacedTagValue
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag
+ * @instance
+ */
+ EffectiveTag.prototype.namespacedTagValue = "";
+
+ /**
+ * EffectiveTag tagKey.
+ * @member {string} tagKey
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag
+ * @instance
+ */
+ EffectiveTag.prototype.tagKey = "";
+
+ /**
+ * EffectiveTag namespacedTagKey.
+ * @member {string} namespacedTagKey
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag
+ * @instance
+ */
+ EffectiveTag.prototype.namespacedTagKey = "";
+
+ /**
+ * EffectiveTag tagKeyParentName.
+ * @member {string} tagKeyParentName
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag
+ * @instance
+ */
+ EffectiveTag.prototype.tagKeyParentName = "";
+
+ /**
+ * EffectiveTag inherited.
+ * @member {boolean} inherited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag
+ * @instance
+ */
+ EffectiveTag.prototype.inherited = false;
+
+ /**
+ * Creates a new EffectiveTag instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IEffectiveTag=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag} EffectiveTag instance
+ */
+ EffectiveTag.create = function create(properties) {
+ return new EffectiveTag(properties);
+ };
+
+ /**
+ * Encodes the specified EffectiveTag message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IEffectiveTag} message EffectiveTag message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ EffectiveTag.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.tagValue != null && Object.hasOwnProperty.call(message, "tagValue"))
+ writer.uint32(/* id 1, wireType 2 =*/10).string(message.tagValue);
+ if (message.namespacedTagValue != null && Object.hasOwnProperty.call(message, "namespacedTagValue"))
+ writer.uint32(/* id 2, wireType 2 =*/18).string(message.namespacedTagValue);
+ if (message.tagKey != null && Object.hasOwnProperty.call(message, "tagKey"))
+ writer.uint32(/* id 3, wireType 2 =*/26).string(message.tagKey);
+ if (message.namespacedTagKey != null && Object.hasOwnProperty.call(message, "namespacedTagKey"))
+ writer.uint32(/* id 4, wireType 2 =*/34).string(message.namespacedTagKey);
+ if (message.inherited != null && Object.hasOwnProperty.call(message, "inherited"))
+ writer.uint32(/* id 5, wireType 0 =*/40).bool(message.inherited);
+ if (message.tagKeyParentName != null && Object.hasOwnProperty.call(message, "tagKeyParentName"))
+ writer.uint32(/* id 6, wireType 2 =*/50).string(message.tagKeyParentName);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified EffectiveTag message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.IEffectiveTag} message EffectiveTag message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ EffectiveTag.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an EffectiveTag message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag} EffectiveTag
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ EffectiveTag.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.tagValue = reader.string();
+ break;
+ }
+ case 2: {
+ message.namespacedTagValue = reader.string();
+ break;
+ }
+ case 3: {
+ message.tagKey = reader.string();
+ break;
+ }
+ case 4: {
+ message.namespacedTagKey = reader.string();
+ break;
+ }
+ case 6: {
+ message.tagKeyParentName = reader.string();
+ break;
+ }
+ case 5: {
+ message.inherited = reader.bool();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an EffectiveTag message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag} EffectiveTag
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ EffectiveTag.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an EffectiveTag message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ EffectiveTag.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.tagValue != null && message.hasOwnProperty("tagValue"))
+ if (!$util.isString(message.tagValue))
+ return "tagValue: string expected";
+ if (message.namespacedTagValue != null && message.hasOwnProperty("namespacedTagValue"))
+ if (!$util.isString(message.namespacedTagValue))
+ return "namespacedTagValue: string expected";
+ if (message.tagKey != null && message.hasOwnProperty("tagKey"))
+ if (!$util.isString(message.tagKey))
+ return "tagKey: string expected";
+ if (message.namespacedTagKey != null && message.hasOwnProperty("namespacedTagKey"))
+ if (!$util.isString(message.namespacedTagKey))
+ return "namespacedTagKey: string expected";
+ if (message.tagKeyParentName != null && message.hasOwnProperty("tagKeyParentName"))
+ if (!$util.isString(message.tagKeyParentName))
+ return "tagKeyParentName: string expected";
+ if (message.inherited != null && message.hasOwnProperty("inherited"))
+ if (typeof message.inherited !== "boolean")
+ return "inherited: boolean expected";
+ return null;
+ };
+
+ /**
+ * Creates an EffectiveTag message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag} EffectiveTag
+ */
+ EffectiveTag.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag();
+ if (object.tagValue != null)
+ message.tagValue = String(object.tagValue);
+ if (object.namespacedTagValue != null)
+ message.namespacedTagValue = String(object.namespacedTagValue);
+ if (object.tagKey != null)
+ message.tagKey = String(object.tagKey);
+ if (object.namespacedTagKey != null)
+ message.namespacedTagKey = String(object.namespacedTagKey);
+ if (object.tagKeyParentName != null)
+ message.tagKeyParentName = String(object.tagKeyParentName);
+ if (object.inherited != null)
+ message.inherited = Boolean(object.inherited);
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an EffectiveTag message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag} message EffectiveTag
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ EffectiveTag.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults) {
+ object.tagValue = "";
+ object.namespacedTagValue = "";
+ object.tagKey = "";
+ object.namespacedTagKey = "";
+ object.inherited = false;
+ object.tagKeyParentName = "";
+ }
+ if (message.tagValue != null && message.hasOwnProperty("tagValue"))
+ object.tagValue = message.tagValue;
+ if (message.namespacedTagValue != null && message.hasOwnProperty("namespacedTagValue"))
+ object.namespacedTagValue = message.namespacedTagValue;
+ if (message.tagKey != null && message.hasOwnProperty("tagKey"))
+ object.tagKey = message.tagKey;
+ if (message.namespacedTagKey != null && message.hasOwnProperty("namespacedTagKey"))
+ object.namespacedTagKey = message.namespacedTagKey;
+ if (message.inherited != null && message.hasOwnProperty("inherited"))
+ object.inherited = message.inherited;
+ if (message.tagKeyParentName != null && message.hasOwnProperty("tagKeyParentName"))
+ object.tagKeyParentName = message.tagKeyParentName;
+ return object;
+ };
+
+ /**
+ * Converts this EffectiveTag to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ EffectiveTag.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for EffectiveTag
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ EffectiveTag.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.ConditionContext.EffectiveTag";
+ };
+
+ return EffectiveTag;
+ })();
+
+ return ConditionContext;
+ })();
+
+ v3beta.AllowPolicyExplanation = (function() {
+
+ /**
+ * Properties of an AllowPolicyExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @interface IAllowPolicyExplanation
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState|null} [allowAccessState] AllowPolicyExplanation allowAccessState
+ * @property {Array.|null} [explainedPolicies] AllowPolicyExplanation explainedPolicies
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null} [relevance] AllowPolicyExplanation relevance
+ */
+
+ /**
+ * Constructs a new AllowPolicyExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @classdesc Represents an AllowPolicyExplanation.
+ * @implements IAllowPolicyExplanation
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IAllowPolicyExplanation=} [properties] Properties to set
+ */
+ function AllowPolicyExplanation(properties) {
+ this.explainedPolicies = [];
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * AllowPolicyExplanation allowAccessState.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState} allowAccessState
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation
+ * @instance
+ */
+ AllowPolicyExplanation.prototype.allowAccessState = 0;
+
+ /**
+ * AllowPolicyExplanation explainedPolicies.
+ * @member {Array.} explainedPolicies
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation
+ * @instance
+ */
+ AllowPolicyExplanation.prototype.explainedPolicies = $util.emptyArray;
+
+ /**
+ * AllowPolicyExplanation relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation
+ * @instance
+ */
+ AllowPolicyExplanation.prototype.relevance = 0;
+
+ /**
+ * Creates a new AllowPolicyExplanation instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IAllowPolicyExplanation=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation} AllowPolicyExplanation instance
+ */
+ AllowPolicyExplanation.create = function create(properties) {
+ return new AllowPolicyExplanation(properties);
+ };
+
+ /**
+ * Encodes the specified AllowPolicyExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IAllowPolicyExplanation} message AllowPolicyExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AllowPolicyExplanation.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.allowAccessState != null && Object.hasOwnProperty.call(message, "allowAccessState"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.allowAccessState);
+ if (message.explainedPolicies != null && message.explainedPolicies.length)
+ for (var i = 0; i < message.explainedPolicies.length; ++i)
+ $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy.encode(message.explainedPolicies[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 3, wireType 0 =*/24).int32(message.relevance);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified AllowPolicyExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IAllowPolicyExplanation} message AllowPolicyExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AllowPolicyExplanation.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an AllowPolicyExplanation message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation} AllowPolicyExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AllowPolicyExplanation.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.allowAccessState = reader.int32();
+ break;
+ }
+ case 2: {
+ if (!(message.explainedPolicies && message.explainedPolicies.length))
+ message.explainedPolicies = [];
+ message.explainedPolicies.push($root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy.decode(reader, reader.uint32()));
+ break;
+ }
+ case 3: {
+ message.relevance = reader.int32();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an AllowPolicyExplanation message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation} AllowPolicyExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AllowPolicyExplanation.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an AllowPolicyExplanation message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ AllowPolicyExplanation.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.allowAccessState != null && message.hasOwnProperty("allowAccessState"))
+ switch (message.allowAccessState) {
+ default:
+ return "allowAccessState: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.explainedPolicies != null && message.hasOwnProperty("explainedPolicies")) {
+ if (!Array.isArray(message.explainedPolicies))
+ return "explainedPolicies: array expected";
+ for (var i = 0; i < message.explainedPolicies.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy.verify(message.explainedPolicies[i]);
+ if (error)
+ return "explainedPolicies." + error;
+ }
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ return null;
+ };
+
+ /**
+ * Creates an AllowPolicyExplanation message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation} AllowPolicyExplanation
+ */
+ AllowPolicyExplanation.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation();
+ switch (object.allowAccessState) {
+ default:
+ if (typeof object.allowAccessState === "number") {
+ message.allowAccessState = object.allowAccessState;
+ break;
+ }
+ break;
+ case "ALLOW_ACCESS_STATE_UNSPECIFIED":
+ case 0:
+ message.allowAccessState = 0;
+ break;
+ case "ALLOW_ACCESS_STATE_GRANTED":
+ case 1:
+ message.allowAccessState = 1;
+ break;
+ case "ALLOW_ACCESS_STATE_NOT_GRANTED":
+ case 2:
+ message.allowAccessState = 2;
+ break;
+ case "ALLOW_ACCESS_STATE_UNKNOWN_CONDITIONAL":
+ case 3:
+ message.allowAccessState = 3;
+ break;
+ case "ALLOW_ACCESS_STATE_UNKNOWN_INFO":
+ case 4:
+ message.allowAccessState = 4;
+ break;
+ }
+ if (object.explainedPolicies) {
+ if (!Array.isArray(object.explainedPolicies))
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation.explainedPolicies: array expected");
+ message.explainedPolicies = [];
+ for (var i = 0; i < object.explainedPolicies.length; ++i) {
+ if (typeof object.explainedPolicies[i] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation.explainedPolicies: object expected");
+ message.explainedPolicies[i] = $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy.fromObject(object.explainedPolicies[i]);
+ }
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an AllowPolicyExplanation message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation} message AllowPolicyExplanation
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ AllowPolicyExplanation.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.arrays || options.defaults)
+ object.explainedPolicies = [];
+ if (options.defaults) {
+ object.allowAccessState = options.enums === String ? "ALLOW_ACCESS_STATE_UNSPECIFIED" : 0;
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ }
+ if (message.allowAccessState != null && message.hasOwnProperty("allowAccessState"))
+ object.allowAccessState = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState[message.allowAccessState] === undefined ? message.allowAccessState : $root.google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState[message.allowAccessState] : message.allowAccessState;
+ if (message.explainedPolicies && message.explainedPolicies.length) {
+ object.explainedPolicies = [];
+ for (var j = 0; j < message.explainedPolicies.length; ++j)
+ object.explainedPolicies[j] = $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy.toObject(message.explainedPolicies[j], options);
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] : message.relevance;
+ return object;
+ };
+
+ /**
+ * Converts this AllowPolicyExplanation to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ AllowPolicyExplanation.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for AllowPolicyExplanation
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ AllowPolicyExplanation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.AllowPolicyExplanation";
+ };
+
+ return AllowPolicyExplanation;
+ })();
+
+ v3beta.ExplainedAllowPolicy = (function() {
+
+ /**
+ * Properties of an ExplainedAllowPolicy.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @interface IExplainedAllowPolicy
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState|null} [allowAccessState] ExplainedAllowPolicy allowAccessState
+ * @property {string|null} [fullResourceName] ExplainedAllowPolicy fullResourceName
+ * @property {Array.|null} [bindingExplanations] ExplainedAllowPolicy bindingExplanations
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null} [relevance] ExplainedAllowPolicy relevance
+ * @property {google.iam.v1.IPolicy|null} [policy] ExplainedAllowPolicy policy
+ */
+
+ /**
+ * Constructs a new ExplainedAllowPolicy.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @classdesc Represents an ExplainedAllowPolicy.
+ * @implements IExplainedAllowPolicy
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IExplainedAllowPolicy=} [properties] Properties to set
+ */
+ function ExplainedAllowPolicy(properties) {
+ this.bindingExplanations = [];
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * ExplainedAllowPolicy allowAccessState.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState} allowAccessState
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy
+ * @instance
+ */
+ ExplainedAllowPolicy.prototype.allowAccessState = 0;
+
+ /**
+ * ExplainedAllowPolicy fullResourceName.
+ * @member {string} fullResourceName
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy
+ * @instance
+ */
+ ExplainedAllowPolicy.prototype.fullResourceName = "";
+
+ /**
+ * ExplainedAllowPolicy bindingExplanations.
+ * @member {Array.} bindingExplanations
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy
+ * @instance
+ */
+ ExplainedAllowPolicy.prototype.bindingExplanations = $util.emptyArray;
+
+ /**
+ * ExplainedAllowPolicy relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy
+ * @instance
+ */
+ ExplainedAllowPolicy.prototype.relevance = 0;
+
+ /**
+ * ExplainedAllowPolicy policy.
+ * @member {google.iam.v1.IPolicy|null|undefined} policy
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy
+ * @instance
+ */
+ ExplainedAllowPolicy.prototype.policy = null;
+
+ /**
+ * Creates a new ExplainedAllowPolicy instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IExplainedAllowPolicy=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy} ExplainedAllowPolicy instance
+ */
+ ExplainedAllowPolicy.create = function create(properties) {
+ return new ExplainedAllowPolicy(properties);
+ };
+
+ /**
+ * Encodes the specified ExplainedAllowPolicy message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IExplainedAllowPolicy} message ExplainedAllowPolicy message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ExplainedAllowPolicy.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.allowAccessState != null && Object.hasOwnProperty.call(message, "allowAccessState"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.allowAccessState);
+ if (message.fullResourceName != null && Object.hasOwnProperty.call(message, "fullResourceName"))
+ writer.uint32(/* id 2, wireType 2 =*/18).string(message.fullResourceName);
+ if (message.bindingExplanations != null && message.bindingExplanations.length)
+ for (var i = 0; i < message.bindingExplanations.length; ++i)
+ $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.encode(message.bindingExplanations[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 4, wireType 0 =*/32).int32(message.relevance);
+ if (message.policy != null && Object.hasOwnProperty.call(message, "policy"))
+ $root.google.iam.v1.Policy.encode(message.policy, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified ExplainedAllowPolicy message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IExplainedAllowPolicy} message ExplainedAllowPolicy message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ExplainedAllowPolicy.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an ExplainedAllowPolicy message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy} ExplainedAllowPolicy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ExplainedAllowPolicy.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.allowAccessState = reader.int32();
+ break;
+ }
+ case 2: {
+ message.fullResourceName = reader.string();
+ break;
+ }
+ case 3: {
+ if (!(message.bindingExplanations && message.bindingExplanations.length))
+ message.bindingExplanations = [];
+ message.bindingExplanations.push($root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.decode(reader, reader.uint32()));
+ break;
+ }
+ case 4: {
+ message.relevance = reader.int32();
+ break;
+ }
+ case 5: {
+ message.policy = $root.google.iam.v1.Policy.decode(reader, reader.uint32());
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an ExplainedAllowPolicy message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy} ExplainedAllowPolicy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ExplainedAllowPolicy.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an ExplainedAllowPolicy message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ ExplainedAllowPolicy.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.allowAccessState != null && message.hasOwnProperty("allowAccessState"))
+ switch (message.allowAccessState) {
+ default:
+ return "allowAccessState: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+ if (!$util.isString(message.fullResourceName))
+ return "fullResourceName: string expected";
+ if (message.bindingExplanations != null && message.hasOwnProperty("bindingExplanations")) {
+ if (!Array.isArray(message.bindingExplanations))
+ return "bindingExplanations: array expected";
+ for (var i = 0; i < message.bindingExplanations.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.verify(message.bindingExplanations[i]);
+ if (error)
+ return "bindingExplanations." + error;
+ }
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ if (message.policy != null && message.hasOwnProperty("policy")) {
+ var error = $root.google.iam.v1.Policy.verify(message.policy);
+ if (error)
+ return "policy." + error;
+ }
+ return null;
+ };
+
+ /**
+ * Creates an ExplainedAllowPolicy message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy} ExplainedAllowPolicy
+ */
+ ExplainedAllowPolicy.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy();
+ switch (object.allowAccessState) {
+ default:
+ if (typeof object.allowAccessState === "number") {
+ message.allowAccessState = object.allowAccessState;
+ break;
+ }
+ break;
+ case "ALLOW_ACCESS_STATE_UNSPECIFIED":
+ case 0:
+ message.allowAccessState = 0;
+ break;
+ case "ALLOW_ACCESS_STATE_GRANTED":
+ case 1:
+ message.allowAccessState = 1;
+ break;
+ case "ALLOW_ACCESS_STATE_NOT_GRANTED":
+ case 2:
+ message.allowAccessState = 2;
+ break;
+ case "ALLOW_ACCESS_STATE_UNKNOWN_CONDITIONAL":
+ case 3:
+ message.allowAccessState = 3;
+ break;
+ case "ALLOW_ACCESS_STATE_UNKNOWN_INFO":
+ case 4:
+ message.allowAccessState = 4;
+ break;
+ }
+ if (object.fullResourceName != null)
+ message.fullResourceName = String(object.fullResourceName);
+ if (object.bindingExplanations) {
+ if (!Array.isArray(object.bindingExplanations))
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy.bindingExplanations: array expected");
+ message.bindingExplanations = [];
+ for (var i = 0; i < object.bindingExplanations.length; ++i) {
+ if (typeof object.bindingExplanations[i] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy.bindingExplanations: object expected");
+ message.bindingExplanations[i] = $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.fromObject(object.bindingExplanations[i]);
+ }
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ if (object.policy != null) {
+ if (typeof object.policy !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy.policy: object expected");
+ message.policy = $root.google.iam.v1.Policy.fromObject(object.policy);
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an ExplainedAllowPolicy message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy} message ExplainedAllowPolicy
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ ExplainedAllowPolicy.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.arrays || options.defaults)
+ object.bindingExplanations = [];
+ if (options.defaults) {
+ object.allowAccessState = options.enums === String ? "ALLOW_ACCESS_STATE_UNSPECIFIED" : 0;
+ object.fullResourceName = "";
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ object.policy = null;
+ }
+ if (message.allowAccessState != null && message.hasOwnProperty("allowAccessState"))
+ object.allowAccessState = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState[message.allowAccessState] === undefined ? message.allowAccessState : $root.google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState[message.allowAccessState] : message.allowAccessState;
+ if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+ object.fullResourceName = message.fullResourceName;
+ if (message.bindingExplanations && message.bindingExplanations.length) {
+ object.bindingExplanations = [];
+ for (var j = 0; j < message.bindingExplanations.length; ++j)
+ object.bindingExplanations[j] = $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.toObject(message.bindingExplanations[j], options);
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] : message.relevance;
+ if (message.policy != null && message.hasOwnProperty("policy"))
+ object.policy = $root.google.iam.v1.Policy.toObject(message.policy, options);
+ return object;
+ };
+
+ /**
+ * Converts this ExplainedAllowPolicy to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ ExplainedAllowPolicy.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for ExplainedAllowPolicy
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ ExplainedAllowPolicy.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.ExplainedAllowPolicy";
+ };
+
+ return ExplainedAllowPolicy;
+ })();
+
+ v3beta.AllowBindingExplanation = (function() {
+
+ /**
+ * Properties of an AllowBindingExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @interface IAllowBindingExplanation
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState|null} [allowAccessState] AllowBindingExplanation allowAccessState
+ * @property {string|null} [role] AllowBindingExplanation role
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.RolePermissionInclusionState|null} [rolePermission] AllowBindingExplanation rolePermission
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null} [rolePermissionRelevance] AllowBindingExplanation rolePermissionRelevance
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.IAnnotatedAllowMembership|null} [combinedMembership] AllowBindingExplanation combinedMembership
+ * @property {Object.|null} [memberships] AllowBindingExplanation memberships
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null} [relevance] AllowBindingExplanation relevance
+ * @property {google.type.IExpr|null} [condition] AllowBindingExplanation condition
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.IConditionExplanation|null} [conditionExplanation] AllowBindingExplanation conditionExplanation
+ */
+
+ /**
+ * Constructs a new AllowBindingExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @classdesc Represents an AllowBindingExplanation.
+ * @implements IAllowBindingExplanation
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IAllowBindingExplanation=} [properties] Properties to set
+ */
+ function AllowBindingExplanation(properties) {
+ this.memberships = {};
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * AllowBindingExplanation allowAccessState.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState} allowAccessState
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @instance
+ */
+ AllowBindingExplanation.prototype.allowAccessState = 0;
+
+ /**
+ * AllowBindingExplanation role.
+ * @member {string} role
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @instance
+ */
+ AllowBindingExplanation.prototype.role = "";
+
+ /**
+ * AllowBindingExplanation rolePermission.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.RolePermissionInclusionState} rolePermission
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @instance
+ */
+ AllowBindingExplanation.prototype.rolePermission = 0;
+
+ /**
+ * AllowBindingExplanation rolePermissionRelevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance} rolePermissionRelevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @instance
+ */
+ AllowBindingExplanation.prototype.rolePermissionRelevance = 0;
+
+ /**
+ * AllowBindingExplanation combinedMembership.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.IAnnotatedAllowMembership|null|undefined} combinedMembership
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @instance
+ */
+ AllowBindingExplanation.prototype.combinedMembership = null;
+
+ /**
+ * AllowBindingExplanation memberships.
+ * @member {Object.} memberships
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @instance
+ */
+ AllowBindingExplanation.prototype.memberships = $util.emptyObject;
+
+ /**
+ * AllowBindingExplanation relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @instance
+ */
+ AllowBindingExplanation.prototype.relevance = 0;
+
+ /**
+ * AllowBindingExplanation condition.
+ * @member {google.type.IExpr|null|undefined} condition
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @instance
+ */
+ AllowBindingExplanation.prototype.condition = null;
+
+ /**
+ * AllowBindingExplanation conditionExplanation.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.IConditionExplanation|null|undefined} conditionExplanation
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @instance
+ */
+ AllowBindingExplanation.prototype.conditionExplanation = null;
+
+ /**
+ * Creates a new AllowBindingExplanation instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IAllowBindingExplanation=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation} AllowBindingExplanation instance
+ */
+ AllowBindingExplanation.create = function create(properties) {
+ return new AllowBindingExplanation(properties);
+ };
+
+ /**
+ * Encodes the specified AllowBindingExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IAllowBindingExplanation} message AllowBindingExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AllowBindingExplanation.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.allowAccessState != null && Object.hasOwnProperty.call(message, "allowAccessState"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.allowAccessState);
+ if (message.role != null && Object.hasOwnProperty.call(message, "role"))
+ writer.uint32(/* id 2, wireType 2 =*/18).string(message.role);
+ if (message.rolePermission != null && Object.hasOwnProperty.call(message, "rolePermission"))
+ writer.uint32(/* id 3, wireType 0 =*/24).int32(message.rolePermission);
+ if (message.rolePermissionRelevance != null && Object.hasOwnProperty.call(message, "rolePermissionRelevance"))
+ writer.uint32(/* id 4, wireType 0 =*/32).int32(message.rolePermissionRelevance);
+ if (message.combinedMembership != null && Object.hasOwnProperty.call(message, "combinedMembership"))
+ $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership.encode(message.combinedMembership, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
+ if (message.memberships != null && Object.hasOwnProperty.call(message, "memberships"))
+ for (var keys = Object.keys(message.memberships), i = 0; i < keys.length; ++i) {
+ writer.uint32(/* id 6, wireType 2 =*/50).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);
+ $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership.encode(message.memberships[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();
+ }
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 7, wireType 0 =*/56).int32(message.relevance);
+ if (message.condition != null && Object.hasOwnProperty.call(message, "condition"))
+ $root.google.type.Expr.encode(message.condition, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();
+ if (message.conditionExplanation != null && Object.hasOwnProperty.call(message, "conditionExplanation"))
+ $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.encode(message.conditionExplanation, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified AllowBindingExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IAllowBindingExplanation} message AllowBindingExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AllowBindingExplanation.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an AllowBindingExplanation message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation} AllowBindingExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AllowBindingExplanation.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation(), key, value;
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.allowAccessState = reader.int32();
+ break;
+ }
+ case 2: {
+ message.role = reader.string();
+ break;
+ }
+ case 3: {
+ message.rolePermission = reader.int32();
+ break;
+ }
+ case 4: {
+ message.rolePermissionRelevance = reader.int32();
+ break;
+ }
+ case 5: {
+ message.combinedMembership = $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership.decode(reader, reader.uint32());
+ break;
+ }
+ case 6: {
+ if (message.memberships === $util.emptyObject)
+ message.memberships = {};
+ var end2 = reader.uint32() + reader.pos;
+ key = "";
+ value = null;
+ while (reader.pos < end2) {
+ var tag2 = reader.uint32();
+ switch (tag2 >>> 3) {
+ case 1:
+ key = reader.string();
+ break;
+ case 2:
+ value = $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership.decode(reader, reader.uint32());
+ break;
+ default:
+ reader.skipType(tag2 & 7);
+ break;
+ }
+ }
+ message.memberships[key] = value;
+ break;
+ }
+ case 7: {
+ message.relevance = reader.int32();
+ break;
+ }
+ case 8: {
+ message.condition = $root.google.type.Expr.decode(reader, reader.uint32());
+ break;
+ }
+ case 9: {
+ message.conditionExplanation = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.decode(reader, reader.uint32());
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an AllowBindingExplanation message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation} AllowBindingExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AllowBindingExplanation.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an AllowBindingExplanation message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ AllowBindingExplanation.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.allowAccessState != null && message.hasOwnProperty("allowAccessState"))
+ switch (message.allowAccessState) {
+ default:
+ return "allowAccessState: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.role != null && message.hasOwnProperty("role"))
+ if (!$util.isString(message.role))
+ return "role: string expected";
+ if (message.rolePermission != null && message.hasOwnProperty("rolePermission"))
+ switch (message.rolePermission) {
+ default:
+ return "rolePermission: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ break;
+ }
+ if (message.rolePermissionRelevance != null && message.hasOwnProperty("rolePermissionRelevance"))
+ switch (message.rolePermissionRelevance) {
+ default:
+ return "rolePermissionRelevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ if (message.combinedMembership != null && message.hasOwnProperty("combinedMembership")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership.verify(message.combinedMembership);
+ if (error)
+ return "combinedMembership." + error;
+ }
+ if (message.memberships != null && message.hasOwnProperty("memberships")) {
+ if (!$util.isObject(message.memberships))
+ return "memberships: object expected";
+ var key = Object.keys(message.memberships);
+ for (var i = 0; i < key.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership.verify(message.memberships[key[i]]);
+ if (error)
+ return "memberships." + error;
+ }
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ if (message.condition != null && message.hasOwnProperty("condition")) {
+ var error = $root.google.type.Expr.verify(message.condition);
+ if (error)
+ return "condition." + error;
+ }
+ if (message.conditionExplanation != null && message.hasOwnProperty("conditionExplanation")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.verify(message.conditionExplanation);
+ if (error)
+ return "conditionExplanation." + error;
+ }
+ return null;
+ };
+
+ /**
+ * Creates an AllowBindingExplanation message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation} AllowBindingExplanation
+ */
+ AllowBindingExplanation.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation();
+ switch (object.allowAccessState) {
+ default:
+ if (typeof object.allowAccessState === "number") {
+ message.allowAccessState = object.allowAccessState;
+ break;
+ }
+ break;
+ case "ALLOW_ACCESS_STATE_UNSPECIFIED":
+ case 0:
+ message.allowAccessState = 0;
+ break;
+ case "ALLOW_ACCESS_STATE_GRANTED":
+ case 1:
+ message.allowAccessState = 1;
+ break;
+ case "ALLOW_ACCESS_STATE_NOT_GRANTED":
+ case 2:
+ message.allowAccessState = 2;
+ break;
+ case "ALLOW_ACCESS_STATE_UNKNOWN_CONDITIONAL":
+ case 3:
+ message.allowAccessState = 3;
+ break;
+ case "ALLOW_ACCESS_STATE_UNKNOWN_INFO":
+ case 4:
+ message.allowAccessState = 4;
+ break;
+ }
+ if (object.role != null)
+ message.role = String(object.role);
+ switch (object.rolePermission) {
+ default:
+ if (typeof object.rolePermission === "number") {
+ message.rolePermission = object.rolePermission;
+ break;
+ }
+ break;
+ case "ROLE_PERMISSION_INCLUSION_STATE_UNSPECIFIED":
+ case 0:
+ message.rolePermission = 0;
+ break;
+ case "ROLE_PERMISSION_INCLUDED":
+ case 1:
+ message.rolePermission = 1;
+ break;
+ case "ROLE_PERMISSION_NOT_INCLUDED":
+ case 2:
+ message.rolePermission = 2;
+ break;
+ case "ROLE_PERMISSION_UNKNOWN_INFO":
+ case 3:
+ message.rolePermission = 3;
+ break;
+ }
+ switch (object.rolePermissionRelevance) {
+ default:
+ if (typeof object.rolePermissionRelevance === "number") {
+ message.rolePermissionRelevance = object.rolePermissionRelevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.rolePermissionRelevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.rolePermissionRelevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.rolePermissionRelevance = 2;
+ break;
+ }
+ if (object.combinedMembership != null) {
+ if (typeof object.combinedMembership !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.combinedMembership: object expected");
+ message.combinedMembership = $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership.fromObject(object.combinedMembership);
+ }
+ if (object.memberships) {
+ if (typeof object.memberships !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.memberships: object expected");
+ message.memberships = {};
+ for (var keys = Object.keys(object.memberships), i = 0; i < keys.length; ++i) {
+ if (typeof object.memberships[keys[i]] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.memberships: object expected");
+ message.memberships[keys[i]] = $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership.fromObject(object.memberships[keys[i]]);
+ }
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ if (object.condition != null) {
+ if (typeof object.condition !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.condition: object expected");
+ message.condition = $root.google.type.Expr.fromObject(object.condition);
+ }
+ if (object.conditionExplanation != null) {
+ if (typeof object.conditionExplanation !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.conditionExplanation: object expected");
+ message.conditionExplanation = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.fromObject(object.conditionExplanation);
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an AllowBindingExplanation message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation} message AllowBindingExplanation
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ AllowBindingExplanation.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.objects || options.defaults)
+ object.memberships = {};
+ if (options.defaults) {
+ object.allowAccessState = options.enums === String ? "ALLOW_ACCESS_STATE_UNSPECIFIED" : 0;
+ object.role = "";
+ object.rolePermission = options.enums === String ? "ROLE_PERMISSION_INCLUSION_STATE_UNSPECIFIED" : 0;
+ object.rolePermissionRelevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ object.combinedMembership = null;
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ object.condition = null;
+ object.conditionExplanation = null;
+ }
+ if (message.allowAccessState != null && message.hasOwnProperty("allowAccessState"))
+ object.allowAccessState = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState[message.allowAccessState] === undefined ? message.allowAccessState : $root.google.cloud.policytroubleshooter.iam.v3beta.AllowAccessState[message.allowAccessState] : message.allowAccessState;
+ if (message.role != null && message.hasOwnProperty("role"))
+ object.role = message.role;
+ if (message.rolePermission != null && message.hasOwnProperty("rolePermission"))
+ object.rolePermission = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.RolePermissionInclusionState[message.rolePermission] === undefined ? message.rolePermission : $root.google.cloud.policytroubleshooter.iam.v3beta.RolePermissionInclusionState[message.rolePermission] : message.rolePermission;
+ if (message.rolePermissionRelevance != null && message.hasOwnProperty("rolePermissionRelevance"))
+ object.rolePermissionRelevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.rolePermissionRelevance] === undefined ? message.rolePermissionRelevance : $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.rolePermissionRelevance] : message.rolePermissionRelevance;
+ if (message.combinedMembership != null && message.hasOwnProperty("combinedMembership"))
+ object.combinedMembership = $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership.toObject(message.combinedMembership, options);
+ var keys2;
+ if (message.memberships && (keys2 = Object.keys(message.memberships)).length) {
+ object.memberships = {};
+ for (var j = 0; j < keys2.length; ++j)
+ object.memberships[keys2[j]] = $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership.toObject(message.memberships[keys2[j]], options);
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] : message.relevance;
+ if (message.condition != null && message.hasOwnProperty("condition"))
+ object.condition = $root.google.type.Expr.toObject(message.condition, options);
+ if (message.conditionExplanation != null && message.hasOwnProperty("conditionExplanation"))
+ object.conditionExplanation = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.toObject(message.conditionExplanation, options);
+ return object;
+ };
+
+ /**
+ * Converts this AllowBindingExplanation to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ AllowBindingExplanation.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for AllowBindingExplanation
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ AllowBindingExplanation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation";
+ };
+
+ AllowBindingExplanation.AnnotatedAllowMembership = (function() {
+
+ /**
+ * Properties of an AnnotatedAllowMembership.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @interface IAnnotatedAllowMembership
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.MembershipMatchingState|null} [membership] AnnotatedAllowMembership membership
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null} [relevance] AnnotatedAllowMembership relevance
+ */
+
+ /**
+ * Constructs a new AnnotatedAllowMembership.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation
+ * @classdesc Represents an AnnotatedAllowMembership.
+ * @implements IAnnotatedAllowMembership
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.IAnnotatedAllowMembership=} [properties] Properties to set
+ */
+ function AnnotatedAllowMembership(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * AnnotatedAllowMembership membership.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.MembershipMatchingState} membership
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership
+ * @instance
+ */
+ AnnotatedAllowMembership.prototype.membership = 0;
+
+ /**
+ * AnnotatedAllowMembership relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership
+ * @instance
+ */
+ AnnotatedAllowMembership.prototype.relevance = 0;
+
+ /**
+ * Creates a new AnnotatedAllowMembership instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.IAnnotatedAllowMembership=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership} AnnotatedAllowMembership instance
+ */
+ AnnotatedAllowMembership.create = function create(properties) {
+ return new AnnotatedAllowMembership(properties);
+ };
+
+ /**
+ * Encodes the specified AnnotatedAllowMembership message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.IAnnotatedAllowMembership} message AnnotatedAllowMembership message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AnnotatedAllowMembership.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.membership != null && Object.hasOwnProperty.call(message, "membership"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.membership);
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 2, wireType 0 =*/16).int32(message.relevance);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified AnnotatedAllowMembership message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.IAnnotatedAllowMembership} message AnnotatedAllowMembership message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AnnotatedAllowMembership.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an AnnotatedAllowMembership message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership} AnnotatedAllowMembership
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AnnotatedAllowMembership.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.membership = reader.int32();
+ break;
+ }
+ case 2: {
+ message.relevance = reader.int32();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an AnnotatedAllowMembership message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership} AnnotatedAllowMembership
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AnnotatedAllowMembership.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an AnnotatedAllowMembership message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ AnnotatedAllowMembership.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.membership != null && message.hasOwnProperty("membership"))
+ switch (message.membership) {
+ default:
+ return "membership: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ return null;
+ };
+
+ /**
+ * Creates an AnnotatedAllowMembership message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership} AnnotatedAllowMembership
+ */
+ AnnotatedAllowMembership.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership();
+ switch (object.membership) {
+ default:
+ if (typeof object.membership === "number") {
+ message.membership = object.membership;
+ break;
+ }
+ break;
+ case "MEMBERSHIP_MATCHING_STATE_UNSPECIFIED":
+ case 0:
+ message.membership = 0;
+ break;
+ case "MEMBERSHIP_MATCHED":
+ case 1:
+ message.membership = 1;
+ break;
+ case "MEMBERSHIP_NOT_MATCHED":
+ case 2:
+ message.membership = 2;
+ break;
+ case "MEMBERSHIP_UNKNOWN_INFO":
+ case 3:
+ message.membership = 3;
+ break;
+ case "MEMBERSHIP_UNKNOWN_UNSUPPORTED":
+ case 4:
+ message.membership = 4;
+ break;
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an AnnotatedAllowMembership message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership} message AnnotatedAllowMembership
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ AnnotatedAllowMembership.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults) {
+ object.membership = options.enums === String ? "MEMBERSHIP_MATCHING_STATE_UNSPECIFIED" : 0;
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ }
+ if (message.membership != null && message.hasOwnProperty("membership"))
+ object.membership = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.MembershipMatchingState[message.membership] === undefined ? message.membership : $root.google.cloud.policytroubleshooter.iam.v3beta.MembershipMatchingState[message.membership] : message.membership;
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] : message.relevance;
+ return object;
+ };
+
+ /**
+ * Converts this AnnotatedAllowMembership to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ AnnotatedAllowMembership.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for AnnotatedAllowMembership
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ AnnotatedAllowMembership.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.AllowBindingExplanation.AnnotatedAllowMembership";
+ };
+
+ return AnnotatedAllowMembership;
+ })();
+
+ return AllowBindingExplanation;
+ })();
+
+ v3beta.DenyPolicyExplanation = (function() {
+
+ /**
+ * Properties of a DenyPolicyExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @interface IDenyPolicyExplanation
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState|null} [denyAccessState] DenyPolicyExplanation denyAccessState
+ * @property {Array.|null} [explainedResources] DenyPolicyExplanation explainedResources
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null} [relevance] DenyPolicyExplanation relevance
+ * @property {boolean|null} [permissionDeniable] DenyPolicyExplanation permissionDeniable
+ */
+
+ /**
+ * Constructs a new DenyPolicyExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @classdesc Represents a DenyPolicyExplanation.
+ * @implements IDenyPolicyExplanation
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IDenyPolicyExplanation=} [properties] Properties to set
+ */
+ function DenyPolicyExplanation(properties) {
+ this.explainedResources = [];
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * DenyPolicyExplanation denyAccessState.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState} denyAccessState
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation
+ * @instance
+ */
+ DenyPolicyExplanation.prototype.denyAccessState = 0;
+
+ /**
+ * DenyPolicyExplanation explainedResources.
+ * @member {Array.} explainedResources
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation
+ * @instance
+ */
+ DenyPolicyExplanation.prototype.explainedResources = $util.emptyArray;
+
+ /**
+ * DenyPolicyExplanation relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation
+ * @instance
+ */
+ DenyPolicyExplanation.prototype.relevance = 0;
+
+ /**
+ * DenyPolicyExplanation permissionDeniable.
+ * @member {boolean} permissionDeniable
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation
+ * @instance
+ */
+ DenyPolicyExplanation.prototype.permissionDeniable = false;
+
+ /**
+ * Creates a new DenyPolicyExplanation instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IDenyPolicyExplanation=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation} DenyPolicyExplanation instance
+ */
+ DenyPolicyExplanation.create = function create(properties) {
+ return new DenyPolicyExplanation(properties);
+ };
+
+ /**
+ * Encodes the specified DenyPolicyExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IDenyPolicyExplanation} message DenyPolicyExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ DenyPolicyExplanation.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.denyAccessState != null && Object.hasOwnProperty.call(message, "denyAccessState"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.denyAccessState);
+ if (message.explainedResources != null && message.explainedResources.length)
+ for (var i = 0; i < message.explainedResources.length; ++i)
+ $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource.encode(message.explainedResources[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 3, wireType 0 =*/24).int32(message.relevance);
+ if (message.permissionDeniable != null && Object.hasOwnProperty.call(message, "permissionDeniable"))
+ writer.uint32(/* id 4, wireType 0 =*/32).bool(message.permissionDeniable);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified DenyPolicyExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IDenyPolicyExplanation} message DenyPolicyExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ DenyPolicyExplanation.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a DenyPolicyExplanation message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation} DenyPolicyExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ DenyPolicyExplanation.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.denyAccessState = reader.int32();
+ break;
+ }
+ case 2: {
+ if (!(message.explainedResources && message.explainedResources.length))
+ message.explainedResources = [];
+ message.explainedResources.push($root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource.decode(reader, reader.uint32()));
+ break;
+ }
+ case 3: {
+ message.relevance = reader.int32();
+ break;
+ }
+ case 4: {
+ message.permissionDeniable = reader.bool();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a DenyPolicyExplanation message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation} DenyPolicyExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ DenyPolicyExplanation.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a DenyPolicyExplanation message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ DenyPolicyExplanation.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.denyAccessState != null && message.hasOwnProperty("denyAccessState"))
+ switch (message.denyAccessState) {
+ default:
+ return "denyAccessState: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.explainedResources != null && message.hasOwnProperty("explainedResources")) {
+ if (!Array.isArray(message.explainedResources))
+ return "explainedResources: array expected";
+ for (var i = 0; i < message.explainedResources.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource.verify(message.explainedResources[i]);
+ if (error)
+ return "explainedResources." + error;
+ }
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ if (message.permissionDeniable != null && message.hasOwnProperty("permissionDeniable"))
+ if (typeof message.permissionDeniable !== "boolean")
+ return "permissionDeniable: boolean expected";
+ return null;
+ };
+
+ /**
+ * Creates a DenyPolicyExplanation message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation} DenyPolicyExplanation
+ */
+ DenyPolicyExplanation.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation();
+ switch (object.denyAccessState) {
+ default:
+ if (typeof object.denyAccessState === "number") {
+ message.denyAccessState = object.denyAccessState;
+ break;
+ }
+ break;
+ case "DENY_ACCESS_STATE_UNSPECIFIED":
+ case 0:
+ message.denyAccessState = 0;
+ break;
+ case "DENY_ACCESS_STATE_DENIED":
+ case 1:
+ message.denyAccessState = 1;
+ break;
+ case "DENY_ACCESS_STATE_NOT_DENIED":
+ case 2:
+ message.denyAccessState = 2;
+ break;
+ case "DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL":
+ case 3:
+ message.denyAccessState = 3;
+ break;
+ case "DENY_ACCESS_STATE_UNKNOWN_INFO":
+ case 4:
+ message.denyAccessState = 4;
+ break;
+ }
+ if (object.explainedResources) {
+ if (!Array.isArray(object.explainedResources))
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation.explainedResources: array expected");
+ message.explainedResources = [];
+ for (var i = 0; i < object.explainedResources.length; ++i) {
+ if (typeof object.explainedResources[i] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation.explainedResources: object expected");
+ message.explainedResources[i] = $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource.fromObject(object.explainedResources[i]);
+ }
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ if (object.permissionDeniable != null)
+ message.permissionDeniable = Boolean(object.permissionDeniable);
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a DenyPolicyExplanation message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation} message DenyPolicyExplanation
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ DenyPolicyExplanation.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.arrays || options.defaults)
+ object.explainedResources = [];
+ if (options.defaults) {
+ object.denyAccessState = options.enums === String ? "DENY_ACCESS_STATE_UNSPECIFIED" : 0;
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ object.permissionDeniable = false;
+ }
+ if (message.denyAccessState != null && message.hasOwnProperty("denyAccessState"))
+ object.denyAccessState = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState[message.denyAccessState] === undefined ? message.denyAccessState : $root.google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState[message.denyAccessState] : message.denyAccessState;
+ if (message.explainedResources && message.explainedResources.length) {
+ object.explainedResources = [];
+ for (var j = 0; j < message.explainedResources.length; ++j)
+ object.explainedResources[j] = $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource.toObject(message.explainedResources[j], options);
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] : message.relevance;
+ if (message.permissionDeniable != null && message.hasOwnProperty("permissionDeniable"))
+ object.permissionDeniable = message.permissionDeniable;
+ return object;
+ };
+
+ /**
+ * Converts this DenyPolicyExplanation to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ DenyPolicyExplanation.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for DenyPolicyExplanation
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ DenyPolicyExplanation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.DenyPolicyExplanation";
+ };
+
+ return DenyPolicyExplanation;
+ })();
+
+ v3beta.ExplainedDenyResource = (function() {
+
+ /**
+ * Properties of an ExplainedDenyResource.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @interface IExplainedDenyResource
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState|null} [denyAccessState] ExplainedDenyResource denyAccessState
+ * @property {string|null} [fullResourceName] ExplainedDenyResource fullResourceName
+ * @property {Array.|null} [explainedPolicies] ExplainedDenyResource explainedPolicies
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null} [relevance] ExplainedDenyResource relevance
+ */
+
+ /**
+ * Constructs a new ExplainedDenyResource.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @classdesc Represents an ExplainedDenyResource.
+ * @implements IExplainedDenyResource
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyResource=} [properties] Properties to set
+ */
+ function ExplainedDenyResource(properties) {
+ this.explainedPolicies = [];
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * ExplainedDenyResource denyAccessState.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState} denyAccessState
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource
+ * @instance
+ */
+ ExplainedDenyResource.prototype.denyAccessState = 0;
+
+ /**
+ * ExplainedDenyResource fullResourceName.
+ * @member {string} fullResourceName
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource
+ * @instance
+ */
+ ExplainedDenyResource.prototype.fullResourceName = "";
+
+ /**
+ * ExplainedDenyResource explainedPolicies.
+ * @member {Array.} explainedPolicies
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource
+ * @instance
+ */
+ ExplainedDenyResource.prototype.explainedPolicies = $util.emptyArray;
+
+ /**
+ * ExplainedDenyResource relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource
+ * @instance
+ */
+ ExplainedDenyResource.prototype.relevance = 0;
+
+ /**
+ * Creates a new ExplainedDenyResource instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyResource=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource} ExplainedDenyResource instance
+ */
+ ExplainedDenyResource.create = function create(properties) {
+ return new ExplainedDenyResource(properties);
+ };
+
+ /**
+ * Encodes the specified ExplainedDenyResource message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyResource} message ExplainedDenyResource message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ExplainedDenyResource.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.denyAccessState != null && Object.hasOwnProperty.call(message, "denyAccessState"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.denyAccessState);
+ if (message.fullResourceName != null && Object.hasOwnProperty.call(message, "fullResourceName"))
+ writer.uint32(/* id 2, wireType 2 =*/18).string(message.fullResourceName);
+ if (message.explainedPolicies != null && message.explainedPolicies.length)
+ for (var i = 0; i < message.explainedPolicies.length; ++i)
+ $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy.encode(message.explainedPolicies[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 4, wireType 0 =*/32).int32(message.relevance);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified ExplainedDenyResource message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyResource} message ExplainedDenyResource message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ExplainedDenyResource.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an ExplainedDenyResource message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource} ExplainedDenyResource
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ExplainedDenyResource.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.denyAccessState = reader.int32();
+ break;
+ }
+ case 2: {
+ message.fullResourceName = reader.string();
+ break;
+ }
+ case 3: {
+ if (!(message.explainedPolicies && message.explainedPolicies.length))
+ message.explainedPolicies = [];
+ message.explainedPolicies.push($root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy.decode(reader, reader.uint32()));
+ break;
+ }
+ case 4: {
+ message.relevance = reader.int32();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an ExplainedDenyResource message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource} ExplainedDenyResource
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ExplainedDenyResource.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an ExplainedDenyResource message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ ExplainedDenyResource.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.denyAccessState != null && message.hasOwnProperty("denyAccessState"))
+ switch (message.denyAccessState) {
+ default:
+ return "denyAccessState: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+ if (!$util.isString(message.fullResourceName))
+ return "fullResourceName: string expected";
+ if (message.explainedPolicies != null && message.hasOwnProperty("explainedPolicies")) {
+ if (!Array.isArray(message.explainedPolicies))
+ return "explainedPolicies: array expected";
+ for (var i = 0; i < message.explainedPolicies.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy.verify(message.explainedPolicies[i]);
+ if (error)
+ return "explainedPolicies." + error;
+ }
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ return null;
+ };
+
+ /**
+ * Creates an ExplainedDenyResource message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource} ExplainedDenyResource
+ */
+ ExplainedDenyResource.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource();
+ switch (object.denyAccessState) {
+ default:
+ if (typeof object.denyAccessState === "number") {
+ message.denyAccessState = object.denyAccessState;
+ break;
+ }
+ break;
+ case "DENY_ACCESS_STATE_UNSPECIFIED":
+ case 0:
+ message.denyAccessState = 0;
+ break;
+ case "DENY_ACCESS_STATE_DENIED":
+ case 1:
+ message.denyAccessState = 1;
+ break;
+ case "DENY_ACCESS_STATE_NOT_DENIED":
+ case 2:
+ message.denyAccessState = 2;
+ break;
+ case "DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL":
+ case 3:
+ message.denyAccessState = 3;
+ break;
+ case "DENY_ACCESS_STATE_UNKNOWN_INFO":
+ case 4:
+ message.denyAccessState = 4;
+ break;
+ }
+ if (object.fullResourceName != null)
+ message.fullResourceName = String(object.fullResourceName);
+ if (object.explainedPolicies) {
+ if (!Array.isArray(object.explainedPolicies))
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource.explainedPolicies: array expected");
+ message.explainedPolicies = [];
+ for (var i = 0; i < object.explainedPolicies.length; ++i) {
+ if (typeof object.explainedPolicies[i] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource.explainedPolicies: object expected");
+ message.explainedPolicies[i] = $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy.fromObject(object.explainedPolicies[i]);
+ }
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an ExplainedDenyResource message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource} message ExplainedDenyResource
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ ExplainedDenyResource.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.arrays || options.defaults)
+ object.explainedPolicies = [];
+ if (options.defaults) {
+ object.denyAccessState = options.enums === String ? "DENY_ACCESS_STATE_UNSPECIFIED" : 0;
+ object.fullResourceName = "";
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ }
+ if (message.denyAccessState != null && message.hasOwnProperty("denyAccessState"))
+ object.denyAccessState = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState[message.denyAccessState] === undefined ? message.denyAccessState : $root.google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState[message.denyAccessState] : message.denyAccessState;
+ if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+ object.fullResourceName = message.fullResourceName;
+ if (message.explainedPolicies && message.explainedPolicies.length) {
+ object.explainedPolicies = [];
+ for (var j = 0; j < message.explainedPolicies.length; ++j)
+ object.explainedPolicies[j] = $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy.toObject(message.explainedPolicies[j], options);
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] : message.relevance;
+ return object;
+ };
+
+ /**
+ * Converts this ExplainedDenyResource to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ ExplainedDenyResource.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for ExplainedDenyResource
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ ExplainedDenyResource.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyResource";
+ };
+
+ return ExplainedDenyResource;
+ })();
+
+ v3beta.ExplainedDenyPolicy = (function() {
+
+ /**
+ * Properties of an ExplainedDenyPolicy.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @interface IExplainedDenyPolicy
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState|null} [denyAccessState] ExplainedDenyPolicy denyAccessState
+ * @property {google.iam.v2.IPolicy|null} [policy] ExplainedDenyPolicy policy
+ * @property {Array.|null} [ruleExplanations] ExplainedDenyPolicy ruleExplanations
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null} [relevance] ExplainedDenyPolicy relevance
+ */
+
+ /**
+ * Constructs a new ExplainedDenyPolicy.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @classdesc Represents an ExplainedDenyPolicy.
+ * @implements IExplainedDenyPolicy
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyPolicy=} [properties] Properties to set
+ */
+ function ExplainedDenyPolicy(properties) {
+ this.ruleExplanations = [];
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * ExplainedDenyPolicy denyAccessState.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState} denyAccessState
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy
+ * @instance
+ */
+ ExplainedDenyPolicy.prototype.denyAccessState = 0;
+
+ /**
+ * ExplainedDenyPolicy policy.
+ * @member {google.iam.v2.IPolicy|null|undefined} policy
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy
+ * @instance
+ */
+ ExplainedDenyPolicy.prototype.policy = null;
+
+ /**
+ * ExplainedDenyPolicy ruleExplanations.
+ * @member {Array.} ruleExplanations
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy
+ * @instance
+ */
+ ExplainedDenyPolicy.prototype.ruleExplanations = $util.emptyArray;
+
+ /**
+ * ExplainedDenyPolicy relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy
+ * @instance
+ */
+ ExplainedDenyPolicy.prototype.relevance = 0;
+
+ /**
+ * Creates a new ExplainedDenyPolicy instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyPolicy=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy} ExplainedDenyPolicy instance
+ */
+ ExplainedDenyPolicy.create = function create(properties) {
+ return new ExplainedDenyPolicy(properties);
+ };
+
+ /**
+ * Encodes the specified ExplainedDenyPolicy message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyPolicy} message ExplainedDenyPolicy message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ExplainedDenyPolicy.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.denyAccessState != null && Object.hasOwnProperty.call(message, "denyAccessState"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.denyAccessState);
+ if (message.policy != null && Object.hasOwnProperty.call(message, "policy"))
+ $root.google.iam.v2.Policy.encode(message.policy, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+ if (message.ruleExplanations != null && message.ruleExplanations.length)
+ for (var i = 0; i < message.ruleExplanations.length; ++i)
+ $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.encode(message.ruleExplanations[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 4, wireType 0 =*/32).int32(message.relevance);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified ExplainedDenyPolicy message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IExplainedDenyPolicy} message ExplainedDenyPolicy message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ExplainedDenyPolicy.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an ExplainedDenyPolicy message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy} ExplainedDenyPolicy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ExplainedDenyPolicy.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.denyAccessState = reader.int32();
+ break;
+ }
+ case 2: {
+ message.policy = $root.google.iam.v2.Policy.decode(reader, reader.uint32());
+ break;
+ }
+ case 3: {
+ if (!(message.ruleExplanations && message.ruleExplanations.length))
+ message.ruleExplanations = [];
+ message.ruleExplanations.push($root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.decode(reader, reader.uint32()));
+ break;
+ }
+ case 4: {
+ message.relevance = reader.int32();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an ExplainedDenyPolicy message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy} ExplainedDenyPolicy
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ExplainedDenyPolicy.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an ExplainedDenyPolicy message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ ExplainedDenyPolicy.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.denyAccessState != null && message.hasOwnProperty("denyAccessState"))
+ switch (message.denyAccessState) {
+ default:
+ return "denyAccessState: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.policy != null && message.hasOwnProperty("policy")) {
+ var error = $root.google.iam.v2.Policy.verify(message.policy);
+ if (error)
+ return "policy." + error;
+ }
+ if (message.ruleExplanations != null && message.hasOwnProperty("ruleExplanations")) {
+ if (!Array.isArray(message.ruleExplanations))
+ return "ruleExplanations: array expected";
+ for (var i = 0; i < message.ruleExplanations.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.verify(message.ruleExplanations[i]);
+ if (error)
+ return "ruleExplanations." + error;
+ }
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ return null;
+ };
+
+ /**
+ * Creates an ExplainedDenyPolicy message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy} ExplainedDenyPolicy
+ */
+ ExplainedDenyPolicy.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy();
+ switch (object.denyAccessState) {
+ default:
+ if (typeof object.denyAccessState === "number") {
+ message.denyAccessState = object.denyAccessState;
+ break;
+ }
+ break;
+ case "DENY_ACCESS_STATE_UNSPECIFIED":
+ case 0:
+ message.denyAccessState = 0;
+ break;
+ case "DENY_ACCESS_STATE_DENIED":
+ case 1:
+ message.denyAccessState = 1;
+ break;
+ case "DENY_ACCESS_STATE_NOT_DENIED":
+ case 2:
+ message.denyAccessState = 2;
+ break;
+ case "DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL":
+ case 3:
+ message.denyAccessState = 3;
+ break;
+ case "DENY_ACCESS_STATE_UNKNOWN_INFO":
+ case 4:
+ message.denyAccessState = 4;
+ break;
+ }
+ if (object.policy != null) {
+ if (typeof object.policy !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy.policy: object expected");
+ message.policy = $root.google.iam.v2.Policy.fromObject(object.policy);
+ }
+ if (object.ruleExplanations) {
+ if (!Array.isArray(object.ruleExplanations))
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy.ruleExplanations: array expected");
+ message.ruleExplanations = [];
+ for (var i = 0; i < object.ruleExplanations.length; ++i) {
+ if (typeof object.ruleExplanations[i] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy.ruleExplanations: object expected");
+ message.ruleExplanations[i] = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.fromObject(object.ruleExplanations[i]);
+ }
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an ExplainedDenyPolicy message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy} message ExplainedDenyPolicy
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ ExplainedDenyPolicy.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.arrays || options.defaults)
+ object.ruleExplanations = [];
+ if (options.defaults) {
+ object.denyAccessState = options.enums === String ? "DENY_ACCESS_STATE_UNSPECIFIED" : 0;
+ object.policy = null;
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ }
+ if (message.denyAccessState != null && message.hasOwnProperty("denyAccessState"))
+ object.denyAccessState = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState[message.denyAccessState] === undefined ? message.denyAccessState : $root.google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState[message.denyAccessState] : message.denyAccessState;
+ if (message.policy != null && message.hasOwnProperty("policy"))
+ object.policy = $root.google.iam.v2.Policy.toObject(message.policy, options);
+ if (message.ruleExplanations && message.ruleExplanations.length) {
+ object.ruleExplanations = [];
+ for (var j = 0; j < message.ruleExplanations.length; ++j)
+ object.ruleExplanations[j] = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.toObject(message.ruleExplanations[j], options);
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] : message.relevance;
+ return object;
+ };
+
+ /**
+ * Converts this ExplainedDenyPolicy to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ ExplainedDenyPolicy.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for ExplainedDenyPolicy
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ ExplainedDenyPolicy.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.ExplainedDenyPolicy";
+ };
+
+ return ExplainedDenyPolicy;
+ })();
+
+ v3beta.DenyRuleExplanation = (function() {
+
+ /**
+ * Properties of a DenyRuleExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @interface IDenyRuleExplanation
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState|null} [denyAccessState] DenyRuleExplanation denyAccessState
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching|null} [combinedDeniedPermission] DenyRuleExplanation combinedDeniedPermission
+ * @property {Object.|null} [deniedPermissions] DenyRuleExplanation deniedPermissions
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching|null} [combinedExceptionPermission] DenyRuleExplanation combinedExceptionPermission
+ * @property {Object.|null} [exceptionPermissions] DenyRuleExplanation exceptionPermissions
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching|null} [combinedDeniedPrincipal] DenyRuleExplanation combinedDeniedPrincipal
+ * @property {Object.|null} [deniedPrincipals] DenyRuleExplanation deniedPrincipals
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching|null} [combinedExceptionPrincipal] DenyRuleExplanation combinedExceptionPrincipal
+ * @property {Object.|null} [exceptionPrincipals] DenyRuleExplanation exceptionPrincipals
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null} [relevance] DenyRuleExplanation relevance
+ * @property {google.type.IExpr|null} [condition] DenyRuleExplanation condition
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.IConditionExplanation|null} [conditionExplanation] DenyRuleExplanation conditionExplanation
+ */
+
+ /**
+ * Constructs a new DenyRuleExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @classdesc Represents a DenyRuleExplanation.
+ * @implements IDenyRuleExplanation
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IDenyRuleExplanation=} [properties] Properties to set
+ */
+ function DenyRuleExplanation(properties) {
+ this.deniedPermissions = {};
+ this.exceptionPermissions = {};
+ this.deniedPrincipals = {};
+ this.exceptionPrincipals = {};
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * DenyRuleExplanation denyAccessState.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState} denyAccessState
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.denyAccessState = 0;
+
+ /**
+ * DenyRuleExplanation combinedDeniedPermission.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching|null|undefined} combinedDeniedPermission
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.combinedDeniedPermission = null;
+
+ /**
+ * DenyRuleExplanation deniedPermissions.
+ * @member {Object.} deniedPermissions
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.deniedPermissions = $util.emptyObject;
+
+ /**
+ * DenyRuleExplanation combinedExceptionPermission.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching|null|undefined} combinedExceptionPermission
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.combinedExceptionPermission = null;
+
+ /**
+ * DenyRuleExplanation exceptionPermissions.
+ * @member {Object.} exceptionPermissions
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.exceptionPermissions = $util.emptyObject;
+
+ /**
+ * DenyRuleExplanation combinedDeniedPrincipal.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching|null|undefined} combinedDeniedPrincipal
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.combinedDeniedPrincipal = null;
+
+ /**
+ * DenyRuleExplanation deniedPrincipals.
+ * @member {Object.} deniedPrincipals
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.deniedPrincipals = $util.emptyObject;
+
+ /**
+ * DenyRuleExplanation combinedExceptionPrincipal.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching|null|undefined} combinedExceptionPrincipal
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.combinedExceptionPrincipal = null;
+
+ /**
+ * DenyRuleExplanation exceptionPrincipals.
+ * @member {Object.} exceptionPrincipals
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.exceptionPrincipals = $util.emptyObject;
+
+ /**
+ * DenyRuleExplanation relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.relevance = 0;
+
+ /**
+ * DenyRuleExplanation condition.
+ * @member {google.type.IExpr|null|undefined} condition
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.condition = null;
+
+ /**
+ * DenyRuleExplanation conditionExplanation.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.IConditionExplanation|null|undefined} conditionExplanation
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @instance
+ */
+ DenyRuleExplanation.prototype.conditionExplanation = null;
+
+ /**
+ * Creates a new DenyRuleExplanation instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IDenyRuleExplanation=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation} DenyRuleExplanation instance
+ */
+ DenyRuleExplanation.create = function create(properties) {
+ return new DenyRuleExplanation(properties);
+ };
+
+ /**
+ * Encodes the specified DenyRuleExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IDenyRuleExplanation} message DenyRuleExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ DenyRuleExplanation.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.denyAccessState != null && Object.hasOwnProperty.call(message, "denyAccessState"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.denyAccessState);
+ if (message.combinedDeniedPermission != null && Object.hasOwnProperty.call(message, "combinedDeniedPermission"))
+ $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.encode(message.combinedDeniedPermission, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+ if (message.deniedPermissions != null && Object.hasOwnProperty.call(message, "deniedPermissions"))
+ for (var keys = Object.keys(message.deniedPermissions), i = 0; i < keys.length; ++i) {
+ writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);
+ $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.encode(message.deniedPermissions[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();
+ }
+ if (message.combinedExceptionPermission != null && Object.hasOwnProperty.call(message, "combinedExceptionPermission"))
+ $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.encode(message.combinedExceptionPermission, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+ if (message.exceptionPermissions != null && Object.hasOwnProperty.call(message, "exceptionPermissions"))
+ for (var keys = Object.keys(message.exceptionPermissions), i = 0; i < keys.length; ++i) {
+ writer.uint32(/* id 5, wireType 2 =*/42).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);
+ $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.encode(message.exceptionPermissions[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();
+ }
+ if (message.combinedDeniedPrincipal != null && Object.hasOwnProperty.call(message, "combinedDeniedPrincipal"))
+ $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.encode(message.combinedDeniedPrincipal, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();
+ if (message.deniedPrincipals != null && Object.hasOwnProperty.call(message, "deniedPrincipals"))
+ for (var keys = Object.keys(message.deniedPrincipals), i = 0; i < keys.length; ++i) {
+ writer.uint32(/* id 7, wireType 2 =*/58).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);
+ $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.encode(message.deniedPrincipals[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();
+ }
+ if (message.combinedExceptionPrincipal != null && Object.hasOwnProperty.call(message, "combinedExceptionPrincipal"))
+ $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.encode(message.combinedExceptionPrincipal, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();
+ if (message.exceptionPrincipals != null && Object.hasOwnProperty.call(message, "exceptionPrincipals"))
+ for (var keys = Object.keys(message.exceptionPrincipals), i = 0; i < keys.length; ++i) {
+ writer.uint32(/* id 9, wireType 2 =*/74).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);
+ $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.encode(message.exceptionPrincipals[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();
+ }
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 10, wireType 0 =*/80).int32(message.relevance);
+ if (message.condition != null && Object.hasOwnProperty.call(message, "condition"))
+ $root.google.type.Expr.encode(message.condition, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();
+ if (message.conditionExplanation != null && Object.hasOwnProperty.call(message, "conditionExplanation"))
+ $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.encode(message.conditionExplanation, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified DenyRuleExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IDenyRuleExplanation} message DenyRuleExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ DenyRuleExplanation.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a DenyRuleExplanation message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation} DenyRuleExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ DenyRuleExplanation.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation(), key, value;
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.denyAccessState = reader.int32();
+ break;
+ }
+ case 2: {
+ message.combinedDeniedPermission = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.decode(reader, reader.uint32());
+ break;
+ }
+ case 3: {
+ if (message.deniedPermissions === $util.emptyObject)
+ message.deniedPermissions = {};
+ var end2 = reader.uint32() + reader.pos;
+ key = "";
+ value = null;
+ while (reader.pos < end2) {
+ var tag2 = reader.uint32();
+ switch (tag2 >>> 3) {
+ case 1:
+ key = reader.string();
+ break;
+ case 2:
+ value = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.decode(reader, reader.uint32());
+ break;
+ default:
+ reader.skipType(tag2 & 7);
+ break;
+ }
+ }
+ message.deniedPermissions[key] = value;
+ break;
+ }
+ case 4: {
+ message.combinedExceptionPermission = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.decode(reader, reader.uint32());
+ break;
+ }
+ case 5: {
+ if (message.exceptionPermissions === $util.emptyObject)
+ message.exceptionPermissions = {};
+ var end2 = reader.uint32() + reader.pos;
+ key = "";
+ value = null;
+ while (reader.pos < end2) {
+ var tag2 = reader.uint32();
+ switch (tag2 >>> 3) {
+ case 1:
+ key = reader.string();
+ break;
+ case 2:
+ value = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.decode(reader, reader.uint32());
+ break;
+ default:
+ reader.skipType(tag2 & 7);
+ break;
+ }
+ }
+ message.exceptionPermissions[key] = value;
+ break;
+ }
+ case 6: {
+ message.combinedDeniedPrincipal = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.decode(reader, reader.uint32());
+ break;
+ }
+ case 7: {
+ if (message.deniedPrincipals === $util.emptyObject)
+ message.deniedPrincipals = {};
+ var end2 = reader.uint32() + reader.pos;
+ key = "";
+ value = null;
+ while (reader.pos < end2) {
+ var tag2 = reader.uint32();
+ switch (tag2 >>> 3) {
+ case 1:
+ key = reader.string();
+ break;
+ case 2:
+ value = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.decode(reader, reader.uint32());
+ break;
+ default:
+ reader.skipType(tag2 & 7);
+ break;
+ }
+ }
+ message.deniedPrincipals[key] = value;
+ break;
+ }
+ case 8: {
+ message.combinedExceptionPrincipal = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.decode(reader, reader.uint32());
+ break;
+ }
+ case 9: {
+ if (message.exceptionPrincipals === $util.emptyObject)
+ message.exceptionPrincipals = {};
+ var end2 = reader.uint32() + reader.pos;
+ key = "";
+ value = null;
+ while (reader.pos < end2) {
+ var tag2 = reader.uint32();
+ switch (tag2 >>> 3) {
+ case 1:
+ key = reader.string();
+ break;
+ case 2:
+ value = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.decode(reader, reader.uint32());
+ break;
+ default:
+ reader.skipType(tag2 & 7);
+ break;
+ }
+ }
+ message.exceptionPrincipals[key] = value;
+ break;
+ }
+ case 10: {
+ message.relevance = reader.int32();
+ break;
+ }
+ case 11: {
+ message.condition = $root.google.type.Expr.decode(reader, reader.uint32());
+ break;
+ }
+ case 12: {
+ message.conditionExplanation = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.decode(reader, reader.uint32());
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a DenyRuleExplanation message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation} DenyRuleExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ DenyRuleExplanation.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a DenyRuleExplanation message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ DenyRuleExplanation.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.denyAccessState != null && message.hasOwnProperty("denyAccessState"))
+ switch (message.denyAccessState) {
+ default:
+ return "denyAccessState: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.combinedDeniedPermission != null && message.hasOwnProperty("combinedDeniedPermission")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.verify(message.combinedDeniedPermission);
+ if (error)
+ return "combinedDeniedPermission." + error;
+ }
+ if (message.deniedPermissions != null && message.hasOwnProperty("deniedPermissions")) {
+ if (!$util.isObject(message.deniedPermissions))
+ return "deniedPermissions: object expected";
+ var key = Object.keys(message.deniedPermissions);
+ for (var i = 0; i < key.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.verify(message.deniedPermissions[key[i]]);
+ if (error)
+ return "deniedPermissions." + error;
+ }
+ }
+ if (message.combinedExceptionPermission != null && message.hasOwnProperty("combinedExceptionPermission")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.verify(message.combinedExceptionPermission);
+ if (error)
+ return "combinedExceptionPermission." + error;
+ }
+ if (message.exceptionPermissions != null && message.hasOwnProperty("exceptionPermissions")) {
+ if (!$util.isObject(message.exceptionPermissions))
+ return "exceptionPermissions: object expected";
+ var key = Object.keys(message.exceptionPermissions);
+ for (var i = 0; i < key.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.verify(message.exceptionPermissions[key[i]]);
+ if (error)
+ return "exceptionPermissions." + error;
+ }
+ }
+ if (message.combinedDeniedPrincipal != null && message.hasOwnProperty("combinedDeniedPrincipal")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.verify(message.combinedDeniedPrincipal);
+ if (error)
+ return "combinedDeniedPrincipal." + error;
+ }
+ if (message.deniedPrincipals != null && message.hasOwnProperty("deniedPrincipals")) {
+ if (!$util.isObject(message.deniedPrincipals))
+ return "deniedPrincipals: object expected";
+ var key = Object.keys(message.deniedPrincipals);
+ for (var i = 0; i < key.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.verify(message.deniedPrincipals[key[i]]);
+ if (error)
+ return "deniedPrincipals." + error;
+ }
+ }
+ if (message.combinedExceptionPrincipal != null && message.hasOwnProperty("combinedExceptionPrincipal")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.verify(message.combinedExceptionPrincipal);
+ if (error)
+ return "combinedExceptionPrincipal." + error;
+ }
+ if (message.exceptionPrincipals != null && message.hasOwnProperty("exceptionPrincipals")) {
+ if (!$util.isObject(message.exceptionPrincipals))
+ return "exceptionPrincipals: object expected";
+ var key = Object.keys(message.exceptionPrincipals);
+ for (var i = 0; i < key.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.verify(message.exceptionPrincipals[key[i]]);
+ if (error)
+ return "exceptionPrincipals." + error;
+ }
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ if (message.condition != null && message.hasOwnProperty("condition")) {
+ var error = $root.google.type.Expr.verify(message.condition);
+ if (error)
+ return "condition." + error;
+ }
+ if (message.conditionExplanation != null && message.hasOwnProperty("conditionExplanation")) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.verify(message.conditionExplanation);
+ if (error)
+ return "conditionExplanation." + error;
+ }
+ return null;
+ };
+
+ /**
+ * Creates a DenyRuleExplanation message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation} DenyRuleExplanation
+ */
+ DenyRuleExplanation.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation();
+ switch (object.denyAccessState) {
+ default:
+ if (typeof object.denyAccessState === "number") {
+ message.denyAccessState = object.denyAccessState;
+ break;
+ }
+ break;
+ case "DENY_ACCESS_STATE_UNSPECIFIED":
+ case 0:
+ message.denyAccessState = 0;
+ break;
+ case "DENY_ACCESS_STATE_DENIED":
+ case 1:
+ message.denyAccessState = 1;
+ break;
+ case "DENY_ACCESS_STATE_NOT_DENIED":
+ case 2:
+ message.denyAccessState = 2;
+ break;
+ case "DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL":
+ case 3:
+ message.denyAccessState = 3;
+ break;
+ case "DENY_ACCESS_STATE_UNKNOWN_INFO":
+ case 4:
+ message.denyAccessState = 4;
+ break;
+ }
+ if (object.combinedDeniedPermission != null) {
+ if (typeof object.combinedDeniedPermission !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.combinedDeniedPermission: object expected");
+ message.combinedDeniedPermission = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.fromObject(object.combinedDeniedPermission);
+ }
+ if (object.deniedPermissions) {
+ if (typeof object.deniedPermissions !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.deniedPermissions: object expected");
+ message.deniedPermissions = {};
+ for (var keys = Object.keys(object.deniedPermissions), i = 0; i < keys.length; ++i) {
+ if (typeof object.deniedPermissions[keys[i]] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.deniedPermissions: object expected");
+ message.deniedPermissions[keys[i]] = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.fromObject(object.deniedPermissions[keys[i]]);
+ }
+ }
+ if (object.combinedExceptionPermission != null) {
+ if (typeof object.combinedExceptionPermission !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.combinedExceptionPermission: object expected");
+ message.combinedExceptionPermission = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.fromObject(object.combinedExceptionPermission);
+ }
+ if (object.exceptionPermissions) {
+ if (typeof object.exceptionPermissions !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.exceptionPermissions: object expected");
+ message.exceptionPermissions = {};
+ for (var keys = Object.keys(object.exceptionPermissions), i = 0; i < keys.length; ++i) {
+ if (typeof object.exceptionPermissions[keys[i]] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.exceptionPermissions: object expected");
+ message.exceptionPermissions[keys[i]] = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.fromObject(object.exceptionPermissions[keys[i]]);
+ }
+ }
+ if (object.combinedDeniedPrincipal != null) {
+ if (typeof object.combinedDeniedPrincipal !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.combinedDeniedPrincipal: object expected");
+ message.combinedDeniedPrincipal = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.fromObject(object.combinedDeniedPrincipal);
+ }
+ if (object.deniedPrincipals) {
+ if (typeof object.deniedPrincipals !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.deniedPrincipals: object expected");
+ message.deniedPrincipals = {};
+ for (var keys = Object.keys(object.deniedPrincipals), i = 0; i < keys.length; ++i) {
+ if (typeof object.deniedPrincipals[keys[i]] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.deniedPrincipals: object expected");
+ message.deniedPrincipals[keys[i]] = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.fromObject(object.deniedPrincipals[keys[i]]);
+ }
+ }
+ if (object.combinedExceptionPrincipal != null) {
+ if (typeof object.combinedExceptionPrincipal !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.combinedExceptionPrincipal: object expected");
+ message.combinedExceptionPrincipal = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.fromObject(object.combinedExceptionPrincipal);
+ }
+ if (object.exceptionPrincipals) {
+ if (typeof object.exceptionPrincipals !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.exceptionPrincipals: object expected");
+ message.exceptionPrincipals = {};
+ for (var keys = Object.keys(object.exceptionPrincipals), i = 0; i < keys.length; ++i) {
+ if (typeof object.exceptionPrincipals[keys[i]] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.exceptionPrincipals: object expected");
+ message.exceptionPrincipals[keys[i]] = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.fromObject(object.exceptionPrincipals[keys[i]]);
+ }
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ if (object.condition != null) {
+ if (typeof object.condition !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.condition: object expected");
+ message.condition = $root.google.type.Expr.fromObject(object.condition);
+ }
+ if (object.conditionExplanation != null) {
+ if (typeof object.conditionExplanation !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.conditionExplanation: object expected");
+ message.conditionExplanation = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.fromObject(object.conditionExplanation);
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a DenyRuleExplanation message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation} message DenyRuleExplanation
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ DenyRuleExplanation.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.objects || options.defaults) {
+ object.deniedPermissions = {};
+ object.exceptionPermissions = {};
+ object.deniedPrincipals = {};
+ object.exceptionPrincipals = {};
+ }
+ if (options.defaults) {
+ object.denyAccessState = options.enums === String ? "DENY_ACCESS_STATE_UNSPECIFIED" : 0;
+ object.combinedDeniedPermission = null;
+ object.combinedExceptionPermission = null;
+ object.combinedDeniedPrincipal = null;
+ object.combinedExceptionPrincipal = null;
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ object.condition = null;
+ object.conditionExplanation = null;
+ }
+ if (message.denyAccessState != null && message.hasOwnProperty("denyAccessState"))
+ object.denyAccessState = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState[message.denyAccessState] === undefined ? message.denyAccessState : $root.google.cloud.policytroubleshooter.iam.v3beta.DenyAccessState[message.denyAccessState] : message.denyAccessState;
+ if (message.combinedDeniedPermission != null && message.hasOwnProperty("combinedDeniedPermission"))
+ object.combinedDeniedPermission = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.toObject(message.combinedDeniedPermission, options);
+ var keys2;
+ if (message.deniedPermissions && (keys2 = Object.keys(message.deniedPermissions)).length) {
+ object.deniedPermissions = {};
+ for (var j = 0; j < keys2.length; ++j)
+ object.deniedPermissions[keys2[j]] = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.toObject(message.deniedPermissions[keys2[j]], options);
+ }
+ if (message.combinedExceptionPermission != null && message.hasOwnProperty("combinedExceptionPermission"))
+ object.combinedExceptionPermission = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.toObject(message.combinedExceptionPermission, options);
+ if (message.exceptionPermissions && (keys2 = Object.keys(message.exceptionPermissions)).length) {
+ object.exceptionPermissions = {};
+ for (var j = 0; j < keys2.length; ++j)
+ object.exceptionPermissions[keys2[j]] = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.toObject(message.exceptionPermissions[keys2[j]], options);
+ }
+ if (message.combinedDeniedPrincipal != null && message.hasOwnProperty("combinedDeniedPrincipal"))
+ object.combinedDeniedPrincipal = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.toObject(message.combinedDeniedPrincipal, options);
+ if (message.deniedPrincipals && (keys2 = Object.keys(message.deniedPrincipals)).length) {
+ object.deniedPrincipals = {};
+ for (var j = 0; j < keys2.length; ++j)
+ object.deniedPrincipals[keys2[j]] = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.toObject(message.deniedPrincipals[keys2[j]], options);
+ }
+ if (message.combinedExceptionPrincipal != null && message.hasOwnProperty("combinedExceptionPrincipal"))
+ object.combinedExceptionPrincipal = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.toObject(message.combinedExceptionPrincipal, options);
+ if (message.exceptionPrincipals && (keys2 = Object.keys(message.exceptionPrincipals)).length) {
+ object.exceptionPrincipals = {};
+ for (var j = 0; j < keys2.length; ++j)
+ object.exceptionPrincipals[keys2[j]] = $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.toObject(message.exceptionPrincipals[keys2[j]], options);
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] : message.relevance;
+ if (message.condition != null && message.hasOwnProperty("condition"))
+ object.condition = $root.google.type.Expr.toObject(message.condition, options);
+ if (message.conditionExplanation != null && message.hasOwnProperty("conditionExplanation"))
+ object.conditionExplanation = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.toObject(message.conditionExplanation, options);
+ return object;
+ };
+
+ /**
+ * Converts this DenyRuleExplanation to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ DenyRuleExplanation.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for DenyRuleExplanation
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ DenyRuleExplanation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation";
+ };
+
+ DenyRuleExplanation.AnnotatedPermissionMatching = (function() {
+
+ /**
+ * Properties of an AnnotatedPermissionMatching.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @interface IAnnotatedPermissionMatching
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.PermissionPatternMatchingState|null} [permissionMatchingState] AnnotatedPermissionMatching permissionMatchingState
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null} [relevance] AnnotatedPermissionMatching relevance
+ */
+
+ /**
+ * Constructs a new AnnotatedPermissionMatching.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @classdesc Represents an AnnotatedPermissionMatching.
+ * @implements IAnnotatedPermissionMatching
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching=} [properties] Properties to set
+ */
+ function AnnotatedPermissionMatching(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * AnnotatedPermissionMatching permissionMatchingState.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.PermissionPatternMatchingState} permissionMatchingState
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @instance
+ */
+ AnnotatedPermissionMatching.prototype.permissionMatchingState = 0;
+
+ /**
+ * AnnotatedPermissionMatching relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @instance
+ */
+ AnnotatedPermissionMatching.prototype.relevance = 0;
+
+ /**
+ * Creates a new AnnotatedPermissionMatching instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching} AnnotatedPermissionMatching instance
+ */
+ AnnotatedPermissionMatching.create = function create(properties) {
+ return new AnnotatedPermissionMatching(properties);
+ };
+
+ /**
+ * Encodes the specified AnnotatedPermissionMatching message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching} message AnnotatedPermissionMatching message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AnnotatedPermissionMatching.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.permissionMatchingState != null && Object.hasOwnProperty.call(message, "permissionMatchingState"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.permissionMatchingState);
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 2, wireType 0 =*/16).int32(message.relevance);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified AnnotatedPermissionMatching message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedPermissionMatching} message AnnotatedPermissionMatching message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AnnotatedPermissionMatching.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an AnnotatedPermissionMatching message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching} AnnotatedPermissionMatching
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AnnotatedPermissionMatching.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.permissionMatchingState = reader.int32();
+ break;
+ }
+ case 2: {
+ message.relevance = reader.int32();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an AnnotatedPermissionMatching message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching} AnnotatedPermissionMatching
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AnnotatedPermissionMatching.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an AnnotatedPermissionMatching message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ AnnotatedPermissionMatching.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.permissionMatchingState != null && message.hasOwnProperty("permissionMatchingState"))
+ switch (message.permissionMatchingState) {
+ default:
+ return "permissionMatchingState: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ return null;
+ };
+
+ /**
+ * Creates an AnnotatedPermissionMatching message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching} AnnotatedPermissionMatching
+ */
+ AnnotatedPermissionMatching.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching();
+ switch (object.permissionMatchingState) {
+ default:
+ if (typeof object.permissionMatchingState === "number") {
+ message.permissionMatchingState = object.permissionMatchingState;
+ break;
+ }
+ break;
+ case "PERMISSION_PATTERN_MATCHING_STATE_UNSPECIFIED":
+ case 0:
+ message.permissionMatchingState = 0;
+ break;
+ case "PERMISSION_PATTERN_MATCHED":
+ case 1:
+ message.permissionMatchingState = 1;
+ break;
+ case "PERMISSION_PATTERN_NOT_MATCHED":
+ case 2:
+ message.permissionMatchingState = 2;
+ break;
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an AnnotatedPermissionMatching message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching} message AnnotatedPermissionMatching
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ AnnotatedPermissionMatching.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults) {
+ object.permissionMatchingState = options.enums === String ? "PERMISSION_PATTERN_MATCHING_STATE_UNSPECIFIED" : 0;
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ }
+ if (message.permissionMatchingState != null && message.hasOwnProperty("permissionMatchingState"))
+ object.permissionMatchingState = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.PermissionPatternMatchingState[message.permissionMatchingState] === undefined ? message.permissionMatchingState : $root.google.cloud.policytroubleshooter.iam.v3beta.PermissionPatternMatchingState[message.permissionMatchingState] : message.permissionMatchingState;
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] : message.relevance;
+ return object;
+ };
+
+ /**
+ * Converts this AnnotatedPermissionMatching to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ AnnotatedPermissionMatching.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for AnnotatedPermissionMatching
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ AnnotatedPermissionMatching.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedPermissionMatching";
+ };
+
+ return AnnotatedPermissionMatching;
+ })();
+
+ DenyRuleExplanation.AnnotatedDenyPrincipalMatching = (function() {
+
+ /**
+ * Properties of an AnnotatedDenyPrincipalMatching.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @interface IAnnotatedDenyPrincipalMatching
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.MembershipMatchingState|null} [membership] AnnotatedDenyPrincipalMatching membership
+ * @property {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance|null} [relevance] AnnotatedDenyPrincipalMatching relevance
+ */
+
+ /**
+ * Constructs a new AnnotatedDenyPrincipalMatching.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation
+ * @classdesc Represents an AnnotatedDenyPrincipalMatching.
+ * @implements IAnnotatedDenyPrincipalMatching
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching=} [properties] Properties to set
+ */
+ function AnnotatedDenyPrincipalMatching(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * AnnotatedDenyPrincipalMatching membership.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.MembershipMatchingState} membership
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @instance
+ */
+ AnnotatedDenyPrincipalMatching.prototype.membership = 0;
+
+ /**
+ * AnnotatedDenyPrincipalMatching relevance.
+ * @member {google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance} relevance
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @instance
+ */
+ AnnotatedDenyPrincipalMatching.prototype.relevance = 0;
+
+ /**
+ * Creates a new AnnotatedDenyPrincipalMatching instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching} AnnotatedDenyPrincipalMatching instance
+ */
+ AnnotatedDenyPrincipalMatching.create = function create(properties) {
+ return new AnnotatedDenyPrincipalMatching(properties);
+ };
+
+ /**
+ * Encodes the specified AnnotatedDenyPrincipalMatching message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching} message AnnotatedDenyPrincipalMatching message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AnnotatedDenyPrincipalMatching.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.membership != null && Object.hasOwnProperty.call(message, "membership"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.membership);
+ if (message.relevance != null && Object.hasOwnProperty.call(message, "relevance"))
+ writer.uint32(/* id 2, wireType 0 =*/16).int32(message.relevance);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified AnnotatedDenyPrincipalMatching message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.IAnnotatedDenyPrincipalMatching} message AnnotatedDenyPrincipalMatching message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ AnnotatedDenyPrincipalMatching.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an AnnotatedDenyPrincipalMatching message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching} AnnotatedDenyPrincipalMatching
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AnnotatedDenyPrincipalMatching.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.membership = reader.int32();
+ break;
+ }
+ case 2: {
+ message.relevance = reader.int32();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an AnnotatedDenyPrincipalMatching message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching} AnnotatedDenyPrincipalMatching
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ AnnotatedDenyPrincipalMatching.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an AnnotatedDenyPrincipalMatching message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ AnnotatedDenyPrincipalMatching.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.membership != null && message.hasOwnProperty("membership"))
+ switch (message.membership) {
+ default:
+ return "membership: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break;
+ }
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ switch (message.relevance) {
+ default:
+ return "relevance: enum value expected";
+ case 0:
+ case 1:
+ case 2:
+ break;
+ }
+ return null;
+ };
+
+ /**
+ * Creates an AnnotatedDenyPrincipalMatching message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching} AnnotatedDenyPrincipalMatching
+ */
+ AnnotatedDenyPrincipalMatching.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching();
+ switch (object.membership) {
+ default:
+ if (typeof object.membership === "number") {
+ message.membership = object.membership;
+ break;
+ }
+ break;
+ case "MEMBERSHIP_MATCHING_STATE_UNSPECIFIED":
+ case 0:
+ message.membership = 0;
+ break;
+ case "MEMBERSHIP_MATCHED":
+ case 1:
+ message.membership = 1;
+ break;
+ case "MEMBERSHIP_NOT_MATCHED":
+ case 2:
+ message.membership = 2;
+ break;
+ case "MEMBERSHIP_UNKNOWN_INFO":
+ case 3:
+ message.membership = 3;
+ break;
+ case "MEMBERSHIP_UNKNOWN_UNSUPPORTED":
+ case 4:
+ message.membership = 4;
+ break;
+ }
+ switch (object.relevance) {
+ default:
+ if (typeof object.relevance === "number") {
+ message.relevance = object.relevance;
+ break;
+ }
+ break;
+ case "HEURISTIC_RELEVANCE_UNSPECIFIED":
+ case 0:
+ message.relevance = 0;
+ break;
+ case "HEURISTIC_RELEVANCE_NORMAL":
+ case 1:
+ message.relevance = 1;
+ break;
+ case "HEURISTIC_RELEVANCE_HIGH":
+ case 2:
+ message.relevance = 2;
+ break;
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an AnnotatedDenyPrincipalMatching message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching} message AnnotatedDenyPrincipalMatching
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ AnnotatedDenyPrincipalMatching.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.defaults) {
+ object.membership = options.enums === String ? "MEMBERSHIP_MATCHING_STATE_UNSPECIFIED" : 0;
+ object.relevance = options.enums === String ? "HEURISTIC_RELEVANCE_UNSPECIFIED" : 0;
+ }
+ if (message.membership != null && message.hasOwnProperty("membership"))
+ object.membership = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.MembershipMatchingState[message.membership] === undefined ? message.membership : $root.google.cloud.policytroubleshooter.iam.v3beta.MembershipMatchingState[message.membership] : message.membership;
+ if (message.relevance != null && message.hasOwnProperty("relevance"))
+ object.relevance = options.enums === String ? $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] === undefined ? message.relevance : $root.google.cloud.policytroubleshooter.iam.v3beta.HeuristicRelevance[message.relevance] : message.relevance;
+ return object;
+ };
+
+ /**
+ * Converts this AnnotatedDenyPrincipalMatching to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ AnnotatedDenyPrincipalMatching.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for AnnotatedDenyPrincipalMatching
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ AnnotatedDenyPrincipalMatching.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.DenyRuleExplanation.AnnotatedDenyPrincipalMatching";
+ };
+
+ return AnnotatedDenyPrincipalMatching;
+ })();
+
+ return DenyRuleExplanation;
+ })();
+
+ v3beta.ConditionExplanation = (function() {
+
+ /**
+ * Properties of a ConditionExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @interface IConditionExplanation
+ * @property {google.protobuf.IValue|null} [value] ConditionExplanation value
+ * @property {Array.|null} [errors] ConditionExplanation errors
+ * @property {Array.|null} [evaluationStates] ConditionExplanation evaluationStates
+ */
+
+ /**
+ * Constructs a new ConditionExplanation.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta
+ * @classdesc Represents a ConditionExplanation.
+ * @implements IConditionExplanation
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IConditionExplanation=} [properties] Properties to set
+ */
+ function ConditionExplanation(properties) {
+ this.errors = [];
+ this.evaluationStates = [];
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * ConditionExplanation value.
+ * @member {google.protobuf.IValue|null|undefined} value
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation
+ * @instance
+ */
+ ConditionExplanation.prototype.value = null;
+
+ /**
+ * ConditionExplanation errors.
+ * @member {Array.} errors
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation
+ * @instance
+ */
+ ConditionExplanation.prototype.errors = $util.emptyArray;
+
+ /**
+ * ConditionExplanation evaluationStates.
+ * @member {Array.} evaluationStates
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation
+ * @instance
+ */
+ ConditionExplanation.prototype.evaluationStates = $util.emptyArray;
+
+ /**
+ * Creates a new ConditionExplanation instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IConditionExplanation=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation} ConditionExplanation instance
+ */
+ ConditionExplanation.create = function create(properties) {
+ return new ConditionExplanation(properties);
+ };
+
+ /**
+ * Encodes the specified ConditionExplanation message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IConditionExplanation} message ConditionExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ConditionExplanation.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.value != null && Object.hasOwnProperty.call(message, "value"))
+ $root.google.protobuf.Value.encode(message.value, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+ if (message.evaluationStates != null && message.evaluationStates.length)
+ for (var i = 0; i < message.evaluationStates.length; ++i)
+ $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState.encode(message.evaluationStates[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+ if (message.errors != null && message.errors.length)
+ for (var i = 0; i < message.errors.length; ++i)
+ $root.google.rpc.Status.encode(message.errors[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified ConditionExplanation message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.IConditionExplanation} message ConditionExplanation message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ ConditionExplanation.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a ConditionExplanation message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation} ConditionExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ConditionExplanation.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.value = $root.google.protobuf.Value.decode(reader, reader.uint32());
+ break;
+ }
+ case 3: {
+ if (!(message.errors && message.errors.length))
+ message.errors = [];
+ message.errors.push($root.google.rpc.Status.decode(reader, reader.uint32()));
+ break;
+ }
+ case 2: {
+ if (!(message.evaluationStates && message.evaluationStates.length))
+ message.evaluationStates = [];
+ message.evaluationStates.push($root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState.decode(reader, reader.uint32()));
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a ConditionExplanation message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation} ConditionExplanation
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ ConditionExplanation.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a ConditionExplanation message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ ConditionExplanation.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.value != null && message.hasOwnProperty("value")) {
+ var error = $root.google.protobuf.Value.verify(message.value);
+ if (error)
+ return "value." + error;
+ }
+ if (message.errors != null && message.hasOwnProperty("errors")) {
+ if (!Array.isArray(message.errors))
+ return "errors: array expected";
+ for (var i = 0; i < message.errors.length; ++i) {
+ var error = $root.google.rpc.Status.verify(message.errors[i]);
+ if (error)
+ return "errors." + error;
+ }
+ }
+ if (message.evaluationStates != null && message.hasOwnProperty("evaluationStates")) {
+ if (!Array.isArray(message.evaluationStates))
+ return "evaluationStates: array expected";
+ for (var i = 0; i < message.evaluationStates.length; ++i) {
+ var error = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState.verify(message.evaluationStates[i]);
+ if (error)
+ return "evaluationStates." + error;
+ }
+ }
+ return null;
+ };
+
+ /**
+ * Creates a ConditionExplanation message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation} ConditionExplanation
+ */
+ ConditionExplanation.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation();
+ if (object.value != null) {
+ if (typeof object.value !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.value: object expected");
+ message.value = $root.google.protobuf.Value.fromObject(object.value);
+ }
+ if (object.errors) {
+ if (!Array.isArray(object.errors))
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.errors: array expected");
+ message.errors = [];
+ for (var i = 0; i < object.errors.length; ++i) {
+ if (typeof object.errors[i] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.errors: object expected");
+ message.errors[i] = $root.google.rpc.Status.fromObject(object.errors[i]);
+ }
+ }
+ if (object.evaluationStates) {
+ if (!Array.isArray(object.evaluationStates))
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.evaluationStates: array expected");
+ message.evaluationStates = [];
+ for (var i = 0; i < object.evaluationStates.length; ++i) {
+ if (typeof object.evaluationStates[i] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.evaluationStates: object expected");
+ message.evaluationStates[i] = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState.fromObject(object.evaluationStates[i]);
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a ConditionExplanation message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation} message ConditionExplanation
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ ConditionExplanation.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.arrays || options.defaults) {
+ object.evaluationStates = [];
+ object.errors = [];
+ }
+ if (options.defaults)
+ object.value = null;
+ if (message.value != null && message.hasOwnProperty("value"))
+ object.value = $root.google.protobuf.Value.toObject(message.value, options);
+ if (message.evaluationStates && message.evaluationStates.length) {
+ object.evaluationStates = [];
+ for (var j = 0; j < message.evaluationStates.length; ++j)
+ object.evaluationStates[j] = $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState.toObject(message.evaluationStates[j], options);
+ }
+ if (message.errors && message.errors.length) {
+ object.errors = [];
+ for (var j = 0; j < message.errors.length; ++j)
+ object.errors[j] = $root.google.rpc.Status.toObject(message.errors[j], options);
+ }
+ return object;
+ };
+
+ /**
+ * Converts this ConditionExplanation to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ ConditionExplanation.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for ConditionExplanation
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ ConditionExplanation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation";
+ };
+
+ ConditionExplanation.EvaluationState = (function() {
+
+ /**
+ * Properties of an EvaluationState.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation
+ * @interface IEvaluationState
+ * @property {number|null} [start] EvaluationState start
+ * @property {number|null} [end] EvaluationState end
+ * @property {google.protobuf.IValue|null} [value] EvaluationState value
+ * @property {Array.|null} [errors] EvaluationState errors
+ */
+
+ /**
+ * Constructs a new EvaluationState.
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation
+ * @classdesc Represents an EvaluationState.
+ * @implements IEvaluationState
+ * @constructor
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.IEvaluationState=} [properties] Properties to set
+ */
+ function EvaluationState(properties) {
+ this.errors = [];
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * EvaluationState start.
+ * @member {number} start
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState
+ * @instance
+ */
+ EvaluationState.prototype.start = 0;
+
+ /**
+ * EvaluationState end.
+ * @member {number} end
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState
+ * @instance
+ */
+ EvaluationState.prototype.end = 0;
+
+ /**
+ * EvaluationState value.
+ * @member {google.protobuf.IValue|null|undefined} value
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState
+ * @instance
+ */
+ EvaluationState.prototype.value = null;
+
+ /**
+ * EvaluationState errors.
+ * @member {Array.} errors
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState
+ * @instance
+ */
+ EvaluationState.prototype.errors = $util.emptyArray;
+
+ /**
+ * Creates a new EvaluationState instance using the specified properties.
+ * @function create
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.IEvaluationState=} [properties] Properties to set
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState} EvaluationState instance
+ */
+ EvaluationState.create = function create(properties) {
+ return new EvaluationState(properties);
+ };
+
+ /**
+ * Encodes the specified EvaluationState message. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState.verify|verify} messages.
+ * @function encode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.IEvaluationState} message EvaluationState message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ EvaluationState.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.start != null && Object.hasOwnProperty.call(message, "start"))
+ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start);
+ if (message.end != null && Object.hasOwnProperty.call(message, "end"))
+ writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end);
+ if (message.value != null && Object.hasOwnProperty.call(message, "value"))
+ $root.google.protobuf.Value.encode(message.value, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+ if (message.errors != null && message.errors.length)
+ for (var i = 0; i < message.errors.length; ++i)
+ $root.google.rpc.Status.encode(message.errors[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified EvaluationState message, length delimited. Does not implicitly {@link google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.IEvaluationState} message EvaluationState message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ EvaluationState.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes an EvaluationState message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState} EvaluationState
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ EvaluationState.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.start = reader.int32();
+ break;
+ }
+ case 2: {
+ message.end = reader.int32();
+ break;
+ }
+ case 3: {
+ message.value = $root.google.protobuf.Value.decode(reader, reader.uint32());
+ break;
+ }
+ case 4: {
+ if (!(message.errors && message.errors.length))
+ message.errors = [];
+ message.errors.push($root.google.rpc.Status.decode(reader, reader.uint32()));
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes an EvaluationState message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState} EvaluationState
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ EvaluationState.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies an EvaluationState message.
+ * @function verify
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ EvaluationState.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.start != null && message.hasOwnProperty("start"))
+ if (!$util.isInteger(message.start))
+ return "start: integer expected";
+ if (message.end != null && message.hasOwnProperty("end"))
+ if (!$util.isInteger(message.end))
+ return "end: integer expected";
+ if (message.value != null && message.hasOwnProperty("value")) {
+ var error = $root.google.protobuf.Value.verify(message.value);
+ if (error)
+ return "value." + error;
+ }
+ if (message.errors != null && message.hasOwnProperty("errors")) {
+ if (!Array.isArray(message.errors))
+ return "errors: array expected";
+ for (var i = 0; i < message.errors.length; ++i) {
+ var error = $root.google.rpc.Status.verify(message.errors[i]);
+ if (error)
+ return "errors." + error;
+ }
+ }
+ return null;
+ };
+
+ /**
+ * Creates an EvaluationState message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState} EvaluationState
+ */
+ EvaluationState.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState)
+ return object;
+ var message = new $root.google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState();
+ if (object.start != null)
+ message.start = object.start | 0;
+ if (object.end != null)
+ message.end = object.end | 0;
+ if (object.value != null) {
+ if (typeof object.value !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState.value: object expected");
+ message.value = $root.google.protobuf.Value.fromObject(object.value);
+ }
+ if (object.errors) {
+ if (!Array.isArray(object.errors))
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState.errors: array expected");
+ message.errors = [];
+ for (var i = 0; i < object.errors.length; ++i) {
+ if (typeof object.errors[i] !== "object")
+ throw TypeError(".google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState.errors: object expected");
+ message.errors[i] = $root.google.rpc.Status.fromObject(object.errors[i]);
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from an EvaluationState message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState
+ * @static
+ * @param {google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState} message EvaluationState
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ EvaluationState.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.arrays || options.defaults)
+ object.errors = [];
+ if (options.defaults) {
+ object.start = 0;
+ object.end = 0;
+ object.value = null;
+ }
+ if (message.start != null && message.hasOwnProperty("start"))
+ object.start = message.start;
+ if (message.end != null && message.hasOwnProperty("end"))
+ object.end = message.end;
+ if (message.value != null && message.hasOwnProperty("value"))
+ object.value = $root.google.protobuf.Value.toObject(message.value, options);
+ if (message.errors && message.errors.length) {
+ object.errors = [];
+ for (var j = 0; j < message.errors.length; ++j)
+ object.errors[j] = $root.google.rpc.Status.toObject(message.errors[j], options);
+ }
+ return object;
+ };
+
+ /**
+ * Converts this EvaluationState to JSON.
+ * @function toJSON
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ EvaluationState.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for EvaluationState
+ * @function getTypeUrl
+ * @memberof google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ EvaluationState.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.cloud.policytroubleshooter.iam.v3beta.ConditionExplanation.EvaluationState";
+ };
+
+ return EvaluationState;
+ })();
+
+ return ConditionExplanation;
+ })();
+
+ return v3beta;
+ })();
+
+ return iam;
+ })();
+
+ return policytroubleshooter;
+ })();
+
+ return cloud;
+ })();
+
+ google.api = (function() {
+
+ /**
+ * Namespace api.
+ * @memberof google
+ * @namespace
+ */
+ var api = {};
+
+ api.Http = (function() {
+
+ /**
+ * Properties of a Http.
+ * @memberof google.api
+ * @interface IHttp
+ * @property {Array.|null} [rules] Http rules
+ * @property {boolean|null} [fullyDecodeReservedExpansion] Http fullyDecodeReservedExpansion
+ */
+
+ /**
+ * Constructs a new Http.
+ * @memberof google.api
+ * @classdesc Represents a Http.
+ * @implements IHttp
+ * @constructor
+ * @param {google.api.IHttp=} [properties] Properties to set
+ */
+ function Http(properties) {
+ this.rules = [];
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * Http rules.
+ * @member {Array.} rules
+ * @memberof google.api.Http
+ * @instance
+ */
+ Http.prototype.rules = $util.emptyArray;
+
+ /**
+ * Http fullyDecodeReservedExpansion.
+ * @member {boolean} fullyDecodeReservedExpansion
+ * @memberof google.api.Http
+ * @instance
+ */
+ Http.prototype.fullyDecodeReservedExpansion = false;
+
+ /**
+ * Creates a new Http instance using the specified properties.
+ * @function create
+ * @memberof google.api.Http
+ * @static
+ * @param {google.api.IHttp=} [properties] Properties to set
+ * @returns {google.api.Http} Http instance
+ */
+ Http.create = function create(properties) {
+ return new Http(properties);
+ };
+
+ /**
+ * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages.
+ * @function encode
+ * @memberof google.api.Http
+ * @static
+ * @param {google.api.IHttp} message Http message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ Http.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.rules != null && message.rules.length)
+ for (var i = 0; i < message.rules.length; ++i)
+ $root.google.api.HttpRule.encode(message.rules[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+ if (message.fullyDecodeReservedExpansion != null && Object.hasOwnProperty.call(message, "fullyDecodeReservedExpansion"))
+ writer.uint32(/* id 2, wireType 0 =*/16).bool(message.fullyDecodeReservedExpansion);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.api.Http
+ * @static
+ * @param {google.api.IHttp} message Http message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ Http.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a Http message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.api.Http
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.api.Http} Http
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ Http.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Http();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ if (!(message.rules && message.rules.length))
+ message.rules = [];
+ message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32()));
+ break;
+ }
+ case 2: {
+ message.fullyDecodeReservedExpansion = reader.bool();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a Http message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.api.Http
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.api.Http} Http
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ Http.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a Http message.
+ * @function verify
+ * @memberof google.api.Http
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ Http.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.rules != null && message.hasOwnProperty("rules")) {
+ if (!Array.isArray(message.rules))
+ return "rules: array expected";
+ for (var i = 0; i < message.rules.length; ++i) {
+ var error = $root.google.api.HttpRule.verify(message.rules[i]);
+ if (error)
+ return "rules." + error;
+ }
+ }
+ if (message.fullyDecodeReservedExpansion != null && message.hasOwnProperty("fullyDecodeReservedExpansion"))
+ if (typeof message.fullyDecodeReservedExpansion !== "boolean")
+ return "fullyDecodeReservedExpansion: boolean expected";
+ return null;
+ };
+
+ /**
+ * Creates a Http message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.api.Http
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.api.Http} Http
+ */
+ Http.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.api.Http)
+ return object;
+ var message = new $root.google.api.Http();
+ if (object.rules) {
+ if (!Array.isArray(object.rules))
+ throw TypeError(".google.api.Http.rules: array expected");
+ message.rules = [];
+ for (var i = 0; i < object.rules.length; ++i) {
+ if (typeof object.rules[i] !== "object")
+ throw TypeError(".google.api.Http.rules: object expected");
+ message.rules[i] = $root.google.api.HttpRule.fromObject(object.rules[i]);
+ }
+ }
+ if (object.fullyDecodeReservedExpansion != null)
+ message.fullyDecodeReservedExpansion = Boolean(object.fullyDecodeReservedExpansion);
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a Http message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.api.Http
+ * @static
+ * @param {google.api.Http} message Http
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ Http.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.arrays || options.defaults)
+ object.rules = [];
+ if (options.defaults)
+ object.fullyDecodeReservedExpansion = false;
+ if (message.rules && message.rules.length) {
+ object.rules = [];
+ for (var j = 0; j < message.rules.length; ++j)
+ object.rules[j] = $root.google.api.HttpRule.toObject(message.rules[j], options);
+ }
+ if (message.fullyDecodeReservedExpansion != null && message.hasOwnProperty("fullyDecodeReservedExpansion"))
+ object.fullyDecodeReservedExpansion = message.fullyDecodeReservedExpansion;
+ return object;
+ };
+
+ /**
+ * Converts this Http to JSON.
+ * @function toJSON
+ * @memberof google.api.Http
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ Http.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for Http
+ * @function getTypeUrl
+ * @memberof google.api.Http
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ Http.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.api.Http";
+ };
+
+ return Http;
+ })();
+
+ api.HttpRule = (function() {
+
+ /**
+ * Properties of a HttpRule.
+ * @memberof google.api
+ * @interface IHttpRule
+ * @property {string|null} [selector] HttpRule selector
+ * @property {string|null} [get] HttpRule get
+ * @property {string|null} [put] HttpRule put
+ * @property {string|null} [post] HttpRule post
+ * @property {string|null} ["delete"] HttpRule delete
+ * @property {string|null} [patch] HttpRule patch
+ * @property {google.api.ICustomHttpPattern|null} [custom] HttpRule custom
+ * @property {string|null} [body] HttpRule body
+ * @property {string|null} [responseBody] HttpRule responseBody
+ * @property {Array.|null} [additionalBindings] HttpRule additionalBindings
+ */
+
+ /**
+ * Constructs a new HttpRule.
+ * @memberof google.api
+ * @classdesc Represents a HttpRule.
+ * @implements IHttpRule
+ * @constructor
+ * @param {google.api.IHttpRule=} [properties] Properties to set
+ */
+ function HttpRule(properties) {
+ this.additionalBindings = [];
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * HttpRule selector.
+ * @member {string} selector
+ * @memberof google.api.HttpRule
+ * @instance
+ */
+ HttpRule.prototype.selector = "";
+
+ /**
+ * HttpRule get.
+ * @member {string|null|undefined} get
+ * @memberof google.api.HttpRule
+ * @instance
+ */
+ HttpRule.prototype.get = null;
+
+ /**
+ * HttpRule put.
+ * @member {string|null|undefined} put
+ * @memberof google.api.HttpRule
+ * @instance
+ */
+ HttpRule.prototype.put = null;
+
+ /**
+ * HttpRule post.
+ * @member {string|null|undefined} post
+ * @memberof google.api.HttpRule
+ * @instance
+ */
+ HttpRule.prototype.post = null;
+
+ /**
+ * HttpRule delete.
+ * @member {string|null|undefined} delete
+ * @memberof google.api.HttpRule
+ * @instance
+ */
+ HttpRule.prototype["delete"] = null;
+
+ /**
+ * HttpRule patch.
+ * @member {string|null|undefined} patch
+ * @memberof google.api.HttpRule
+ * @instance
+ */
+ HttpRule.prototype.patch = null;
+
+ /**
+ * HttpRule custom.
+ * @member {google.api.ICustomHttpPattern|null|undefined} custom
+ * @memberof google.api.HttpRule
+ * @instance
+ */
+ HttpRule.prototype.custom = null;
+
+ /**
+ * HttpRule body.
+ * @member {string} body
+ * @memberof google.api.HttpRule
+ * @instance
+ */
+ HttpRule.prototype.body = "";
+
+ /**
+ * HttpRule responseBody.
+ * @member {string} responseBody
+ * @memberof google.api.HttpRule
+ * @instance
+ */
+ HttpRule.prototype.responseBody = "";
+
+ /**
+ * HttpRule additionalBindings.
+ * @member {Array.} additionalBindings
+ * @memberof google.api.HttpRule
+ * @instance
+ */
+ HttpRule.prototype.additionalBindings = $util.emptyArray;
+
+ // OneOf field names bound to virtual getters and setters
+ var $oneOfFields;
+
+ /**
+ * HttpRule pattern.
+ * @member {"get"|"put"|"post"|"delete"|"patch"|"custom"|undefined} pattern
+ * @memberof google.api.HttpRule
+ * @instance
+ */
+ Object.defineProperty(HttpRule.prototype, "pattern", {
+ get: $util.oneOfGetter($oneOfFields = ["get", "put", "post", "delete", "patch", "custom"]),
+ set: $util.oneOfSetter($oneOfFields)
+ });
+
+ /**
+ * Creates a new HttpRule instance using the specified properties.
+ * @function create
+ * @memberof google.api.HttpRule
+ * @static
+ * @param {google.api.IHttpRule=} [properties] Properties to set
+ * @returns {google.api.HttpRule} HttpRule instance
+ */
+ HttpRule.create = function create(properties) {
+ return new HttpRule(properties);
+ };
+
+ /**
+ * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages.
+ * @function encode
+ * @memberof google.api.HttpRule
+ * @static
+ * @param {google.api.IHttpRule} message HttpRule message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ HttpRule.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.selector != null && Object.hasOwnProperty.call(message, "selector"))
+ writer.uint32(/* id 1, wireType 2 =*/10).string(message.selector);
+ if (message.get != null && Object.hasOwnProperty.call(message, "get"))
+ writer.uint32(/* id 2, wireType 2 =*/18).string(message.get);
+ if (message.put != null && Object.hasOwnProperty.call(message, "put"))
+ writer.uint32(/* id 3, wireType 2 =*/26).string(message.put);
+ if (message.post != null && Object.hasOwnProperty.call(message, "post"))
+ writer.uint32(/* id 4, wireType 2 =*/34).string(message.post);
+ if (message["delete"] != null && Object.hasOwnProperty.call(message, "delete"))
+ writer.uint32(/* id 5, wireType 2 =*/42).string(message["delete"]);
+ if (message.patch != null && Object.hasOwnProperty.call(message, "patch"))
+ writer.uint32(/* id 6, wireType 2 =*/50).string(message.patch);
+ if (message.body != null && Object.hasOwnProperty.call(message, "body"))
+ writer.uint32(/* id 7, wireType 2 =*/58).string(message.body);
+ if (message.custom != null && Object.hasOwnProperty.call(message, "custom"))
+ $root.google.api.CustomHttpPattern.encode(message.custom, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();
+ if (message.additionalBindings != null && message.additionalBindings.length)
+ for (var i = 0; i < message.additionalBindings.length; ++i)
+ $root.google.api.HttpRule.encode(message.additionalBindings[i], writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();
+ if (message.responseBody != null && Object.hasOwnProperty.call(message, "responseBody"))
+ writer.uint32(/* id 12, wireType 2 =*/98).string(message.responseBody);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.api.HttpRule
+ * @static
+ * @param {google.api.IHttpRule} message HttpRule message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ HttpRule.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a HttpRule message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.api.HttpRule
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.api.HttpRule} HttpRule
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ HttpRule.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.HttpRule();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.selector = reader.string();
+ break;
+ }
+ case 2: {
+ message.get = reader.string();
+ break;
+ }
+ case 3: {
+ message.put = reader.string();
+ break;
+ }
+ case 4: {
+ message.post = reader.string();
+ break;
+ }
+ case 5: {
+ message["delete"] = reader.string();
+ break;
+ }
+ case 6: {
+ message.patch = reader.string();
+ break;
+ }
+ case 8: {
+ message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32());
+ break;
+ }
+ case 7: {
+ message.body = reader.string();
+ break;
+ }
+ case 12: {
+ message.responseBody = reader.string();
+ break;
+ }
+ case 11: {
+ if (!(message.additionalBindings && message.additionalBindings.length))
+ message.additionalBindings = [];
+ message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32()));
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a HttpRule message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.api.HttpRule
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.api.HttpRule} HttpRule
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ HttpRule.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a HttpRule message.
+ * @function verify
+ * @memberof google.api.HttpRule
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ HttpRule.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ var properties = {};
+ if (message.selector != null && message.hasOwnProperty("selector"))
+ if (!$util.isString(message.selector))
+ return "selector: string expected";
+ if (message.get != null && message.hasOwnProperty("get")) {
+ properties.pattern = 1;
+ if (!$util.isString(message.get))
+ return "get: string expected";
+ }
+ if (message.put != null && message.hasOwnProperty("put")) {
+ if (properties.pattern === 1)
+ return "pattern: multiple values";
+ properties.pattern = 1;
+ if (!$util.isString(message.put))
+ return "put: string expected";
+ }
+ if (message.post != null && message.hasOwnProperty("post")) {
+ if (properties.pattern === 1)
+ return "pattern: multiple values";
+ properties.pattern = 1;
+ if (!$util.isString(message.post))
+ return "post: string expected";
+ }
+ if (message["delete"] != null && message.hasOwnProperty("delete")) {
+ if (properties.pattern === 1)
+ return "pattern: multiple values";
+ properties.pattern = 1;
+ if (!$util.isString(message["delete"]))
+ return "delete: string expected";
+ }
+ if (message.patch != null && message.hasOwnProperty("patch")) {
+ if (properties.pattern === 1)
+ return "pattern: multiple values";
+ properties.pattern = 1;
+ if (!$util.isString(message.patch))
+ return "patch: string expected";
+ }
+ if (message.custom != null && message.hasOwnProperty("custom")) {
+ if (properties.pattern === 1)
+ return "pattern: multiple values";
+ properties.pattern = 1;
+ {
+ var error = $root.google.api.CustomHttpPattern.verify(message.custom);
+ if (error)
+ return "custom." + error;
+ }
+ }
+ if (message.body != null && message.hasOwnProperty("body"))
+ if (!$util.isString(message.body))
+ return "body: string expected";
+ if (message.responseBody != null && message.hasOwnProperty("responseBody"))
+ if (!$util.isString(message.responseBody))
+ return "responseBody: string expected";
+ if (message.additionalBindings != null && message.hasOwnProperty("additionalBindings")) {
+ if (!Array.isArray(message.additionalBindings))
+ return "additionalBindings: array expected";
+ for (var i = 0; i < message.additionalBindings.length; ++i) {
+ var error = $root.google.api.HttpRule.verify(message.additionalBindings[i]);
+ if (error)
+ return "additionalBindings." + error;
+ }
+ }
+ return null;
+ };
+
+ /**
+ * Creates a HttpRule message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.api.HttpRule
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {google.api.HttpRule} HttpRule
+ */
+ HttpRule.fromObject = function fromObject(object) {
+ if (object instanceof $root.google.api.HttpRule)
+ return object;
+ var message = new $root.google.api.HttpRule();
+ if (object.selector != null)
+ message.selector = String(object.selector);
+ if (object.get != null)
+ message.get = String(object.get);
+ if (object.put != null)
+ message.put = String(object.put);
+ if (object.post != null)
+ message.post = String(object.post);
+ if (object["delete"] != null)
+ message["delete"] = String(object["delete"]);
+ if (object.patch != null)
+ message.patch = String(object.patch);
+ if (object.custom != null) {
+ if (typeof object.custom !== "object")
+ throw TypeError(".google.api.HttpRule.custom: object expected");
+ message.custom = $root.google.api.CustomHttpPattern.fromObject(object.custom);
+ }
+ if (object.body != null)
+ message.body = String(object.body);
+ if (object.responseBody != null)
+ message.responseBody = String(object.responseBody);
+ if (object.additionalBindings) {
+ if (!Array.isArray(object.additionalBindings))
+ throw TypeError(".google.api.HttpRule.additionalBindings: array expected");
+ message.additionalBindings = [];
+ for (var i = 0; i < object.additionalBindings.length; ++i) {
+ if (typeof object.additionalBindings[i] !== "object")
+ throw TypeError(".google.api.HttpRule.additionalBindings: object expected");
+ message.additionalBindings[i] = $root.google.api.HttpRule.fromObject(object.additionalBindings[i]);
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a HttpRule message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof google.api.HttpRule
+ * @static
+ * @param {google.api.HttpRule} message HttpRule
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ HttpRule.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ var object = {};
+ if (options.arrays || options.defaults)
+ object.additionalBindings = [];
+ if (options.defaults) {
+ object.selector = "";
+ object.body = "";
+ object.responseBody = "";
+ }
+ if (message.selector != null && message.hasOwnProperty("selector"))
+ object.selector = message.selector;
+ if (message.get != null && message.hasOwnProperty("get")) {
+ object.get = message.get;
+ if (options.oneofs)
+ object.pattern = "get";
+ }
+ if (message.put != null && message.hasOwnProperty("put")) {
+ object.put = message.put;
+ if (options.oneofs)
+ object.pattern = "put";
+ }
+ if (message.post != null && message.hasOwnProperty("post")) {
+ object.post = message.post;
+ if (options.oneofs)
+ object.pattern = "post";
+ }
+ if (message["delete"] != null && message.hasOwnProperty("delete")) {
+ object["delete"] = message["delete"];
+ if (options.oneofs)
+ object.pattern = "delete";
+ }
+ if (message.patch != null && message.hasOwnProperty("patch")) {
+ object.patch = message.patch;
+ if (options.oneofs)
+ object.pattern = "patch";
+ }
+ if (message.body != null && message.hasOwnProperty("body"))
+ object.body = message.body;
+ if (message.custom != null && message.hasOwnProperty("custom")) {
+ object.custom = $root.google.api.CustomHttpPattern.toObject(message.custom, options);
+ if (options.oneofs)
+ object.pattern = "custom";
+ }
+ if (message.additionalBindings && message.additionalBindings.length) {
+ object.additionalBindings = [];
+ for (var j = 0; j < message.additionalBindings.length; ++j)
+ object.additionalBindings[j] = $root.google.api.HttpRule.toObject(message.additionalBindings[j], options);
+ }
+ if (message.responseBody != null && message.hasOwnProperty("responseBody"))
+ object.responseBody = message.responseBody;
+ return object;
+ };
+
+ /**
+ * Converts this HttpRule to JSON.
+ * @function toJSON
+ * @memberof google.api.HttpRule
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ HttpRule.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for HttpRule
+ * @function getTypeUrl
+ * @memberof google.api.HttpRule
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ HttpRule.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/google.api.HttpRule";
+ };
+
+ return HttpRule;
+ })();
+
+ api.CustomHttpPattern = (function() {
+
+ /**
+ * Properties of a CustomHttpPattern.
+ * @memberof google.api
+ * @interface ICustomHttpPattern
+ * @property {string|null} [kind] CustomHttpPattern kind
+ * @property {string|null} [path] CustomHttpPattern path
+ */
+
+ /**
+ * Constructs a new CustomHttpPattern.
+ * @memberof google.api
+ * @classdesc Represents a CustomHttpPattern.
+ * @implements ICustomHttpPattern
+ * @constructor
+ * @param {google.api.ICustomHttpPattern=} [properties] Properties to set
+ */
+ function CustomHttpPattern(properties) {
+ if (properties)
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * CustomHttpPattern kind.
+ * @member {string} kind
+ * @memberof google.api.CustomHttpPattern
+ * @instance
+ */
+ CustomHttpPattern.prototype.kind = "";
+
+ /**
+ * CustomHttpPattern path.
+ * @member {string} path
+ * @memberof google.api.CustomHttpPattern
+ * @instance
+ */
+ CustomHttpPattern.prototype.path = "";
+
+ /**
+ * Creates a new CustomHttpPattern instance using the specified properties.
+ * @function create
+ * @memberof google.api.CustomHttpPattern
+ * @static
+ * @param {google.api.ICustomHttpPattern=} [properties] Properties to set
+ * @returns {google.api.CustomHttpPattern} CustomHttpPattern instance
+ */
+ CustomHttpPattern.create = function create(properties) {
+ return new CustomHttpPattern(properties);
+ };
+
+ /**
+ * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages.
+ * @function encode
+ * @memberof google.api.CustomHttpPattern
+ * @static
+ * @param {google.api.ICustomHttpPattern} message CustomHttpPattern message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ CustomHttpPattern.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.kind != null && Object.hasOwnProperty.call(message, "kind"))
+ writer.uint32(/* id 1, wireType 2 =*/10).string(message.kind);
+ if (message.path != null && Object.hasOwnProperty.call(message, "path"))
+ writer.uint32(/* id 2, wireType 2 =*/18).string(message.path);
+ return writer;
+ };
+
+ /**
+ * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof google.api.CustomHttpPattern
+ * @static
+ * @param {google.api.ICustomHttpPattern} message CustomHttpPattern message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ CustomHttpPattern.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a CustomHttpPattern message from the specified reader or buffer.
+ * @function decode
+ * @memberof google.api.CustomHttpPattern
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {google.api.CustomHttpPattern} CustomHttpPattern
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ CustomHttpPattern.decode = function decode(reader, length, error) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CustomHttpPattern();
+ while (reader.pos < end) {
+ var tag = reader.uint32();
+ if (tag === error)
+ break;
+ switch (tag >>> 3) {
+ case 1: {
+ message.kind = reader.string();
+ break;
+ }
+ case 2: {
+ message.path = reader.string();
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof google.api.CustomHttpPattern
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {google.api.CustomHttpPattern} CustomHttpPattern
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ CustomHttpPattern.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a CustomHttpPattern message.
+ * @function verify
+ * @memberof google.api.CustomHttpPattern
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ CustomHttpPattern.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ if (message.kind != null && message.hasOwnProperty("kind"))
+ if (!$util.isString(message.kind))
+ return "kind: string expected";
+ if (message.path != null && message.hasOwnProperty("path"))
+ if (!$util.isString(message.path))
+ return "path: string expected";
+ return null;
+ };
+
+ /**
+ * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof google.api.CustomHttpPattern
+ * @static
+ * @param {Object.