"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
Copyright 2016-2018, Pulumi Corporation.

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 builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import google.protobuf.struct_pb2
import sys
import typing

if sys.version_info >= (3, 10):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing_extensions.final
class ParameterizeRequest(google.protobuf.message.Message):
    """`ParameterizeRequest` is the type of requests sent as part of a [](pulumirpc.ResourceProvider.Parameterize) call. A
    `ParameterizeRequest` may contain either:

    * a string array (`ParametersArgs`), intended to represent a set of command-line arguments so as to support
      instantiating a parameterized provider from a command-line invocation (e.g. to generate an SDK).
    * a byte array accompanied by a name and version (`ParametersValue`), intended to represent a parameter embedded in a
      previously generated SDK.

    Embedding parameter values in SDKs allows programs to consume parameterized providers without needing to know the
    details of the parameterization. Allowing the representation embedded into an SDK to differ from that supplied on the
    command-line permits providers to implement optimizations for the common, fast-path case (program execution), such as
    embedding a generated schema as opposed to generating it on-demand for each resource registration.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing_extensions.final
    class ParametersArgs(google.protobuf.message.Message):
        """A parameter value, represented as an array of strings, as might be provided by a command-line invocation, such as
        that used to generate an SDK.
        """

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        ARGS_FIELD_NUMBER: builtins.int
        @property
        def args(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
        def __init__(
            self,
            *,
            args: collections.abc.Iterable[builtins.str] | None = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["args", b"args"]) -> None: ...

    @typing_extensions.final
    class ParametersValue(google.protobuf.message.Message):
        """A parameter value, represented by an arbitrary array of bytes accompanied by a name and version. This is expected
        to be the format used by parameterized provider SDKs.
        """

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        NAME_FIELD_NUMBER: builtins.int
        VERSION_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        name: builtins.str
        """The sub-package name for this sub-schema parameterization."""
        version: builtins.str
        """The sub-package version for this sub-schema parameterization."""
        value: builtins.bytes
        """The embedded value from the sub-package."""
        def __init__(
            self,
            *,
            name: builtins.str = ...,
            version: builtins.str = ...,
            value: builtins.bytes = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["name", b"name", "value", b"value", "version", b"version"]) -> None: ...

    ARGS_FIELD_NUMBER: builtins.int
    VALUE_FIELD_NUMBER: builtins.int
    @property
    def args(self) -> global___ParameterizeRequest.ParametersArgs:
        """Arguments from the command line."""
    @property
    def value(self) -> global___ParameterizeRequest.ParametersValue:
        """Values from a generated SDK."""
    def __init__(
        self,
        *,
        args: global___ParameterizeRequest.ParametersArgs | None = ...,
        value: global___ParameterizeRequest.ParametersValue | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["args", b"args", "parameters", b"parameters", "value", b"value"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["args", b"args", "parameters", b"parameters", "value", b"value"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["parameters", b"parameters"]) -> typing_extensions.Literal["args", "value"] | None: ...

global___ParameterizeRequest = ParameterizeRequest

@typing_extensions.final
class ParameterizeResponse(google.protobuf.message.Message):
    """`ParameterizeResponse` is the type of responses sent by a [](pulumirpc.ResourceProvider.Parameterize) call. It
    contains a name and version that can be used to identify the sub-package that now exists as a result of
    parameterization.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NAME_FIELD_NUMBER: builtins.int
    VERSION_FIELD_NUMBER: builtins.int
    name: builtins.str
    """The name of the sub-package parameterized."""
    version: builtins.str
    """The version of the sub-package parameterized."""
    def __init__(
        self,
        *,
        name: builtins.str = ...,
        version: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["name", b"name", "version", b"version"]) -> None: ...

global___ParameterizeResponse = ParameterizeResponse

@typing_extensions.final
class GetSchemaRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    VERSION_FIELD_NUMBER: builtins.int
    SUBPACKAGE_NAME_FIELD_NUMBER: builtins.int
    SUBPACKAGE_VERSION_FIELD_NUMBER: builtins.int
    version: builtins.int
    """the schema version."""
    subpackage_name: builtins.str
    """the name of the sub-package to lookup"""
    subpackage_version: builtins.str
    """the version of the sub-package to lookup"""
    def __init__(
        self,
        *,
        version: builtins.int = ...,
        subpackage_name: builtins.str = ...,
        subpackage_version: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["subpackage_name", b"subpackage_name", "subpackage_version", b"subpackage_version", "version", b"version"]) -> None: ...

global___GetSchemaRequest = GetSchemaRequest

@typing_extensions.final
class GetSchemaResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SCHEMA_FIELD_NUMBER: builtins.int
    schema: builtins.str
    """the JSON-encoded schema."""
    def __init__(
        self,
        *,
        schema: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["schema", b"schema"]) -> None: ...

global___GetSchemaResponse = GetSchemaResponse

@typing_extensions.final
class ConfigureRequest(google.protobuf.message.Message):
    """`ConfigureRequest` is the type of requests sent as part of a [](pulumirpc.ResourceProvider.Configure) call. Requests
    include both provider-specific inputs (`variables` or `args`) and provider-agnostic ("protocol") configuration
    (`acceptSecrets`, `acceptResources`, and so on).
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing_extensions.final
    class VariablesEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    VARIABLES_FIELD_NUMBER: builtins.int
    ARGS_FIELD_NUMBER: builtins.int
    ACCEPTSECRETS_FIELD_NUMBER: builtins.int
    ACCEPTRESOURCES_FIELD_NUMBER: builtins.int
    SENDS_OLD_INPUTS_FIELD_NUMBER: builtins.int
    SENDS_OLD_INPUTS_TO_DELETE_FIELD_NUMBER: builtins.int
    @property
    def variables(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """:::{warning}
        `variables` is deprecated; `args` should be used instead wherever possible.
        :::

        A map of input properties for the provider. Compound values, such as nested objects, should be JSON encoded so
        that they too can be passed as strings. For instance, the following configuration:

        ```
        {
          "a": 42,
          "b": {
            "c": "hello",
            "d": true
          }
        }
        ```

        should be encoded as:

        ```
        {
          "a": "42",
          "b": "{\\"c\\":\\"hello\\",\\"d\\":true}"
        }
        ```
        """
    @property
    def args(self) -> google.protobuf.struct_pb2.Struct:
        """A map of input properties for the provider.

        :::{warning}
        `args` may include secrets. Because `ConfigureRequest` is sent before [](pulumirpc.ConfigureResponse) can specify
        whether or not the provider accepts secrets in general, providers *must* handle secrets if they appear in `args`.
        :::
        """
    acceptSecrets: builtins.bool
    """True if and only if the caller supports secrets. If true, operations should return strongly typed secrets if the
    provider supports them also.
    """
    acceptResources: builtins.bool
    """True if and only if the caller supports strongly typed resources. If true, operations should return resources as
    strongly typed values if the provider supports them also.
    """
    sends_old_inputs: builtins.bool
    """True if and only if the caller supports sending old inputs as part of [](pulumirpc.ResourceProvider.Diff) and
    [](pulumirpc.ResourceProvider.Update) calls. If true, the provider should expect these fields to be populated in
    these calls.
    """
    sends_old_inputs_to_delete: builtins.bool
    """True if and only if the caller supports sending old inputs and outputs as part of
    [](pulumirpc.ResourceProvider.Delete) calls. If true, the provider should expect these fields to be populated in
    these calls.
    """
    def __init__(
        self,
        *,
        variables: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        args: google.protobuf.struct_pb2.Struct | None = ...,
        acceptSecrets: builtins.bool = ...,
        acceptResources: builtins.bool = ...,
        sends_old_inputs: builtins.bool = ...,
        sends_old_inputs_to_delete: builtins.bool = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["args", b"args"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["acceptResources", b"acceptResources", "acceptSecrets", b"acceptSecrets", "args", b"args", "sends_old_inputs", b"sends_old_inputs", "sends_old_inputs_to_delete", b"sends_old_inputs_to_delete", "variables", b"variables"]) -> None: ...

global___ConfigureRequest = ConfigureRequest

@typing_extensions.final
class ConfigureResponse(google.protobuf.message.Message):
    """`ConfigureResponse` is the type of responses sent by a [](pulumirpc.ResourceProvider.Configure) call. Its primary
    purpose is to communicate features that the provider supports back to the caller.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ACCEPTSECRETS_FIELD_NUMBER: builtins.int
    SUPPORTSPREVIEW_FIELD_NUMBER: builtins.int
    ACCEPTRESOURCES_FIELD_NUMBER: builtins.int
    ACCEPTOUTPUTS_FIELD_NUMBER: builtins.int
    SUPPORTS_AUTONAMING_CONFIGURATION_FIELD_NUMBER: builtins.int
    acceptSecrets: builtins.bool
    """True if and only if the provider supports secrets. If true, the caller should pass secrets as strongly typed
    values to the provider.
    """
    supportsPreview: builtins.bool
    """True if and only if the provider supports the `preview` field on [](pulumirpc.ResourceProvider.Create) and
    [](pulumirpc.ResourceProvider.Update) calls. If true, the engine should invoke these calls with `preview` set to
    `true` during previews.
    """
    acceptResources: builtins.bool
    """True if and only if the provider supports strongly typed resources. If true, the caller should pass resources as
    strongly typed values to the provider.
    """
    acceptOutputs: builtins.bool
    """True if and only if the provider supports output values as inputs. If true, the engine should pass output values
    to the provider where possible.
    """
    supports_autonaming_configuration: builtins.bool
    """True if the provider accepts and respects Autonaming configuration that the engine provides on behalf of user."""
    def __init__(
        self,
        *,
        acceptSecrets: builtins.bool = ...,
        supportsPreview: builtins.bool = ...,
        acceptResources: builtins.bool = ...,
        acceptOutputs: builtins.bool = ...,
        supports_autonaming_configuration: builtins.bool = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["acceptOutputs", b"acceptOutputs", "acceptResources", b"acceptResources", "acceptSecrets", b"acceptSecrets", "supportsPreview", b"supportsPreview", "supports_autonaming_configuration", b"supports_autonaming_configuration"]) -> None: ...

global___ConfigureResponse = ConfigureResponse

@typing_extensions.final
class ConfigureErrorMissingKeys(google.protobuf.message.Message):
    """`ConfigureErrorMissingKeys` is the type of error details that may be sent in response to a
    [](pulumirpc.ResourceProvider.Configure) call when required configuration keys are missing.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing_extensions.final
    class MissingKey(google.protobuf.message.Message):
        """The type of key-value pairs representing keys that are missing from a [](pulumirpc.ResourceProvider.Configure)
        call.
        """

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        NAME_FIELD_NUMBER: builtins.int
        DESCRIPTION_FIELD_NUMBER: builtins.int
        name: builtins.str
        """The name of the missing configuration key.

        :::{note}
        This should be the *Pulumi name* of the missing key, and not any provider-internal or upstream name. Names
        that differ between Pulumi and an upstream provider should be translated prior to being returned.
        :::
        """
        description: builtins.str
        """A description of the missing config key, as reported by the provider."""
        def __init__(
            self,
            *,
            name: builtins.str = ...,
            description: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["description", b"description", "name", b"name"]) -> None: ...

    MISSINGKEYS_FIELD_NUMBER: builtins.int
    @property
    def missingKeys(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ConfigureErrorMissingKeys.MissingKey]:
        """A list of required configuration keys that were not supplied."""
    def __init__(
        self,
        *,
        missingKeys: collections.abc.Iterable[global___ConfigureErrorMissingKeys.MissingKey] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["missingKeys", b"missingKeys"]) -> None: ...

global___ConfigureErrorMissingKeys = ConfigureErrorMissingKeys

@typing_extensions.final
class InvokeRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TOK_FIELD_NUMBER: builtins.int
    ARGS_FIELD_NUMBER: builtins.int
    tok: builtins.str
    """the function token to invoke."""
    @property
    def args(self) -> google.protobuf.struct_pb2.Struct:
        """the arguments for the function invocation."""
    def __init__(
        self,
        *,
        tok: builtins.str = ...,
        args: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["args", b"args"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["args", b"args", "tok", b"tok"]) -> None: ...

global___InvokeRequest = InvokeRequest

@typing_extensions.final
class InvokeResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    RETURN_FIELD_NUMBER: builtins.int
    FAILURES_FIELD_NUMBER: builtins.int
    @property
    def failures(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___CheckFailure]:
        """the failures if any arguments didn't pass verification."""
    def __init__(
        self,
        *,
        failures: collections.abc.Iterable[global___CheckFailure] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["return", b"return"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["failures", b"failures", "return", b"return"]) -> None: ...

global___InvokeResponse = InvokeResponse

@typing_extensions.final
class CallRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing_extensions.final
    class ArgumentDependencies(google.protobuf.message.Message):
        """ArgumentDependencies describes the resources that a particular argument depends on."""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        URNS_FIELD_NUMBER: builtins.int
        @property
        def urns(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
            """A list of URNs this argument depends on."""
        def __init__(
            self,
            *,
            urns: collections.abc.Iterable[builtins.str] | None = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["urns", b"urns"]) -> None: ...

    @typing_extensions.final
    class ArgDependenciesEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        @property
        def value(self) -> global___CallRequest.ArgumentDependencies: ...
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: global___CallRequest.ArgumentDependencies | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    @typing_extensions.final
    class ConfigEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    TOK_FIELD_NUMBER: builtins.int
    ARGS_FIELD_NUMBER: builtins.int
    ARGDEPENDENCIES_FIELD_NUMBER: builtins.int
    PROJECT_FIELD_NUMBER: builtins.int
    STACK_FIELD_NUMBER: builtins.int
    CONFIG_FIELD_NUMBER: builtins.int
    CONFIGSECRETKEYS_FIELD_NUMBER: builtins.int
    DRYRUN_FIELD_NUMBER: builtins.int
    PARALLEL_FIELD_NUMBER: builtins.int
    MONITORENDPOINT_FIELD_NUMBER: builtins.int
    ORGANIZATION_FIELD_NUMBER: builtins.int
    ACCEPTS_OUTPUT_VALUES_FIELD_NUMBER: builtins.int
    tok: builtins.str
    """the function token to invoke."""
    @property
    def args(self) -> google.protobuf.struct_pb2.Struct:
        """the arguments for the function invocation."""
    @property
    def argDependencies(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___CallRequest.ArgumentDependencies]:
        """a map from argument keys to the dependencies of the argument."""
    project: builtins.str
    """the project name."""
    stack: builtins.str
    """the name of the stack being deployed into."""
    @property
    def config(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """the configuration variables to apply before running."""
    @property
    def configSecretKeys(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """the configuration keys that have secret values."""
    dryRun: builtins.bool
    """true if we're only doing a dryrun (preview)."""
    parallel: builtins.int
    """the degree of parallelism for resource operations (<=1 for serial)."""
    monitorEndpoint: builtins.str
    """the address for communicating back to the resource monitor."""
    organization: builtins.str
    """the organization of the stack being deployed into."""
    accepts_output_values: builtins.bool
    """the engine can be passed output values back, returnDependencies can be left blank if returning output values."""
    def __init__(
        self,
        *,
        tok: builtins.str = ...,
        args: google.protobuf.struct_pb2.Struct | None = ...,
        argDependencies: collections.abc.Mapping[builtins.str, global___CallRequest.ArgumentDependencies] | None = ...,
        project: builtins.str = ...,
        stack: builtins.str = ...,
        config: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        configSecretKeys: collections.abc.Iterable[builtins.str] | None = ...,
        dryRun: builtins.bool = ...,
        parallel: builtins.int = ...,
        monitorEndpoint: builtins.str = ...,
        organization: builtins.str = ...,
        accepts_output_values: builtins.bool = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["args", b"args"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["accepts_output_values", b"accepts_output_values", "argDependencies", b"argDependencies", "args", b"args", "config", b"config", "configSecretKeys", b"configSecretKeys", "dryRun", b"dryRun", "monitorEndpoint", b"monitorEndpoint", "organization", b"organization", "parallel", b"parallel", "project", b"project", "stack", b"stack", "tok", b"tok"]) -> None: ...

global___CallRequest = CallRequest

@typing_extensions.final
class CallResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing_extensions.final
    class ReturnDependencies(google.protobuf.message.Message):
        """ReturnDependencies describes the resources that a particular return value depends on."""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        URNS_FIELD_NUMBER: builtins.int
        @property
        def urns(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
            """A list of URNs this return value depends on."""
        def __init__(
            self,
            *,
            urns: collections.abc.Iterable[builtins.str] | None = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["urns", b"urns"]) -> None: ...

    @typing_extensions.final
    class ReturnDependenciesEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        @property
        def value(self) -> global___CallResponse.ReturnDependencies: ...
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: global___CallResponse.ReturnDependencies | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    RETURN_FIELD_NUMBER: builtins.int
    FAILURES_FIELD_NUMBER: builtins.int
    RETURNDEPENDENCIES_FIELD_NUMBER: builtins.int
    @property
    def failures(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___CheckFailure]:
        """the failures if any arguments didn't pass verification."""
    @property
    def returnDependencies(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___CallResponse.ReturnDependencies]:
        """a map from return value keys to the dependencies of the return value.

        returnDependencies will be augmented by the set of dependencies specified in return
        via output property values.
        """
    def __init__(
        self,
        *,
        failures: collections.abc.Iterable[global___CheckFailure] | None = ...,
        returnDependencies: collections.abc.Mapping[builtins.str, global___CallResponse.ReturnDependencies] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["return", b"return"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["failures", b"failures", "return", b"return", "returnDependencies", b"returnDependencies"]) -> None: ...

global___CallResponse = CallResponse

@typing_extensions.final
class CheckRequest(google.protobuf.message.Message):
    """`CheckRequest` is the type of requests sent as part of [](pulumirpc.ResourceProvider.CheckConfig) and
    [](pulumirpc.ResourceProvider.Check) calls. A `CheckRequest` primarily captures the URN and inputs of the resource
    being checked. In the case of [](pulumirpc.ResourceProvider.CheckConfig), the URN will be the URN of the provider
    resource being constructed, which may or may not be a [default provider](default-providers), and the inputs will be
    the provider configuration.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing_extensions.final
    class AutonamingOptions(google.protobuf.message.Message):
        """Configuration for automatic resource naming behavior. This structure contains fields that control how the provider
        handles resource names, including proposed names and naming modes.
        """

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        class _Mode:
            ValueType = typing.NewType("ValueType", builtins.int)
            V: typing_extensions.TypeAlias = ValueType

        class _ModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[CheckRequest.AutonamingOptions._Mode.ValueType], builtins.type):  # noqa: F821
            DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
            PROPOSE: CheckRequest.AutonamingOptions._Mode.ValueType  # 0
            ENFORCE: CheckRequest.AutonamingOptions._Mode.ValueType  # 1
            DISABLE: CheckRequest.AutonamingOptions._Mode.ValueType  # 2

        class Mode(_Mode, metaclass=_ModeEnumTypeWrapper):
            """The mode that controls how the provider handles the proposed name. If not specified, defaults to `PROPOSE`.
            - `PROPOSE`: The provider may use the proposed name as a suggestion but is free to modify it.
            - `ENFORCE`: The provider must use exactly the proposed name or return an error.
            - `DISABLE`: The provider should disable automatic naming and return an error if no explicit name
              is provided by user's program.
            """

        PROPOSE: CheckRequest.AutonamingOptions.Mode.ValueType  # 0
        ENFORCE: CheckRequest.AutonamingOptions.Mode.ValueType  # 1
        DISABLE: CheckRequest.AutonamingOptions.Mode.ValueType  # 2

        PROPOSED_NAME_FIELD_NUMBER: builtins.int
        MODE_FIELD_NUMBER: builtins.int
        proposed_name: builtins.str
        """The proposed name for the resource being checked. This may be used by the provider as a suggestion
        for the final resource name, depending on the specified mode.
        """
        mode: global___CheckRequest.AutonamingOptions.Mode.ValueType
        def __init__(
            self,
            *,
            proposed_name: builtins.str = ...,
            mode: global___CheckRequest.AutonamingOptions.Mode.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["mode", b"mode", "proposed_name", b"proposed_name"]) -> None: ...

    URN_FIELD_NUMBER: builtins.int
    OLDS_FIELD_NUMBER: builtins.int
    NEWS_FIELD_NUMBER: builtins.int
    RANDOMSEED_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    AUTONAMING_FIELD_NUMBER: builtins.int
    urn: builtins.str
    """The URN of the resource whose inputs are being checked. In the case of
    [](pulumirpc.ResourceProvider.CheckConfig), this will be the URN of the provider resource being constructed,
    which may or may not be a [default provider](default-providers).
    """
    @property
    def olds(self) -> google.protobuf.struct_pb2.Struct:
        """The old input properties or configuration for the resource, if any."""
    @property
    def news(self) -> google.protobuf.struct_pb2.Struct:
        """The new input properties or configuration for the resource, if any.

        :::{note}
        If this resource has been specified with the
        [`ignoreChanges`](https://www.pulumi.com/docs/concepts/options/ignorechanges/), then the values in `news` may
        differ from those written in the Pulumi program registering this resource. In such cases, the caller (e.g. the
        Pulumi engine) is expected to preprocess the `news` value by replacing every property matched by `ignoreChanges`
        with its corresponding `olds` value (effectively ignoring the change).
        :::
        """
    randomSeed: builtins.bytes
    """A random but deterministically computed hash, intended to be used for generating globally unique names."""
    name: builtins.str
    """The name of the resource being checked. This must match the name specified by the `urn` field, and is passed so
    that providers do not have to implement URN parsing in order to extract the name of the resource.
    """
    type: builtins.str
    """The type of the resource being checked. This must match the type specified by the `urn` field, and is passed so
    that providers do not have to implement URN parsing in order to extract the type of the resource.
    """
    @property
    def autonaming(self) -> global___CheckRequest.AutonamingOptions: ...
    def __init__(
        self,
        *,
        urn: builtins.str = ...,
        olds: google.protobuf.struct_pb2.Struct | None = ...,
        news: google.protobuf.struct_pb2.Struct | None = ...,
        randomSeed: builtins.bytes = ...,
        name: builtins.str = ...,
        type: builtins.str = ...,
        autonaming: global___CheckRequest.AutonamingOptions | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["autonaming", b"autonaming", "news", b"news", "olds", b"olds"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["autonaming", b"autonaming", "name", b"name", "news", b"news", "olds", b"olds", "randomSeed", b"randomSeed", "type", b"type", "urn", b"urn"]) -> None: ...

global___CheckRequest = CheckRequest

@typing_extensions.final
class CheckResponse(google.protobuf.message.Message):
    """`CheckResponse` is the type of responses sent by a [](pulumirpc.ResourceProvider.CheckConfig) or
    [](pulumirpc.ResourceProvider.Check) call. A `CheckResponse` may contain either:

    * a set of checked, known-valid `inputs`. In the case of [](pulumirpc.ResourceProvider.CheckConfig), these may
      subsequently be passed to [](pulumirpc.ResourceProvider.DiffConfig) and/or
      [](pulumirpc.ResourceProvider.Configure). In the case of [](pulumirpc.ResourceProvider.Check), these may be passed
      to any of the supported lifecycle methods that accept provider inputs.
    * a set of `failures` detailing invalid inputs.

    In cases where the supplied set of inputs is valid, a `CheckResponse` may contain default values that should
    persisted to Pulumi state and passed to subsequent calls.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    INPUTS_FIELD_NUMBER: builtins.int
    FAILURES_FIELD_NUMBER: builtins.int
    @property
    def inputs(self) -> google.protobuf.struct_pb2.Struct:
        """A valid, checked set of inputs. May contain defaults."""
    @property
    def failures(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___CheckFailure]:
        """Any validation failures that occurred."""
    def __init__(
        self,
        *,
        inputs: google.protobuf.struct_pb2.Struct | None = ...,
        failures: collections.abc.Iterable[global___CheckFailure] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["inputs", b"inputs"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["failures", b"failures", "inputs", b"inputs"]) -> None: ...

global___CheckResponse = CheckResponse

@typing_extensions.final
class CheckFailure(google.protobuf.message.Message):
    """A `CheckFailure` describes a single validation error that arose as part of a
    [](pulumirpc.ResourceProvider.CheckConfig) or [](pulumirpc.ResourceProvider.Check) call.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROPERTY_FIELD_NUMBER: builtins.int
    REASON_FIELD_NUMBER: builtins.int
    property: builtins.str
    """The input property that failed validation."""
    reason: builtins.str
    """The reason that the named property failed validation."""
    def __init__(
        self,
        *,
        property: builtins.str = ...,
        reason: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["property", b"property", "reason", b"reason"]) -> None: ...

global___CheckFailure = CheckFailure

@typing_extensions.final
class DiffRequest(google.protobuf.message.Message):
    """`DiffRequest` is the type of requests sent as part of [](pulumirpc.ResourceProvider.DiffConfig) and
    [](pulumirpc.ResourceProvider.Diff) calls. A `DiffRequest` primarily captures:

    * the URN of the resource whose properties are being compared;
    * the old and new input properties of the resource; and
    * the old output properties of the resource.

    In the case of [](pulumirpc.ResourceProvider.DiffConfig), the URN will be the URN of the provider resource being
    examined, which may or may not be a [default provider](default-providers), and the inputs and outputs will be the
    provider configuration and state. Inputs supplied to a [](pulumirpc.ResourceProvider.DiffConfig) call should have
    been previously checked by a call to [](pulumirpc.ResourceProvider.CheckConfig); inputs supplied to a
    [](pulumirpc.ResourceProvider.Diff) call should have been previously checked by a call to
    [](pulumirpc.ResourceProvider.Check).
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    URN_FIELD_NUMBER: builtins.int
    OLDS_FIELD_NUMBER: builtins.int
    NEWS_FIELD_NUMBER: builtins.int
    IGNORECHANGES_FIELD_NUMBER: builtins.int
    OLD_INPUTS_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    id: builtins.str
    """The ID of the resource being diffed."""
    urn: builtins.str
    """The URN of the resource being diffed."""
    @property
    def olds(self) -> google.protobuf.struct_pb2.Struct:
        """The old *output* properties of the resource being diffed."""
    @property
    def news(self) -> google.protobuf.struct_pb2.Struct:
        """The new *input* properties of the resource being diffed. These should have been validated by an appropriate call
        to [](pulumirpc.ResourceProvider.CheckConfig) or [](pulumirpc.ResourceProvider.Check).
        """
    @property
    def ignoreChanges(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """A set of [property paths](property-paths) that should be treated as unchanged."""
    @property
    def old_inputs(self) -> google.protobuf.struct_pb2.Struct:
        """The old *input* properties of the resource being diffed."""
    name: builtins.str
    """The name of the resource being diffed. This must match the name specified by the `urn` field, and is passed so
    that providers do not have to implement URN parsing in order to extract the name of the resource.
    """
    type: builtins.str
    """The type of the resource being diffed. This must match the type specified by the `urn` field, and is passed so
    that providers do not have to implement URN parsing in order to extract the type of the resource.
    """
    def __init__(
        self,
        *,
        id: builtins.str = ...,
        urn: builtins.str = ...,
        olds: google.protobuf.struct_pb2.Struct | None = ...,
        news: google.protobuf.struct_pb2.Struct | None = ...,
        ignoreChanges: collections.abc.Iterable[builtins.str] | None = ...,
        old_inputs: google.protobuf.struct_pb2.Struct | None = ...,
        name: builtins.str = ...,
        type: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["news", b"news", "old_inputs", b"old_inputs", "olds", b"olds"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["id", b"id", "ignoreChanges", b"ignoreChanges", "name", b"name", "news", b"news", "old_inputs", b"old_inputs", "olds", b"olds", "type", b"type", "urn", b"urn"]) -> None: ...

global___DiffRequest = DiffRequest

@typing_extensions.final
class PropertyDiff(google.protobuf.message.Message):
    """`PropertyDiff` describes the kind of change that occurred to a property during a diff operation. A `PropertyDiff` may
    indicate that a property was added, deleted, or updated, and may further indicate that the change requires a
    replacement.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    class _Kind:
        ValueType = typing.NewType("ValueType", builtins.int)
        V: typing_extensions.TypeAlias = ValueType

    class _KindEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[PropertyDiff._Kind.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        ADD: PropertyDiff._Kind.ValueType  # 0
        """This property was added."""
        ADD_REPLACE: PropertyDiff._Kind.ValueType  # 1
        """This property was added, and this change requires a replace."""
        DELETE: PropertyDiff._Kind.ValueType  # 2
        """This property was removed."""
        DELETE_REPLACE: PropertyDiff._Kind.ValueType  # 3
        """This property was removed, and this change requires a replace."""
        UPDATE: PropertyDiff._Kind.ValueType  # 4
        """This property's value was changed."""
        UPDATE_REPLACE: PropertyDiff._Kind.ValueType  # 5
        """This property's value was changed, and this change requires a replace."""

    class Kind(_Kind, metaclass=_KindEnumTypeWrapper):
        """The type of property diff kinds."""

    ADD: PropertyDiff.Kind.ValueType  # 0
    """This property was added."""
    ADD_REPLACE: PropertyDiff.Kind.ValueType  # 1
    """This property was added, and this change requires a replace."""
    DELETE: PropertyDiff.Kind.ValueType  # 2
    """This property was removed."""
    DELETE_REPLACE: PropertyDiff.Kind.ValueType  # 3
    """This property was removed, and this change requires a replace."""
    UPDATE: PropertyDiff.Kind.ValueType  # 4
    """This property's value was changed."""
    UPDATE_REPLACE: PropertyDiff.Kind.ValueType  # 5
    """This property's value was changed, and this change requires a replace."""

    KIND_FIELD_NUMBER: builtins.int
    INPUTDIFF_FIELD_NUMBER: builtins.int
    kind: global___PropertyDiff.Kind.ValueType
    """The kind of diff associated with this property."""
    inputDiff: builtins.bool
    """True if and only if this difference represents one between a pair of old and new inputs, as opposed to a pair of
    old and new states.
    """
    def __init__(
        self,
        *,
        kind: global___PropertyDiff.Kind.ValueType = ...,
        inputDiff: builtins.bool = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["inputDiff", b"inputDiff", "kind", b"kind"]) -> None: ...

global___PropertyDiff = PropertyDiff

@typing_extensions.final
class DiffResponse(google.protobuf.message.Message):
    """`DiffResponse` is the type of responses sent by a [](pulumirpc.ResourceProvider.DiffConfig) or
    [](pulumirpc.ResourceProvider.Diff) call. A `DiffResponse` indicates whether a resource is unchanged, requires
    updating (that is, can be changed "in place"), or requires replacement (that is, must be destroyed and recreated
    anew). Legacy implementations may also signal that it is unknown whether there are changes or not.

    `DiffResponse` has evolved since its inception and there are now a number of ways that providers can signal their
    intent to callers:

    * *Simple diffs* utilise the `changes` field to signal which fields are responsible for a change, and the `replaces`
      field to further communicate which changes (if any) require a replacement as opposed to an update.

    * *Detailed diffs* are those with `hasDetailedDiff` set, and utilise the `detailedDiff` field to provide a more
      granular view of the changes that have occurred. Detailed diffs are designed to allow providers to control
      precisely which field names are displayed as responsible for a change, and to signal more accurately what kind of
      change occurred (e.g. a field was added, deleted or updated).
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    class _DiffChanges:
        ValueType = typing.NewType("ValueType", builtins.int)
        V: typing_extensions.TypeAlias = ValueType

    class _DiffChangesEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[DiffResponse._DiffChanges.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        DIFF_UNKNOWN: DiffResponse._DiffChanges.ValueType  # 0
        """A diff was performed but it is unknown whether there are changes or not. This exists to support legacy
        behaviour and should be generally avoided wherever possible.
        """
        DIFF_NONE: DiffResponse._DiffChanges.ValueType  # 1
        """A diff was performed and there were no changes. An update is not required."""
        DIFF_SOME: DiffResponse._DiffChanges.ValueType  # 2
        """A diff was performed, and changes were detected that require an update or replacement."""

    class DiffChanges(_DiffChanges, metaclass=_DiffChangesEnumTypeWrapper):
        """The type of high-level diff results."""

    DIFF_UNKNOWN: DiffResponse.DiffChanges.ValueType  # 0
    """A diff was performed but it is unknown whether there are changes or not. This exists to support legacy
    behaviour and should be generally avoided wherever possible.
    """
    DIFF_NONE: DiffResponse.DiffChanges.ValueType  # 1
    """A diff was performed and there were no changes. An update is not required."""
    DIFF_SOME: DiffResponse.DiffChanges.ValueType  # 2
    """A diff was performed, and changes were detected that require an update or replacement."""

    @typing_extensions.final
    class DetailedDiffEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        @property
        def value(self) -> global___PropertyDiff: ...
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: global___PropertyDiff | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    REPLACES_FIELD_NUMBER: builtins.int
    STABLES_FIELD_NUMBER: builtins.int
    DELETEBEFOREREPLACE_FIELD_NUMBER: builtins.int
    CHANGES_FIELD_NUMBER: builtins.int
    DIFFS_FIELD_NUMBER: builtins.int
    DETAILEDDIFF_FIELD_NUMBER: builtins.int
    HASDETAILEDDIFF_FIELD_NUMBER: builtins.int
    @property
    def replaces(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """A set of properties which have changed and whose changes require the resource being diffed to be replaced. The
        caller should replace the resource if this set is non-empty, or if any of the properties specified in
        `detailedDiff` have a `*_REPLACE` kind.
        """
    @property
    def stables(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """An optional list of properties that will not ever change (are stable)."""
    deleteBeforeReplace: builtins.bool
    """If true, this resource must be deleted *before* its replacement is created."""
    changes: global___DiffResponse.DiffChanges.ValueType
    """The result of the diff. Indicates at a high level whether the resource has changed or not (or, in legacy cases,
    if the provider does not know).
    """
    @property
    def diffs(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """The set of properties which have changed. This field only supports top-level properties. It *does not* support
        full [property paths](property-paths); implementations should use `detailedDiff` when this is required.
        """
    @property
    def detailedDiff(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___PropertyDiff]:
        """`detailedDiff` can be used to implement more detailed diffs. A detailed diff is a map from [property
        paths](property-paths) to [](pulumirpc.PropertyDiff)s, which describe the kind of change that occurred to the
        property located at that path. If a provider does not implement this, the caller (typically the Pulumi engine)
        will compute a representation based on the simple diff fields (`changes`, `replaces`, and so on).
        """
    hasDetailedDiff: builtins.bool
    """True if and only if this response contains a `detailedDiff`."""
    def __init__(
        self,
        *,
        replaces: collections.abc.Iterable[builtins.str] | None = ...,
        stables: collections.abc.Iterable[builtins.str] | None = ...,
        deleteBeforeReplace: builtins.bool = ...,
        changes: global___DiffResponse.DiffChanges.ValueType = ...,
        diffs: collections.abc.Iterable[builtins.str] | None = ...,
        detailedDiff: collections.abc.Mapping[builtins.str, global___PropertyDiff] | None = ...,
        hasDetailedDiff: builtins.bool = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["changes", b"changes", "deleteBeforeReplace", b"deleteBeforeReplace", "detailedDiff", b"detailedDiff", "diffs", b"diffs", "hasDetailedDiff", b"hasDetailedDiff", "replaces", b"replaces", "stables", b"stables"]) -> None: ...

global___DiffResponse = DiffResponse

@typing_extensions.final
class CreateRequest(google.protobuf.message.Message):
    """`CreateRequest` is the type of requests sent as part of a [](pulumirpc.ResourceProvider.Create) call."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    URN_FIELD_NUMBER: builtins.int
    PROPERTIES_FIELD_NUMBER: builtins.int
    TIMEOUT_FIELD_NUMBER: builtins.int
    PREVIEW_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    urn: builtins.str
    """The URN of the resource being created."""
    @property
    def properties(self) -> google.protobuf.struct_pb2.Struct:
        """The resource's input properties, to be set during creation. These should have been validated by a call to
        [](pulumirpc.ResourceProvider.Check).
        """
    timeout: builtins.float
    """A timeout in seconds that the caller is prepared to wait for the operation to complete."""
    preview: builtins.bool
    """True if and only if the request is being made as part of a preview/dry run, in which case the provider should not
    actually create the resource.
    """
    name: builtins.str
    """The name of the resource being created. This must match the name specified by the `urn` field, and is passed so
    that providers do not have to implement URN parsing in order to extract the name of the resource.
    """
    type: builtins.str
    """The type of the resource being created. This must match the type specified by the `urn` field, and is passed so
    that providers do not have to implement URN parsing in order to extract the type of the resource.
    """
    def __init__(
        self,
        *,
        urn: builtins.str = ...,
        properties: google.protobuf.struct_pb2.Struct | None = ...,
        timeout: builtins.float = ...,
        preview: builtins.bool = ...,
        name: builtins.str = ...,
        type: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["properties", b"properties"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["name", b"name", "preview", b"preview", "properties", b"properties", "timeout", b"timeout", "type", b"type", "urn", b"urn"]) -> None: ...

global___CreateRequest = CreateRequest

@typing_extensions.final
class CreateResponse(google.protobuf.message.Message):
    """`CreateResponse` is the type of responses sent by a [](pulumirpc.ResourceProvider.Create) call. A `CreateResponse`
    contains the ID of the created resource, as well as any output properties that arose from the creation process.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    PROPERTIES_FIELD_NUMBER: builtins.int
    id: builtins.str
    """The ID of the created resource."""
    @property
    def properties(self) -> google.protobuf.struct_pb2.Struct:
        """The resource's output properties. Typically this will be a union of the resource's input properties and any
        additional values that were computed or made available during creation.
        """
    def __init__(
        self,
        *,
        id: builtins.str = ...,
        properties: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["properties", b"properties"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["id", b"id", "properties", b"properties"]) -> None: ...

global___CreateResponse = CreateResponse

@typing_extensions.final
class ReadRequest(google.protobuf.message.Message):
    """`ReadRequest` is the type of requests sent as part of a [](pulumirpc.ResourceProvider.Read) call."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    URN_FIELD_NUMBER: builtins.int
    PROPERTIES_FIELD_NUMBER: builtins.int
    INPUTS_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    id: builtins.str
    """The ID of the resource to read."""
    urn: builtins.str
    """The URN of the resource being read."""
    @property
    def properties(self) -> google.protobuf.struct_pb2.Struct:
        """Any current state for the resource being read. This state should be sufficient to uniquely identify the resource."""
    @property
    def inputs(self) -> google.protobuf.struct_pb2.Struct:
        """Any current input properties for the resource being read. These will only be populated when the
        [](pulumirpc.ResourceProvider.Read) call is being made as part of a refresh operation.
        """
    name: builtins.str
    """The name of the resource being read. This must match the name specified by the `urn` field, and is passed so that
    providers do not have to implement URN parsing in order to extract the name of the resource.
    """
    type: builtins.str
    """The type of the resource being read. This must match the type specified by the `urn` field, and is passed so that
    providers do not have to implement URN parsing in order to extract the type of the resource.
    """
    def __init__(
        self,
        *,
        id: builtins.str = ...,
        urn: builtins.str = ...,
        properties: google.protobuf.struct_pb2.Struct | None = ...,
        inputs: google.protobuf.struct_pb2.Struct | None = ...,
        name: builtins.str = ...,
        type: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["inputs", b"inputs", "properties", b"properties"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["id", b"id", "inputs", b"inputs", "name", b"name", "properties", b"properties", "type", b"type", "urn", b"urn"]) -> None: ...

global___ReadRequest = ReadRequest

@typing_extensions.final
class ReadResponse(google.protobuf.message.Message):
    """`ReadResponse` is the type of responses sent by a [](pulumirpc.ResourceProvider.Read) call. A `ReadResponse` contains
    the ID of the resource being read, as well as any state that was successfully read from the live environment.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    PROPERTIES_FIELD_NUMBER: builtins.int
    INPUTS_FIELD_NUMBER: builtins.int
    id: builtins.str
    """The ID of the read resource."""
    @property
    def properties(self) -> google.protobuf.struct_pb2.Struct:
        """The output properties of the resource read from the live environment."""
    @property
    def inputs(self) -> google.protobuf.struct_pb2.Struct:
        """Output-derived input properties for the resource. These are returned as they would be returned from a
        [](pulumirpc.ResourceProvider.Check) call with the same values.
        """
    def __init__(
        self,
        *,
        id: builtins.str = ...,
        properties: google.protobuf.struct_pb2.Struct | None = ...,
        inputs: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["inputs", b"inputs", "properties", b"properties"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["id", b"id", "inputs", b"inputs", "properties", b"properties"]) -> None: ...

global___ReadResponse = ReadResponse

@typing_extensions.final
class UpdateRequest(google.protobuf.message.Message):
    """`UpdateRequest` is the type of requests sent as part of a [](pulumirpc.ResourceProvider.Update) call."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    URN_FIELD_NUMBER: builtins.int
    OLDS_FIELD_NUMBER: builtins.int
    NEWS_FIELD_NUMBER: builtins.int
    TIMEOUT_FIELD_NUMBER: builtins.int
    IGNORECHANGES_FIELD_NUMBER: builtins.int
    PREVIEW_FIELD_NUMBER: builtins.int
    OLD_INPUTS_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    id: builtins.str
    """The ID of the resource being updated."""
    urn: builtins.str
    """The URN of the resource being updated."""
    @property
    def olds(self) -> google.protobuf.struct_pb2.Struct:
        """The old *output* properties of the resource being updated."""
    @property
    def news(self) -> google.protobuf.struct_pb2.Struct:
        """The new input properties of the resource being updated. These should have been validated by a call to
        [](pulumirpc.ResourceProvider.Check).
        """
    timeout: builtins.float
    """A timeout in seconds that the caller is prepared to wait for the operation to complete."""
    @property
    def ignoreChanges(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """A set of [property paths](property-paths) that should be treated as unchanged."""
    preview: builtins.bool
    """True if and only if the request is being made as part of a preview/dry run, in which case the provider should not
    actually update the resource.
    """
    @property
    def old_inputs(self) -> google.protobuf.struct_pb2.Struct:
        """The old *input* properties of the resource being updated."""
    name: builtins.str
    """The name of the resource being updated. This must match the name specified by the `urn` field, and is passed so
    that providers do not have to implement URN parsing in order to extract the name of the resource.
    """
    type: builtins.str
    """The type of the resource being updated. This must match the type specified by the `urn` field, and is passed so
    that providers do not have to implement URN parsing in order to extract the type of the resource.
    """
    def __init__(
        self,
        *,
        id: builtins.str = ...,
        urn: builtins.str = ...,
        olds: google.protobuf.struct_pb2.Struct | None = ...,
        news: google.protobuf.struct_pb2.Struct | None = ...,
        timeout: builtins.float = ...,
        ignoreChanges: collections.abc.Iterable[builtins.str] | None = ...,
        preview: builtins.bool = ...,
        old_inputs: google.protobuf.struct_pb2.Struct | None = ...,
        name: builtins.str = ...,
        type: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["news", b"news", "old_inputs", b"old_inputs", "olds", b"olds"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["id", b"id", "ignoreChanges", b"ignoreChanges", "name", b"name", "news", b"news", "old_inputs", b"old_inputs", "olds", b"olds", "preview", b"preview", "timeout", b"timeout", "type", b"type", "urn", b"urn"]) -> None: ...

global___UpdateRequest = UpdateRequest

@typing_extensions.final
class UpdateResponse(google.protobuf.message.Message):
    """`UpdateResponse` is the type of responses sent by a [](pulumirpc.ResourceProvider.Update) call."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROPERTIES_FIELD_NUMBER: builtins.int
    @property
    def properties(self) -> google.protobuf.struct_pb2.Struct:
        """An updated set of resource output properties. Typically this will be a union of the resource's inputs and any
        additional values that were computed or made available during the update.
        """
    def __init__(
        self,
        *,
        properties: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["properties", b"properties"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["properties", b"properties"]) -> None: ...

global___UpdateResponse = UpdateResponse

@typing_extensions.final
class DeleteRequest(google.protobuf.message.Message):
    """`DeleteRequest` is the type of requests sent as part of a [](pulumirpc.ResourceProvider.Delete) call."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    URN_FIELD_NUMBER: builtins.int
    PROPERTIES_FIELD_NUMBER: builtins.int
    TIMEOUT_FIELD_NUMBER: builtins.int
    OLD_INPUTS_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    id: builtins.str
    """The ID of the resource to delete."""
    urn: builtins.str
    """The URN of the resource to delete."""
    @property
    def properties(self) -> google.protobuf.struct_pb2.Struct:
        """The old *output* properties of the resource being deleted."""
    timeout: builtins.float
    """A timeout in seconds that the caller is prepared to wait for the operation to complete."""
    @property
    def old_inputs(self) -> google.protobuf.struct_pb2.Struct:
        """The old *input* properties of the resource being deleted.
        the old input values of the resource to delete.
        """
    name: builtins.str
    """The name of the resource being deleted. This must match the name specified by the `urn` field, and is passed so
    that providers do not have to implement URN parsing in order to extract the name of the resource.
    """
    type: builtins.str
    """The type of the resource being deleted. This must match the type specified by the `urn` field, and is passed so
    that providers do not have to implement URN parsing in order to extract the type of the resource.
    """
    def __init__(
        self,
        *,
        id: builtins.str = ...,
        urn: builtins.str = ...,
        properties: google.protobuf.struct_pb2.Struct | None = ...,
        timeout: builtins.float = ...,
        old_inputs: google.protobuf.struct_pb2.Struct | None = ...,
        name: builtins.str = ...,
        type: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["old_inputs", b"old_inputs", "properties", b"properties"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["id", b"id", "name", b"name", "old_inputs", b"old_inputs", "properties", b"properties", "timeout", b"timeout", "type", b"type", "urn", b"urn"]) -> None: ...

global___DeleteRequest = DeleteRequest

@typing_extensions.final
class ConstructRequest(google.protobuf.message.Message):
    """`ConstructRequest` is the type of requests sent as part of a [](pulumirpc.ResourceProvider.Construct) call. A
    `ConstructRequest` captures enough data to be able to register nested components against the caller's resource
    monitor.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing_extensions.final
    class PropertyDependencies(google.protobuf.message.Message):
        """A `PropertyDependencies` list is a set of URNs that a particular property may depend on."""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        URNS_FIELD_NUMBER: builtins.int
        @property
        def urns(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
            """A list of URNs that this property depends on."""
        def __init__(
            self,
            *,
            urns: collections.abc.Iterable[builtins.str] | None = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["urns", b"urns"]) -> None: ...

    @typing_extensions.final
    class CustomTimeouts(google.protobuf.message.Message):
        """A `CustomTimeouts` object encapsulates a set of timeouts for the various CRUD operations that might be performed
        on this resource's nested resources. Timeout values are specified as duration strings, such as `"5ms"` (5
        milliseconds), `"40s"` (40 seconds), or `"1m30s"` (1 minute and 30 seconds). The following units of time are
        supported:

        * `ns`: nanoseconds
        * `us` or `µs`: microseconds
        * `ms`: milliseconds
        * `s`: seconds
        * `m`: minutes
        * `h`: hours
        """

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        CREATE_FIELD_NUMBER: builtins.int
        UPDATE_FIELD_NUMBER: builtins.int
        DELETE_FIELD_NUMBER: builtins.int
        create: builtins.str
        """How long a caller is prepared to wait for a nested resource's [](pulumirpc.ResourceProvider.Create) operation
        to complete.
        """
        update: builtins.str
        """How long a caller is prepared to wait for a nested resource's [](pulumirpc.ResourceProvider.Update) operation
        to complete.
        """
        delete: builtins.str
        """How long a caller is prepared to wait for a nested resource's [](pulumirpc.ResourceProvider.Delete) operation
        to complete.
        """
        def __init__(
            self,
            *,
            create: builtins.str = ...,
            update: builtins.str = ...,
            delete: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["create", b"create", "delete", b"delete", "update", b"update"]) -> None: ...

    @typing_extensions.final
    class ConfigEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    @typing_extensions.final
    class InputDependenciesEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        @property
        def value(self) -> global___ConstructRequest.PropertyDependencies: ...
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: global___ConstructRequest.PropertyDependencies | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    @typing_extensions.final
    class ProvidersEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    PROJECT_FIELD_NUMBER: builtins.int
    STACK_FIELD_NUMBER: builtins.int
    CONFIG_FIELD_NUMBER: builtins.int
    DRYRUN_FIELD_NUMBER: builtins.int
    PARALLEL_FIELD_NUMBER: builtins.int
    MONITORENDPOINT_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    PARENT_FIELD_NUMBER: builtins.int
    INPUTS_FIELD_NUMBER: builtins.int
    INPUTDEPENDENCIES_FIELD_NUMBER: builtins.int
    PROVIDERS_FIELD_NUMBER: builtins.int
    DEPENDENCIES_FIELD_NUMBER: builtins.int
    CONFIGSECRETKEYS_FIELD_NUMBER: builtins.int
    ORGANIZATION_FIELD_NUMBER: builtins.int
    PROTECT_FIELD_NUMBER: builtins.int
    ALIASES_FIELD_NUMBER: builtins.int
    ADDITIONALSECRETOUTPUTS_FIELD_NUMBER: builtins.int
    CUSTOMTIMEOUTS_FIELD_NUMBER: builtins.int
    DELETEDWITH_FIELD_NUMBER: builtins.int
    DELETEBEFOREREPLACE_FIELD_NUMBER: builtins.int
    IGNORECHANGES_FIELD_NUMBER: builtins.int
    REPLACEONCHANGES_FIELD_NUMBER: builtins.int
    RETAINONDELETE_FIELD_NUMBER: builtins.int
    ACCEPTS_OUTPUT_VALUES_FIELD_NUMBER: builtins.int
    project: builtins.str
    """The project to which this resource and its nested resources will belong."""
    stack: builtins.str
    """The name of the stack being deployed into."""
    @property
    def config(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """Configuration for the specified project and stack."""
    dryRun: builtins.bool
    """True if and only if the request is being made as part of a preview/dry run, in which case the provider should not
    actually construct the component.
    """
    parallel: builtins.int
    """The degree of parallelism that may be used for resource operations. A value less than or equal to 1 indicates
    that operations should be performed serially.
    """
    monitorEndpoint: builtins.str
    """The address of the [](pulumirpc.ResourceMonitor) that the provider should connect to in order to send [resource
    registrations](resource-registration) for its nested resources.
    """
    type: builtins.str
    """The type of the component resource being constructed. This must match the type specified by the `urn` field, and
    is passed so that providers do not have to implement URN parsing in order to extract the type of the resource.
    """
    name: builtins.str
    """The name of the component resource being constructed. This must match the name specified by the `urn` field, and
    is passed so that providers do not have to implement URN parsing in order to extract the name of the resource.
    """
    parent: builtins.str
    """Dependencies and resource options

    These are passed so that the component may propagate them to resources it registers against the supplied resource
    monitor.

    Do *not* change field IDs. Add new fields at the end with appropriate field IDs as necessary.

    An optional parent resource that the component (and by extension, its nested resources) should be children of.
    """
    @property
    def inputs(self) -> google.protobuf.struct_pb2.Struct:
        """The component resource's input properties. Unlike the inputs of custom resources, these will *not* have been
        passed to a call to [](pulumirpc.ResourceProvider.Check). By virtue of their being a composition of other
        resources, component resources are able to (and therefore expected) to validate their own inputs. Moreover,
        [](pulumirpc.ResourceProvider.Check) will be called on any inputs passed to nested custom resources as usual.
        """
    @property
    def inputDependencies(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___ConstructRequest.PropertyDependencies]:
        """A map of property dependencies for the component resource and its nested resources."""
    @property
    def providers(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """A map of package names to provider references for the component resource and its nested resources."""
    @property
    def dependencies(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """A list of URNs that this resource and its nested resources depend on."""
    @property
    def configSecretKeys(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """A set of configuration keys whose values are [secret](output-secrets)."""
    organization: builtins.str
    """The organization to which this resource and its nested resources will belong."""
    protect: builtins.bool
    """True if and only if the resource (and by extension, its nested resources) should be marked as protected.
    Protected resources cannot be deleted without first being unprotected.
    """
    @property
    def aliases(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """A list of additional URNs that should be considered the same as this component's URN (and which will therefore be
        used to build aliases for its nested resource URNs). These may be URNs that previously referred to this component
        e.g. if it had its parent (and consequently URN) changed.
        """
    @property
    def additionalSecretOutputs(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """A list of input properties whose values should be treated as [secret](output-secrets)."""
    @property
    def customTimeouts(self) -> global___ConstructRequest.CustomTimeouts:
        """A set of custom timeouts that specify how long the caller is prepared to wait for the various CRUD operations of
        this resource's nested resources.
        """
    deletedWith: builtins.str
    """The URN of a resource that this resource (and thus its nested resources) will be implicitly deleted with. If the
    resource referred to by this URN is deleted in the same operation that this resource would be deleted, the
    [](pulumirpc.ResourceProvider.Delete) call for this resource will be elided (since this dependency signals that
    it will have already been deleted).
    """
    deleteBeforeReplace: builtins.bool
    """If true, this resource (and its nested resources) must be deleted *before* its replacement is created."""
    @property
    def ignoreChanges(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """A set of [property paths](property-paths) that should be treated as unchanged."""
    @property
    def replaceOnChanges(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """A set of properties that, when changed, trigger a replacement."""
    retainOnDelete: builtins.bool
    """True if [](pulumirpc.ResourceProvider.Delete) should *not* be called when the resource (and by extension, its
    nested resources) are removed from a Pulumi program.
    """
    accepts_output_values: builtins.bool
    """True if the caller is capable of accepting output values in response to the call. If this is set, these outputs
    may be used to communicate dependency information and so there is no need to populate
    [](pulumirpc.ConstructResponse)'s `stateDependencies` field.
    """
    def __init__(
        self,
        *,
        project: builtins.str = ...,
        stack: builtins.str = ...,
        config: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        dryRun: builtins.bool = ...,
        parallel: builtins.int = ...,
        monitorEndpoint: builtins.str = ...,
        type: builtins.str = ...,
        name: builtins.str = ...,
        parent: builtins.str = ...,
        inputs: google.protobuf.struct_pb2.Struct | None = ...,
        inputDependencies: collections.abc.Mapping[builtins.str, global___ConstructRequest.PropertyDependencies] | None = ...,
        providers: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        dependencies: collections.abc.Iterable[builtins.str] | None = ...,
        configSecretKeys: collections.abc.Iterable[builtins.str] | None = ...,
        organization: builtins.str = ...,
        protect: builtins.bool = ...,
        aliases: collections.abc.Iterable[builtins.str] | None = ...,
        additionalSecretOutputs: collections.abc.Iterable[builtins.str] | None = ...,
        customTimeouts: global___ConstructRequest.CustomTimeouts | None = ...,
        deletedWith: builtins.str = ...,
        deleteBeforeReplace: builtins.bool = ...,
        ignoreChanges: collections.abc.Iterable[builtins.str] | None = ...,
        replaceOnChanges: collections.abc.Iterable[builtins.str] | None = ...,
        retainOnDelete: builtins.bool = ...,
        accepts_output_values: builtins.bool = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["customTimeouts", b"customTimeouts", "inputs", b"inputs"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["accepts_output_values", b"accepts_output_values", "additionalSecretOutputs", b"additionalSecretOutputs", "aliases", b"aliases", "config", b"config", "configSecretKeys", b"configSecretKeys", "customTimeouts", b"customTimeouts", "deleteBeforeReplace", b"deleteBeforeReplace", "deletedWith", b"deletedWith", "dependencies", b"dependencies", "dryRun", b"dryRun", "ignoreChanges", b"ignoreChanges", "inputDependencies", b"inputDependencies", "inputs", b"inputs", "monitorEndpoint", b"monitorEndpoint", "name", b"name", "organization", b"organization", "parallel", b"parallel", "parent", b"parent", "project", b"project", "protect", b"protect", "providers", b"providers", "replaceOnChanges", b"replaceOnChanges", "retainOnDelete", b"retainOnDelete", "stack", b"stack", "type", b"type"]) -> None: ...

global___ConstructRequest = ConstructRequest

@typing_extensions.final
class ConstructResponse(google.protobuf.message.Message):
    """`ConstructResponse` is the type of responses sent by a [](pulumirpc.ResourceProvider.Construct) call."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing_extensions.final
    class PropertyDependencies(google.protobuf.message.Message):
        """A `PropertyDependencies` list is a set of URNs that a particular property may depend on."""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        URNS_FIELD_NUMBER: builtins.int
        @property
        def urns(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
            """A list of URNs that this property depends on."""
        def __init__(
            self,
            *,
            urns: collections.abc.Iterable[builtins.str] | None = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["urns", b"urns"]) -> None: ...

    @typing_extensions.final
    class StateDependenciesEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        @property
        def value(self) -> global___ConstructResponse.PropertyDependencies: ...
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: global___ConstructResponse.PropertyDependencies | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    URN_FIELD_NUMBER: builtins.int
    STATE_FIELD_NUMBER: builtins.int
    STATEDEPENDENCIES_FIELD_NUMBER: builtins.int
    urn: builtins.str
    """The URN of the constructed component resource."""
    @property
    def state(self) -> google.protobuf.struct_pb2.Struct:
        """Any output properties that the component registered as part of its construction."""
    @property
    def stateDependencies(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___ConstructResponse.PropertyDependencies]:
        """A map of property dependencies for the component's outputs. This will be set if the caller indicated that it
        could not receive dependency-communicating [output](outputs) values by setting [](pulumirpc.ConstructRequest)'s
        `accepts_output_values` field to false.
        """
    def __init__(
        self,
        *,
        urn: builtins.str = ...,
        state: google.protobuf.struct_pb2.Struct | None = ...,
        stateDependencies: collections.abc.Mapping[builtins.str, global___ConstructResponse.PropertyDependencies] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["state", b"state"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["state", b"state", "stateDependencies", b"stateDependencies", "urn", b"urn"]) -> None: ...

global___ConstructResponse = ConstructResponse

@typing_extensions.final
class ErrorResourceInitFailed(google.protobuf.message.Message):
    """ErrorResourceInitFailed is sent as a Detail `ResourceProvider.{Create, Update}` fail because a
    resource was created successfully, but failed to initialize.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    PROPERTIES_FIELD_NUMBER: builtins.int
    REASONS_FIELD_NUMBER: builtins.int
    INPUTS_FIELD_NUMBER: builtins.int
    id: builtins.str
    """the ID of the created resource."""
    @property
    def properties(self) -> google.protobuf.struct_pb2.Struct:
        """any properties that were computed during updating."""
    @property
    def reasons(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """error messages associated with initialization failure."""
    @property
    def inputs(self) -> google.protobuf.struct_pb2.Struct:
        """the current inputs to this resource (only applicable for Read)"""
    def __init__(
        self,
        *,
        id: builtins.str = ...,
        properties: google.protobuf.struct_pb2.Struct | None = ...,
        reasons: collections.abc.Iterable[builtins.str] | None = ...,
        inputs: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["inputs", b"inputs", "properties", b"properties"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["id", b"id", "inputs", b"inputs", "properties", b"properties", "reasons", b"reasons"]) -> None: ...

global___ErrorResourceInitFailed = ErrorResourceInitFailed

@typing_extensions.final
class GetMappingRequest(google.protobuf.message.Message):
    """GetMappingRequest allows providers to return ecosystem specific information to allow the provider to be
    converted from a source markup to Pulumi. It's expected that provider bridges that target a given ecosystem
    (e.g. Terraform, Kubernetes) would also publish a conversion plugin to convert markup from that ecosystem
    to Pulumi, using the bridged providers.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    KEY_FIELD_NUMBER: builtins.int
    PROVIDER_FIELD_NUMBER: builtins.int
    key: builtins.str
    """the conversion key for the mapping being requested."""
    provider: builtins.str
    """the optional provider key for the mapping being requested, if this is empty the provider should assume this
    request is from an old engine from before GetMappings and should return it's "primary" mapping. If this is set
    then the `provider` field in GetMappingResponse should be the same.
    """
    def __init__(
        self,
        *,
        key: builtins.str = ...,
        provider: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "provider", b"provider"]) -> None: ...

global___GetMappingRequest = GetMappingRequest

@typing_extensions.final
class GetMappingResponse(google.protobuf.message.Message):
    """GetMappingResponse returns convert plugin specific data for this provider. This will normally be human
    readable JSON, but the engine doesn't mandate any form.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROVIDER_FIELD_NUMBER: builtins.int
    DATA_FIELD_NUMBER: builtins.int
    provider: builtins.str
    """the provider key this is mapping for. For example the Pulumi provider "terraform-template" would return "template" for this."""
    data: builtins.bytes
    """the conversion plugin specific data."""
    def __init__(
        self,
        *,
        provider: builtins.str = ...,
        data: builtins.bytes = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "provider", b"provider"]) -> None: ...

global___GetMappingResponse = GetMappingResponse

@typing_extensions.final
class GetMappingsRequest(google.protobuf.message.Message):
    """GetMappingsRequest allows providers to return ecosystem specific information without having to send back large data
    blobs for provider mappings that the engine doesn't then need.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    KEY_FIELD_NUMBER: builtins.int
    key: builtins.str
    """the conversion key for the mapping being requested."""
    def __init__(
        self,
        *,
        key: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["key", b"key"]) -> None: ...

global___GetMappingsRequest = GetMappingsRequest

@typing_extensions.final
class GetMappingsResponse(google.protobuf.message.Message):
    """GetMappingsRequest returns a list of providers that this provider can provide mapping information for."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROVIDERS_FIELD_NUMBER: builtins.int
    @property
    def providers(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """the provider keys this provider can supply mappings for. For example the Pulumi provider "terraform-template"
        would return ["template"] for this.
        """
    def __init__(
        self,
        *,
        providers: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["providers", b"providers"]) -> None: ...

global___GetMappingsResponse = GetMappingsResponse
